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

(ソフトウェアー更新:2024/03/02) 約1年4か月ぶりに機能追加の更新(V50_65)をしました。  + V50_65用ビデオマニュアル追加


 前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つ前からの前編続編番外編完結編を参照ください。
関連テーマ: OCXO 較正自動化のための「Vcon I/F」の製作 を掲載しました。




上部は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
表記文字の校正を較正に変更しました。


組立実装の参考になればと、「OCXO Calibrator ケース加工・組立例」の写真サンプルページを臨時に用意しました。(別ページ)
(2020/11/27:追加)

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/ を利用しています。(ファイル名:OCXO_Callibrator_V50(1).drawio )
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)への変更を行っています。
4.回路中のコメントを更新(ヒューズ[F1]を0ΩのSMDで代用する:2022/04/24)


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.また、「直接ゲート」選択の時も、上記デレーは影響ないと思われます。

■.「遅延」CRデレーの実測 (2020/09/24:追加)
オシロを使う機会が有り、遅延回路の時定数を測ってみました。
理論値に近い値で遅延回路が動いているようです。



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受信器
種類 イメージ 使用感(私的) お勧め度

(1)

NEO-M8N

使用衛星数(Number of SVs used)は、12(AE-GNSSとは違い、$GxGGAの中の値は12以上には増えない)で安定している。
出力するNMEA信号の種類がAE-GNSSと違うため、プログラム中で変更処理を実施した。
(:$GPGGAと$GNGGAの違い等)

尚、ラベルが「NEO-M8N-0-10」であってもファームウェアー(以下、F/W)は、V2.01の品が有りラベルは当てにはなりません。



(使用衛星数が多かったため)

(2)

NEO-7M

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


(3)


NEO-M8N
別タイプ
(追加)


別タイプのNEO-M8Nが有りましたので、入手して試してみました。
パッチアンテナがTFT液晶用のコネクタに干渉するため、ピンヘッダの位置を逆面に移動しました。
また、外部アンテナを使用時は、内蔵パッチアンテナが干渉するようなので、C3 C2を外しています。
(カット位置をC2に変更)C3 C2を外した状態で使用衛星数は、12で安定しているように見えましたが、時々NMEAフォーマットが崩れ??使用衛星数データが無効になります。(C2を外しても同様に崩れが有り) この個体だけの問題かどうかは分かりませんが不安定です。
(2020/10/05:追記)(2020/10/09:再追記)
別の品を手配して確認したところ、干渉やフォーマットの乱れは有りませんでした。ただし、NEO-M8L??が届いたようです。(使用衛星数はMax10個でC2カットで12個)(2020/11/22:再追記)


これは高さが有るので、大きい方のケース(CU-14N)で無いと蓋が閉まりません。そのため、限定的。

(4)


NEO-M8N
モジュール(Module)による自作基板
(追加)

上記「(3) NEO-M8N 別タイプ」でNMEAフォーマットが崩れる??現象が納得いかず、NEO-M8Nモジュール(単品でそれなりの価格)を入手して、基板を作ってテストしてみました。
残念ながら(3)同様に、特に38400bpsに落とした時には顕著に崩れ現象が発生します。
本ModuleのF/WバージョンはV3.01で、2020年を示すロットのようですが、新しい品?は上手くいかないのか不明です。(2020/11/22:追記)

頒布の申し込みが有り「NMEAフォーマット崩れ」について実験してみました。詳細は、「19.その他気づいたこと」の「NMEAフォーマット崩れ」に追記します。(2020/11/25)

× 

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

■.設定変更の記憶対策
 
1.数か月間放置していても設定が記憶されていることを期待して、電池でバックアップすることにしました。(XHコネクタ)
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 ・ 2020/11/25:V50_52 ・ 2020/12/03:V50_52a ・(旧ソースファイルのリンク削除)

2020/12/13:V50_53    画面表示回数を1回/秒にする。他
2020/12/15:V50_54    Timer2で[STAT]キーの早押し抑制を付加した。
2020/12/18:V50_54a  PIC側のLEDがカウント毎に点滅を繰り返さなかったので、picRESET()を一ヶ所コメントアウトした。
2020/12/28:V50_54b  ディスプレー上の表記等の軽微な変更。
2021/01/31:V50_54c  void touchPrmCheck(void)の[INIT]ializeキーが効かなかったのを修正。(TFT)。
2021/02/08:V50_60e  GPIOリセットならびにVconI/F機能を追加しました。
2021/07/05:V50_60g  Vcon自動補正の見直し他。(2021/07/06:頒布時の設定に差替え)

2022/01/30:V50_60y_ae OLEDディスプレーと秋月AE-GNSSの組合せ最終版
2022/03/23:V50_60y_OL-GN OLEDディスプレーと秋月AE-GNSSの組合せ最終版
2022/05/14:V50_61 TFTタイプの最終版のつもり

2022/09/16:V50_62 以下の表示処理を200mS遅らせる変更と、その他の軽微な修正
$GNGGAの受信衛星数がNEO-M8Nの送出タイミングのバラツキにより取り切れないことがあったので、
表示処理を200mS遅らせる遅延を挿入しました。
<無操作時に、画面2行目左の衛星受信数(通常はMax12)が点滅する場合は効果が見込める>

2022/10/16:V50_63 別記載のテーマ: OCXO 較正自動化のための「Vcon I/F」の製作 での修正・追加をしました。
また、Vconを使用しない場合は軽微な変更の為、急いで変更する必要は無いと思います。
*別のPC(win10)にArduinoIDEを導入し、本ソフトがコンパイルできる環境設定内容を導入部のコメントに追記しました。

2022/10/27:V50_64 別記載のテーマ: OCXO 較正自動化のための「Vcon I/F」の製作 での追加修正をしました。
また、コンパイルするためのボード・ライブラリ導入のコメント記述に誤記があったので修正しました。
その修正した内容を「ArduinoIDEへのSTM32の導入」としてビデオマニュアルにまとめ、以下に添付しています。

2024/03/02:V50_65 (1) 遅延スタート機能追加と、(2) 立ち上げ時の[GATE]時間選択肢の追加を加えた、機能強化を実施しました。
今まで気になっていた「欲しい機能」を追加しています。
OCXOをコールドスタートしようと準備して、最初の15分程度は変動が大きく測定しても意味がないため、アラーム等を準備してスタートボタンを押していました。
しかし、そのアラームに気づかず、スタートのタイミングが遅れたことが有ったので、最終更新のつもりで追加しました。
内容については、ビデオマニュアルも添付していますので、ご覧いたいた後にご検討ください。
追加機能が必要なければ、バージョンアップは不要です。

解凍したフォルダーを「スケッチブックの保存場所フォルダー」の中に入れて、IDEを立ち上げなおすと扱えると思います。
(内容は、STM32_GPSCOUNTER_V50.h と STM32_GPSCOUNTER_V50_5x.ino ファイル)
Arduino IDE環境インストールと、STM32を組み込む方法については、以下に ビデオマニュアルを追加しました。

PIC24FV32KA301側のプログラムに変更は有りません。(念のため、リンクを追加:2020/12/18)
A6_V41calib_TIM1_U2TX_24FV32KA301.X.zip

■.マニュアル類
OCXO Calibrator 操作マニュアル TFTタイプ用(簡易マニュアルを添付しておきます。:2021/02/02)
マニュアル:2021/02/02改定版  (html)

OCXO Calibrator 操作マニュアル TFTタイプ用(ビデオマニュアル) (2022/06/14)

別タブで開きます。(約2分10秒)(BGM付)

V50_65 追加機能の操作マニュアル(ビデオマニュアル) (2024/03/02)

別タブで開きます。(約1分49秒)(BGM付)

GPS受信器とUART通信ができないときの操作例(ビデオマニュアル) (2022/06/15)
原因:長時間未使用状態で、内部の乾電池が消耗した時等に発生が考えられます。
別タブで開きます。(約55秒)(BGM付)



ArduinoIDE へのSTM32の導入 TFTタイプ用(ビデオマニュアル) (2022/10/27)

別タブで開きます。(約8分14秒)(BGM付)対象OS:Windows10
動画内で使用した文字ファイル(arduinoIDEstm32txtB4.rtfをzip圧縮)も添付しておきます。


■.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 秋月 I-11160 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に調整しています。
6.L1(GNDA-GND間)をジャンパーでのショートに変更(2022/06/05)



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個別の問題ではなさそうです。


■.OCXO最近の較正方法(2020/12/31:追記)
本器(OCXO Calibrator)を使って気長に手持ちのOCXOを調整していましたが、多回転ボリュームを微少量回していくだけでは思った量の変化も無く、逆方向に変動することも有り難しく感じていました。
そこで、ボリュームの中点の電圧を取り出せるようにソケットをハンダ付けし、電圧計(テスター)で読み出すことにしました。

電圧測定のための電極ソケット
赤色熱収縮チューブの線がボリュームの中点、黒がアース電位になります。(ちなみに、ボリュームのホット側は7.266V)


小数点以下3桁表示のテスター

この値が平均で 9,999,999.9998Hzに収束する値になります。
この値を見ながらでないと、ボリュームのツマミネジだけの調整ではほんの少し回しただけでも大幅な変化をしたり、多めに回したつもりでも逆に変化しなかったりします。
OCXOの較正方法は、オシロスコープでリサージュ図形を出して合わせる方法など色々あると思いますが、最終的にはVconの電圧を微調整して合わせることに成ると思います。
この値を計測結果からコントロールしてやることにより、短時間に最適な電圧値を求めることができるのではないかと考えるようになりました。
上手くいけばGPSDOに発展させられるかという希望??を抱きながら新年を迎えたいと思います。



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個作って実測)ぐらいになりました。

■.GPIOリセット  (2021/02/02)
これも以前からケースに収めたら「リセットSWを取付けないといけないかな?」と思い、ピンソケット用のパターンは付けていましたが、別テーマで掲載している OCXO 較正自動化のための「Vcon I/F」の製作 で設定ソフト等を追加するついでがあった関係で、画面タッチから実行できるリセットを組み込んでみました。

(1)GPIOリセット 回路図

SM32F103の外部リセット(NRST)とPB0を同じピンソケットのパターンにしてあったため、ピンヘッダを通して外部に上記回路を組み入れています。

(2)GPIOリセット 実装小基板
▲表裏面です。いつものハサミで切れる基板を切って使っています。

(3)GPIOリセット 実装場所

黄色のピンソケットが二つ見えますが、右は「GPIOリセット」用で使います。
そのため、右側のソケットに入れていた「BUZZER」は、左側のピンソケットに移動しています。

(4)GPIOリセット 実効時間の測定
実装したまま測定しても実リセットがかかると測定ができなくなるので、NRST端子から切離し10KΩの抵抗でプルアップして、矩形波の連続を入れて測定してます。
データシートでは、NRSTピンを内部の各リセット要因*1発生からパルス生成(最小パルス20μS)して駆動しているとなっていましたので、この回路(約700μS)で十分と言えます。
なお、操作関係とプログラムは、 7.各デバイスの切り換えとソース(スケッチ)ファイル  にV50_60eとして追加しました。(2021/02/08)

*1WWDG リセット・IWDG リセット・電源リセット・ソフトウェアリセット・低電力管理リセット

11.その他気づいたこと

一段落ついた後は、継続的に検証や調整を続けていますが、その中で気づいたことを記録していきます。


■.OLED表示の構成で温度センサー値が変動する  (2020/10/18)
2台同時に測定していると温度変化がそろわないことが少し気になっていましたが、グラフにしてみると片方の変化が大きいことが分かります。

OLED表示(LM61)とTFT表示(MPC9700A)の温度変化の測定

TFT_MPC9700Aに比べてOLED_LM61側の変動が大きいのが分かります。
センサーの不良等かと、LM61をMPC9700Aに交換してみましたが変わりません。
原因:温度センサー(PB1)と同様に、OLED表示時はキー入力SWをアナログポート(PA1)で読み取っていますが、その影響(PA1=通常3.3V)で温度センサー読取に影響が出ているものと推測しています。
対策:読取方法を変えてみましたが、決定的な解決策が見いだせず『OLED使用時は温度センサーは使用しない』ことにしました。(割り切り)

TFT表示構成を2台用意して温度変化の測定
センサーの変動倍率やオフセットは調整していませんが、両センサーとも異常と思えるような変動が無くなりました。
両センサーの変動幅が違うのは、出力の傾き・オフセットを独自に変更したためで、上昇・下降の傾向は揃ってきています。


■.「NMEAフォーマット崩れ」についての実験 (2020/11/25)

5項 「GPS受信器の選択」 で触れた、GPS受信器から出力されるNMEAフォーマットが崩れる件は、特に9600bpsの時にデータ量が多すぎて1秒の間に受信できない関連もあると思いますが、比較的新しいModuleに多い傾向が有るような状況のため、F/Wの書込み(書き替え)を実施してみることにしました。
対象となるGPS受信器は、自作PCBの品を使います。(書込みは前日の24日に実施)

(1)元のF/W情報モニタ画面

F/Wは、3.01を示しており、u-bloxのpdf資料に出てくる画面イメージと同じ情報が読み取れました。
この状態で、9600・38400bpsでほぼ100%「データ崩れ」が発生し、115200bpsでも時々発生することが有りました。


(2)UBX_M8_301_SPG.911f2b77b649eb90f4be14ce56717b49.bin 書込み後のF/W情報モニタ画面
F/Wのファイル名からみて、V3.01だと思いますが、u-centerで手順通り書込みができます。
元の状態と同様に、9600・38400bpsでほぼ100%「データ崩れ」が発生し、115200bpsでも時々発生することが有りました。


(3)UBLOX_M8_201.89cc4f1cd4312a0ac1b56c790f7c1622.bin 書込み後のF/W情報モニタ画面
F/Wのファイル名から、V2.01だと思いますが、u-centerで手順通り書込みができます。 (バージョンダウン)
この状態で、他のF/W V2.01のモジュール基板と同様に、9600bpsではデータ量の関係でほぼ100%「データ崩れ」が発生します。
しかし、38400・115200bpsでは正常にNMEA信号を受信できています。
必要とするNMEA信号は、$GNGGA$GNRMCだけで、38400bpsでは両信号は含まれていますが他の信号が少なくなっております。
一方、115200bpsでは両信号と他の信号も漏れなく受けきれています。

(4)NMEAフォーマット崩れのイメージ (Tera Term画面の切り抜き)

画面中央付近の「Num,YYMMDD,HHMMSS,StMin,StMax,Freq,(+-),gpsLoss,ppsLoss,picLoss,TEMP」行より上が正常受信時のLog出力で、下側は「データ崩れ」時のLog出力です。
上側は、「12,12」又は「11,12」という部分が有りますが、受信した$GNGGAの使用衛星数をモニターし、計測時間(上側1000秒)の間の最小数と最大数を記録しています。
下側は、その部分が「99, 0」となっており、$GNGGAが受けられないのでそれぞれの初期値(最小=99、最大=0)しか記録できていません。
また、$GNRMCが受信できない関係で年月日が確定できていません。(2000/00/00 部分)

尚、のタイプのGPS受信モジュールは、ラベルが当てにならず新しいものに見えてもV2.01が多く存在します。
V2.01品の方は、「データ崩れ」については発生していないようです。

「NMEAフォーマット崩れ」についての結論(2022/11/01)
「データ崩れ」の問題が残されたままのような実験経過のままになっていたため、本項目に対してのまとめを記述しておきます。
  発生の要因は、毎秒ごとに送出するNMEAデータの量とタイミングが、FWバージョンや個体ごとにばらつくことと思われます。
それまではNEO-M8Nを選別していましたが、2022/09/16:V50_62 のバージョンアップによる「NMEAデータを受けきるために表示処理を遅らせる遅延を挿入」したことで、 115200bps で常用している状態において、どのFWバージョンも「データ崩れ」は発生していません。

■.「カウント値が減少する現象」についての原因と処置 (2022/06/05)
9. OCXO較正の実際 のところでも、2台とも「カウント値が減少する」ことについて記述しましたが、未使用基板に部品を取付けて追加で基板を用意していると、その頻度が極端に発生するような基板ができてきました。
その原因の一つかなと「Q2:2SC2255」のhFEのバラツキにより、次段の74HC00への入力レベルが変化するのではないかとか、色々実験を繰り返していましたが、その中から原因らしきものが見つかりました。

発生の状況 (ログで記録しているTeraTermの画面コピー)
色々実験をしている過程での再現実験の画面ですが、RFグランドとデジタルグランド間に有るインダクター(L1)をショート状態にした時と、ショートを開放したときの比較で、特に発生しやすい個体ではほぼ50%以上の頻度で「カウント値の減少」が発生しています。

原因と処置 (青丸で囲ったところ)
原因は、L1
ここのL1が怪しいのではと「L1ショートジャンパー」を付けて実験している途中ですが、L1をショートすると24時間カウントを続けても現象が発生しません。

波形で見る原因 
プローブの先端を「GNDA:RFグランド」、プローブのアースを「GND:デジタルグランド」に接続した状態でL1の両端の電圧を測定中。
原因を特定した後でここの波形を見て分かったことですが、グランドラインが2.0Vpp変動していたことが分かりました。
これにより次段の74HC00等への信号レベルが変動して、十分なドライブがかからなかったためと思われます。

処置
L1をジャンパーでショート、または取り外してショートする。


■.2.8 "TFT LCDディスプレイ J1 について(2022/08/27)
久しぶりに秋月電子のホームページで表記 TFT LCD を見ていると、いつからかは分かりませんが「メーカーページのJ1設定記載に誤りがございます」との注意書きが書かれていました。
どうやら3.3Vで使用するときはJ1をショートするらしいことが分かりました。
当ページで紹介している使用方法は、J1オープンのまま3.3V給電で使用していたので3端子レギュレータ(U1)をショートするJ1の両端の電圧を確認してみました。

入力側電圧:3.275V・出力側電圧:3.122V で電圧降下はわずかのようですので、私はこのまま使用することといたします。
頒布やオークションで落札された方で気になる方はJ1ショートの処置をお願いいたします。  


■.その他 ()
追加していきます。



12.PCBの追加発注に伴う微修正 V5.1 (2022/09/16)

 V5.0のPCBの残りが無くなりましたが、手元にGPS受信器やSTM32F103(Blue Pill)128KB品(STM32F103CBT6相当)が少し残っており、他に活用する予定も無いので使い切る目的でPCBを追加発注し、少しの修正を加えてV5.1を作成しました。
主な内容は、今まで組み立てる度に修正していたハンダジャンパーのデフォルトを変更、別基板で用意していたブザーを載せるようにしたぐらいで、ハードウェアー・ソフトウェアー的にも以前のV5.0と互換を持たせています。
GPS受信器は手持ちもあり、AliExpressから追加で手に入れることが出来そうですが、STM32(Blue Pill)128KB品の手持ち品が残り僅かとなり、このPCBを使い切ることは難しいかもしれません。
この Blue Pill は、多分今注文すると正規の64KB品しか手に入らず、どうしても欲しい時は128KB品はCPUチップを購入して載せ替えるしかないように思います。


■.OCXO 較正器(V5.1)の回路
クリックでpdfファイルが開きます。
1.できるだけ元の回路を残したままで、一部を追加・削除しています。
2.TFTディスプレーの回路シンボルを修正し、SD-CARDポートを廃止しました。
3.温度センサー(LM61CIZ or MCP9700A)への給電をI2Cと同じ系列とし、3.3V/5V(Default)切換にしました。


■.PCBの3Dビューアー(表面)
1.一番眼につく変更点はブザーを基板上に載せたところです。
2.SD-CARDのポートを削除した関係で、余ったPB5をブザーの駆動でも使えるようにジャンパー切換を入れています。(PB0を他の用途で使う場合)
2.また、TFTディスプレイのヘッダーピンを9Pin・5Pinに分けていたのを一体物として連結しました。
3.使う予定は今のところ無いですが、念のために用意していたパターンも前回同様に残しています。

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

中ジャンパーブリッジも不要と思われるものは削除しました。




99.追記用

大幅な改定・追記用