STM32F103でOCXO Calibrator Part4(構成部品の変更編)
自作・実験工程のメモとして
14.Jun.2020
(ソフトウェアー更新:2025/01/12) 画面の表示位置を調整しました。
前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に読み替えてください。
クリックでpdfファイルが開きます。
1.「同期ゲート」回路は、中央辺りにある74HC74を中心とした回路で、従来からの「直接ゲート」も選択できるようにジャンパーブリッジを設けています。
2.問題が発生した時を考えて「GATE2」信号をSTM32に取り込んでいますが、今のところ不要となっています。
3.V4での間違い修正や、温湿度気圧センサー(AE-BME280)から温度センサー(LM61CIZ or MCP9700A)への変更を行っています。
4.回路中のコメントを更新(ヒューズ[F1]を0ΩのSMDで代用する:2022/04/24)
今回もまた前回と同様にネジ穴やコネクタの位置は変更せず、前作を踏襲した構成にしています。
また、配線についても同様でパターンは自動配線を使わず、一貫して手動配線で行っています。
■.PCBの3Dビューアー(表面)
1.左上部の温度センサーをAE-BME280から安価なLM61に変更しています。
2.また、2種類のディスプレイ対応用に中央上部を整理してピンヘッダーを用意しました。
3.使う予定は無いですが、念のために用意していたパターンも前回同様に残しています。
■.PCBの3Dビューアー(裏面)
中央下部が「同期ゲート」と従来からの「直接ゲート」を切り換えるジャンパーブリッジ部分になります。
第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:追加)
オシロを使う機会が有り、遅延回路の時定数を測ってみました。
理論値に近い値で遅延回路が動いているようです。
最初本器に取り掛かった時は気づかなかったのですが、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もかかります。
また、タッチペン入力が若干押しにくい?。 |
前回までは、秋月電子の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.右の拡大写真に有りますように、一応ダイオードを通してスーパーキャパシタ?のプラス側にハンダ付けしています。
以前より温度センサーは、シャーシ後部から小さな穴を通して外気を取り入れているつもりにしていましたが、通常の温度計と比べ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)
*
*/ |
不要な記述を // でコメントアウトする。
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/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を導入し、本ソフトがコンパイルできる環境設定内容を導入部のコメントに追記しました。
また、コンパイルするためのボード・ライブラリ導入のコメント記述に誤記があったので修正しました。
その修正した内容を「ArduinoIDEへのSTM32の導入」としてビデオマニュアルにまとめ、以下に添付しています。
2024/03/02:
V50_65 (1) 遅延スタート機能追加と、(2) 立ち上げ時の[GATE]時間選択肢の追加を加えた、機能強化を実施しました。
今まで気になっていた「欲しい機能※」を追加しています。
※OCXOをコールドスタートしようと準備して、最初の15分程度は変動が大きく測定しても意味がないため、アラーム等を準備してスタートボタンを押していました。
しかし、そのアラームに気づかず、スタートのタイミングが遅れたことが有ったので、最終更新のつもりで追加しました。
内容については、ビデオマニュアルも添付していますので、ご覧いたいた後にご検討ください。
追加機能が必要なければ、バージョンアップは不要です。
2025/01/12:
V50_66 ■画面の表示位置の調整と平均値(Ave)の分解能を+2桁にそろえる変更を実施。
GATE=10^4S 時の平均値を、小数点以下5桁(+1桁)までだったのを6桁(+2桁)表示させるために
行の左端はそのままとし、右に1桁寄せて「Ave」の分解能を1桁増加させた。
また、GATE=1S〜1000Sまでは小数点以下4桁表示だったのを、+2桁までの表示に変更した。
その他、コメントの誤字等の修正等を実施。
解凍したフォルダーを「
スケッチの保存場所フォルダー」の中に入れて、IDEを立ち上げなおすと扱えると思います。
(内容は、STM32_GPSCOUNTER_V50.h と STM32_GPSCOUNTER_V50_5x.ino ファイル)
Arduino IDE環境インストールと、STM32を組み込む方法については、以下に ビデオマニュアルを追加しました。
PIC24FV32KA301側のプログラムに変更は有りません。(念のため、リンクを追加:2020/12/18)
OCXO Calibrator 操作マニュアル TFTタイプ用(簡易マニュアルを添付しておきます。:2021/02/02)
OCXO Calibrator 操作マニュアル TFTタイプ用(ビデオマニュアル) (2022/06/14)
別タブで開きます。(約2分10秒)(BGM付)
別タブで開きます。(約1分49秒)(BGM付)
GPS受信器とUART通信ができないときの操作例(ビデオマニュアル) (2022/06/15)
原因:長時間未使用状態で、内部の乾電池が消耗した時等に発生が考えられます。
別タブで開きます。(約55秒)(BGM付)
ArduinoIDE へのSTM32の導入 TFTタイプ用(ビデオマニュアル) (2022/10/27)
■.Arduino IDEのボード設定 (STM32duino)
使用しているSTM32F103C8T6(Blue pill)は、公称64k Flashですが、私の手元に有る品は多くのWeb上の情報通り128k Flashまで使用できます。
特にTFTディスプレイを使用する設定の場合は、プログラム容量が64kを超えており、日常的に128k Flashの設定にしています。
ほとんど前回と同じになりますが、パーツリストとして書きだしておきます。
このほか、ディスプレイ デバイスの選択・GPS受信器の選択・ケーブル・ケース・ビスナット類等々必要になりますが、省略しています。
また、本器の調整ポイントを簡単に記録しておきます。
分類 |
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 |
|
|
|
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)
一つ前の掲載でも手持ち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:追記)
■.新規入手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に発展させられるかという希望??を抱きながら新年を迎えたいと思います。
多くは有りませんが、「このような機能が有ったら良いな」ということを思いつくままに追加していく予定です。
■.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 リセット・電源リセット・ソフトウェアリセット・低電力管理リセット
一段落ついた後は、継続的に検証や調整を続けていますが、その中で気づいたことを記録していきます。
■.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バージョンも「データ崩れ」は発生していません。
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ショートの処置をお願いいたします。
■.その他 ()
追加していきます。
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チップを購入して載せ替えるしかないように思います。
クリックで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ビューアー(裏面)
中ジャンパーブリッジも不要と思われるものは削除しました。