2017年2月21日火曜日

OCXOの安定度測定

以前の記事:GPSモジュールを利用した基準タイミング信号源の作成
の続きです。

計測値をUARTで吐ける周波数カウンタを作ったので、GPSのPPS信号を基準にOCXOの周波数を1週間ほどログってみました。
Computer Radio RF Tech様で紹介されている方法とほぼ同じです。

GPSモジュールから1PPS信号を発生し、FPGAに入力しています。
PPSの立ち上がりエッジで、ゲート信号生成とカウンタ用レジスタの切り替えをやっていますので、計測値は毎秒、PPSの立ち上がりエッジごとに出力されます。(ダブルバッファのような実装になっています。)
回路図を図3に示しますが、完璧に検証しているわけではないので、不定値を拾う可能性はあります。ラベルと信号の対応は、
・inclk・・・被測定信号(10MHz)
・pps・・・GPSモジュールからのPPS信号(1Hz/Duty=50%)
・res_n・・・リセット信号(負論理)
・sync_clk・・・後段回路と同期するためのクロック(1MHz)
・freq・・・測定結果
・pps_trig・・・PPS信号の立ち上がりエッジから2sync_clk遅れた後段回路のスタート信号
FPGAはVerilogを使ってコーディングしています。計測コアよりI2C液晶の制御部の実装に時間がかかりました・・・。

図1. トラ技付録のMAX10 FPGAで仮組した周波数カウンタ

図2. FPGA内部のブロック図

図3. 計数部の回路

図4. ebayで購入したOCXO

図5. 梱包材で断熱&保護

図6. OCXOの電源。216円。(ハードオフで調達)


以下が測定結果です。
測定期間中の室温は10℃~25℃程度変動しています。
途中でカウントミスをしていますが、適当にカウンタを組んだのでメタステーブルを拾っているのだと思います。
図7と図11はカウントミスした箇所を除去して表示しています。

図7. 約8日間の測定結果まとめ

図8. 2点ほどおかしな値が計測されている

図9. おかしな値 その1

図10. おかしな値 その2


図11. 600 + 600回の移動平均処理後

図12. コールドスタート時の立ち上がり特性

図13. GPSモジュールの統計情報(抜粋)

図11を見ると20mHz程度の変動が有りそうだなーと読み取れます。変動要因にはOCXO自体のドリフトとppsの揺らぎが含まれています。
正直なところOCXOを評価しているのか、FPGAで構築した周波数カウンタのデバッグをしているのか、はたまたGPSモジュールを評価しているのか分からんというね・・・・w
とりあえず非同期信号を確実にカウントできる回路を組めるようにならなきゃね。

~おわり~

2017年2月8日水曜日

ジムニー キーレスリモコンの修理(未完)

数日前からジムニーのキーレスリモコンの調子が悪い~。
内蔵の電池(CR1220)を交換しても、1日もしないうちに反応しなくなります。

原因を探るために送信ユニットを分解してみました。

図1. 開封直後
図1が送信ユニットを最初に開封した時の写真です。
水色の樹脂パーツと基板はスナップフィットで固定されているので、簡単に分解できます。
なにやら基板上の腐食が気になりますね。
IC周辺が特に深刻です。ここはちょうど電池の裏側に位置します。
電池が液漏れした際に、電解液がスルーホールを伝わって裏面まで侵食したのでしょか・・・。もしくはキーレスリモコンごと水没させてしまったのだろうか。
真因はわかりませんが、とにかく腐食部分を洗浄してみることにします。

図2. オーブントースターで加熱
IC周辺を注意深く観察すると、腐食は裏側まで広がっていることが分かりました。
IC裏を含めて綺麗に洗浄するためには、一旦ICを基板から取り外す必要があります。
ヒートガンなどを使用して、IC周辺を局部的に加熱するのがおそらく一般的ですが、持ち合わせてないのでオーブントースターで適当に加熱します。
程よいタイミングでピンセットでICをつまみ上げると綺麗に外すことが出来ます。
加熱しすぎるとPWBや電子部品を焦がしてしまうので注意します(笑)

図3. 基板単体でのリーク電流確認
ICを外したところで、基板単体に3Vを供給し、消費電流を測定してみました。
50uAレンジで針が振れないので、目立つようなリークは起こしてないようです。

図4. 取り外したIC
次に取り外したICを見てみます。
端子周辺に腐食が見られます。モールド部分にもタール状のよくわからないものがへばりついています。。

図5. 食器用洗剤と歯ブラシで洗浄
とりあえず基板とICを洗浄します。
パーツクリーナや食器用洗剤と歯ブラシを使ってゴシゴシします。
不純物が残留したままだと元も子もないので、流水で十分に洗い流して再びオーブントースターで乾燥させます。
水道水にも僅かながら不純物が含まれているため、本来であれば精製水で濯ぐのがベターです。

図6. 洗浄後のICと基板

図7. IC裏面

図8. IC側面①

図9. IC側面②
洗浄後の写真を図6~9に載せました。
接写すると若干汚れが残っているのが分かりますが、洗浄前に比べるとかなり綺麗になっています。

十分に乾燥した後、元の場所に実装してみましたが、挙動は変わらずでした・・・。
なお、OK/NGの判断は消費電流をテスターでモニタして行います。
無操作時には数十μA以下で、ボタンを押した時だけ数mAオーダー流れている状態をOKとしています。

何度か消費電流をモニタしていると傾向が掴めてきました。
電源投入後、無操作でも500μAを超えていると、その後はボタン操作を受け付けません。
おおよそ数十μAオーダであれば、正常に動作します。

この差が何処から来てるのだろうか?と気になって、オシロのプローブをイロイロと当ててみた結果、C7とR8でCRオシレータの時定数を決めていることが分かりました。
消費電流がおおよそ500μAを超えているときには、C7両端に1MHz程度の信号が観測できました。数十μAのときには、無信号です。
この結果より、IC(汎用マイコンorカスタムICか?型式でggってもヒットなし)がスリープ状態とRUN状態を遷移していることが予想できます。

ボタンを押すことで、外部割り込みが入って特定のコードを送信し、( ˘ω˘)スヤァしているのだろうと思います。
無操作でもRUN状態から抜け出せない理由はよくわかりません。ボタン長押し状態で連続送信されないように、ボタンが離されるのをポーリングしてから( ˘ω˘)スヤァしているのでしょうか。それなら、エッジ割り込みを使えば良いだろって話なのですが。。。
とりあえず、スリープ状態に入ってからでないとボタンの操作を受け付けないのは確実そうです。

~~~~
原因がわからないので、諦めてヤフオクでスズキのキーレスリモコンを探してみると、1000円ちょっとで中古品が入手できそうな事がわかりました。車体側で特定の操作を行うと、新たなキーレスリモコンのコードも追加で登録できるようなので、ディーラで交換するよりは安く済ませられそうです。
~~~~

最後にダメ元で各ピンの信号をオシロで探ってみました。
なにやら未実装のR6が怪しそうです。。片側は3Vに接続され、もう片側は1V程度の中途半端な電圧です。プローブの上から軽く指で振れると波形が暴れるので、ICの入力端子に繋がるのか??と想像できます。
適当に4.7kΩの抵抗を実装してみると、スリープ状態へ移行できる事が分かりました(!)
電源投入時からRUN状態でボタン操作を受け付けなかったのが、R6を実装してからは、確実に受け付けるようになりました。ただ、4.7kΩだとスリープ状態でも100μA程度消費しているようなので、47kΩに載せ替えました。
このピンがHighと認識されると、スリープ状態に移行するのでしょうか?
しかし、High状態でもボタン操作が優先されるのは謎です。
IC内臓のプルアップ機能を使うから外付け抵抗は実装しないけど、一応実装できるようにもしておくか・・っていう設計だったのか??
んで、このICはウエハの一部まで腐食が進んでて、プルアップ抵抗が死にかけだった。とか。なかなか考えにくいが(笑)

とりあえず、この暫定対策でキーレスリモコンは使えています。
しかし、常時消費電流が40μA程度あるので、CR1220だとすぐに空になりそうです。。
正規の直し方ではないので仕方ないですが、当分の間はこれで様子を見てみます。
またUpdateがあれば追記します。

図10. R6(R3の上)に抵抗を実装した様子