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の上)に抵抗を実装した様子


2017年1月8日日曜日

GPSモジュールを利用した基準タイミング信号源の作製

市販のGPS受信モジュールを使いやすいようにケースに収めました。
GPS受信部にはu-blox社のNEO-6Mモジュールを使用しました。
アクティブアンテナとセットで$10程度で入手可能です。

受信モジュールは基板に実装された状態で販売されており、5V電源を接続するだけで受信を開始します。u-blox社から提供されているソフトウェア「u-center」で、受信状態やモジュールの詳細な設定が行なえます。
同基板上に3.3VのLDOが実装されており、モジュール自体は3.3Vで動作しているようです。

そのままでも十分使えるのですが、他の機器に信号を供給する際には駆動能力や波形が不適切なので、バッファとLPFを追加して、より実用的なものに仕上げました。
なお、このモジュールから出力されるTimePulseには20ns程度のジッタが数サイクル毎に挿入されるため、取り扱いに注意が必要です(後述)。

ブロック図は以下のようになっています。

図1 GPS基準タイミング信号源 ブロック図

給電はUSBから行います。USB-UARTブリッジを除いて、他の回路は全て3.3Vで動作します。
出力は2系統あり、片側は10MHzのLPF通過後、トランスで絶縁して出力しています(TimePulseの設定値が10MHz以上のときに、きれいな正弦波が出力される)。もう片方は3.3VのTTL信号です。
使用する機器と出力したい周波数によって選択します。

アルミケースに収めた完成品の写真を以下に掲載します。
角穴の加工が雑です・・・・。
また、今回は接着剤(ボンド G17)でアルミケース上にゴムマットの取り付け、部品の取り付けを行いました。完全に接着されるとホットボンドと比較して強固に固定されるため、安心感があります・・。

図2 上部

図3 内部構成

図4 左からUSBコネクタ, LPF有絶縁出力コネクタ, GPSアンテナ接続コネクタ

図5 TTL出力コネクタとモニタ用LED

図6 動作の様子(YouTube)



■ジッタについて
このGPSモジュールは48MHzの原発振で動作しているようで、その逆数時間(=20.8ns)のジッタがTimePulse信号に挿入されます。
12MHzや8MHzなど、整数で割り切れる周波数に設定しても数サイクルに1発程度挿入されるようです。以下にその瞬間を捉えた波形を示します。

図7 ジッタ挿入箇所

緑色の波形は、ジッタが無いときに記録したリファレンス波形です。
ジッタが挿入されると、20ns程度TimePulseの周期が伸びており、変化点でLPF通過後の出力振幅も変わっていることがわかります。

GPS衛星と同期して補正が掛かる瞬間に生じていると思われますが、詳細は今のところ不明です。
→ (16/1/9追記)GPSアンテナを接続する前にTimePulseを出力させると、48MHzの整数分の1ではジッタが発生しませんでした。また、GPS捕捉後にu-centerからコールドスタート要求を出すと再捕捉するまでの間はジッタが発生しません。やはり、補正がかかる瞬間に乗ってると考えられます。

このように、短期的に見れば不安定な信号ですが、GPS衛星によって常に補正されるため、誤差は蓄積されません。よって、数十秒~数千秒周期のパルスに分周し、周波数カウンタのゲート信号に用いると、極めて確度の高い測定が行なえます。

次回は、この信号を利用してOCXOの周波数測定をやってみます(n番煎じですがw)


■仕様変更(2016/1/9追記)
・10MHz LPF+BPFに変更しました。
LPFの後段に10MHz BPFを入れたところ、安定した正弦波が得られました。
BPFの追加により、8MHzや4MHzなど、10MHz以外の信号を出力したい場合はTTL出力端子のみとなります。
これでもまだ若干のジッタ(5ns程度)はありますが、OCXOが届いてから比較してみようと思います。
以下に出力波形を掲載します。上からフィルタなし・LPFのみ・LPF+BPFです。
図8 10MHz BPF

図9 生・LPF通過後・BPF通過後波形①

図10 生・LPF通過後・BPF通過後波形②


■10MHz BPFについて(2018/10/26追記)
使用したBPFの回路図を参考までに載せておきます。
調整は10MHzを入力しながら左右のトリマを少しずつ回し、出力信号が最大となる点に合わせればOKです。



■u-blox NEO-6Mの測位モード設定とClock Accuracyの関係(2020/6/13追記)
Configuration ViewのNAV5にて、モジュールの測位モードを変更可能です。
Dynamic Modelに関して、初期値の「0 - Portable」から「2 - Stationary」に変更したところ、Clock Accuracyが改善しました。初期状態では0.5ppb~0.7ppbをフラフラしていましたが、設定変更後は0.25ppb程度となり、変動量も小さくなっているようです。
周波数基準器として使用する場合は、通常アンテナ位置を固定した状態で運用しますので、設定を変更しておいたほうが精度向上の観点で良さそうです。


ublox社のドキュメントを参照すると、Dynamic Modelの説明があります。
測位エンジンのパラメータを切り替えているようです。
日本語訳:
「u-bloxレシーバーは、さまざまな動的プラットフォームモデル(下の表を参照)をサポートして、ナビゲーションエンジンを予想されるアプリケーション環境に調整します。
これらのプラットフォーム設定は、電源の再投入やリセットを行わずに動的に変更できます。この設定により、レシーバーの測定値の解釈が向上し、より正確な位置出力が提供されます。レシーバーを特定のアプリケーション環境に適さないプラットフォームモデルに設定すると、レシーバーのパフォーマンスと位置の精度が失われる可能性があります。」


■2021/7/17 追記
本記事で使用したNEO-6Mですが、中身はNEO-7Mっぽいです。ファームウェアはROMにかかれているため書き換えができません。





■2024/7/11 追記
NMEAにQZSSの受信状態を付与する場合は、NMEA Protocol から Numbering used for SVs not supported by NMEA = 1 - Extended (3 digit) とする必要があります。



~おわり~

2016年12月29日木曜日

ジムニー フロントスピーカ交換

車検を終えたジムニーのフロントスピーカを交換しました。
音量を少し上げると左側が音割れしていたので・・・

交換用のスピーカはClarionのSRT1033を採用(アマゾンで約4,000円)。
純正のスピーカコネクタからSRT1033への変換ケーブルが同梱されているので、10mmのソケットレンチとプラスドライバーがあれば必要なものは全て揃います。
交換記事はググるといくらでも出るので、詳細は省きます。

交換後は音割れはなくなりました。
音質の違いについてですが、若干マシになったくらいかな?って感じです。
(再生機はケンウッドのU300BTです)
高音側はだいぶ聞きやすくなりました。
ツイータなどをダッシュボードの上に設置するともう少し改善しそうです。

同梱品一式。各社の変換ケーブル、スポンジテープなど。

スピーカの裏側には気密性を良くするために同梱のスポンジテープを貼っておきます。

はじめにステップに付いてる樹脂パーツを外す。
3箇所くらい爪で固定されているので折らないように注意。
(左側のパーツは外す前から全て折れていた・・。゚(゚´Д`゚)゚。)

10mmのフランジボルト2本を外せば簡単に外れます。

新旧比較。純正のが羽が若干大きい。

今回は吸音材は省略します。
ホムセンで良さ気なものを見つけたら入れてみようと思います・・・。



外した純正スピーカの観察・・・。
写真の位置と設置位置が対応しています。
右側が若干腐食して錆が出てましたが結構綺麗。


スピーカの交換に関しては以上。
外したスピーカ何かに使えるかな・・?今のところ予定はありません。。


■以下おまけ
ジムニーを中古で購入して初めての車検を終えました。
ユーザ車検も考えていましたが、平日時間が取れなかったのでスズキで受けてきました。
購入はダイハツの中古屋ですが、車検は近所のスズキ。やっぱり安心感があります・・・。
綺麗に洗車+ワックスがけまでやってくれました。ありがたや~。

フロントアクスルの右側のみ上下方向のガタがあるとのことで、キングピンベアリングなどを交換したようです。交換部品について簡単に説明していただけました( ˘ω˘)
ノーマルタイヤで高速走行中に、シミー現象が発生していたのがこれで治ると良いのですが・・・。
整備士の方も話していましたが、タイヤのサイズが大きいのでバランスが崩れてくるとブレがめだつようです。ジムニーではよくある症状みたいですね。 

かかった費用一式です。
ご参考までに。。。

次回の車検まで元気でな~。

~おわり~