Top Page STM32F103でOCXO Calibrator Part4(構成部品の変更編)
自作・実験工程のメモとして
14.Jun.2020


 前4編まででAE-GNSSを使ったOCXOの校正器作りを完結としましたが、事前にPPS信号の反転回路を組み込んであることや、作りかけたときには気づかなかった手ごろなTFTディスプレイが安価に流通していることと、完結編とした前回の回路にまたもや間違いが有ったことから、4回目の基板変更に取り掛かることにしました。
ここでは、3月に発注して2か月以上かかって到着したGPS受信器(UBlox NEO-M8N)と、NanoVNAにも採用されている2.8"TFTディスプレイを中心に回路追加とともに、初版のAE-GNSSやOLED(2.42" 12864 SSD1309)の使用も考慮した互換性を保ちながら不要部分を省く形でまとめました。

このページに掲載していない情報は、4つ前からの前編続編番外編完結編を参照ください。

 また、興味のある方がいらっしゃいましたら基板頒布を予定しておりますので、掲載までお待ちください。


基板セット頒布のお知らせ

2020/08/27:更新

PCB頒布のお知らせ (2020/06/17)
8枚程度基板が残ったため、ご希望の方に頒布いたします。
なおフロントパネル枠は、PCBとして発注しましたので、キズ・汚れ・レジストの塗ムラが有ります。選別してお送りできませんのでご了承ください。
無くなり次第、終了となります。(予告なく頒布を打ち切る場合もあります)

頒布条件等

1.頒布品(送料別)
セット構成 金額 数量
(A)OCXO Calib.基板セット




■OCXO Calibrator V5 基板         ・・・・・・ 1枚
■フロントパネル枠(Displayベゼル)     ・・・・・ 1枚
■USB2.0 Type-Cの目隠し板(4枚分一組 )  ・・・・・ 1組
■2SK241(FET)               ・・・・・ 1本
■24C256(EEPROM)             ・・・・・ 1個
 (2SK241・24C256は、1個単位で入手が難しいので添付します)
基板のV-CUT部分はカット後に紙やすり等できれいにしてください。

500 7
(B)OCXO Calib.組立済み基板セット

2020/08/27:出庫 1
現在、在庫セロですが数がそろえば用意できます。お問い合わせください。




■OCXO Calibrator V5 組立調整済み基板   ・・・・・・ 1枚
内訳:CRハンダ付け済み・EEPROM・STM32F103・PIC24FV・74HC00・74HC74・USB2.0 Type-Cソケット・主要ピンヘッダ&ピンソケット・等
 TFT & NEO-M8Nでテストしました。(温度センサは未実装)  
■フロントパネル枠(Displayベゼル)     ・・・・・ 1枚
■USB2.0 Type-Cの目隠し板(4枚分一組 )  ・・・・・ 1組
ケース加工の位置決め用に古い基板(V4以前)を(無料)添付できます。必要でしたら、「ケース加工用基板希望」とでも追記ください。

再現性の確認のため、1枚だけ組み立ててみました。
 
2,500 0
(C)OCXO Calib.パーツUBlox NEO-7M基板セット




 NEO-7M (動作確認済み)        ・・・・・・ 1枚
動作確認後、不要になりました。
使用するには、GPSアンテナ等が必要になります。
500 1

2.頒布数: 上記数量
3.サポート: 製作のサポートはありません。(ホームページの情報のみで製作ができる方)
4.金額: 上記頒布品の項に表記した金額
5.送料:
頒布希望の場合は送料200円を加算してください。
 (クリックポストで一週間以内に発送予定。日本国内のみ)
6.支払い方法:
着後一週間以内に振込み(三菱UFJ銀行口座宛)をお願いいたします。
  (振込み先は、発送時にご案内いたします。振込手数料は送金者負担でお願いいたします。)
7.ご希望の方は、
宛先:コールサイン@JARL.COM
(コールは、このページのタイトル等に記述してあります。)

件名:「(A)OCXO Calib.基板セット又は(B)..(C)...セット頒布希望

その他
コールサイン:(無ければ不要)
必要数:
郵便番号:
住所:
氏名:
  をご記入の上、お問合せください。




上部はOLEDディスプレイ採用の1台目、下部は新たにTFTディスプレイを採用した2台目で同じOCXOを測定中

下側(TFTディスプレイ・タッチペン仕様)には、100円均一に売っているゲーム機用の液晶保護フィルムを切って貼り付けています。
ケース上側はCU-13N、下側はCU-14Nとなります。(タカチ)



今回2台同時に稼働させるため、秋月電子のTV用アンテナ分配器(75Ω)を使い、GPSアンテナを2台に分配しました。

Edit by bluegriffon 3.1

キーワード:GPS基準による周波数カウンタ・Frequency counter・GPSをゲートにした周波数カウンタ・Frequency counter with GPS gate

1.OCXO 校正器(V5)のブロックダイヤグラム(BDG)と回路

 文頭に構成部品の変更を試すとしていますが、もう一つはWeb上で見つけたアジレントの「エレクトロニック・カウンタの基礎」(January 23.2006)というPDFに「同期ゲーティング」(以下、「同期ゲート」と略す)という解説があり、V4の回路上でもD-F/Fが一つ余っていることから試してみることにしました。
また、表示部と操作ボタンSW部は、以前のデバイスと「TFT DisplayとTouch入力」を排他的に選択できるようにしています。
なお、BDGには入れていませんが、前回まで温度測定で使用を想定していた「AE-BME280」は、温度だけの測定なら勿体ないのでトランジスタ型のセンサーに変更しました。
今回で5枚目のPCBとなるため、V5と表記しています。

■.OCXO 校正器(V5)のBDG
このブロック・ダイアグラムは、 https://app.diagrams.net/ を利用しています。
1.「同期ゲート」回路に余っていたD-F/Fを使いました。
2.D-F/Fは手持ちに74AC74が有ったのでAC74と明記していますが、74HC74に読み替えてください。

■.OCXO 校正器(V5)の回路
クリックでpdfファイルが開きます。
1.「同期ゲート」回路は、中央辺りにある74HC74を中心とした回路で、従来からの「直接ゲート」も選択できるようにジャンパーブリッジを設けています。
2.問題が発生した時を考えて「GATE2」信号をSTM32に取り込んでいますが、今のところ不要となっています。
3.V4での間違い修正や、温湿度気圧センサー(AE-BME280)から温度センサー(LM61CIZ or MCP9700A)への変更を行っています。


2.V5:PCBの設計

 今回もまた前回と同様にネジ穴やコネクタの位置は変更せず、前作を踏襲した構成にしています。
また、配線についても同様でパターンは自動配線を使わず、一貫して手動配線で行っています。

■.PCBの3Dビューアー(表面)
1.左上部の温度センサーをAE-BME280から安価なLM61に変更しています。
2.また、2種類のディスプレイ対応用に中央上部を整理してピンヘッダーを用意しました。
3.使う予定は無いですが、念のために用意していたパターンも前回同様に残しています。

■.PCBの3Dビューアー(裏面)

中央下部が「同期ゲート」と従来からの「直接ゲート」を切り換えるジャンパーブリッジ部分になります。



3.「同期ゲート」回路

 第1項に書きましたが、アジレント社の資料を読んで精度が上がるなら試してみたいなと思っていたら、たまたまD-F/F(74HC74)の片方が未使用だったので、即採用しました。
回路の解説等に興味のある方は、「エレクトロニック・カウンタの基礎」でWeb検索すると最上位に出現するようですのでご確認ください。

■.「同期ゲート」回路の抜粋
1.資料の通りにD-F/Fを追加しましたが、元の回路に戻せるようにジャンパーブリッジを置いています。
2.以前は、GATE信号の立下りでカウンターを読み出していましたが、同期ゲートでは、無信号時にGATEが閉まらないようになるためCRデレーを入れて、強制的にGATEオフの状態を作って後にプログラム上でD-F/Fをリセットしています。(デレー時間は、4.7KΩと0.1uFで約0.5mSぐらい)
3.上記デレーは、周波数で言えば2KHz以下の周波数測定で影響が出る値で、本器の最低測定周波数(100KHzを想定)から見れば影響なしと考えています。
4.また、「直接ゲート」選択の時も、上記デレーは影響ないと思われます。


4.ディスプレイ デバイスの選択

 最初本器に取り掛かった時は気づかなかったのですが、OLEDを使ってみると確かにきれいなフォントで表示できますが、欲を言えばカラーで表示したい・もっと文字数を増やしたいと思ってきました。
また、OLEDの価格がそれなりに高価なので、別の物を探しているとTFTディスプレイ デバイスが数多く流通しており、OLEDより安価に入手できそうなため両方に対応するように変更しました。

■.ディスプレイ デバイス(2種)の私的比較
種類 イメージと品名 メリット デメリット
OLED
Amazonでの品名:2.42" OLEDデジタルIIC I2C SPIシリアル12864 128X64 SSD1309ピクセルLCDスクリーンディスプレイモジュール Arduino に対応 C51 STM32 DIY向け
U8g2フォントを使用しましたが、とにかく表示速度が速く、全画面の文字の書き替えが約12mSで完了する。 相対的に価格が高い。
モノクロである。
TFT
Amazonでの品名:HiLetgoR 2.8 "TFT LCDディスプレイ タッチパネル SPIシリアル240 * 320 ILI9341 5V / 3.3V STM32 [並行輸入品]
相対的に価格が安い。
カラーで表示できる。
ペンタッチ入力ができるため、入力回路が省略できる。
こちらも最終的にU8g2フォントを使用しましたが、1画面の文字の書き替えに約330mSもかかります。
また、タッチペン入力が若干押しにくい?。



5.GPS受信器の選択

 前回までは、秋月電子のAE-GNSSを使用していましたが、当初からUBlox社のNEO-M8Nという受信器も視野に入れていました。
事前に同受信器のピン配列がAE-GNSSと同じ並びになっていることとを確認していたことと、いつでも対応できるようにと当初からPPS信号の反転回路を用意して、3月には発注しましたが入手に二か月以上もかかってしまいました。
そのため別のショップにも発注し、最終的に同じものを2個入手することに成りました。
やり残したことの一つとして、UBlox社のNEO-M8Nと、同NEO-7Mの2つについて試してみました。

■.今回追加したGPS受信器
種類 イメージ 使用感(私的) お勧め度
NEO-M8N
衛星捕捉数は、12(AE-GNSSとは違い、$GxGGAの中の値は12以上には増えない)で安定している。
出力するNMEA信号の種類がAE-GNSSと違うため、プログラム中で変更処理を実施した。
(:$GPGGAと$GNGGAの違い等)



(衛星捕捉数が多かったため)
NEO-7M
衛星捕捉数は、8個程度でM8Nよりは少ない印象です。
出力するNMEA信号の種類がM8Nと少し違うため、上記と同様にプログラム中で変更処理を実施した。

1.両器とも小さなボタン電池のような物が見えますが、スーパーキャパシタ?のようなもので、電源OFFにして1時間ぐらいで設定値が初期値に戻ってしまいます。
2.EEPROMが両方に載っていますが、写真右側(裏面)は共通で写真左側(表面)のチップのみ違う製品のようです。
3.UBlox社のu-center.exe でUARTの速度を変更してEEPROMに書込んだつもりでも、実際は書き換わっていないようです。(私の場合)
4.実際はUARTの速度のみ変更で、その他は初期値のまま使用する予定です。
5.なお、PPS信号は両器とも「アクティブHIGH」となり、基板上のジャンパーブリッジ(JP3/JP4)の切換が必要になります。

■.設定変更の記憶対策
 
1.数か月間放置していても設定が記憶されていることを期待して、電池でバックアップすることにしました。
2.右の拡大写真に有りますように、一応ダイオードを通してスーパーキャパシタ?のプラス側にハンダ付けしています。


6.温度センサーの組付け

 以前より温度センサーは、シャーシ後部から小さな穴を通して外気を取り入れているつもりにしていましたが、通常の温度計と比べ2度ほど高い値を示すため、シャーシ後部に穴を空けセンサーの頭を出すことにしました。
温度の特性は、最初は氷水と体温で2点間の値を取って合わせようとしましたが、氷水も本当の零度かどうかが分からず、目覚まし時計の温度計を参考に程々の数値に合わせています。

■.温度センサー
左側はPCB面から約5mmの高さに5Φの穴を空け、センサーの頭を突き出しています。
センサーは、LM61の他にMPC9700Aも試してみました。


7.各デバイスの切り換えとソース(スケッチ)ファイル

 スケッチは前回ののもに加筆して作っていますが、デバイスの選択にヘッダーファイル(xxx.h)を用意して、ソースファイルが分散されないようにしました。
取りあえず動くという状態ですが、参考に公開しておきます。(zipファイルとして)
目新しいこととして、新たにTFTディスプレイ(Touch入力付き)デバイスを追加したことで、Touch位置のキャリブレーションもできるようにしています。
また、OLEDとTFTの表示にかかる時間が大きく違うため、どちらも同じように表示頻度に揃える処理をしました。


■.STM32_GPSCOUNTER_V50.h ファイル で機能を選択するようにしました。
// STM32F103C8T6
// 周波数カウンター Frequency counter(別名:OCXO 校正器:Calibrator)
// 2020/05/25

// 表示器の選択(何れか)
#define OPTION_SSD1309_OLED        // Input ANALOG_4_BUTTON_SW
//#define OPTION_ILI9341_TFT        // Input XPT2046_TOUCH_SW

// GPS受信機の選択(何れか)
//#define OPTION_AE_GNSS
#define OPTION_UBLOX_NEO

// UBlox ENO-7M M8N の識別(何れか)
//#define SEL_UBLOX_NEO_7M
#define SEL_UBLOX_NEO_M8N

// 温度センサー(何れか又は、二つとも無し)
#define OPTION_TEMPERATURE_SENSOR_LM61
//#define OPTION_TEMPERATURE_SENSOR_MPC9700A

/*
 *
 * UBlox ENO-7M M8N の識別は、以下の条件式で選択する(2020/06/07)
 * #if defined(OPTION_UBLOX_NEO) && defined(SEL_UBLOX_NEO_M8N)
 * #if defined(OPTION_UBLOX_NEO) && defined(SEL_UBLOX_NEO_7M)
 *
 */
不要な記述を // でコメントアウトする。


■.STM32_GPSCOUNTER_V50 ソースファイル
2020/06/14:V50_10 ・ 2020/06/18:V50_11 ・ 2020/07/12:V50_12 (旧ソースファイルのリンク削除)
2020/08/31:V50_51
解凍したフォルダーを「スケッチブックの保存場所フォルダー」の中に入れて、IDEを立ち上げなおすと扱えると思います。
(内容は、STM32_GPSCOUNTER_V50.h と STM32_GPSCOUNTER_V50.ino ファイル)
PIC24FV32KA301側のプログラムに変更は有りません。


■.Arduino IDEのボード設定 (STM32duino)
使用しているSTM32F103C8T6(Blue pill)は、公称64k Flashですが、私の手元に有る品は多くのWeb上の情報通り128k Flashまで使用できます
特にTFTディスプレイを使用する設定の場合は、プログラム容量が64kを超えており、日常的に128k Flashの設定にしています。



8.パーツリストと組立・調整

 ほとんど前回と同じになりますが、パーツリストとして書きだしておきます。
このほか、ディスプレイ デバイスの選択・GPS受信器の選択・ケーブル・ケース・ビスナット類等々必要になりますが、省略しています。
また、本器の調整ポイントを簡単に記録しておきます。


■.パーツリスト(BOM)
分類 Reference 数量 Value 手配先 品番等 注単位
メイン基板用 C1,2,4,5,7,8,9,12,14,15,16,18,19 13 0.1u Amazon等のパック品
0805(2012)
計17個
13,17 2 10u
C11 1 1u
C10 1 470p
D1 1 LED_AK 秋月 I-11577 1
D4 1 LED_AK ピンヘッダーで取り出し
J1 1 Conn_Coaxial 秋月 C-13195 1
J4 1 USB_Type-C 秋月 C-14356 1
L1,2 2 2uH 秋月 P-11179 5
Q1 1 2SK241 Amazon等の品
Q2 1 2SC3355 秋月 I-09742 1
Q3 1 2SC1815 秋月 I-04268 10
R21 1 10k Amazon等のパック品
0805(2012)
計23個
R7,13,22 3 1k
R5 1 1M
R4 1 2.2k
R8,9 2 22k
R2,3,12,15,16,20,23 7 22R
R10 1 330R
R18,19,25 3 4.7k
R14,17 2 5.1k
R6 1 680R
R11 1 82R
U1 1 74HC74 秋月 I-10879 1
U2 1 74HC00 秋月 I-10856 1
U3 1 PIC24FV32KA301 RS-Online 742-1170 1
U4 1 STM32F103(BP) Amazon等の品
U5 1 CAT24C256 aitendo BL24C256A-PA 1
U6 1 LM61CIZ 秋月 P-03281 1
VR1 1 RV50k 秋月 P-03281 1

2 ICソケット14P 秋月 P-00028 1

1 ICソケット20P 秋月 P-00031 1

1 分割ピンソケット(細)40p 秋月 C-10073 1
P1(RF_in)
CONN_2(PH) 秋月 C-00167 1
OLED選択時 P7(A_SW)
CONN_3(PH)
P5(OLED)
CONN_7(PH)
TFT選択時 U7(TFT)
CONN_9(PH)
U8(touch)
CONN_5(PH)
必要時 U9(SD)
CONN_4(PH)
GPS用5ピン P2(GPS) 1 CONN_6(PS-5p)
C-02762
OLED選択時の操作ボタンSW SW1,2,3,4 4 SW_Push 秋月 P-09825 1
R1 1 10k Amazon等の品
R2,3,4 3 1k Amazon等の品
未使用品 C3,6 0 10u


F1(リード線でショート) 0 Fuse_Small


R1 0 51R


R24 0 100k





■.ケース加工用のPDFファイル
OLEDディスプレイ加工用PDF(プリンタで縮尺100%で印刷)
TFTディスプレイ加工用PDF(プリンタで縮尺100%で印刷)
V50_基板寸法図PDF(基板外形寸法・穴位置)
 

■.TFTディスプレイ選択時の注意
SDカードを使用する場合は、ベゼル上端より14mmの高さが必要になります。
2台目に採用したケース(CU-14N)では、この高さを確保しましたが、CU-13Nでは難しいと思います。


■.RFアンプの調整
RFアンプの調整は、無信号時にQ2(2SC3355)のコレクターの電圧を、理論的には2.5Vに調整すれば良いのですが、私は次のようにして追い込みました。
1.ある程度周波数とその出力レベルが安定している発信源を用意する。
2.ステップアッテネータ等でその信号レベルを落とながら連続して測定する。(GATE=1秒)
3.出力される周波数値が安定するような位置にVR1を調整する。(調整範囲はだんだん狭くなります)
4.上記の2.3.を繰り返して、最小信号レベルで安定した測定ができたところでテスターで電圧値を読み取る。
5.2台調整した結果は、OCXO(出力レベル:約+4dBm) に ATT(20dB) を挿入し、2.17Vと2.31Vになりました。
2020/07/25現在、2台とも2.50Vに調整しています。



9.OCXO校正の実際

 一つ前の掲載でも手持ちOCXOの周波数合わせを書きましたが、ここでは同OCXOを2台の校正器(周波数カウンタ)で測定してみました。(文頭の写真)
「同期ゲート」を使ってスタートSWも同時に押し、同じ条件のはずですが±1カウントほど違う計測数を記録することが有ります。
これは1000秒の間に、百億カウントしたか・百億1カウントしたかの違いで、測定のバラツキとして容認する必要があると思いますが、3カウント以上のバラツキが出た場合は、測定上のトラブルや調整の不良を疑うことに成ります。
ここでは、前回も使ったOCXOを2台の校正器で測定した状況と、新たに手配したOCXO(Double Ovenらしい?)が入手できましたら追加して測定を予定しています。


■.手持ちOCXOの2台同時測定時のLOG(OLED側とTFT側)
 
画像を左右に並べましたが、画面によっては縦の展開となっていると思います。
同時にスタートしていても、微妙にカウント数が違うのが現状です。


■.手持ちOCXOの2台同時測定時のLOG 2(OLED側AE-GNSS と TFT側NEO-M8N)

2台とも同じころにカウントが大きく減少(値は違う)しています。
GPSアンテナから入ってくる電波の減衰なのか、外来ノイズなのか、OCXO出力のディップなのか、PC(共通)のUSB電圧の変動・低下なのか、原因は特定できません。
その後:3つ目のNEO-M8Nを入手してNEO-M8Nを交換しながら2台の平行測定をしていると、GPS受信器の個体差によって一方にカウント増減が発生するような傾向がありそうですが、証拠となるようなデータは取れていません。(追記:2020/09/05)


■.新規入手OCXOのイメージ (2020/07/12:追記)

表面(スタッドは外しています)

裏面

タカチのCU-12Nに収納しました。
一応、型番で検索するとダブルオーブンとのことでした。

■.新規入手OCXOのLOG (2020/07/12:追記)
1.入手当初は、約300mHzほどプラスの周波数を発振していましたが、±20mHz以内には調整できました。
2.これ以上調整しようとすると、多回転ボリュームでも非常に合わせにくい為、あきらめました。(追記:少しチャレンジして差が開いてしまいました)
3.上記LOGの5番目の記録で、その前のカウントから18mHz分マイナスを示し、この後12時間以上にわたって2mHz以内の変化に収まっています。
これは、以前から手持ちのOCXOでも同じような傾向が有り、PCを分離(デスクトップとノートPC)したり、OCXOの電源を交換して切り分けを試みましたが、明確な答えが見つかっていません。
OCXOを2台用意して、同じような傾向を示すことからOCXO個別の問題ではなさそうです。




10.追加機能

多くは有りませんが、「このような機能が有ったら良いな」ということを思いつくままに追加していく予定です。

■.BEEP 音  (2020/06/18)
TFTディスプレイをTouch操作していると押す感覚がはっきりせず、操作しにくいと感じていました。
そこで、取り出せるようにしていた汎用ポートを使って、操作音を出してみることにしました。
(1)回路

5V駆動で回路は書きましたが、R27は3.3V時に330Ωでも十分聞き取れる大きな音が出ています。(ケースに収めた状態で)

(2)SUB基板を組んで設置
 
PB0を取り出せるようにしていた位置へSUB基板で垂直に設置しました。
BUZZERは、秋月電子 [P-09704] 電子ブザー 12mm UDB−05LFPNを使用しました。

■.BEEP 音2  (2020/08/31)
BUZZERの駆動電流からトランジスタ(2SC1815)を入れるほどでもないので、簡易的な回路に変更しました。
STM32のHIGH出力が3.3Vで200Ωを直列に入れて、鳴動時の電流値は2.4mA〜2.7mA(2個作って実測)ぐらいになりました。



19.その他気づいたこと

(1)その他






99.追記用

大幅な改定・追記用