PSOC4を使った周波数カウンタ(OCXO自作) その1 ハード試作

前回までで、GPSの1PPSをつかってVCXOの校正を行うところまで実施したので、完成形をめざし、12.8MHZのVCTCXOにヒーターと温度センサーをつけ、断熱材で囲って、GPSの1PPSに同期してVCXOの周波数調整を行うように試作を行い、現在プログラム作成中です。
PSOC4のブロック図は以下の構成に大幅変更しました。
PSOC4の回路はOFFチップの回路も記載できるので、今回のようなレギュレータやDA回路を置けるのは便利です。ライブラリはあるものしかおけないので、四角と線で書く場所もでますが。ちゃんと配線はチップ内と外を認識されているので、間違ってピンを通さないで接続するとエラーになるのでちゃんと判別しているようです。
あと、今回のように、結果としては200MHZで動いたけど、コンパイル時のワーニングではカウンタクロックが非同期入力なので、上限周波数の確認しろとでて、電圧、素子ばらつきも含めた最悪マージンでは100MHZ程度が上限のようです。200MHZで動くかは、チップの当たり外れが出そうですね。(電圧が3V動作可能なチップで、5V駆動なのも有利か)
あと、12.8MHZで6ビットカウンタではロジック的に205MHZまでが上限です。以前に説明した通り、入力周波数205MHZの1/64が3.2MHZと、12.8MHZの1/4が3.2MHZで等しくなり、これが上限となります。前回の回路でNWT4000で205MHZを入れてここまでカウントでき、これを超えるとカウント抜けが起きるのを確認。限界の220MHZまでカウントしたい場合はもう1ビット増やせばよいけど、いまの周波数でも十分かな。(周囲温度でここまで使えなくなる可能性もあるし)

PSOC4ブロック図
画像
















画像



















今回作成したカウンタ全体の写真
画像

















VCXOはユニバーサル基板を切り抜いて、半田付し、その裏にLM4041-ADJをつかったシャントレギュレータを校正して、温度センサー(LM35D)をVCXOに当てて温度を見れるようにします。

次にPWMをつかったDAコンバータ(16ビット)をTCPWM_3で実現しました。
PWMをDCに変換して、オペアンプでバッファ後、VCXOの裏側に実装したシャントレギュレータ(LM4041-ADJ)のVCCをDAコンバータで0V~5Vを入れることで、VCXOの電源3.8V~4.1Vで変化できるようにしました。そしてこれを分圧してVCXOの制御端子に接続します。ちょうど、2.5Vを入れるとセンターになるように抵抗値を調整しておきます。

この構成にした理由は、シャントレギュレータ自体も温度で電圧が変化する点と、VCXOの周波数が、周波数の制御電圧だけでなく、電源電圧でも変化するので、電源電圧が変化すると制御電圧も変化するようにこの構成としました。

ユニバーサル基板に1608サイズのチップ抵抗と、表面実装のLM4041-ADJ,基板の裏側に8ピンSOPのLM35Dを載せて、表面実装部品で固めてます。微細なので半田技能が必要ですが、ルーペつかって半田付けしました。部品はCHIP1STOPで購入できます。DIP品でも作れますが、VCXOのサイズより大きくなってしまいますが、おそらく、問題ないとは思います。

表面実装部品で構成したシャントレギュレータ回路部
画像













画像

















さらにTCPWM_4をつかってヒーター回路を作ります。
ヒーターは、100V 100Wの電熱コンロ用ニクロム線(約100Ω ホームセンターで購入)をのばして、24Ωの分切り取って、VCXOに巻き付けます。絶縁しないとならないので、薄い紙の安価な両面テープを3重か4重巻いて、その上にニクロム線を巻き付け、さらに固定でもう1回両面テープを巻き、その上をポリエチレン発泡シートでぐるぐる巻きとし、セロテープで密封して完成です。(全体写真参照)
NチャネルのMOSFETでヒータをPWM制御でON/OFFして温度調整します。現時点では1Wをヒーター用にしています。最終的にはPWMで温度の釣り合い点を探さないとなりません。PWMのノイズの影響も不明です。VCXOのシールドケースがあるので、影響は小さいとはおもうけど、どうかな。影響があったらPWM→DC変換して、ゲート電圧で電流制御にする必要がでます。
ためしに、ヒーターOFFで温度をみたら、電源ON直後は25℃(LM35D出力 0.25V)だったのが、自己発熱で30℃(0.30V 1時間放置)程度まではあがりました。電源部の消費電力は約10mA(50mW)で5℃上がったので、500mWで75℃までいけそうです。DUTY制御で最大1Wの設計だと、発泡シートの耐熱温度がたしか70℃~90℃なので、ここまでは十分にいけそうです。
画像
















LM35D温度センサーの出力をPSOC4のAD入力に入れ、温度を取り込みます。あとは、温度と周波数のデータを取って、どの温度を狙うか判断します。
PSOC4は内臓のVREFが1.024Vで、LM35Dは10mV/℃なので直結で102℃まではADで読めます。

さらに、USBシリアル(PSOC4のデフォルトのUSBシリアル)でPCを接続し、もう1つのUARTはGPSに接続します。PSOC4のKITではUARTはI2Cも含めて2ポートしかだめで、I2Cを実現するにはソフトウエアI2Cとしないとならないが、今回はI2Cは未使用なので、この構成としています。
GPSの補足している衛星数を表示したいし、PCで周波数変化と温度のログも取りたいので、この形としました。

ハードはこの構成で試作し、現在、プログラムを作成中です。
PSOCならではの構成で周波数カウンタで考えられる自動校正機能までいれた形としました。
プログラムをつくって、まずは温度と発振周波数の特性を取得して、周波数の安定度を確認するところからですが、どの程度の性能が得られるか、完成したら記載します。


■OCXO自作 その2,3につづきます。(3ではソース公開します。)
 OCXO自作編(その2) 
 OCXO自作編(その3) 



この記事へのコメント

この記事へのトラックバック