STM32F103でOCXO Calibratorを作る(1)
自作・実験工程のメモとして
27.Mar.2020
一つ前の10MHzのバンドパスフィルター(以下、BPF)に関連したテーマですが、以前に入手していた10MHz OCXOの較正をどうするかに関心がありました。
Net上で検索していると、GPSにより較正状態を維持して使うGPSDOが有りますがそれなりの価格で有り、早急にOCXOを使う用途も無いことから、購入するほどのこともないと感じていました。
そこで、技術的な興味で取り組むテーマとして、今持っているOCXOの較正を目的にした「OCXO Calibrator」(以下、OCXO 較正器)に取り組むことにしました。
結論から申しますと、STM32F103の割り込みを使っているこのシステムは、失敗で約2.8MHzまでしか計測できませんでした。
話が長くなる関係から、続編に移る前に失敗した前段部分として公開しておきます。
続編「STM32F103でOCXO Calibratorを作る(2)」を掲載しました。(2020/04/05)
テスト中の「OCXO Calibrator」OCXO 較正器
Edit by bluegriffon3.1
表記文字の校正を較正に変更しました。
回路はいつものKiCadで作成しましたが、ラベルを多用したため分かりにくくなっており、ブロックダイヤグラム(以下、BDG)と併せて掲載しておきます。
版番号がいきなり V2.1/V2.2 となっていますが、最初の回路はPCB発注をした後に間違いに気づき、今度は慎重にと思い版数を重ねて2回目に作った基板がV2.1です。その後、一部のパターンを手で修正してV2.2としています。
■.OCXO 較正器のBDG
1.周波数入力部は秋月電子の 回路図集から「PIC周波数カウンタ VER2・キット」の物を参考にさせていただきました。
2.ゲート信号は、GPSの1秒パルスのみを使用して、ゲート時間はSTM32からコントロールして、1秒・10秒・100秒・・と、選択できるようにしています。
3.GPS受信機は、秋月電子の「GNSS(GPS・GLONASS・QZSS)受信機キット」を使って、1PPS信号と、衛星の状態を確認するためのシリアル信号をSTM32経由でパソコン(PC)で取り込んでいます。
4.ディスプレーは情報量が多いので、小さくても多くの行・桁が表示できるOLEDディスプレーを使いました。
5.操作ボタンは、以前から使っているアナログポートに接続する4ボタンの物で、ディスプレーにガイダンスを出しながら操作できるようにしています。
6.入力のカウントは、STM32の外部入力カウンタの使い方が分からず、当初から割り込みを使うことを考えていましたが、数十MHzを割り込みで処理できそうに無かったので、FrontCounter(74AC161)を入れて1/16に落とし、最後に下4ビットを加算する方法をとりました。
■.OCXO 較正器の回路
(クリックでpdfファイルが開きます。)
1.STM32F103C8T6(Blue Pill)は、PCとの接続にはUSB micro-Bコネクタが付いていますが、今回はUSB Type-C(USB2.0)コネクタを取付けて従来のプログラミングもType-Cコネクタからできるようにしました。
2.入力信号を増幅するアンプは秋月の回路図集(*1)から、その他もWeb上の回路を参考にさせていただきました。
3.また、基板上には今回の目的以外にも基板を活用できるよう、余分なものを載せています。
(STM32のVBAT端子のバックアップ電池回路・秋月の「温湿度と気圧計(AE-BME280)」用のピンソケット・I2Cピンソケット・5V電源XHコネクタ端子(入出力可))
4.GNSSは、マイナスのPPSを出しますが、どうやらプラスの信号を出力する受信機(基板)も有るようですので、極性が選択できるようにしています。
■.操作スイッチの回路
1.各SWを押したときの電圧値をアナログポートで読み取る一般的な回路です。
2.今回このSW回路を独立させたのは、OLEDディスプレーの下に高さを合わせて取り付けるためで、OLEDの化粧パネルとともに設計しました。
(*1):「4・1/2桁周波数カウンタ・キット」「PIC16C711使用 液晶表示周波数カウンタ・キットVer.2」
基板になったGPS受信機は初めて使うことに成るため、秋月の商品ページのリンクやWeb検索で情報を集め、基板やプログラムができる前から試していました。
最初は室内での受信状況を見ていると、それなりに受信しているようですが、たまに受信できない状態になるようです。
そのため、360度開放された天空は臨めませんが、ベランダの手すりにGPSアンテナを置くことにしました。
その結果、室内では10個以下の衛星捕捉数でしたが、室外では15以上の衛星を捕捉するようになりました。
ただ、それでもたまに見失うことも有るようで、GPS受信機からの信号で衛星捕捉状態や捕捉数も取り込むことにしています。
■.GPSアンテナを室内(窓近く)に置いたときの受信イメージ
東側向きの為、東が濃くなっていますが、西側の衛星が受信できないわけではないようです。
■.GPSアンテナを室外(ベランダの手すり)に置いたときの受信イメージ
信号強度を表す色(
赤に近い方が強い)が全体的に濃くなっています。
これで妥協するか、更に天空が多く見える位置を探すかですが、
OCXO 較正器が完成したときに考えようと思います。
いつも通りKiCadでPCB設計をしていますが、2枚目となるPCB(V2.1)は春節が終わるのを待って発注しようとした関係から、余った時間を3Dイメージの部品を探したり、自分で変更を加えたりしていました。
その中でもボリュームの3Dイメージは、FreeCADを使いRS-Onlineの物をそれらしく色を付けて時間稼ぎをしました。
■.PCBの3Dビューアー(表面)
1.中央右上のGNSS用ピンソケットは、L型ピンソケットの5ピンが無いようなので、6ピン用がそのまま指せるようにパターンを作っています。
2.また、縦置き・横置きの両方できるようにしていますが、とりあえずは縦置きにしてテストをしています。
3.周波数信号入力用のコネクタは、ピンヘッダの他にSMAでも接続できるようにしています。
4.通常の入力はピンヘッダで行い、入力信号のレベルを測ることが有れば、SMAコネクタにAD8307の小基板でも接続するとPA0入力の端子も余分に引いてあるので、可能かと思います。(電源は5VのXHコネクタも使って)
5.左端の中央部には、USB Type-C(USB2.0)のコネクタを付けています。
6.この3Dイメージはメーカーサイト等では見つからず、フリーのそれらしいサイトが1つ見つかりましたが、メールアドレス等を登録する必要が有り、入手をあきらめました。
7.測定周波数を増幅する右上部のアナログAMPは、アースを分離してインダクタで接続するパターンにしています。
■.PCBの3Dビューアー(裏面)
1.裏面は、ICの電源に置くコンデンサが主ですが、設定状態を覚えておくためのEEPROMを外付で付けました。
2.STM32の内部にも仮想EEPROMを実現できますが、変更を加えると新しい設定値を追記していくタイプのため、満杯になったときのことを考えて、外付けとしました。
■.前面パネルの3Dビューアー
1.どのようなのパネルかをシルク面に書かないようにして、キズ等が少ない面を選べるように両面同じ形にしました。
2.また製造番号を打たれるため、下側に捨て基板を付けてVカット指定にしています。
■.SWの3Dビューアー
上のパネルの下部の穴に各SWの頭が出るようにしています。
操作画面は5行ぐらいの情報量を表示したいと考え、「2.42" OLED 128x64ドット」を使いました。
通常のLCDは安価なものが多いのですが、Amazonで2,500円を超える品になります。AliExpressでも同様の品が有るようですが、同じく高い傾向にあります。
計測中の画面
「CngD」キーを押したときの裏画面
各画面の説明
(画面レイアウトや情報の有無が変更されている場合が有ります)
■.Power/ON後の初期画面
2行目の「2,17_e0」部分は、2:GPSのクオリティ、17:受信衛星数、e0:GPS信号ロス回数(デバッグ用)を表示します。
最終形は「例:13(20)」のように、最初の2桁はGPS衛星の受信個数・括弧内はGPSを受信できなかった秒数(特に電源ON直後にカウントアップします)を表示します。 その右は、JSTに変換した時分秒です。
3行目の「SEND=LOG」は、PCに送るシリアル信号を「GPS」GPSからのデータ、「LOG」カウンタのカウント情報、に切り替えられるようにしており、その状態を表しています。(通常は「LOG」で使用する)
その右の「0110」は、デバッグ用で設定状態を表しています。
また、その右の「0」は、ゲート時間の残り秒数を表すようにしています。(暫定的)
4行目は、ゲート時間を表し、その右の「0 0」は、計測回数と、GPSからのPPS信号が停止したときの回数を表すようにしています。
5行目は、下の赤ボタンSWに対応した意味を表しています。
カウント停止状態で、「MENU」ボタンを1押すと、次の Config画面 に入ります。
■.Config画面
GPSとやり取りする速度の設定、先ほどの「SEND=LOG」の切替、電源ON時のゲート時間の3つを設定できるようにしています。
一つ前の画面に戻るときは「RETN」を押します。
■.UART BPS Set画面
ここではPCとのやり取りのための通信速度を設定します。(画面は旧)
初期値の9,600bpsと38,400bps・115,200bpsをパネル上で選べるようにしました。
「ENTR」で設定です。(
最高速度を115,200bpsに変更しています。)
GPS受信器(AE-GNSS)のバッテリーが外れているとGPS側が9600bpsの初期値になります。
その場合は、この画面で一度「9,600」を指定した後に最高速度の115,200bpsに設定してください。
■.SEND to HOST画面
初期画面のところで書きましたPCへ送る信号の切替設定をしています。
通常は、「LOG data」を選んでください。
■.電源をONした時のGATE time設定画面
これは、オマケみたいなもので付けてみましたが、電源ON時のゲート時間を変更できるように付けてみました。
もちろん、初期画面上の「GATE」で切り替えることができます。
(1)その他
大幅な改定・追記用