おじさん工房 BBS
ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/02 (Wed) 20:47:01
今晩は。
ji1uddさんにお願いして基板を譲っていただきました。有難うございます。
蛇の目に比べて組み立ては各段に楽になり組み立て時間も短縮できました。
LCD,PSC-ICはuddさんとおなじです。
プログラムの変更箇所も同じです。
プログラムの書き込みも出来ましたが、LCDには何も表示されません。
コントラストの為のプログラムの変更がひつようなのでしょうか?
Re: ji1udd基板ーRFC-7製作
- パオさん URL
2025/04/02 (Wed) 23:22:31
笛吹おじさん
RFC-7 では色々とお世話になりました。
ところで、おじさん工房さんの RFC-7 のページに
「9. CONTRAST」調整の項目があります。
LCD が ST7032 のときに、この項目でコントラストが調整出来るようですが、いかがでしょうか?
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/02 (Wed) 23:34:33
パオさん、今晩は。アドバイス有難うございます。
そうですね、コントラストの調整が出来るのですが、LCDに何も表示されないので、、、、。
CPUの1ピンがHighになって居ます、これはエラーが出ているのです。先ずこれをつぶさないと駄目の様ですね。
CPUの配線はチェックして周辺のICとつながっています。
TDC7200がおかしいのか?
Re: ji1udd基板ーRFC-7製作
- やどさん
2025/04/03 (Thu) 00:00:04
こんばんは。
自分もPCBに移し替えて、最初表示しなかったのですが、DFF-ICのクロック入力ピンのハンダ不良でした。
もうチェックされていると思いますが、、
電源とクロック周りを確かめて、MPU動作していそうだったら、シリアル通信ができるか、とか、ロジアナでSDA/SCLをチェックすると何か分かるかもしれません。。
//
Re: ji1udd基板ーRFC-7製作
- ji1udd
2025/04/03 (Thu) 06:31:08
貼ってある写真では良くわからないのですが、お使いのLCDに必要な部品(R 1個とC 2個)は取り付けていますでしょうか?
RFC-7基板上にはそれら部品を載せるところはないので私はLCDの端子周りに取り付けています。
画像があったので添付します
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/03 (Thu) 09:40:19
皆様おはようございます。
今日も雨ですね。
やどさん、どうもです。
CPUへの10MHzは来ています、TDC7200へのクロックも来ています。
ji1uddさん、忘れてました。追加してバックライトはつくようになりました。有難うございます。
しかし、CPUの1ピンは相変わらずHighのままです。
これを直さないと、、、、
プログラムの書き込がおかしいのかも知れませんね。
Re: ji1udd基板ーRFC-7製作
- パオさん URL
2025/04/03 (Thu) 12:29:54
ji1udd さんが書かれているのでご確認済みだと思いますが、使用されている I2C LCD が AQM1602Y だとすると、最低でも昇圧回路用の 1uF 2個が必要になります。
後は、I2C 変換ボードがあれば、通常のキャラクタ液晶をつないでみると確認が出来ますね。
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/03 (Thu) 15:27:06
パオさん、今日は。
昇圧用コンデンサ(1uF、2個)は追加しました。
バックライト用抵抗も追加しました。
アドバイス有難うございます。
Re: ji1udd基板ーRFC-7製作
- ji1udd
2025/04/03 (Thu) 19:29:18
笛吹おじさんへ
未だLCDに何も表示されていない状態でしたら、シリアル通信での確認をお薦めします。TeraTermなどで ? などを送ってみてメッセージが返って来るか確認してみたらと思います。
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/03 (Thu) 20:32:49
ji1uddさん、今晩は。
シリアルは動いているようですね。
STLINKも別のもので書き込みをしてみましたが状況は変わらずです。
Re: ji1udd基板ーRFC-7製作
- ji1udd
2025/04/03 (Thu) 21:05:44
マイコン自体は問題なさそうですね。TDC、D-FF周りの問題のような....
リファレンスクロック切替SWを切り替えたり戻したりすると REF CLK? みたいなメッセージも出力されますよね?
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/03 (Thu) 21:28:53
シリアルの結果です。
CPU-1pinがHighになったままがおかしいと思うのですが、、、、
Re: ji1udd基板ーRFC-7製作
- ji1udd
2025/04/03 (Thu) 22:00:59
リファレンスクロック切替も問題なさそうですね。
カウンタ入力にはどんな信号を入力していますか?
Re: ji1udd基板ーRFC-7製作
- ji1udd
2025/04/03 (Thu) 22:18:29
LCDの方ですが、まずは実績のあるものを使って動作確認した方が良いと思うので、オリジナルの .hexファイルを使う、もう1台のRFC-7の方からLCDモジュールを拝借するというので如何でしょうか?
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/03 (Thu) 22:32:55
シリアルで周波数カウントしていますね。
CPUの1ピンはLowになりました。
LCDに表示されないだけの様です。
アドバイスありがとうございます。もう少し追求して見ます。
ロジアナでLCDのSCK,SDAを観測したいのですが、使いかたを忘れてしまいまして(歳はとりたくないですね)、、、思い出してトライして見ます。
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/03 (Thu) 23:35:38
ji1uddさん、LCDのアドレスはいじる必要がありますか?
Re: ji1udd基板ーRFC-7製作
- ji1udd
2025/04/04 (Fri) 06:29:11
> LCDのアドレスはいじる必要がありますか?
ファームウェアの修正は不要です。
ちなみにRFC-7の説明に「i2c は PCF8574 と ST7032 に対応 ( 自動判別 ) しています。」と書かれています。
仕組みとしては、i2c の 7ビットアドレスを 1 から 0x7Fまで (RWビット含めた 8ビットで言うと 2から0xFEまで)順番にサーチして 相手からACKが返ってきたアドレスをチェックして PCF8574 か ST7032 かを識別しています。識別ができたらあとはそれぞれ用の処理をするという感じです。
例えば LCDの初期化処理については lcdc16xn_i2c.c の 115行目からですね。
Re: ji1udd基板ーRFC-7製作
- ji1udd
2025/04/04 (Fri) 06:40:57
> ロジアナでLCDのSCK,SDAを観測したいのですが、
SCKとSDAを逆につないでいないかは既に確認済みですよね? #念のための確認です(^^;
> 使いかたを忘れてしまいまして(歳はとりたくないですね)、、、
1208サイズのR/CやVSSOPなICを実装できればまだまだ若いとおもいます(^^)
あと、PCF8574 I/F のLCDモジュールを接続する場合はLCDに供給する電源電圧を3.3Vから5Vに変更する必要があるかと思います(お使いのLCDモジュールにも依りますが)。
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/04 (Fri) 13:50:50
ji1uddさん、今日は。
>SCKとSDAを逆につないでいないかは既に確認済みですよね?
念のため入れ替えてみましたが状況は変わりませんでした。
>あと、PCF8574 I/F のLCDモジュールを接続する場合はLCDに供給する電源電圧を3.3Vから5Vに変更する必要があるかと思います(お使いのLCDモジュールにも依りますが)。
LCDを取り換えてやってみましたが結果は同じでした。
ASDRSが0x4Eになって居ますので、i2c.hのADRSは40から4Eに変更してコンパイルご書き込みました。
delayも0,1,2と変えてみましたが同じでした。
(電圧は5Vに代えてあります。)
シリアルは正常に動いていますね。
CPUのLED2は電源ONで点灯状態を維持し測定が始まると消える、蛇の目基板では確かそんな動きをしていました。それで1秒経ったら消える様に直したことを思い出しました。
今の問題は「LCDに表示がでない」です。何がいけないのでしょうかね?
Re: ji1udd基板ーRFC-7製作
- ji1udd
2025/04/04 (Fri) 19:56:35
実績のあるファームウェア、実績のあるLCDモジュールで上手く動作しないのであれば、マイコンのSDA/SCL端子からLCDモジュールのSDA/SCL端子までの何処に問題があるのだと思います。
オシロスコープでSDA/SCL端子の波形を確認してみるのが最良と思います。もう1台 RFC-7をお持ちなのでもう1台の方でもSDA/SCL波形を確認して双方の波形を比較してみると分かり易いかなです。
ロジアナだとしきい値の上か下かの論理的な解析になるので今回のような不具合解析にはあまり向いてないのではないかと思います。
もしオシロをお持ちでなければ、テスターで抵抗を測定するのも手かもしれません。
SDA-SCL間, SDA-3.3V間、SDA-GND間、SCL-3.3V間、SCL-GND間 の 5つについて テスタリードの + と - を入れ替えた2通り、合計 5×2の10回の測定をして、それらの値を もう1台 RFC-7での値と比較してみる感じです。テスターのリードを入れ替えるのはマイコンポート入力に静電保護用のDiが入っているからです。
★抵抗測定する場合はLCDモジュールは一旦取り外すのが良いと思います。
以上、思いつきですが、ご参考になれば...
Re: ji1udd基板ーRFC-7製作
- 笛吹おじさん
2025/04/04 (Fri) 22:47:14
今晩は。
良品と不良品のLCD(SCL,SDA)波形を比較してみました。カウンター動作時に取り込んだ波形です。特定の所にトリガーをかけるのは難しいので。
二つの波形を見るとLCDへのアクセスは実行されている様です。只、NG品はSDAにデータが載っていません。
良品はデータが載っています。
二つとも10MHzを入力して測定中の波形です。
delay=2です。
SCL,SDAのプルアップ抵抗は10kのチップ抵抗がないので8.2Kを使っていましたが、1/6wの抵抗(10K)をつけています。
CPUを取り換えてみるしかないようですね、、、、、
Re: ji1udd基板ーRFC-7製作
- やどさん
2025/04/05 (Sat) 01:51:03
マイコンはカウント動作もI2C動作もOKなのですね。
シリアルもOKとの事で、ほとんど動いていますね。あと少し!
I2C波形は液晶側のピンで見ていますでしょうか?
ハンダ不良やSDA/SCL逆接続などのありがちな不具合だと思ったのですが。。
動作OKのLCDでも表示しないとなると、、液晶不良でもないし、配線くらいに絞られそうに思ったのですが、、
NG波形をみるとLCDからACKが返ってないので、I2Cアドレスが違っている、I2Cクロックがはやくて(?),
I2Cアドレスサーチ失敗した?? 無理があるかなぁ。。
OKとNGでSCKの周波数が違うのはディレイ設定の違いとして、約500kHzと400kHz.
//
入力アンプの周波数特性改善 - Ojisankoubou
2025/03/29 (Sat) 08:15:12
RFC-7 の入力アンプは JFET 1個の簡易型なのであまりゲインが取れない、f 特が良くない、といった欠点があります。
ゲインはどうしようもないのですが、f 特はドレインの R に直列に 0.1uH ~ 0.15uH ぐらいをいれると若干ですが改善できそうです。
フェライトビーズの 60 ~ 120@100M でも良いかもしれません。
Re: 入力アンプの周波数特性改善 - やどさん
2025/03/30 (Sun) 23:20:40
皆さま、こんばんは。
2SK2394バージョンで回路Simやってみました。
実機では、手持ちの関係で220nHを挿入、安定最高カウント周波数が1割ほど上がりました。
R13(180Ω)のパラメータを変えて、ゲインの変化なども視覚的に見ることができるのでLTSpice便利です!
使った回路ファイルなどを下記に置いておきました。
https://drive.google.com/drive/folders/1riC0zhOjh7L3jIOKZVYTP_VtJSxp-a_b
・PreAmp_2sk2394cp6_single.asc
・RFC-5回路シミュレーション資料.zip ←modelが入ってます。(ネットで拾ってきたもの,保証なし)
ps.
土日でケースの試行(ji1uddさんのgithubからSTL試し刷り)と 1PPS測定が不安定な件の解析(まだオカシイ) あと花見など、忙しかったー 汗);;
→ 2SK2394出力は10uF->100kΩ(VCC/GND2個)を通ってSTM32マイコンに入りますが、CRを通過した1Hzの微分波形、振幅に問題ないのですが、ロー側波形のみに最大1Vpp位のノイズが乗っていました。
Tr.交換も変化なく、マイコンチップを3回ほど外して付けてをしてる間にタイマー入力端子を劣化させてしまったのか(?)。でもノイジーになるかな??
//
Re: 入力アンプの周波数特性改善 - ji1udd
2025/03/31 (Mon) 20:29:23
こんばんは。
私もSimをしてみました。
加えてスペアナのTGを信号源にして安定カウントするときのTG出力レベルを測定しました。
10MHzの時のTG出力レベルを基準にしてSim結果にプロットしてみたところ、アンプの負荷容量が15pFあたりでSimと実測が近しい結果となりました。
入力B(プリスケーラ―)の方が感度良好なので入力Bで計測できる周波数範囲は入力Bを使い、プリスケーラ―が動作しない低い周波数のところで入力Aを使えば良いのではと考えています。
Re: 入力アンプの周波数特性改善 - やどさん
2025/03/31 (Mon) 22:39:06
こんばんは。
・実機とSimでほぼ一致するのですね!すばらしいです。
・自分のRFC-7の1Hz測定不安定問題でたびたびすみません
実機の波形を確認しました。(画像)
更にシミュレーション波形と比較
ゲート、ドレインノード波形に違いがあることがわかりました。(2つ目画像)
よく考えると、1Hz信号でオンオフしているトランジスタのオン抵抗が高くなってノイジーに見えているだけ…
実機のゲート波形は電位が下がるスピードが早くて、半サイクル0.5秒を待たずしてトランジスタがON→OFFにON抵抗が高くなってしまう。
→ 1Mの抵抗外してテスターで約970kΩでしたが、ハンダリークだったかも… 汗);;
1Mの代わりに10MΩつけてみたら、1PPS信号が安定して1.00000000Hzと測定できました。ヤレヤレ…
(1MΩを付け直して問題ないか確認しておけばよかった)
//
Re: 入力アンプの周波数特性改善
- ji1udd
2025/04/01 (Tue) 20:46:26
基板自体に問題がないか確かめるために私も波形観察してみました。結果、マイコンポート入力波形にヒゲ状ノイズは乗ってないようです(細すぎて見えないだけかもですけど)。3.3V系のノイズですかね?
私の場合、NEO-6M、NEO-7M共に 1PPS信号は Duty 10% の信号となってます。
このため1PPS信号の"L"期間が 900msと長いのでマイコンポート入力の"H"電圧は 2V程度まで低下しています。でもカウンタは正常動作しています。
マイコンポート入力の電圧のダラダラ変化は中間電圧を作っている100kΩ経由の充放電によるものだと思いますので220kΩとかの少し大きな値にすれば電圧マージンは増えると思います。ただしインピーダンスが現状より高くなるのでノイズは受けやすくなるかと...。すみませんが実験はしていません。
Re: 入力アンプの周波数特性改善
- やどさん
2025/04/01 (Tue) 23:03:53
ji1uddさん こんばんは。
波形確認いただいてありがとうございます。
そうですね!1PPSのデューティが10%とか小さいと、トランジスタのON期間(マイコンポート入力Lo期間)が短いので自分の不具合は見えなかったかもしれません。
もっとも相対的にポート入力のHi期間が長くなるので、電位が落ちてきますが、2V程度までならポート入力のスレッシュ(3.3V/2くらい?)より上なので動作不具合にはならなそう。
デューティを50%にしたのは、以前 RFC-5のPGで1Hz信号を測定したのと合わせたためですが、、、デューティ50%にする必要はなかったか。。
で、
1PPSがHiの時=トランジスタON時は、ゲート電圧変化によってON抵抗が変わるLow出力、
1PPSがLoの時=トランジスタOFF時は、3.3V,180ΩのHi出力
が、CRを通ってポート入力になって、
ゲート入力の1MΩが半田ブリッジで0.6MΩとか低下していたとすると、
1PPS立ち上がりからのゲート電位がズルズル下がって、半サイクル0.5秒前にポート入力のスレッシュに達してしまった? またノイズ成分にも敏感に変動してしまった?? のかなぁ、、と推察してました。
まぁ、2SK2394のカットオフ電圧(Vgs)を見ると、-0.3~-1.0Vなのですが、、、
3.3V・180ΩとのON抵抗の分圧レベルになるので、、電源ノイズにも敏感になってしまう?とか、ちょっと無理があるかなぁ。。汗汗);;
シミュレーションできたら凄いのですが、やり方が分からず…汗);
あっ、ChatGPTに訊くの忘れてました。
//
Re: 入力アンプの周波数特性改善
- ji1udd
2025/04/02 (Wed) 20:32:35
やどさん、こんばんは。
Tr ON 期間が問題との事、了解です。
1PPSのDutyを50%に変更した波形と、カウンタが正常動作しなくなる Duty 80%に設定したときの波形を取得しました。
やどさんの実測波形と見比べると多少のレベル差はありますが、波形形状は同等なことと、半田ブリッジで高抵抗を作るのは大変難しい事と思うので この差は FET, C などの個体差、特性差起因ではないかと思います。
(何年間も使っていての故障であればイオンマイグレーションによる絶縁低下のケースも考えられると思うのですが...)
で、1PPSを上手く測定できなかった推定原因として残るのはノイズですが、今はノイズは消えているのかな?です。もっともそれがわかったところで結局直接原因はわからないのですけど...(^^;
Re: 入力アンプの周波数特性改善
- やどさん
2025/04/02 (Wed) 23:00:34
再波形確認いただいてすみません。
確かにハンダブリッジで高抵抗リークって難しそうです。
一昨日の最後のポート入力波形が残っていたので比較してみました。
ノイズが不安定だった時以上に鮮明にノイズが写っていますが、入力バッファのスレッシュ(Vih)は超えない程度になって1.0000000Hzが表示できた様子です。
1PPSの配線を引っ張ってカウンタにつないだためと思いますが、入力信号にもノイズが見えています、これも対策が必要でした。汗);
(なぜポート入力波形のLo側のノイズが大きいのか?と云うのが不思議だったので、FET交換やゲート前のCR、ドレイン後のCR値を変えて試してました。頭がゴチャゴチャしただけでした。HiHi)
//
Re: 入力アンプの周波数特性改善
- ji1udd
2025/04/03 (Thu) 19:04:35
やどさんへ
ドレイン波形の "H"レベルでは問題なく、"L"レベルだけノイズが載るというところから +5V電源、GND 及び 測定方法については問題なく、消去法的に 1PPS信号が原因ではないかという推定に私も至りました。
そこで 1PPS信号にホワイトノイズを重畳させたSimを行ってみたところ症状が再現できました。これで解決ですね(^^)
#ノイズ重畳の方法はググったら意外と簡単に見つかりました。
B1, B2 は Component 中の bv (ビヘイビア電圧源) です。
Re: 入力アンプの周波数特性改善
- やどさん
2025/04/03 (Thu) 22:42:31
うわー!ありがとうございます。
まねして シミュレーションで不安定時のモノの波形を再できました。
ChatGPT先生(正確にはGoogle, Gemini)には、
クロックノイズ源 Vnoise のモデル化や、
混入経路のインピーダンス Rnoise のモデル化
など教わったのですが、イマイチ旨くSimできず…
さきほどji1uddさんの使われた、ビヘイビア電源(Bソース)でのノイズシミュレート方法とwhite( ) 関数の引数などをChatGPTに訊いて試行できました!
やったー、解決です!!嬉しい~
//
RFC-7で高精度測定 - やどさん
2025/03/19 (Wed) 23:33:37
こんばんは。
バラックなRFC-7をバラシて、ji1uddさんに分けていただいたボードに組みなおしました。
未だ来ない部品がありますが、基本完成なので動作確認して問題ない事を確認しました。
→カウント表示しない不具合ありましたが、DFF-ICのハンダ不良でした 汗);
プリスケーラは、uPB1507GVで、パオさんのRFC-5用ボードから流用しました。
→分周設定が1/256だったので、1/64に手直ししたいと思っています。
プリスケーラなしでも200MHz超をカウントできるので、1/16でも良さそう,無いけど c(^^)/
ps.
画像のSGはAPB-3拡張のSG-GHz(ADF4351)使用で、A,B入力共に50Ω終端無しの場合の測定値です。
//
Re: RFC-7で高精度測定 - やどさん
2025/03/20 (Thu) 10:31:30
あっそうか、、
ゲートカウント式と同じように分周比が大きいとその分精度が落ちると思い込んでいました。
よく考えてみます。汗);;
>過度な性能期待はしないでくださいね(^^;
いやもう自分の精度スキルを十分超えていますので、、勉強させていただきます,Hi
画像は、外部ref=GPSDOで10MHzのOCXOを測定してみたものです。
ji1uddさん、Ojisankoubou様の測定値に近づいてきました。嬉しい~ (^^)/
//
2025/03/20 (Thu) 11:10:36
>やどさん
RFC-7 と GPSDO の完成、おめでとうございます。
私も同じような構成で RFC-7 を製作中ですが、細かな部品が多いので停滞中です。
ちなみに、FET アンプ部の抵抗(R13)は何Ωで製作されましたか?
Re: RFC-7で高精度測定 - ji1udd
2025/03/20 (Thu) 11:59:43
> Ojisankoubou様の測定値に近づいてきました。
良い感じですね。
ところで オンボードの TCXO は出力振幅が大きい別のタイプに変更したのでしょうか?
Re: RFC-7で高精度測定 - やどさん
2025/03/20 (Thu) 12:24:03
こんにちは
>R13は何Ω?
180Ωの手持ちがなかったので390Ωの2つパラにしました。
>TCXO は出力振幅が大きい別のタイプ?
実はそのまま載せ替えて(秋月の)同じTXCOです。でもオシロ読みで1.1Vpp程度で振幅がバラックより少し大きいでした。。あれ?
//
Re: RFC-7で高精度測定 - 笛吹おじさん
2025/03/20 (Thu) 20:33:42
皆様、今晩は。
やどさん、格好の良い基板できれいに出来上がりましたね。素晴らしいです。
パオさん、プリスケーラーICをMB506に取り換えてうまく動作しました。有難うございました。
AliExpressから購入したICは番号は同じでも中身は違う様です。
愚問で恥ずかしいのですが、やどさん方式で435MHzのトランシーバを使って周波数を測ってみました。
PSC=128,256では送信周波数の434.000MHzと表示されます。(画像)
PSC=64の場合は108.5MHz、PSC=512の場合は868.0MHzと表示されます。
これらのPSCでも計算で434と表示されるのではと思うのですが?如何でしょうか。
やどさん、-0.1dBm入力とありますが電圧で?Vくらいでしょうか。
受け側のインピーダンスが50オームだと0.223V、1Mだと31Vくらいになるかと思いますが、、、
SGを持っていませんのですみませんよろしくです。
Re: RFC-7で高精度測定 - やどさん
2025/03/20 (Thu) 21:29:49
笛吹おじさん こんばんは。
>PSC=128,256では送信周波数の434.000MHzと表示
なぜか中途半端な値になっていますね…
近すぎて過大入力になったりしていないでしょうか?
>-0.1dBm入力とありますが電圧で?Vくらい
SGからは, -1dBm入力です。(0.56Vpp@50Ω)
-7dBmや-10dBmでも分周動作していたので、uPB1507GVの感度はデータシート通り(-10dBm~6dBm)のようです。
ここ便利です:https://www.analog.com/jp/resources/interactive-design-tools/dbconvert.html
あと受信端のインピーダンス無限大とかアンマッチだと、反射係数1(全反射)で電圧振幅は2倍になるはず、、
//
Re: RFC-7で高精度測定 - ji1udd
2025/03/21 (Fri) 07:09:38
やどさんへ
> 実はそのまま載せ替えて(秋月の)同じTXCOです。
> でもオシロ読みで1.1Vpp程度で振幅がバラックより少し大きいでした。
我が家の秋月TCXO出力も 1.1Vpp程度(1.14Vpp) でしたよ。
Re: RFC-7で高精度測定 - Ojisankoubou
2025/03/21 (Fri) 09:28:48
GPSDO で OCXO の周波数を測れるようになると OCXO の重力による変化も見えると思います。 OCXO の向きを変えると水晶にかかる重力の方向で周波数が数 mHz 変化します。 試してみてください。
Re: RFC-7で高精度測定 - やどさん
2025/03/21 (Fri) 18:23:07
>OCXO の向きを変えると水晶にかかる重力の方向で周波数が数 mHz 変化します。
ワォ… 凄すぎです。。^^);
この週末試してみたいです。。
>秋月TCXO出力
前回バラックでオシロ読み0.85Vppだったのは何か配線間違いがあったかもですね。。汗);;
//
Re: RFC-7で高精度測定 - やどさん
2025/03/22 (Sat) 17:23:17
やってみました。
まだGPSDOはバラックだし、そんなに精度はでないかな?と思いつつ試行してみたら、、、
予想外にすごいグラフが描けました! ビックリ(@_@;)
2つ目の格安OCXO(10MHz)の周波数を測定しながら、その向きを鉛直方向・水平方向に変えています。
方向によって周波数が変わるのがハッキリわかります!!
もうRFC-7の性能は勿論、ji1uddさんの制御プロトコルによるGPSDO性能も素晴らしいのではないでしょうか!?
OCXOは最初ハンダ不良があって10MHzが出ませんでした。さすがに格安だけのことはあります、、が、そこそこ安定しています。
けっこう、テキトウな環境で測定したのに、、ほんとビックリ!
//
Re: RFC-7で高精度測定 - やどさん
2025/03/22 (Sat) 17:26:51
測定装置画像追加
ゲート2秒です。
写っていませんが、GPSDOの下にGPSモジュール
NEO-6Mがあります。
GPSアンテナは4畳半の部屋の窓の近く(家の中)に置いていて、直接的には、空(半球)の1/5も見えていないと思います。
→ 誤差やジッターが大かも!?
2025/03/22 (Sat) 21:57:59
>やどさん
スゴイ検証結果ですね!
OCXO の向きで、こんなにはっきり周波数が違うなんて驚きました。(ジャイロ代わりになりそう)
私の方は、RFC-7 が、やっと LCD に表示まで出来ました。
ji1uddさんの基板で組み立てていたのですが、原因不明の不具合で動作せず困っていました。
最終的に、確認不足で U4(74VLC2G04)が逆に付いていました。(何度も確認したのに・・・)
まだ、USB-シリアルとプリスケーラ部が未装着で、診断中に取り外した部品が沢山ありますが、MCU に書き込めて LCD に表示も出て、スイッチ操作もできるので、ゴールは近そうです。
Re: RFC-7で高精度測定 - ji1udd
2025/03/22 (Sat) 22:45:38
やどさんへ
いつも仕事が早いですね(^^) 顕著な差として観れることにビックリです。あと、OCXO基板を保持している治具がこの実験にベストマッチですね。#便利そう
パオさんへ
不足情報などお困り事あればメールいただければ可能な範囲でフォローします。
#空地が沢山ある基板サイズに対して 小さいSMDパーツですみませーん(^^;
Re: RFC-7で高精度測定 - やどさん
2025/03/23 (Sun) 00:58:41
パオさん ji1uddさん こんばんは!
バラックの時と全然違って細かな変動が小さいので、OCXOボードの方向による変化がハッキリと見えました。
もっとも、2ppbくらい変動しているので、20mHzも(?)変わっていてますね。
それが合っているのか大きすぎるのか判断が付きませんです。。汗);
>OCXO基板を保持している治具
Temuの安い(千円くらい)PCBホルダーですが結構使えました!
安かろう悪かろう製品が多いのがTemuの欠点ですけど、、
ホント,小さいICは1ピンが分かり難いです
自分のばあいは、ルーペで見てもDFF-ICのハンダはOK!と思ったのですが、針先でピンを押したらカウント表示したぁ、、という事で発見に至りました。。汗);;
//
Re: RFC-7で高精度測定 - Ojisankoubou
2025/03/23 (Sun) 08:52:38
いままで重力による周波数変化は矩形波状になるものと思っていましたが、まるで微分したような波形で驚きました。 重力による影響が時間とともに緩和されていくのでしょうか。 やはり何事もグラフ化するのは大事だと思いました。
20mHz 変動している件ですが、これは OCXO の水晶が AT カットなのではないかと思われます。 私が実験したときは 5mHz 弱だったと思います。
Re: RFC-7で高精度測定 - 笛吹おじさん
2025/03/23 (Sun) 10:32:43
やどさん、こんにちは。
初歩的な質問で恐縮ですがRFC-7のUARTについて教えてください。
シリアルポートとPCをつないで添付画像の様に表示されるのですが、例えば測定周波数を表示させたい場合、コマンドの入れ方はどうするのでしょう?
多分、周波数が連続して数字で出てくるのではと思うのですが、、、、今一、よく分かりません。
宜しく御願い致します。
Re: RFC-7で高精度測定 - やどさん
2025/03/23 (Sun) 10:37:42
了解しました、ありがとうございます。
測定数値の変化具合は、測定環境とかやり方のせいかな?と思って、何回か鉛直・水平を繰り返したのですが、再現性があったのでモノの値っぽいです。
ただ、時間30分あたりでOCXOモジュールをおおっていたビニールが外れて-3ppbくらい変動してしまったため、以降ビニールを外して測定していました。
位置変更時も機械的に変えて人が居ない状況にした方が良かったかもしれません。。
//
参照したweb:
水晶デバイスとは?
https://www.qiaj.jp/pages/frame20/page01.html
セイコーエプソン 宮澤輝久氏
https://eetimes.itmedia.co.jp/ee/articles/1112/08/news005.html
Re: RFC-7で高精度測定 - やどさん
2025/03/23 (Sun) 10:44:20
笛吹おじさん こんにちは
はい、help(?)表示のとおりです。
> p 2 リターンで周波数と経過時間が出ました!
こんな感じになります。
0+adrs :Read Memory
+ :Read adrs+16
. :Read same adrs
- :Read adrs-16
d [0/1] :Debug Print(Off/On)
p [0-2] :Print (Freq/+Time)
l [0-63] :LCD Contrast
>p 2
Print frequency(Hz) + time(ms)
>
10000.00417 2060319
10000.00417 2061319
10000.00418 2062319
10000.00422 2063319
10000.00423 2064319
10000.0042 2065319
10000.0042 2066319
//
Re: RFC-7で高精度測定 - 笛吹おじさん
2025/03/23 (Sun) 12:43:32
やどさん、有難うございました。
やってみたのですが、なにも出ませんネ!。
わたしの場合はLCDがオリジナルとは違うので、プログラムを変更しています。
この辺が影響しているのかも知れませんね。
USB経由のプログラム書き込みはできましたし、とりあえずは機能している様な印象を受けるのですが、、、
Re: RFC-7で高精度測定 - ji1udd
2025/03/23 (Sun) 13:05:14
笛吹おじさんへ
私の場合、TeraTermを使っていますが、送信の改行コードを「CR」とする必要がありました。ちなみに受信は「CR+LF」とする必要がありました。
Re: RFC-7で高精度測定 - 笛吹おじさん
2025/03/23 (Sun) 13:43:08
ji1uddさん、今日は。
情報有難うございます、
ご指摘の様にしたところ周波数、timeが表示されました。
感謝いたします。
Re: RFC-7で高精度測定 - パオさん URL
2025/03/23 (Sun) 20:22:37
>やどさん
私も、ターミナルソフトの設定が大変参考になりました。
(Linux の GTKTerm では、CR LF Auto で表示できました。)
>ji1uddさん
頂いた基板は大変良い感じで助かっています。
今回は、単純に私の確認ミスです。
シリアル通信も動いたので、後はプリスケラ部で完成です。
現在のところ、内部オシレータで動作しています。
計測は、Si5351 で作った信号発生器で 225MHz ぐらいまで測れました。
Re: RFC-7で高精度測定 - やどさん
2025/03/23 (Sun) 22:39:57
こんばんは!
バラック状態での内蔵TCXOでのf測定はバラつき大だったので、組み直したRFC-7で再測定してみました。
測定対象は、昨日と同じOCXOモジュールの10MHzです。
OCXOモジュールの方向も変えながら測定しています。
結果: 画像
40分くらいまで安定していませんが、、、
ボードに組みなおして、明らかにバラつきが小さくなりました。
しかし、OCXOモジュールの方向変更による周波数変化が、完全に微分波形のようになっています。
外部Ref,GPSDOの時とこんなに違うのは何故なんだろう?! 謎が深まりました。汗);
//
Re: RFC-7で高精度測定 - Ojisankoubou
2025/03/24 (Mon) 10:09:00
>外部Ref,GPSDOの時とこんなに違うのは何故なんだろう?!
TCXO と外部 Ref でこういった変化があるとは考えられないです。
OCXO の方向でこれだけ大きな微分波形になるのは温度かもしれません。 OCXO の方向が変わることで水晶の温度が変化し、内部のヒーターが動作して一定温度に保とうとしているのではないでしょうか。
あと、上下ひっくり返すというのも試してみてください。 多分水晶は水平になっているので上下逆にすると重力の影響が倍になります。
Re: RFC-7で高精度測定 - やどさん
2025/03/24 (Mon) 12:51:41
OCXOモジュールの方向変更時の温度変動によって、オーブンのPD制御(?)特性が見えた、と云うことですか! わずかXmHzの変動をも検討できるって…すごい!
たしかに、今回は内部リファレンスTCXOなので、温度一定にしないとっ! と思って OCXOモジュール周りにもビニールをかけてしまいました、その違いがあります。
前回:測定対象のOCXO周りは ビニールで覆わなかった、
今回:ビニールで覆ったが、OCXOの方向変更の時にズラす必要があった。
帰ったら再試行してみます、裏返してみたいっ(・・;)
Re: RFC-7で高精度測定 - 笛吹おじさん
2025/03/24 (Mon) 15:26:52
やどさん、今日は。
TCXO内蔵のRFC-7でOCXO(10MHz出力)の周波数を測定されていると思うのですが、LCD表示周波数が10.000227MHzとズレが大きい様な気がしていますが、、、、どうしてなのか教えてください。スミマセン、ろくでもない質問で。
Re: RFC-7で高精度測定 - やどさん
2025/03/24 (Mon) 18:52:24
>周波数が10.000227MHzとズレが大きい
さすが笛吹おじさん、鋭いですね!(実は指摘されるかとヒヤヒヤしてました)
先ほどRFC-7設定を確認しました。
周波数アジャスト値が、バラックの時の値:2126のままでした。。
→そんなデカい値にした記憶がないのですが、、やはりバラック時のTXCO出力ラインの配線に問題があったのかと思います・・ 汗);;
GPSDO(10MHz)で再度アジャストしたら、-149になりました。
そのままで、OCXOモジュールの周波数をカウントすると、10.000-000-05MHz程度で正しくモジュール上のVRで周波数校正されているようです。
もっとも、15分くらいの値なので、まだ変化すると思いますが。。。
//
Re: RFC-7で高精度測定 - パオさん URL
2025/03/24 (Mon) 19:17:03
昨日は組立で終了していた RFC-7 のプリスケーラ部の機能確認が、やっと出来ました。
基板は、ji1udd さんの RFC-7 基板に、自作のプリスケーラ基板を接続しました。
使用 IC MB506(DIP 8Pin)
使用ファームは変更なし(1/256)
最低周波数:10kHz(Si5351 使用・・・本当なのか疑問が・・・)
最高周波数:3GHz(ADF4351 使用)
ということで、とりあえず完成しました。
次はケースに入れたいのですが、AliExpress で購入したケースと GPSDO 用の OCXO が税関検査で5日間以上留置きされています。(なぜ?)
Re: RFC-7で高精度測定 - 笛吹おじさん
2025/03/24 (Mon) 19:41:15
やどさん、今晩は。
私も重力の影響を体験して見たくなり、OCXOの10MHzを入力に入れてRFC-7を回転させればmHzの表示が動くのではと(RFC-7のTCXOが狂っていても問題ないはず)やったのですが、、、、其の前に私の作ったRFC-7はTCXOに問題がある様で周波数が跳ぶようです。
Auto Adjustもエラーになります。(TCXOがおかしいのですかね)
>(実は指摘されるかとヒヤヒヤしてました)
突っ込むつもりは在りません(スミマセン)TCXOとOCXOですから1Hzの桁までは0が続くのではと、、、どうしてなのか知りたかったのです。
mHZの桁を評価するにはGPSを使わないと駄目ですね。
あちこち動いていて何をやっているのか分からなくなります。
Re: RFC-7で高精度測定 - やどさん
2025/03/24 (Mon) 22:55:19
みな様、こんばんは。
RFC-7(10MHzTCXO)でOCXOモジュールの短期間安定度を再測定しました。
今回は、そこそこ良いデータが得られた気がします。→画像
約10分ごとに90度回転させてますが、矩形波状になった期間(向き?)と微分状になる期間(向き?)があります。右向き側に通気口があるためか?
(昨日3/23のグラフは、水平上向きと鉛直右向きの繰り返しでした)
あと、OCXOモジュールを鉛直方向にして、上下を反転させると周波数が最大・最小になることがわかりました!
これは興味深いです。
//
ps.
NDK: OCXOの特長とご使用時のポイント
https://www.ndk.com/jp/products/info/ocxo.html
Re: RFC-7で高精度測定 - Ojisankoubou
2025/03/25 (Tue) 10:18:48
パオさん
>最高周波数:3GHz(ADF4351 使用)
プリスケーラー出力にプルダウン抵抗はつけていますか?
一般的にプリスケーラ IC の最終段エミフォロの電流は最小限になっていて、ここが最高周波数を落とす要因になっています。 絶対最大定格を超えない範囲でプルダウン抵抗で電流を増やすと最高周波数が上がります。
Re: RFC-7で高精度測定 - Ojisankoubou
2025/03/25 (Tue) 10:21:11
やどさん
温度変化しやすい向きがあるということでしょうか。 あと加速度でこれだけ変化するということは振動にも気を付けないといけないですね。
Re: RFC-7で高精度測定 - やどさん
2025/03/25 (Tue) 12:24:15
Ojisankoubou 様
はい、このように変化するとGHz帯なら数Hz以上になるので、防振やダブルオーブン対策も必要になるのか!?と思いました。
昨晩は結論を急いで通気口のせいにしてしましたが、よく考えると約45℃のOCXO基板を約20℃の室内で回したことも温度変化の要因でした。
・箱で囲ってダブルオーブン化して測定
・OCXOを分解してヒーター制御オフで測定
など、さらに高精度病になってしまいそうです。。(^_^;;
2025/03/25 (Tue) 22:12:13
Ojisankoubou 様
RFC-7 すごく良いですね。
特に、RFC-5 で出来なかった、通常入力とプリスケーラ入力がスイッチで切り替えられるのが便利です!
素晴らしいカウンタを公開して頂きありがとうございます。
(ここから再編集)
言葉だと分かりづらいので、プリスケーラ部分の回路図を付けました。
(海外の製作例を参考にした、素人の図面で恥ずかしいですが・・・)
秋月キットの回路図を参考に作ったので、抵抗値が大きかったかもしれません。
今後の参考のために、間違っているところがあったら教えてください。
(参考にした例では付いていた uPB1507 のECL-TTL部分はいらないのでは?と思っています。)
表題の高精度測定に使う予定の OCXO は、まだ税関から動く気配がありません・・・
やどさんの実験結果がうらやましいです。
Re: RFC-7で高精度測定 - ji1udd
2025/03/26 (Wed) 19:30:36
やどさんの実験結果を拝見して 私もOCXO(10MHz)の配置方向にる周波数影響の確認をしてみました。OCXO水平配置と垂直配置(#4,#5ピンが下側)の2パターンの繰り返しです。0.03Hz程度の周波数シフトが確認できました。しかし、どうしてもやどさんの測定結果ほど安定して周波数が測定できないという状況です。測定対象のOCXOの電源/制御電圧はそれぞれ用のLM317で作っていてOCXO近くにパスコンも付けてみました。また、OCXOは透明のプラスチックケースに入れて風などの影響をなるべく受けないようにしてみましたが、これが私の評価環境の限界な感じです。
Re: RFC-7で高精度測定 - やどさん
2025/03/27 (Thu) 00:23:23
ji1uddさん パオさん、こんばんは。
やはり同様な周波数変化が見られて安心しました。ケースに入れると(?)微分的なグラフにはならないですね。
こちらは、OSC5A2B02モジュールの1pinと5pinを結ぶ軸の周りを回転させていました。
もう、SSBで数十Hzずれて交信してても全然気にならない自分が、数mHz,数十mHzの違いを測定できた事がすごいです。なんて…
昨日AliからスイッチとUSB-microBなコネクタにNEO-7mモジュールが届きました。こちらもやっと届きました。
で、シリアル通信できず、ハンダミスか?と思ったら、ボトムタイプを購入していたことが分りました…
2種類あるの知りませんでした。。汗);;
あと、uPB1506GV_プリスケーラの周波数範囲は0.5 GHz~3.0GHzだったので再確認したのですが、、約300MHzから3.3GHzでした(-1dBm時)
で、下限周波数がプリスケーラなし200MHzに達していないので、、タイマー入力への容量値で変わるか?レベル変換があった方が良いのか?分周比を変えたらどう?など調査しないとっ!!
ちなみにプルダウン抵抗下げてみましたが、(なし、3kΩ, 1kΩ, 1k//300Ωパラ) で最高周波数にあまり変化なく3.3GHzでした。
参照:
・https://www.renesas.com/ja/document/apn/1gh-248-ic-upb1509gv?srsltid=AfmBOoqvdFbIEktjBfBFDux0iF0BgWLArNm9mOwmi2-TyPJ9KJW8jk2F
3. 1 電流アップによる出力振幅の向上
//
Re: RFC-7で高精度測定 - Ojisankoubou
2025/03/27 (Thu) 09:01:19
ji1uddさん
>安定して周波数が測定できないという状況です。
VC電圧の温度特性ではないでしょうか。 VC は 1ppm/V ぐらいの制御感度で、1mV で 1ppb(10mHz)動きます。 LM317 は 100ppm/℃ ぐらいなのでちょっと風をあてただけで数mHz は動いてしまいます。 REF193 などのリファレンス用IC を使うのが最善ですが、TL431 などのシャントレギュレーターでも良いです。 まずは電源部分もビニール袋に入れるなどしてみてはいかがでしょう。
やどさん
>最高周波数にあまり変化なく3.3GHzでした。
だとするとプリスケーラーのカウンター部分がもう動作しないのでしょうね。 私がいろいろ試したときは(違うプリスケーラーですが)、出力周波数が高くなると波形が CR 充放電の三角波になって振幅が小さくなりカウントしなくなっていました。
2025/03/27 (Thu) 12:21:43
>やどさん
プリスケーラ部ですが、製作した2種類の基板は MB506 と uPB1507 を使っています。(どちらも1/256設定)
MB506 は在庫処分の為、uPB1507 は秋月で入手可能なため選びました。
どちらも動作実績のある(と思われる)海外のサイトの回路図を参考に ECL-TTL 変換回路付きで作りました。
しかし、データシートによると、
MB506:1.6Vp-p
uPB1507:2.6 ~ 4.7Vp-p
なので、uPB1507 は ECL-TTL 変換回路は不要だと思います。
プルダウン抵抗から RFC-7 に直結すると、性能が向上するかもしれません。(願望ですが・・・)
Re: RFC-7で高精度測定 - ji1udd
2025/03/27 (Thu) 17:48:55
Ojisankoubouさん、アドバイスありがとうございました。
電源基板をエアパッキンで包んでみたところ改善が見られましたが、まだやどさんの結果と比べると変動が大きくて見劣りしていました。
そこで、やどさんが使われている中国製のOCXOモジュールの回路を調べてみるとVCにCRフィルタが入っていることがわかりました(https://www.eevblog.com/forum/projects/cheap-chinese-ocxo-frequency-reference-modules/)。
そこで、自作GPSDOの余剰基板を使って測定対象を再構築しました(自作GPSDOの性能確認も踏まえてRCフィルタ定数は自作GPSDOの定数そのままとしました)。
再構築した測定対象をまずは リファレンスクロックとして 内蔵の秋月TCXOを使って測定してみました。かなり変動が抑えられた良い結果が得られました。電源回路の断熱とRCフィルタの効果と思います。
次にリファレンスクロックを自作GPSDOに切り替えて再測定してみました。変動はTCXOより更に抑えられました。
使用しているOCXO のShort term stability は 0.05ppb/s みたいなので満足できる結果かと思ってます。
また自作GPSDOの出力変動も確認できたことが嬉しいです(^^)
2025/03/27 (Thu) 22:01:47
やっと AliExpress からアルミケースが届いたので、 ji1udd さんの基板を使った RFC-7 が完成しました。
(ケースサイズは 100 X 110 X 40 です。)
文字入れは、後ほど行います。
やどさんと同じ OCXO 基板も到着したので、通常とプリスケーラ部で測定してみました。
内蔵オシレータですが、大体同じ周波数が表示できました。
やっと、スタート地点に立てましたね。
週末にでも OCXO の向きによる周波数の変化を見てみたいです。
Re: RFC-7で高精度測定 - やどさん
2025/03/27 (Thu) 22:04:01
みな様 こんばんは。
>電源回路の断熱とRCフィルタの効果
うわ~ 原因解析&特性改善、素晴らしいです!
>uPB1507:2.6 ~ 4.7Vp-p (?)
プリスケーラ出力振幅のスペックをデータシートでみるとMB506とほぼ同じ(1.2Vpp_min)でしたが、受けはRFC-7の回路なので、TTLレベル変換ICは乗せていないです。
問題は、周波数上限側はバイナリカウンタの1段目の動作上限周波数で効いてくるのだと思いますが、下限周波数が何故 500MHzなのかが分かりません。。
ただ、プリスケーラ出力の1000pFでは、低周波数時のインピーダンスが大になるため、取り敢えず1uFを1000pFに抱かせて再測定してみました。
→ 100MHz時、100MHz/256分周=390kHz, z=408Ω (1uFならz=0.4Ω)
結果、35MHz(-10dBm, SG下限)でもカウントOKになりました!よしっ! ^^)/
Re: RFC-7で高精度測定 - Ojisankoubou
2025/03/28 (Fri) 08:53:01
ji1uddさん
VC 端子はハイインピーダンスなのでノイズがのったのかもしれません。
ちなみに OCXO と TCXO での StdDev はどれぐらいになったでしょうか。
やどさん
もしかして 1000p が壊れていたとか?
Re: RFC-7で高精度測定 - ji1udd
2025/03/28 (Fri) 09:14:45
パオさんへ
Aliexpressのアルミケース良いですね。
基板サイズが100x100でアルミケースを想定した基板設計になっていないので LCDなどの前面配置のためにいろいろ工夫されたのかと推察しております。
やどさんへ
投稿を拝見して MC12080の出力Cに1uFをパラ付けしてみたのですが 残念ながら効果なかったです。おそらくMC12080の入力アンプ等の特性律速でしょう。
改めて私のRFC-7の入力特性を調べてみると
プリスケーラ―入力:Min. 35MHz ~ Max. 1420MHz (全範囲 -10dBmで計測)
通常入力: Min. 1Hz~ Max. 260MHz (35MHzまでは0dBm, それ以上は -1dBmで計測)
となりました。信号源はAPB-3/SAE-1です。
Ojisankoubouさんが 1PPS をRFC-7で測定されていますが、改めて 1Hz も測定できるんだと再認識しました (^^)
2025/03/28 (Fri) 09:20:50
やどさん
すごいです!
uPB1507 で下限 35MHz まで計測ですか。
このプリスケーラICを使用した例は海外でも多数見かけるのですが、300MHz 以下で成功したのは初めて見ました。
後で追試させて頂きます。
ちなみに最近は、100MHz 以下の信号源には Si5351 を使っています。
500円位の搭載基板と Arduino で簡単に信号発生器が出来ます。
ご参考まで。
https://projecthub.arduino.cc/CesarSound/10khz-to-225mhz-vforf-generator-with-si5351-version-2-acdc25
>uPB1507:2.6 ~ 4.7Vp-p (?)
私のデータシートの見方が間違っていました。
(お恥ずかしいです。)
ICの端子の解説に書いてある値を引用してしまいました。
ji1uddさん
EEVBlog はオシロの性能などの詳細をよく見るのですが、このような小部品の情報もあるのですね。
大変参考になりました。
Re: RFC-7で高精度測定 - ji1udd
2025/03/28 (Fri) 09:30:57
Ojisankoubouさんへ
> VC 端子はハイインピーダンスなのでノイズがのったのかもしれません。
当初はLM317出力をVCにつないで、OCXOのVC-GND間に100uFの電解コンデンサを付けていました。LM317出力がローインピーダンスなので100uFの効果なく、ご指摘いただいたようにLM317出力の変動がもろにVCに伝わって周波数変動していたのではと推察しています。
> ちなみに OCXO と TCXO での StdDev はどれぐらいになったでしょうか。
メモしてないですが TCXOで 0.0006~8、OCXOで 0.0003~5程度だったと思います。
ゲート時間は1sです。
Re: RFC-7で高精度測定 - やどさん
2025/03/28 (Fri) 20:50:17
皆さま こんばんは。
>1Hz も測定できると…
1Hzチェックを忘れてました。。
先ほど、NEO-7Mも使って1PPSをチョコっと測定してみたのですが、カウント表示しませんでした。。あれっ?
始めバラックでRFC-7を組んだ時、RFC-5のPG機能で1Hz出力して測定できています。。
→ 画像: Re: RFC-7 2025/01/18 (Sat) 23:22:45
でも今回バラックからPCBへの載せ替えでは、CRは新品を付けたので値を間違えた?かもしれません。。
チップCは値が書いてないので特にあぶない。。
>1000p が壊れていた?
となると、、プリスケーラ出力も間違ったコンデンサを付けた可能性が否定できず。。
→ 40MHzの256分周で156kHzとしても、1000pFなら約1kΩ、、RFC-7受け側はレベルセンターの100kΩx2とマイコン(タイマー)CMOS入力、、
インピーダンス2桁も違うので、さほど問題にならなそう。。100pFだったりして。。 汗);;
週末、ゆっくり確認してみます。
>100MHz 以下の信号源には Si5351 を使っています
あっ、パオさんのブログ「信号発生器の製作3」も先日 拝見させていただいています。
すごいスピードで記事が増えてまネ!しかも中身が濃くてケーシングまで行われていて、すご過ぎます!
今回は、自分も3Dプリンターでケース作って見ようかと思っていますです。。
//
Re: RFC-7で高精度測定 - 笛吹おじさん
2025/03/28 (Fri) 23:28:54
やどさん、今晩は。
測定時間2Sで出来るのではないでしょうか。
Re: RFC-7で高精度測定 - やどさん
2025/03/29 (Sat) 11:01:58
笛吹おじさん、了解です。
>カウント表示しません
すみません、誤報でした。ちゃんと周波数表示してます。
昨晩はオカシイと思って、RFC-5PGでの5Hzや10Hzもカウント表示が出なかったり、不安定だったり、これはCR定数まちがえた?と思い込んでしまいました。
今朝再度、測定やり直ししたら表示OK!何が悪かったの?!
→もっともGPSモジュールの1PPSを外部リファレンスGPSDOで測定しているのに、、あれっ?9が6桁しかないので、今日も何かオカシイですね。。。
CR定数含めて、ゆっくり見直してみます。
Re: RFC-7で高精度測定 - ji1udd
2025/03/29 (Sat) 16:16:09
皆さま、GPSモジュールの1PPS出力を測定しました。
リファレンスクロックは自作GPSDO(OCXO)です。
GPSDOにも用いている NEO-7M と 手持ちの NEO-6M の2つを測定しました。
NEO-6Mはランダムにバラつく傾向が観られ、NEO-7Mは 0, ±5ppbの3水準付近にバラつくような傾向が観られました。
Re: RFC-7で高精度測定 - パオさん URL
2025/03/29 (Sat) 21:13:31
以前組み立てた GPSDO をリファレンスにして、RFC-7 で AliExpress のオシレータを測定してみました。
(回転間隔は1分間の簡易計測です。)
この GPSDO は、安定するまで数日はかかるのでグラフが傾いていますが、オシレータを回転させると、皆様と同じような結果が得られました。
垂直にすると +0.03Hz 程度変化しました。
温度が一定になれば常に安定していると思っていた OCXO の周波数が、重力の影響で周波数が変わるのを自宅で実験できました。グラフはキレイじゃないけど、大満足です。
>やどさん
>パオさんのブログ「信号発生器の製作3」も先日 拝見させていただいています。
稚拙なブログを見ていただき感激です。
もし、3D プリンタで RFC-7 のケースを作るのでしたら、ji1udd さんが GitHub に公開されている GPSDO のケースが良い感じです。
https://github.com/ji1udd/GPSDO
スイッチを入力端子の上に移動して、厚さを足すか前面パネルを出っ張らせれば、LCD が入りそうです。
RFC-7のプリスケーラICについて - 笛吹おじさん
2025/03/06 (Thu) 17:44:01
ji1udd さん、今晩は。
すみませんお聞きしたいことがございます。
プリスケーラICはMC1208をお使いの様ですが、MC1209と分周比が異なります。
プログラムを変更されたのでしょうか?
お手数ですがよろしくお願い致します。
MC1209はSW,2がオープンですので分周比は256で固定されていてプログラム上で64,128,512をけいさんしているようです(私の理解では)
私はAliExpressで入手したMC1209(多分本物だと思いますが)を使っています。
適当な発振器がありませんので動作は未確認です。
NanoVNAでやってみたのですが入力レベルが低いのか表示はされませんでした。
Re: RFC-7のプリスケーラICについて - ji1udd
2025/03/07 (Fri) 17:55:57
笛吹おじさん、こんばんは。
はい、MC12079は製造終了品のため DigiKey や Mouserなどの有名どころの正規販売ルートから購入できなかったので 秋月で取り扱いのある MC12080を載せています。これは分周値が 最大80 なので freqcounter.c 中の分周値テーブルとメニューを小変更して対応しています。
具体的には、19行目の
const int psc_tbl[] = { 64,128,256,512 }; を
const int psc_tbl[] = { 64,80,128,256,512 }; に変更 (80を追加)
57行目の
{ 2, N_PSC, 0, 2, "x64 \0x128\0x256\0x512\01024\02048\04098\08192"}, を
{ 1, N_PSC, 0, 2, "x64 \0x80 \0x128\0x256\0x512\01024\02048\04098\08192"}, に変更 (0x80 \を追加、初期選択値を変更)です。
あと、データシートを参照するとプリスケーラのスペックは
トグル周波数 入力振幅(トグル周波数下限にて)
Min. Max Min. Max.
MC12079 0.25GHz 2.8GHz -4dBm +4dBm(グラフから)
MC12080 0.1 GHz 1.1GHz -4dBm +4dBm( 同上 )
となってます。NanoVNA の出力周波数と振幅を確認されてみたらと思います。
あと、フト思いついたのですが、プリスケーラ―なしで 200MHz程度まで周波数計測できていることと、プリスケーラ―のトグル周波数 Max値の関係からプリスケーラ―分周値は MC12079なら 最小の64分周、MC12080なら 最小の10分周で固定した方が周波数カウンターの分解能を損なわなくてよいのではないかと思いました。#分周比を大きくした方が周波数カウンタ表示値は安定するとは思いますけどこれに対してはゲート時間を長くすれば済むと思います。
Re: RFC-7のプリスケーラICについて - 笛吹おじさん
2025/03/07 (Fri) 19:34:25
ji1uddさん、今晩は。
どうもご丁寧な説明有難うございます。
プリスケーラー機能を評価する適当な信号源がありませんので、144/430のハンディ機にダミーを付けてやってみようかと考えて居ます。
NanoVNAのCWは高い方で可成りレベルが下がるのではと思います。
400MHzで-4dBmくらいのレベルがあれば反応が有るのではと、、、但し、MV12079が本物であればの話です。
通常入力は(2SK2394使用、ドレイン抵抗は170オーム)11dB/20MHzしか採れていません。
カウンターのプリアンプは難しいです。
MC12079が偽物だったらMC12080に代えて見ようと思います。
どうも有難うございました。また質問するかもしれません、よろしくお願い致します。
Re: RFC-7のプリスケーラICについて - 笛吹おじさん
2025/03/09 (Sun) 19:25:40
皆さん、今晩は。
ハンディー機にダミーをつないで435MHZで送信してみました。
パワーは1.5W出ています。パワー計には測定用のBNC端子が付いています。
電圧が何V出ているかは分かりません。
取り敢えずPSC-INに入れて見ましたが、何も表示されません。
どうもMC12079(MC表示はなく番号は12079)は別物か?あるいは偽物か?のどちらかではないか、、、、
NanoVNAの入力に入れて見るとレベルは+4dBくらいです。
パワーが1.5W、インピーダンス50オームから計算すると8.7Vくらいの電圧が出ています。
BNC出力は多分アッテネートされていますの8.7Vよりは低いと思われますがPSC-IN入力としてはそんなに低いとも思えません。
MC12080を考えた方がいいのかもです。
RFC-7製作しました - ji1udd
2025/02/22 (Sat) 17:45:13
ご無沙汰しております。
遅ればせながら RFC-7 を製作しました。
独立動作の2台の自作GPSDOの出力を REF10M と SIG IN / PSC IN に入力して動作確認しました。GPSDOの周波数誤差表示のミリHzオーダーは校正された測定器で出力周波数を計測したことがないのでどこまで合っているのか怪しいですが、RFC-7カウンタ計測値とほぼ辻褄が合っているので RFC-7, GPSDO共問題なしかなと思ってます。
1秒ゲートでミリHzオーダーまで計測できるのは凄いですね。
あと、使用しているLCDは秋月のAQM1602Y-NLW-FBWで i2c.c中 の DELAY_N を 1 から 2 に変更しないとLCD表示されませんでした(自分の場合)。あとプリスケーラは MC12079の代わりに 秋月で取り扱いのある MC12080を使っています。これは分周値が 80 なので freqcounter.c 中の分周値テーブルとメニューを小変更して対応しました。
Re: RFC-7製作しました - Ojisankoubou
2025/02/23 (Sun) 13:05:32
TIM2 割り込みから演算、表示、などを 3ms 以内にしたかったため I2C は規格より速く設定しています。 私のところでは ST7032 も 5V で動かしていますので問題なかったのかもしれません。 あとは SDA の pullup 抵抗を小さくしてみるとかで改善されるかも。
ところで左側の GPSDO が -0.001Hz になっているのに RFC-7 が +0.001Hz なのは誤差でしょうか?
Re: RFC-7製作しました - ji1udd
2025/02/23 (Sun) 22:01:16
コメントありがとうございました。
まず、I2Cについてですが 最初は PCF8574 を 5V電源で接続したのですが、アドレスを取得できない状況でした。I2Cプルアップが3.3Vとなっているので PCF8574のVIH(min)を満たせないためかなと思い PCF8574 を 3.3V動作に変更してみたのですが、それでもアドレスを取得できませんでした。そこで次に試したのが AQM1602Y-NLW-FBWです。このモジュールでも3.3V電源、5V電源(スペック外だが) での動作を試したのですが、PCF8574と同じくアドレスを取得できませんでした。それで通信速度を落としたらアドレスを取得でき、LCD表示されるようになりました。プルアップ抵抗値の変更は試していないので試してみようと思います。
次に周波数表示の方ですが、誤差と考えてました。自作のGPSDOには 複数の出力端子があるので 1台のGPSDOで RFC-7 の REF10M と SIG IN に供給した場合、理想的には10MHzピタリにカウントされると思うのですが、実際では ミリHz 桁は ±1 ふらついています。GPSDO出力信号の品質などを考えるとこれでも上出来と思ってましたが、I2Cの速度を落とした影響とも考えられるのでしょうか?
余談ですが、自作GPSDOとRFC-7の外観をそろえたく 表示器を OLEDに変更したいなと思っていたのですがお話から、それは困難なようなので このままケースに収めたいと思います (^^)
Re: RFC-7製作しました - Ojisankoubou
2025/02/24 (Mon) 08:01:59
周波数誤差ですが、DIGITS を AUTO+1、LINE2 を StdDev にすると変動がどのくらいかよくわかるかと思います。 私のところではStdDev は、信号と Ref を Rb や OCXO にした場合 0.0003Hz 程度(これはほぼ測定限界)、Ref を内部 TCXO にした場合 0.0007Hz 程度になります。
3ms といったのは途中で周波数が変化した場合を考慮したためで、普通は 5ms(200Hz) で測定しているので I2C の周波数を変えたとしても影響はほとんどないと思われます。
Re: RFC-7製作しました - ji1udd
2025/02/24 (Mon) 10:16:16
追加情報ありがとうございました。追々確認してみたいと思います。
I2C SDA のプルアップ抵抗を 1kΩに変更してみました。結論としては良くわからない結果となりました。と言うのは、DELAY_N を 1 にしても 2 にしても 上手く表示されなくなりました(添付画像)。オシロで SDAの tr が改善されるのは確認できたのですが...
また、オシロプローブをSCLだけにあてると文字がパラパラと表示されたりするので クロックが少し遅れた方がSDAとのタイミング関係が良い方向になるようです。
プルアップ抵抗ではちょっと解決しそうに思えなかったので 次に SDAのプルアップ抵抗を10kΩに戻して DELAY_N を 1 にし DELAY_HALF を NOP 1個から2個にしてみました。この設定でも上手く表示できました。お話から DELAY_N 2 で使っても問題なさそうですが、処理時間が短い方がベターかなと思うので しばらく様子を見て問題なければ この設定で使い続けようと思います。
Re: RFC-7製作しました - ji1udd
2025/02/24 (Mon) 10:49:34
教えていただいたStdDevを確認しました。変動が簡単に確認できる素晴らしい機能ですね。結果も思ったより良かったので満足しています。RFC-7の機能の使い方はこれからなので TCXOの周波数補正もこれから試してみます。
2025/02/24 (Mon) 11:02:39
>ji1udd 様
はじめまして
こちらの掲示板を定期的に拝見しております。
GitHub で公開されている GPSDO も拝見しましたが、ケースの作りもカッコいいですね。
これから、RFC-7 を作ろうと思っていたので教えて頂きたいことがあります。
お時間のある時に、よろしくお願いいたします。
1 オリジナルではアンプ部の FET は BF862 ですが何を使っていますか?
2 FET 増幅部の抵抗 R13 は何Ωで作られましたか?
3 製作されたプリント基板での測定上限周波数(プリスケーラ有無)はどのくらいでしょうか?
Re: RFC-7製作しました - ji1udd
2025/02/24 (Mon) 11:10:38
周波数補正も難なくできました。自動的に入力周波数を判別してくれる人にやさしい機能に感動しました。
Re: RFC-7製作しました - ji1udd
2025/02/24 (Mon) 11:36:02
パオさんへ
興味を持っていただき嬉しいです。
ご質問についてですが、1)2)についてはこちらの掲示板で話題となったものを使っています。
A1) 2SK2394 です
A2) 180Ω です。
3)はまだ調べてないので今日の午後に調べてみます。信号レベルはどの程度で調べるべき とかありますでしょうか?
Re: RFC-7製作しました - ji1udd
2025/02/24 (Mon) 12:42:50
カウンタ fmax を確認しました。
信号源は、SAE-1(APB-3 RFフロントエンドアダプタ) で 出力レベルは最大設定の -1 dBm です。
SIG IN入力 は 220MHz位まで、プリスケーラ―入力は 使用している MC12080の上限1.1GHz+αの 1.4GHz 位までカウントできた結果となりました。
Re: RFC-7製作しました - パオさん URL
2025/02/24 (Mon) 13:59:18
> ji1udd 様
お昼ご飯時に検証していただき感謝です。
私も同じ 2SK2394 を使用していますが、RFC-7 でも使えることが分かって安心しました。
高機能な RFC-5 にプリスケーラ入力切替機能がついて、2桁も精度が高い RFC-7 が自宅で製作できるなんて夢のようです。
出来上がりまではもう少し掛かりそうですが、完成が楽しみです。(ちゃんと動くか心配ですが・・・)
Re: RFC-7製作しました - ji1udd
2025/02/24 (Mon) 14:33:13
StdDevの確認結果ですがおじさん工房さんの結果に対して1桁悪いことに気づかずに満足してました。0の数の見誤り(^^;
そこで試行錯誤してみたところ 先の結果では GPSDO の正弦波出力を RFC-7のREF10Mに供給していたのですが、GPSDOの矩形波出力を REF10Mに供給することで改善されました。
正弦波出力の品質が悪いのか、REF10M受けのバッファでジッタを生じ易いのかのどちらかが原因だと思うのですが、とりあえず矩形波供給すればそこそこの変動に抑えられることが分かったので良しとします(^^;
Re: RFC-7製作しました - やどさん
2025/02/24 (Mon) 17:29:21
ji1uddさん みなさん、こんにちは。
うわー、GPSDOにRFC-7に加工も測定精度も素晴らしいですね!
こちらは、アリエクに注文したOCXO周波数標準リファレンスモジュールが昨日着ました。
そこで、GPSロック式の25MHz発信器の周波数出力を測定してみました。
→以前、SDR3のフィルター特性を改善されたJA3GSE OMのブログ記事を見て作ったもの
結果、結構変動大な結果ですが、三段に変化するようなグラフが面白いです。。汗);
精度を追求する測定にこんなバラックな環境ではダメですネ…
この10MHz標準モジュール、VCOにOSC5A2B02を使っているので、ji1uddさんのGPSDOを作ってみたくなりました。
//
Re: RFC-7製作しました - ji1udd
2025/02/24 (Mon) 19:10:58
やどさん、こんばんは。
ご無沙汰してます。
GPSDO と RFC-7 基板は若干余ってますのでSASEをいただければお分けできます。もし必要であればメール下さい。
Re: RFC-7製作しました - やどさん
2025/02/24 (Mon) 21:33:56
ji1uddさん、恐れ入ります。
実は、KiCADで作らないとと思っていた処…
あと、VCOはモジュールから外して 手持ちのNEO6MとSTM32F401開発ボードを使えば、GPSDOも出来そうかな? なんて考えていました
別途メールとSASEさせて戴きます。
//
Re: RFC-7製作しました - 笛吹おじさん
2025/02/24 (Mon) 22:07:36
皆さん、今晩は。
ji1uddさん、私は何時も蛇の目ですので、いやー!すごいです。格段の出来栄えですね。
やどさん、入手されたOCXO(10MHz)は、そのまま電源を入れた場合に周波数の精度はどうですか?
調整用のVRが付いているようですが。
Re: RFC-7製作しました - やどさん
2025/02/24 (Mon) 22:45:20
笛吹おじさん こんばんは。
はい、この円安時代にもかかわらずAliで1,017円だった OCXO(恒温槽付発振器)の精度はいかに?!
がテーマだったのですが、、
先の測定グラフのとおり、上手く測れませんでした。。
ちゃんとした環境と精度良いGPSDOが必要だと教えられました。
ちなみに電源投入時は,12V/約0.5A、恒温(OCXO上部の温度約40℃)になると0.25A位でした。
グラフは、電源投入後,約30分経ってから、RFC-7のシリアル送信データをExcelでグラフにしました。
//
2025/02/24 (Mon) 22:51:57
>ji1udd 様
まだ在庫がありましたら、私も GPSDO と RFC-7 基板を譲って頂けないでしょうか?
ちなみに、大変恥ずかしい質問ですが「SASE」とは何用語でしょうか?(Google で検索してもセキュリティ用語としか出てきません・・・)
Re: RFC-7製作しました - 笛吹おじさん
2025/02/24 (Mon) 23:17:11
やどさん、了解です。
いろいろ値段の異なるOCXOがでていますね。
オーブンを見ると無印の物と、仕様の一部が刻印されているものがあるようです。どう違うのかは分かりませんが。
パオさん、今晩は。
SASEはアマ無線ではQSLカード〈交信証)交換する際、返信用の切手を貼った封筒を同封して相手に送ることです。(多分)
略語は忘れました。
Re: RFC-7製作しました - やどさん
2025/02/25 (Tue) 20:57:09
OCXO(恒温槽付発振器)の精度はいかに?!(その2)
内蔵TCXOのRFC-7で、OCXOモジュールの測定を試行してました。
(TXCO周りには、シリコン塗布して変動を押さえてみた)
あと、OCXOスペクトラムもAPB3で確認しました。goodです → 画像
結果:
RFC-7ゲート時間1秒の測定で、 標準偏差=0.004Hz max 程度でした。
やはりOjisankoubou測定値と比較して一桁以上悪いです。(→ Ref:内部TCXOで 0.0007Hz 程度に対して)
グラフのように、17分間で約7ppbの変動でした…
→ RFRC-7 TCXOの変動とOCXOの変動がごちゃ混ぜなので、やっはりOCXO単体の安定特性は良くわかりません。 汗);
でも1,017円のOCXOモジュールにしては精度が良さそう! …どうしたらこの値段で儲かるのか??
参考:
使用TCXO: SEIKO EPSON製 TG-5021CE-10N
周波数電源電圧特性 fo-VCC ±0.2 × 10-6 Max.
周波数経時変化 f_age ±1.0 × 10-6 Max.
使用OCXO: CTI製 OSC5A2B02 (ネットで拾った値で正しいのか不明)
電源安定度 ≦ ±2ppb (Vsup ±5%)
温度安定度 ≦ ±10ppb (25℃ 50-25℃)
Aging ≦ ±0.5ppb/day
Short time stsbility:≦5min(≦±100ppb)
//
Re: RFC-7製作しました - 笛吹おじさん
2025/02/25 (Tue) 22:16:13
やどさん、今晩は。
OCXOの測定データ有難うございました。
大体の所は分かりました。
このオーブンの分解動画を見ました。HCU8型のXtalをTO220タイプのTRのコレクタに貼り付けてオーブンにしています。
Xtalの発振周波数は三次曲線特性を持っている様で
温度を変化させ周波数が低い方から高い方へ変化する時にある温度で発振周波数が一定になる部分があり、その温度になる様にオーブンの温度を設定すようです。
以前、3MHzのオーブンをばらした時にXtalに76℃と表示されていました。
10MHzのOCXOをカウンタの外部基準に入れてGPSの10KHzを測定信号入力に入れて10KHzのなる様にOCXOの周波数調整VRを回せば校正出来るのではと思います。
ふだん使うのであれば10MHzのTCXOでも十分かと思います。
2025/02/25 (Tue) 22:18:17
>ji1udd 様
GPSDO と RFC-7 基板ではお世話になります。
よろしくお願いいたします。
>笛吹おじさん
SASE の件、ありがとうございます。
「SASE 返信用封筒」で検索したら"Self Addressed Stamped Envelope"と分かりました。(こんなことも知らずにスミマセン)
>やどさん
OCXO モジュールの安定度、すごく良さそうですね。
ネット情報では、このモジュールは中国の基地局の旧型器材の処分品だとか・・・
だとすると、昔のアメリカの基地局祭を思い出しますね。
Re: RFC-7製作しました - Ojisankoubou
2025/02/26 (Wed) 08:54:34
>やどさん
周波数変動のグラフを見ると 10数秒ごとに何かノイズが入っているようです。
右側のスペクトラムを見るとノイズフロアーが高いようです。
まずは OCXO の電源あたりを見てみるとよいのでは。
Re: RFC-7製作しました - Ojisankoubou
2025/02/26 (Wed) 14:04:30
>ji1udd さん
>正弦波出力の品質が悪いのか、REF10M受けのバッファでジッタを生じ易いのかのどちらかが原因だと思うのです
10MHz 正弦波だと 1V/50ns ぐらいの立ち上がりになりますが、50ps 以下のジッターにするには、信号のノイズとスレッショルド電圧変動は 1mV 以下が必要になります。 Ref を正弦波にするのはスプリアスが少ないメリットはありますが、ジッター的には良くないです。
Re: RFC-7製作しました - ji1udd
2025/02/26 (Wed) 20:40:08
Ojisankoubouさん、定量的な解説ありがとうございました。
高性能を実現するには何かとシビアですね。
今回 RFC-7を製作してみて GPSDOをダブルオーブン化したくなる気持ちが理解できました。あと振動対策も必要な感じですね。(^^)
Re: RFC-7製作しました - 笛吹おじさん
2025/02/26 (Wed) 21:56:37
皆さん、今晩は。
古い話で恐縮ですが、私が以前使っていた3MHzのOCXOはは大きさが40mmx40mmx100mm位の長方形の金属箱に入っていました。
その金属箱の中にXtalと発振回路基板が更に小さな金属箱(オーブン)に入れられていました。その小さな金属箱の外側に熱源のヒータ巻き線が巻かれています。
このオーブンはポリスチロール系の断熱材で包んで大きな金属ボックスに収納されてます。
電源電圧は24VDCを加えていました。
周波数調整はcourceとfine、2か所ありました。
中国製のOCXOは5V駆動でオーブン其のもは裸の状態です。
何らかの断熱材で包むようにした方がいいのではないかと思います。
以前携帯の基地局で使われていたルビジウム発振器を入しましたが、中古のせいかロックしなくなりNGです。
この発振器はかなり発熱します。
Re: RFC-7製作しました - やどさん
2025/02/26 (Wed) 22:37:59
こんばんは。
Ojisankoubou様 笛吹おじさん パオさん
アドバイスや情報ありがとうございます。
いやいや、電源変動やノイズがないか?GNDはOKか?って、一丁目一番地でした。汗);
取り急ぎ、
Li+バッテリーで動作させてデータを取り直してみました。OCXO間のGNDも見直しました。
結果、
スペクトラムのノイズフロア改善し、OCXO10MHzの15分間の安定度も3ppb程度まで向上しました。→画像
もっとも、未だ変動グラフにはピンピンノイズが乗っています、何だろう??
まずは 現在バラック状態のRFC-7を見直そうかと思います。
なお、OCXO.10MHzの校正は、
OCXOをRFC-7外部Refにして、NEO-6M GPSの1PPS信号(10kHz設定)を測定し、10000.00000Hzになるように調整しました。→ 笛吹おじさん Tnx!
//
Re: RFC-7製作しました - Ojisankoubou
2025/02/27 (Thu) 09:02:25
>やどさん
ノイズはかなり抑えられたように見えますが、StdDev がまだ大きいようです。 TCXO 出力レベルが小さいためかも。 Ref 切り替え SW と LVC2G04 の間に簡単なアンプ(数倍程度)をいれると改善できるかもしれません。
Re: RFC-7製作しました - Ojisankoubou
2025/02/27 (Thu) 10:09:05
>ji1udd さん
>GPSDOをダブルオーブン化したくなる気持ちが理解できました。
精度が良くなると粗も見えてくるものです。
暴走しないように気を付けてください。
Re: RFC-7製作しました - やどさん
2025/02/28 (Fri) 00:39:38
Ojisankoubou様 みな様、こんばんは。
>TCXO 出力レベルが小さいためかも
確かに、オシロで観測したところTCXO出力振幅0.85Vppでした。
やっつけ仕事で手持ちの2SC1923でアンプしたところ、振幅2.4Vppとなり, 標準偏差は0.0019Hz程度まで下がりました!
でも、時間変動は前回より倍以上の7ppbになってしまったため、RFAMPモジュール(SBA-5089Z?)でも試行、振幅2.0Vppにしかなりませんでしたが、明らかに最初の頃のピンピン変動が少なくなって標準偏差は0.0014Hz程度に... 画像
うーむ、有効数字9桁,10桁の測定はとても面白いですが、流石にキビシイですね。。
しかし高精度測定するためのノウハウも戴いて、やっとRFC-7測定に慣れてきた感じです。
//
Re: RFC-7製作しました - Ojisankoubou
2025/02/28 (Fri) 16:38:26
>やどさん
>時間変動は前回より倍以上の7ppbになってしまった
アンプを入れたことが原因とは思われません。
TCXO の大きな変動はほとんど周囲温度によるもので、測定時の人の動きとか、エアコンの風があたったとかが原因です。 基板全体をビニール袋に入れるなどして温度変化させないようにすると周囲からの影響を抑えられます。
Re: RFC-7製作しました - ji1udd
2025/02/28 (Fri) 22:26:53
3Dプリンタで製作したケースに入れて完成させました。
LCDがフロントパネルのSWとSMAコネクタとの間にスペース的に収まらないのでLCDをケース上面に配置して使用時には視認性が良くなるようにLCDを起こせるようにしました。
使用しているTCXOの振幅不足は機会があれば別のTCXOに置き換えてみようかと思います。
Re: RFC-7製作しました - やどさん
2025/03/01 (Sat) 00:41:53
Ojisankoubou様 ji1uddさん、こんばんは
いつもながら、ji1uddさんのケーシング素敵です!
3DプリンターでLCDの角度を変えられる機構すごい。
で、毎晩のようにすみません。
ようやく、まともな周波数変動,しかも高精度な測定が出来てきました! 画像
アドバイスのとおり、RFC-7,OCXOをビニール(プチプチ)でくるんで、更に段ボール箱に入れて測定。
部屋もエアコンの居間をやめて、エアコンなし誰も入ってこない四畳半に変更。
結果、本当の周波数変動が見えてきました。
→多分、TCXO側の温度変動じゃないかな?温度計も入れておけば良かった。
嬉しいぃぃ~~ 汗);;
//
Re: RFC-7製作しました - Ojisankoubou
2025/03/01 (Sat) 06:50:30
>やどさん
これでやどさんも高精度病ですね。
>TCXO側の温度変動じゃないかな?
RFC-3 のページに書いたように TCXO の経時変化は大きいです。 私の使っている TCXO で 10~20ppb/H あり、いつまでも安定しません。 水晶が AT カットだからでしょうか、OCXO は SC カットなので安定なのでしょう。
Re: RFC-7製作しました - ji1udd
2025/03/01 (Sat) 19:59:07
> いつもながら、ji1uddさんのケーシング素敵です!
ありがとうございます(^^)
文字入れがテプラなのが今一と思っているのですが、良い方法ないですかね?
#フィラメント交換して文字の色を変えるとかの手がありそうですけど3Dプリントで小さい/細い文字は無理ですし....
2025/03/01 (Sat) 21:36:27
やどさんに刺激を受けて、埃をかぶっていた部品箱のオシレータ(12個)を整理して測定してみました。
https://me-yoh.com/oscillator_championship
やっぱり、外気温の変化と暖房の風(北海道なので)は致命的の様で安定しません。
あまりに成績が悪いので、RFC-7 が出来たら再挑戦します。
Re: RFC-7製作しました - 笛吹おじさん
2025/03/02 (Sun) 20:41:52
今晩は.
蛇の目基板のRFC-7をケースに入れました。
1件落着の区切り?のささやかな手作りケースでお恥ずかしい限りですが、私なりのまとめです。
7.4Vのリチウム電池を無理やりケース内に入れましたので、窮屈な状態です。(どこかショートしてもおかしくありません)。
2025/03/02 (Sun) 23:08:37
>ji1udd さん
3Dプリンタ製のケース、カッコいいですね!(昔の SONY の DAT レコーダを思い出しました。)
私も文字入れにはテプラの透明テープ白インクを使っています。
他にも考えましたが、
1 アルプス電気の熱転写プリンタがあれば転写シールが作れますが、現在では手に入りません。
2 デカールシールでインクジェットでも、プラモデル用のデカールが作れますが、白いシールに反転文字で白字もどきになります。
3 転写箔の白色を使えば熱転写出来るようですが、プラケースには難しそうです。
4 カッティングシートをカッティングマシーンで切り抜いて白文字が作れますが、小さな文字は出来ません。
どれも実用的ではなく、参考にならなくてスミマセン
>笛吹おじさん
アルミ板の加工から自作されたケース、完成おめでとうございます。
斜めに傾けたディスプレイが見やすいですね。
Re: RFC-7製作しました - ji1udd
2025/03/04 (Tue) 19:19:09
パオさんへ
文字入れのアイデアどうもありがとうございました。
メールで追加情報いただいた 「テプラ・デカール」も手順が多くて難しそうです。皆さん共通の悩みという感じですね。
食わず嫌いになっているフィラメント途中交換を試してみようかなと思います。
RFC-7noのEXT OSCについて - 笛吹おじさん
2025/03/03 (Mon) 22:55:48
今晩は。
愚問かも知れませんが、RFC-7はSW3でREF OSCをInternal,Externlの切り替えを行っています。
Externalに何もつながない状態でEXTに切り替えると「REF_CLK?」と表示されます。10MHzのOSCをExtにつなぐとLCDに「EX」と表示されのでしょうか?
(EXTモードで動作している表示は必要と思われます)
私のRFC-7は表示されません。
周波数測定は出来ている様です。
Re: RFC-7noのEXT OSCについて - 笛吹おじさん
2025/03/04 (Tue) 17:49:32
今晩は。雪になりそうですね、既に降っています。
FET Q1が壊れていました。交換してEXは表示されました。
蛇の目基の配線を追いかけるのが大変です。
Q3は2SK2794を使ったのですがゲインがなく、2SK2394をやっとさがしましたので交換します。
SDR-3 送受信でおかしくなる件 - Ojisankoubou
2018/10/04 (Thu) 17:21:03
何人かの方が電源電圧が 5.2V で送受信すると信号がでなくなるとのレポートを書き込まれていますが、私のところでも 5.3V にしたところ再現しました。
調べたところ SDR-3A基板の IC8(RT9193 3.3V Reg) の出力が送信から受信にした瞬間 4.3V まで跳ね上がり、IC7(SI5351) のレジスター内容が消えてしまうためでした。
RT9193 の仕様書では Load Transient は数10mV のはずですが、実測では受信に切り替わったときの負荷(IC3 BGA2815)の増加で1V近く跳ね上がっています。
対策ですが、IC8(RT9193) の出力につながっている C67(47/6) にパラに 220~470uF のケミコンを付けてください。 これにより跳ね上がりは 3.6V に軽減され、SI5351 のレジスターも消えなくなりました。
ESR の小さいケミコン(OS コンなど)でしたら 47~100uF でも十分効果があります。
C66 に 10uF のセラコンパラ付けでも OK です。
Re: SDR-3 送受信でおかしくなる件 - やどさん
2018/10/05 (Fri) 00:44:16
小川さんこんばんは。
こちらでも送信から受信にした時に頻繁に起きました。
SDR-3A基板のRT9193 3.3V Regの問題との事、了解しました。
デジタル側の3.3Vばかり見ていて気が付きませんでした。
ケミコンも追加して試行してみます。
ありがとうございます!
//
Re: SDR-3 送受信でおかしくなる件 - ji1udd
2018/10/05 (Fri) 18:46:00
Ojisankoubouさん、やどさんへ
手持ちに積セラの10uF (GRM219R61E106KA)があったので C66に縦積み実装したところ、問題が解消されました。電源電圧を5.4V位まで上げてみましたがOKでした。
10uFを追加する前にオシロでIC8の出力を見てみましたが、電圧が跳ね上がる症状は捉えられず、やや半信半疑でしたが効果はてきめんでした。
以上、ご報告まで。
Re: SDR-3 送受信でおかしくなる件 - ja1wet
2025/03/01 (Sat) 11:01:32
RT9193(5Vー>3.3V)出力側で短絡(地絡)して、C67の両端が無電圧の状態です。
RT9193は手元にないので、適当な5Vー>3.3Vデバイスに交換してみようと思いますが、他に点検箇所がれば教えていただきたいと思います。
Re: SDR-3 送受信でおかしくなる件 - ji1udd
2025/03/01 (Sat) 19:50:36
ja1wetさんへ
故障原因が気になるところですが何か心あたりはありますでしょうか?
どのレベルでコメントしたら良いのか迷うところですが、少なくとも RT9193を取り外した段階でGNDショートが解消されることは確認した方がよろしいかと思います。
STM32F303K8T6でLチカ - 笛吹おじさん
2025/02/06 (Thu) 20:10:32
今晩は。
どうでもいい様な話題で恐縮です。
別の目的が有って秋月から掲題のマイコンボードを入手しました。
最初、Arduino IDEでプログラムを書き、コンパイルはパスしましたが、STLINKで書き込んでみても全く変化がありません。PB3につないだLEDを点滅させるLチカです。
次にST32CUBE-IDEを入れてみましたが、使い方が分からず頓挫。
続いてSTM32Cube-MXを入れました。これは何とかMakeが出来実行ファイルの書き込みも出来ました。
でもPB3のLEDは全く動作しません。
ネットをあさって次の様なプログラムを作りPB3がやっと動作しました。
/*STM32F303k8t6 LED ON/OFF TEST 2025/2/6 */
#include "stm32f3xx.h"
int main(void) {
RCC->AHBENR |= (1 << 18); //ポートB有効
GPIOB->MODER |= (1 << 6); //PB3 出力
GPIOB->MODER &= (~(1 << 7));
GPIOB->OSPEEDR = 0; //全てロースピード
while (1) {
GPIOB->ODR ^= (1 << 3); //PB3 ON
for (volatile int i = 0; i <= 500000; i++) {
}
// GPIOB->ODR &= (~(1 << 3)); //PB3 OFF
// for (volatile int i = 0; i <= 200000; i++) {
// }
}
}
STM32Cube-MXはコードをgenerateしてはくれるのですが何かが足りないようです。
Arduino-IDEでプログラムが作れればいいのですが、STM32とは相性が悪いのかうまく行きません。
STM32は難しくて手に負えませんね。
やどさん、パオさんこの辺おやりでしたら、教えてください。
Re: STM32F303K8T6でLチカ - パオさん URL
2025/02/07 (Fri) 10:26:58
>笛吹おじさん
「F303」と「F103」でシリーズが異なるので参考になるか分かりませんが、STM32F103 を Arduino IDE で動作させた記事です。
https://me-yoh.com/make_frequency_counter_1
私のところでは、この MCU でブートローダを書き込んで USB からスケッチを書き込むと動作しなかったので、シリアル変換器から毎回書き込みました。
その際には、ボード上のスイッチ切り替えが面倒でした。
Re: STM32F303K8T6でLチカ - 笛吹おじさん
2025/02/07 (Fri) 18:03:46
パオさん、今晩は。
記事のご紹介有難うございました。
参考にさせていただきます。
STM32は手軽に扱えるCPUではありませんね。
Arduino-IEDはプログラム比較的簡単?にかけるのですが、やはりC言語のスキルが要求されます。
ハードルが高くて、、、、m(_ _)m
Re: STM32F303K8T6でLチカ - やどさん
2025/02/09 (Sun) 22:57:30
笛吹おじさん こんばんは。
STM32CubeIDE1.17で「Lチカ」トライしてみました。
以前 TT@北海道さんの「オール・ソフトウェア無線」の記事を見てST-LINK V2の代わりにNucleo(STM32F030R8)ボードを購入したのが初めで、SDR-3でも使ったSTM32マイコンなのに、Lチカすら試行した事が無かった。汗);
結果、
土日かかってやっとチカチカしました~ オィオィ;汗);
・使用ボードはAliで買ったSTM32F401CCU6開発ボード、念のためにNucleo-F030R8ボードも。 → 画像
・ST-Link v2をマイコンボードに接続しておく事で、STM32CubeIDEのみで開発から書込み・デバッグまで行えます。
・NRSTやBOOT0端子を操作してブートローダを起動する必要が無いので一番簡単に書込みまで行うことができそうです。
参照した記事(URL)と、躓いた処を記しておきます。
何が悪かったのか?不明確なぶぶんもあるので参考にならないかもしれませんが…
・STM32CubeIDEを使ってLチカをするまでの解説ビデオ (Nucleo-F303K8ボード)
https://youtu.be/hNdIBFCl92w?si=FnGsF3UjlndfsOTa
・How To STM32CubeIDE Lチカ編
https://qiita.com/usashirou/items/65be086c28f7a6feac7d
・STM32CubeIDEダウンロードにmySTログイン(ID登録)必要
STM32CubeIDEインストール後に使用するマイコンのパッケージ(?)をダウンロードする時にも必要
・使用するボードの回路図に合わせてピン設定する、GUIでクロックピン設定、LED出力ピンの設定
project名.iocの画面で、Pinout&Configurationタブを選択 → 画像1
RCC: HSEは "Crystal/Ceramic Resonator"を選択した ← 開発ボードは、X'tal OSC 25MHzのため
確認認のため、"Master Clock Output1"にチェックを入れておいた
SYS: Debugは "Serial Wire"を選択した
GPIO: PC13をクリックして "GPIO_Output"を選択した ← 開発ボードのLED出力端子
PA0をクリックして "GPIO_input"を選択した、Pull-upを選択 ← 開発ボードのKEY入力端子
・クロック設定
Clock Configurationタブを選択して → 画像2
HSE input freq. に25MHzを設定、System Clock MUXで適当に選択
HCLK(MHz)のBoxに適当に50MHzと入れリターンするとPLL逓倍/分周比など自動的に設定してくれた
・ここまででproject名.iocをSAVEすると、プログラムコードを生成してくれる。
生成された main.cの while(1)ループ内に Lチカ記述を追加するが、
ここでポート名とピン番号を、ピン設定で付けた名前に合わせた。
PortCの13pin → LED_GPIO_Port、LED_Pin
で、
いよいよコンパイル?(ビルドって云うのか、)して、エラー無くコンパイルできたのですが、、、
続いて書込みで、何故かマイコンに接続できず、書き込みタイムアウト!!になってしまいました。
なんで?? (土曜日夜)
比較確認のため素性の正しい Nucleo-F030R8ボード(ST-Link v2 オンボード)で試してみるとやはり接続できず!!
何故?? 原因分からず寝ました。
翌日曜、
一旦、STM32CubeProgrammerを使って書込みしてみたら、チャンと書き込めました。LEDチカチカします!
気を取り直して、、STM32CubeIDEで コンパイルからやり直してみたところ、何も問題なく書込みまで終了してLEDチカチカです!
何だったんだろう??
→ STM32CubeIDEインストールから一気に試行したのが敗因?、再起動が必要だったのかもしれません?
まぁ、新しいツールの使い始めなので、こんなものでしょうか… 汗);
Re: STM32F303K8T6でLチカ - 笛吹おじさん
2025/02/10 (Mon) 00:17:48
やどさん、今晩は。
やどさん、投稿もなく静かでしたので、インフルにでも罹ってしまったのかなと気になって居ましたよ。
やーごそごそやっていたのですね。
内容が濃いので明日(もう明日になって居ますが9じっくり読ませていただきます。
お疲れさんでした。
Re: STM32F303K8T6でLチカ - 笛吹おじさん
2025/02/10 (Mon) 09:35:55
お早うございます。
私はSTM32Cube-MXでSTM32F303K8T6のLチカをやってみました。
試行錯誤の結果、何とか基本コードのジェネレートが出来、そこにLED ON OFFのルーティンを追加してコンパイル、ST-LINKで書き込み目出度くチカチカしました。
STM32は奥が深いので、そんなに複雑なものは私には無理です。(Lチカ止まり、、、かな?)
STM32Cube-IDEでもやってみます。
以下の話題はこの掲示板には関係ないかもですね。
STM32F103C8T6も入手しましたのでこちらはARDUINO-IDEでLチカをやってみました。
USBシリアル変換器をつないで、BOOT0を1にセット。書き込み後は0に戻します。
Maple Coreのファームを書き込みます。
次にオンボードUSBにPCをつないでデバイスマネジャーで見るとport番号が表示されてます。
後はArduinoで書き込みをするとLチカができます。
ただ問題があります。と言うのは、もう一度書き込みをすると先ほど書き込んだMaple CoreBoot Loaderは消えてしまい書き込みはできません。
これは当たり前なのでしょうかね。
Arduino用のbootloaderはFlashの先頭に書き込まれるようですので新しい階込みでは着えてしまいますよね。その都度、bootloaderを書きこまなければならないのであればST-Linkで書き込む方が便利ではないかと、、、、
プログラムがArduino環境で書けますので幾分楽にはなりますが。
端折りましたので詳細は書きURLが参考になります。
http://nopnop2002.starfree.jp/STM32F103/SMT32F103-1.html
https://www.toolsbox.biz/nonsense/STM32F103/STM32F103C8T6.html
Re: STM32F303K8T6でLチカ - 笛吹おじさん
2025/02/10 (Mon) 15:58:25
今日は。
STM32Cube-IDEでやってみました。
スイスイとは行きませんが何とかLチカができました。
しかし、実際にこのCubeーIDEで複雑なプログラムを造るのは大変ではないかと思います。
C言語を自在に操れるようになりたいですが、ちょっと遅かったですね。
RFC-7早くケースに入れたいのですが、アルミ板に孔を開けるのが億劫で、、、進んでいません。
追記:
STM32CubeーProgrammerを使わなくてもファームの書き込みも出来るのですね。
Re: STM32F303K8T6でLチカ - パオさん URL
2025/02/15 (Sat) 12:40:43
>笛吹おじさん
Cube-IDE で L チカの成功、おめでとうございます。
これで世界が広がりましたね。
(私は、まだまだ Cube-Programmer で書き込むのがやっとです。)
STM32 で Arduino IDE ブートローダの件も参考になりました。
(ATmega328P は後ろにブートローダを書き込むのですが・・・)
>やどさん
お久しぶりです。お元気そうで良かったです。
TT@北海道さんのサイトは、良く拝見しています。
やどさんも CubeIDE を使って L チカを成功されているのですね。
いつ見ても、細かな解説で参考になります。
皆様、すでに新型の RFC-7 を活用されているようですね。
私も早く追いつきたいのですが、色々と立て込んでいて来週以降かなぁ・・・
RFC-7 LED-D1 - 笛吹おじさん
2025/02/01 (Sat) 12:58:19
今日は。
RFC-7のLED(D1)はどんな時に点灯するのでしょうか?
ケースに入れた場合、表示名は?
D2はプリスケーラー使用時に点灯、D3は電源オンで点灯するので名称は分かるのですが。
プログラムをみれば分かるのでしょうが、、、よろしくお願い致します。
2025/02/01 (Sat) 19:06:11
>笛吹おじさん
先日は大変お世話になりました。
間違っているかもしれませんが、「board.h」の74行目で「LED1(Heart Beat)」と書かれています。
名前からすると正常動作時に点滅する(?)のでしょうか。
また、123行目には「PB7 Heartbeat/Error LED」と書かれています。
という事はエラー時には点灯する?
Re: RFC-7 LED-D1 - 笛吹おじさん
2025/02/01 (Sat) 19:33:51
パオさん今晩は。
どうもアドバイス有難うございます。
私も一応プログラムは見ました、Heart Beatという文字は見つけました。(見つけただけですが)
実際の様子は電源を入れると点灯して何か入力に信号を入れると消灯して、入力をオフにしても消灯のままですね。
Heart Beatですから装置間でお互いに生きているのを
確認するための信号だと思います。(RFC-7ではIC間の確認に使っているのでしょう)
D2はプリスケーラ使用時に点灯すると思うのですが、
ずっと灯きっぱなしです。配線間違えたかもですね。
Re: RFC-7 LED-D1 - 笛吹おじさん
2025/02/01 (Sat) 23:13:38
今晩は。
D2はA-INPUT(普通入力時)に点灯してプリスケーラー使用時は消灯します。(配線が外れていました)
回路図のプリスケーラICの2pinのR54にLEDを付ければプリスケーラ使用時に点灯します。
Re: RFC-7 LED-D1 - Ojisankoubou
2025/02/02 (Sun) 07:21:35
LPTIM の出力が L→H になるとき OS の TASK が動作しているとジッターになるため TASK を細かく分けて時間調整しています。 D1 はその確認用で、TIM2 Capture 割り込みがかかった時に OS が Sleep になっていないと灯くようになっています。
通常動作時に灯くことはないです。
Re: RFC-7 LED-D1 - 笛吹おじさん
2025/02/02 (Sun) 08:24:29
おはようございます。
早速の御回答有難うございます。
>通常動作時に灯くことはないです。
電源を入れると普通は動作状態にあると思われます。
この時に点灯することはないということですね。
プログラムで確認します。
Re: RFC-7 LED-D1 - 笛吹おじさん
2025/02/02 (Sun) 12:20:15
今日は。
プログラムを見て見ました。
board.cの LED 用 GPIO ポート初期化関数を見ると
下記の様になっています。
LED1_ON();
LED 用 GPIO ポート初期化のあとプログラムがどう動くかは未確認ですが点灯すようになっているのではと思います。
此処にLED1_OFF();にすると消灯します。
ただ、CPUがSLEEPしたと時に点灯しないとまずいですが。
//───────────────────────────────────
// LED 用 GPIO ポート初期化
//───────────────────────────────────
static void led_port_init( void ) {
stm32_gpio_mode( LED1_PORT, LED1_PIN, GPIO_MODE_OUT );
// stm32_gpio_mode( LED2_PORT, LED2_PIN, GPIO_MODE_OUT );
// stm32_gpio_mode( LED3_PORT, LED3_PIN, GPIO_MODE_OUT );
// stm32_gpio_mode( LED4_PORT, LED4_PIN, GPIO_MODE_OUT );
// LED1_ON(); <ーーーココ!です
LED1_OFF();
// LED2_ON();
// LED3_ON();
// LED4_ON();
}
追記:
動作時の定義によりこの辺は変わってくると考えます。
Re: RFC-7 LED-D1 - 笛吹おじさん
2025/02/02 (Sun) 15:35:45
再び今日は。今日は雪の予報でしたが小雨、寒いです。
さて、RFC-7をケースに入れる前提での話ですがD1の仮名称を[Fail]か[Fault]にしようと考えて居ます。
電源ONでD1点灯はちょっと??ですので1~1.5秒位点灯させその後消灯させればいいかなと。
dly_tsk()を使えば行けるのではとやってみましたが
(コンパイルエラーにはなりませんが)そうは簡単には行きません。
LED1_ON();
dly_tsk(10000);
LED1_OFF();
dly_tskは dly_tsk(xxxx(1000)); xxxx関数が必要なのかも知れませんね。
追記:下記を追加でLED D1 1sec ON ーー>OFF 出来ました。
LED1_ON();
delay_ms(1000);
LED1_OFF();
ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん
2024/12/10 (Tue) 08:41:10
皆様、お早うございます。
スレッドが長くなりましたので新しく(2)にしました。
やどさん、コンパイルは通りましたが表示は出ませんね。もう少し考えることにします。でも難しいです。
(今どきの若い人の言葉ではムズイです)
Re: ACM1602NI-FLW-FBW-M01(2) - パオさん URL
2024/12/10 (Tue) 09:51:40
>笛吹おじさん
昨晩、私も色々と試してみましたが、今のところ ST7032 LCD には表示させることが出来ていません。
>やどさん
なんだか指摘したみたいになってスミマセン(文書で表現するのは難しいですね。)
出来ましたら、ハードの不良と切り分けたいので、表示に成功した「main.hex」と、変更した「lcdc16xn_i2c.c」をメール先へお送りいただけないでしょうか?
Re: ACM1602NI-FLW-FBW-M01(2) - やどさん
2024/12/10 (Tue) 13:04:16
こんにちは。
パオさん
hexを下記に置きました。
https://drive.google.com/drive/folders/1riC0zhOjh7L3jIOKZVYTP_VtJSxp-a_b
のRFC_5_ST7032表示するもNG.zipです
昨晩、AQM1602XA(画像添付)をぶんきゅうさんのエレキーヤーで使っていた事に気が付いて、16文字表示できましたが、まだ変です。。汗);;
笛吹おじさん
PulsViewソフトでI2C解読させて、I解読した表示の上で、右クリックすると、Export All annotationsでき、テキストファイルに落とせました。
これで解析がとても楽になりました。
↓
SDAの立下りにトリガかけて、RUNした後に電源ONすると、最初からのI2C波形が得られます。
こんな感じでテキストができました。
481852-481944 I2C: Address/Data: Address write: 3E
481836-481836 I2C: Address/Data: Start
481944-481958 I2C: Address/Data: Write
481956-481970 I2C: Address/Data: ACK
481973-482079 I2C: Address/Data: Data write: 00
482079-482092 I2C: Address/Data: ACK
482096-482201 I2C: Address/Data: Data write: 38
482200-482213 I2C: Address/Data: ACK
482222-482222 I2C: Address/Data: Stop
562363-562363 I2C: Address/Data: Start
562379-562471 I2C: Address/Data: Address write: 3E
562471-562485 I2C: Address/Data: Write
562483-562497 I2C: Address/Data: ACK
562500-562606 I2C: Address/Data: Data write: 00
562606-562619 I2C: Address/Data: ACK
562623-562728 I2C: Address/Data: Data write: 38
562728-562741 I2C: Address/Data: ACK
562749-562749 I2C: Address/Data: Stop
642881-642881 I2C: Address/Data: Start
642897-642989 I2C: Address/Data: Address write: 3E
642989-643003 I2C: Address/Data: Write
643001-643015 I2C: Address/Data: ACK
643018-643124 I2C: Address/Data: Data write: 00
643124-643137 I2C: Address/Data: ACK
643141-643246 I2C: Address/Data: Data write: 39
643245-643258 I2C: Address/Data: ACK
643266-643266 I2C: Address/Data: Stop
723413-723413 I2C: Address/Data: Start
723428-723520 I2C: Address/Data: Address write: 3E
723520-723533 I2C: Address/Data: Write
723533-723546 I2C: Address/Data: ACK
723549-723656 I2C: Address/Data: Data write: 00
723655-723668 I2C: Address/Data: ACK
723673-723778 I2C: Address/Data: Data write: 14
723778-723791 I2C: Address/Data: ACK
723799-723799 I2C: Address/Data: Stop
: :
1128212-1128304 I2C: Address/Data: Address write: 3E
1128304-1128317 I2C: Address/Data: Write
1128317-1128330 I2C: Address/Data: ACK
1128333-1128441 I2C: Address/Data: Data write: 40
1128439-1128453 I2C: Address/Data: ACK
1128456-1128564 I2C: Address/Data: Data write: 20
1128562-1128576 I2C: Address/Data: ACK
1128583-1128583 I2C: Address/Data: Stop
1128611-1128611 I2C: Address/Data: Start
1128627-1128719 I2C: Address/Data: Address write: 3E
1128719-1128732 I2C: Address/Data: Write
1128731-1128744 I2C: Address/Data: ACK
1128748-1128856 I2C: Address/Data: Data write: 40
1128854-1128868 I2C: Address/Data: ACK
1128871-1128977 I2C: Address/Data: Data write: 20
1128977-1128990 I2C: Address/Data: ACK
1128998-1128998 I2C: Address/Data: Stop
//
Re: ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん
2024/12/10 (Tue) 14:43:29
皆さん、今日は。
今日も良いお天気です。
私のlcdは違うタイプですので動かないのは当たり前ですね。
やどさん、PulsViewソフトの使い方のご紹介ありがとございます。
別の話しです、私の古い愛機TS850が壊れてしまいました。
7MHzで和文CWを毎朝聞いて忘れないようにしていたのですが、、、。
やどさんもCWやるのですね。
私のPulsViewはHEX用事が出ないのです。何か足りないのかな、、、?
パオさん、やどさんと同じタイプのLCDですので多分表示が出のではと思います。
Re: ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん
2024/12/10 (Tue) 17:10:12
今晩は。
少し進歩しましたかね。
取り敢えずカーソルの点滅とSW1,2を同時押ししたときに「DEFAULT SETTING」と表示されるはずなのですが「M]と表示されています。
ADRS+00+comand,ADRS+80+data が出る様に変更を加え、何らかの反応は得られるようにはなったのですが
ACM1602NIに合う様にまだかなり変更を加えないといけないようです。
Re: ACM1602NI-FLW-FBW-M01(2) - やどさん
2024/12/10 (Tue) 20:05:27
笛吹おじさん こんばんは
表示し始めましたね!
> PulsViewはHEXが出ない…
こちらは下記をインストールしました。
https://sigrok.org/wiki/Downloads
Release builds:
WindowのPulseView 0.4.2 (64bit)
あと、昨晩チェックしていて下記修正の修正しました。
< lcdc16xn_i2c.c >
#define I2C_LCD_RS0 0x01 // C0,RS=00 for st7032 追加 ← 前回追加した行の 0x01を 0x00する
int i2c_tx_str( char *txstr ) { ← この関数内の、
:
// while( *txstr ) { ← while文をコメントアウトして
for( int n=0; n<2; n++ ) { ← この for文に変更する
:
}
:
}
これは、
文字列をI2Cで送る場合、データの終わりを示すため最後に'00'が置かれています。が、、
PCF8574だと、データ4ビット+BL,WR,RS,ENビットで送るため、8bit全体で'00'になることはないのですが、
ST7032系では付加ビットが要らないため、RS=0コントロールバイトやCGRAMデータで'00'になる場合があり、それ以降のデータが無いものと判定されて送信されません。
前回、RS=0は'01’としてお茶を濁したのですが、、
CGRAMデータで'00'があったのと、コントロールバイトは'00'を送るようにすべき(?)で、上記の様に修正してみました。
パオさんへ
よく考えたら、同じST7032のLCDなら表示するはずですね。。
i2c_250khz.c
static void i2c_stop( void ) 関数の最後の行の
I2C_SCL_L(); 行をコメントアウトしましたか?
///
Re: ACM1602NI-FLW-FBW-M01(2) - パオさん URL
2024/12/10 (Tue) 21:45:14
>笛吹おじさん
とうとう液晶画面に表示が出たのですね。
おめでとうございます。
>やどさん
データありがとうございます。
早速書き込んでみましたが表示が出ません(悲)
AQM0802 と AQM1602A で試してみましたがダメですねぇ。(配線を何度も確認したり、プルアップしたり色々と条件を変えたのですが・・・)
ハード的な何か勘違いをしている可能性が高いので、少し頭を冷やして考えます。
Re: ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん
2024/12/10 (Tue) 23:24:06
今晩は。
パオさん、まだ先は長そうです。
A00001-5ms-A00038-5ms-A0000F-5ms-A00006とSDAがでるはずなのですが、そうはいきません。
A00001-10ms-A00038A0000FA00006となって居ます。
この後A080Dataにする必要が在ります。
ロジアナではA080dataになって居る様な気もしますが、、、
ロジアナ、やどさんの様には動いてくれません。
Re: ACM1602NI-FLW-FBW-M01(2) - やどさん
2024/12/11 (Wed) 07:22:03
笛吹おじさん おはようございます。
コマンドの3バイトは正しく送信されているようですね!
> A00001-10ms-A00038A0000FA00006
の原因ですが、ディレイがdelay_msec()でなくて delay_usec()になっているとか?
こんな感じになるでしょうか、、
//───────────────────────────────────
// LCD初期化 for ACM1602NI-FLW-FBW-M01
//───────────────────────────────────
void lcdc_init2( void ) {
i2c_init();
delay_msec( 20 ); // 電源投入後 15ms 以上待つ
lcdc_cmdwrite4( 0x01 );
delay_msec( 5 ); // 4.1ms 以上待つ
lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示
delay_msec( 5 );
lcdc_cmdwrite8( 0x0C ); // 表示 ON
delay_msec( 5 );
lcdc_cmdwrite8( 0x06 ); // increment, no shift
delay_msec( 5 );
lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示
lcdc_cmdwrite8( 0x0C ); // 表示 ON
lcdc_cmdwrite8( 0x06 ); // increment, no shift
lcdc_cls(); // ディスプレークリア
}
>ロジアナ、、、
1000円ロジアナと PulseViewでI2Cデコードした時の手順を画像に添付します。
この表示にすると、すごく便利です。
//
Re: ACM1602NI-FLW-FBW-M01(2) - やどさん
2024/12/11 (Wed) 07:28:29
続きです…
周波数表示が出なかった!?件、
自分の間違いで、問題ありませんでした。 画像添付
→ ℃やHzなどを表示させたソースを元に変更したのが敗因でした。。やれやれ… 汗);;
昨晩、Ojisankoubouソースをから修正したら、問題なく周波数カウント値も表示してます。そうだよねぇぇ。。
→ https://ojisankoubou.web.fc2.com/rfc/rfc-5/index.html のソースファイル( + 実行ファイル )PG追加 20220912 版から修正.
秋月・ AE-AQM1602AとAE-AQM0802でLCD表示する事を確認した修正ソース(変更したファイルのみ)とHexファイルを下記に置きました。
https://drive.google.com/drive/folders/1riC0zhOjh7L3jIOKZVYTP_VtJSxp-a_b
rfc-5_20220912_rev for I2C-LCD.zip
//
*追記
board.hは、STM32G030F6P6(TSSOP20)用なので変更不要です。
→ SDA端子をPA11に変更しています。
Re: ACM1602NI-FLW-FBW-M01(2) - 笛吹おじさん
2024/12/11 (Wed) 09:39:26
お早うございます。
やどさん、ご丁寧なロジアナの説明有難うございます。
HEXとテキスト表示が出来ました。
初期化の部分はご指摘の様にusecになって居ました。
改めて波形を見ますと一番最初はADRS=A0になって居ますがACKが返っていません。
其の後はADRSが34になって居ますので、プろグラムを見直す必要がでてきました。
ロジアナの設定がおかしかったのか、ADRSはチャント出ているものとばっかり思っていましたが、、、まったくNGでした。
もう一度やり直しです。
Re: ACM1602NI-FLW-FBW-M01(2) - パオさん URL
2025/01/23 (Thu) 15:30:02
>Ojisankoubou 様、やどさん
すでに RFC-7 の製作が進んでいるところ、昔の話題ですみません。
RFC-5 で ST7032 等の LCD を直結する方法が掲示板の中に埋もれてしまい探すのが大変になってきたので、ブログにまとめ記事を書きたいと思っています。(探すのがヘタなのは私だけ?)
そこで、
改造版のバイナリファイルと改造版の LCD 設定ファイルを配布してもよろしいでしょうか?
Re: ACM1602NI-FLW-FBW-M01(2) - Ojisankoubou
2025/01/24 (Fri) 07:30:43
>改造版のバイナリファイルと改造版の LCD 設定ファイルを配布してもよろしいでしょうか?
転載元、著作権を明記していただければバイナリーの配布は問題ありません。
Re: ACM1602NI-FLW-FBW-M01(2) - やどさん
2025/01/25 (Sat) 12:17:29
パオさん Ojisankoubou様 こんにちは。
以前、ST7032の液晶表示器用に修正したファイルをGoogle共有ドライブに置きましたが、
[バイナリーの配布は問題ない」との事から、修正したソースコードは変更差分ファイルのみのdiffファイルに置き替えました。
バイナリー(hex)ファイルはそのままです。
誰かのお役に立てば幸いです。
自己責任でお願いしますね、、汗);
//
Re: ACM1602NI-FLW-FBW-M01(2) - パオさん URL
2025/01/25 (Sat) 19:59:09
>Ojisankoubou 様、やどさん
RFC-5 変更ファイルの公開許可を頂きありがとうございます。
先ほど、ブログに I2C LCD を直結する方法をまとめてブログの記事を公開させて頂きました。
また、転載元とオリジナルについては記載しましたが、変更部分が分かるように変更したソースコードも落とせるようにしています。
記載内容について、問題がありましたらお知らせください。
https://me-yoh.com/frequency_counter_lcd_-replacement2
ロジックアナライザ - 笛吹おじさん
2024/12/16 (Mon) 08:18:03
お早うございます。
今回のLCD表示ではロジアナが大いに役に立ちました。
下記URLにあるロジアナも(64bit版)ですが使える様です。
https://www.saleae.com/ja/pages/downloads
Re: ロジックアナライザ - やどさん
2024/12/17 (Tue) 23:28:55
笛吹おじさん 皆様、こんばんは。
ダウンロードしてみました。
少ししか弄っていませんが、上質な感じですね。無料でいいのかな、、
SSD1306なOLED表示にはロジアナを活用しようと企んでいます。
データシートはみつけたのですが、、初期化コマンドどうしたらいいの??状態で、汗);;
⇒ https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf
思いついたのが、Arduinoマイコンで文字を表示するだけのプログラム作って、I2Cシーケンスをロジアナで拾う方法です。
拾ったシーケンスをそのままlcdc_init()に記述してしまえば、RFC-5でも確実に表示するはず。。 言うは易し…
ただ、0.91インチOLED表示は128x64ドットなので、16文字2行表示するには、8x16な数字と●、*、?、sのフォントを作らないといけないかな??
//
Re: ロジックアナライザ - 笛吹おじさん
2024/12/18 (Wed) 00:45:59
やどさん、今晩は。
ロジアナ使えて良かったです。
SSD1306はarduinoで表示させています。
rfc-5でOLED表示も出来たら面白いですね。
RFC-5にもOLED用のフォルダーがありますね。
出来たら発表してください。
2024/12/18 (Wed) 23:10:24
>やどさん
次は SSD1306 ですか!
視認性の良い OLED でも動作することを期待しています。
RFC-5 を組み立てる前に siliconvalley4066 さんの周波数カウンタを試したことが有ります。
https://ss1.xrea.com/harahore.g2.xrea.com/STM32/stm32f103c8t6_counter.html
こちらは Arduino IDE で開発されている周波数カウンタですが、同じ MCU なので多少は参考になるかもしれません。
2024/12/19 (Thu) 12:29:40
>やどさん
自分でブログに記事を書いていながら忘れていましたが、Arduino で照度計を作った時に横長の SSD1306 を使って表示に苦労しました。
https://me-yoh.com/remaking_light_meter1
その際には、このライブラリと
https://github.com/datacute/Tiny4kOLED
見た目を良くするために、このフォントセット内の
https://github.com/datacute/TinyOLED-Fonts
大き目フォントを使いました。
このフォントセット内には、お目当ての「8x16フォント」もありました。
お役に立てば良いのですが。
Re: ロジックアナライザ - やどさん
2024/12/19 (Thu) 21:48:46
笛吹おじさん、こんばんは
格安USBロジアナで 起動がおかしくなった8ビットパソコンの動作解析(と言うほど高尚な事はできず)をしてます。
ちょっと8chでは足りず、格安ロジアナ2個で16ch観測できないのかな…
都立多摩図書館で40年前のパソコン雑誌に掲載されたFM-7回路図の複写サービスをしてもらって喜んでいたのですが、、
ぜんぜん泥沼から抜け出せそうもありません。。 なんでだろぅぅ、、と毎夜ため息ばかり… 汗);;
簡易SGのケーシング写真、レタリングが美しいですね!
自分の場合は
、かなり気を遣って穴あけ加工しているつもりですが、大抵ズレるんです。。
金属加工は薄いアルミ板以外やりたくないですし。。
格安PCB製造だけでなくて格安実装や格安なケース加工サービスも始まらないかな…
話は違いますが、SG写真を見て…
だいぶ前ですが430で、F2なCQが聞こえたことが有って、コールがBTBだった記憶がよみがえりました。
もしかして笛吹おじさんだったのかな?なんて…
//
Re: ロジックアナライザ - やどさん
2024/12/19 (Thu) 23:06:45
連続投稿失礼いたします。
パオさん 笛吹おじさん、こんばんは!
>siliconvalley4066 さんの周波数カウンタを試した…
おおっっ!、リンク先見ました。
siliconvalley4066 さん すごいです!
フォントセットの情報もありがとうございます。
最新の記事では、STM32Fマイコン+OLED表示モジュールで、レシプロカル式周波数カウンタを実現されていますね!
しかも、回路方式というか16bitタイマー3つで前回キャプチャー値との差から周波数を計算する、改善検討された説明文を見ていると、RFC-5と似てるっぽい!!
測定精度もRFC-5がシステムクロック130MHzに対して72MHzなのでその分落ちますが、ゲート1秒なら13ppbと申し分ありませんね!
凄いです、自分にはこのような回路方式の改善など到底真似出来ません。汗);
しかもArduinoIDEでプログラムカスタマイズできますし、Am/FMラジオの周波数直読化に利用したい自分にはもってこいです。
もう、siliconvalley4066さんの周波数カウンタ試行するしかないです! って、すぐ楽な方に流されます、、汗);
ちょっとだけ調べたら、
STM32F103C8T6には LPTIMが無いので、Ojisankoubouのfreqcounterコードを当てはめるのは難しそうです。
でも、オリジナルSTM32F103を、stm32g031f6p6ミニボードに変更する修正なら簡単そうです? ←「言うは易く…」
パオさんブログの「周波数カウンタを作る1」を見て、ArduinoIDE設定して試してみようかと思います。Tnx!
//
Re: ロジックアナライザ - 笛吹おじさん
2024/12/20 (Fri) 00:23:16
やどさん、今晩は。
F2のCWは私です。430MHZはFT-70DでA1は出せません。
そこでF2ーCWを出したのです。でも応答してもらえたのは1局、八王子の局でした。
何日かCQを出していたのですが、「BTB,うるさい」と言われてしまい、それ以来出していません。
やどさんのQTHは意外と近いのかもですね。
ところで、RFC-5のプログラムはPLUS-Gen.タイプをお使いですかそれともPGナシのほうですか?
今のケースは小さいのでPGーOUTほなしで行こうと20220906をコンパイルして書き込んだのですが、
表示がでないのです。
修正はOKなはずですが、、、。
パオさん。
3Dプリンターでケース作り、いやー進んでいますね。
好きな形のケースが作れるのでいいですね。
やってみたいですが、この歳では過剰設備投資になりそうです(笑い)
追記:
上手く行きました。
Re: ロジックアナライザ - やどさん
2024/12/20 (Fri) 21:05:55
笛吹おじさん こんばんは。
あっ、上手くいったとの事よかったです。
こちらはPG付RFC-5を使っていますがPG活用してないぃ 汗);;
あと、FT-70Dだったとの事、了解です。
ウチから昭島駅だと直線でほぼ10キロで、GP-ANTなのですが記憶に残ってました。。F2CW滅多に聴かないですし…
(430も混んでないのに文句云う人が居るのですね、、残念。。)
//
Re: ロジックアナライザ - やどさん
2024/12/24 (Tue) 23:54:53
>ちょっと8chでは足りず、格安ロジアナ2個で16ch観測できないのかな…
先人が工夫していないか調べていたら、、「ラズパイPICOで作る24chロジアナ」を二つ見つけました。
< gusmanb/logicanalyzer > https://github.com/gusmanb/logicanalyzer こちらを試行
< sigrok-pico >
https://github.com/pico-coder/sigrok-pico
YouTubeの解説?もありました。
・Turn your Pico into a 400MHz 24 Channel Logic Analyser
https://youtu.be/VjSF2LWJVVU?si=jVqeDZUf0ZP_4m0E
・Raspberry Pi Pico as a 24-Channel Logic Analyzer
https://youtu.be/waBu6ijT3wo?si=fBi2vmcwZarNuht8
これはウッテツケです!
多chで、速くて(?)しかも安価で簡単!!
ラズパイPICO-RXのSDR受信機から外して、早速試行してみました。 ← 画像添付(ポートを5Vにする方法が分からず、取り急ぎ4chのみ保護抵抗を付けて試行しました)
不良原因わかるかな? 汗);
//
Re: ロジックアナライザ - 笛吹おじさん
2024/12/25 (Wed) 08:13:37
やどさん、お早うございます。
多CHロジアナあれば便利ですね。
早速おやりになったのですね。
>ラズパイPICO-RXのSDR受信機から外して、早速試行してみました。画像
画像は?
私もラズパイPicoは持っていたと思います。
ちょっと実験してみようかな!
Re: ロジックアナライザ - やどさん
2024/12/25 (Wed) 09:07:06
おはようございます。
あれ?画像消えてる!?→修正しました。
p.s.
あっ、サイトみんな横文字ですが、もちろんChromeブラウザの自動翻訳機能を使っています。
YouTubeも日本語の翻訳字幕を表示して視聴です。これ良いですね、、活用の幅が広がりました。
//
2024/12/27 (Fri) 10:06:01
>やどさん
紹介してもらった PI Pico ロジアナ良いですね。
ただ、レベルシフタの「TXU0104PWR」が国内通販では手に入らないのが残念です。
(秋月の要望フォームで入荷希望をしてみました。)
https://akizukidenshi.com/catalog/pages/parts99.aspx
Re: ロジックアナライザ - やどさん
2024/12/28 (Sat) 11:12:18
パオさん こんにちは。
ラズパイPicoのポートは3.3V固定みたいでした…
5V系信号i/fには、秋月だと8ビットレベルシフタモジュールが安価でいいかもです。
https://akizukidenshi.com/catalog/g/g117062/
で、秋月見てたら、
ルネサスのGreenpakというのが安価で面白そうです。触手がのびます…
https://akizukidenshi.com/catalog/g/g129510/
https://www.renesas.com/ja/document/mat/greenpak-cookbook?language=ja
STM32F103なレシプロカル式周波数カウンタを試行してみました
・200MHzくらいが上限でした。← RFC-5のように、200MHz以上もカウントできないのは何故?
・ラジオ周波数チューニング中の周波数表示が乱れて変な値になってしまう。。ううっ、致命的
→RFC-5は、周波数が変わったときにも対応してます
・ArduinoIDEでSTM32G031への変更は口で云うほど簡単じゃなかった(・・;)
う~む、、kHzオーダー程度の精度でいいラジオの周波数表示なら、レシプロカル式じゃなくて、普通にダイレクトカウントすれば!?って突っ込みが聞こえてきそうです。。汗);;
//
Re: ロジックアナライザ - 笛吹おじさん
2024/12/29 (Sun) 07:49:04
やどさん、パオさん、お早うございます。
やどさん、素早く実験してみる、素晴らしい!です。
レシプロカルは周期を測り周波数に換算していますので1秒ゲートで測るオーソドックスな方がいいかもですね。
私事ですが、インフルエンザーAに感染してしまい体調NG、掲示板も斜めに読んでいる始末。
年内は何も出来そうにもありません。
おじさん工房さま、皆様もインフルにはお気を付けください、そして良いお年を御健やかにお迎えください。いろいろお世話になりました。
来年もよろしくお願い致します。
Re: ロジックアナライザ - やどさん
2024/12/29 (Sun) 10:22:21
おはようございます。
うわぁ、この時期では過去10年で最多ってテレビで云ってました。
もう明日は我が身、、外出控えます。> ますます運動不足になりそう 汗);
いろいろな話題のご提供ありがとうございました、暖かくしてどうぞお大事になさってください。
p.s.
ラズパイPicoロジアナでの5V→3.3Vレベルシフタ:
5Vトレラントな8bitバスバッファ74HC245とか74AHC245で5V系信号を受けるのも良さそうです。
→たまたま部品箱(ジャンク?)に74LCX245を見つけました。
//
2025/01/25 (Sat) 11:10:52
やどさんが紹介されていた「gusmanb/logicanalyzer」の基板を製作して12チャンネル分のシフト基板も完成したのですが、標準のソフトの使い方がよく分からなかったので、簡単な改造をしました。
1 ファームウエアを「uLA」に変更
2 パソコンのソフトは皆様に合わせて「PulseView」に変更
3 回路の違いにより CH1、CH2 は使えませんが、CH3~CH12までの10チャンネルは使えます。
4 ケースは有名な3Dデータの公開サイト「Thingiverse」にあった物を出力
で、やっと改造版 RFC-5 の I2C 信号的な物が見られました。
RFC-7 UART接続 - 笛吹おじさん
2025/01/22 (Wed) 18:58:00
今晩は。
UART接続でプログラムの書き込みをやってみました。
SW!を押しながら電源ON,LCDにBOOT MODEと表示されます。
STM32Cube Programmerを起動、UARTを選び後はST-LINKと同じ方法で書き込みが出来ました。
SW2を押しながら電源をONするとDEFAULT SETTINNG
と表示されますがSWから手を離すと通常測定モードになります。
RFC-7 - 笛吹おじさん
2025/01/15 (Wed) 19:34:04
今晩は。
RFC-7造ってみようと部品発注しましたが納期遅延で
10MHz(TCXO)とプリスケーラー、3.3Vレギュレータ
部分しかできません。
USBシリアルi/Fが付いていますが、これは具体的に何に使うのでしょう。
tera termでつないでCPUのデバッグに使う?それとも
USB用アプリが用意されてべつの使いかたが出来るのでしょうか?
Re: RFC-7 - Ojisankoubou
2025/01/17 (Fri) 06:12:37
デバッグにも使いましたが、今は主に測定データのログに使っています。 ホームページの 1PPS や AUDIO の測定データは teraterm でログを取って excel でグラフにしました。
他にはプログラムの書き込みにも使えます。 ST-LINK を持っていない方でも USB 経由で書き込みができます。
Re: RFC-7 - 笛吹おじさん
2025/01/17 (Fri) 08:32:27
お早うございます。
ご回答有難うございます。よく分かりました。
ケースに入れることを考えると色々接続も考えないと
なりませんので、仮配置的なことで配線をしています。
USBで書き込みができるならST-LINKは付けないでもいいのかな、、、(考慮中)
いつ出来上がることやら?
Re: RFC-7 - やどさん
2025/01/18 (Sat) 23:22:45
笛吹おじさん Ojisankoubou様、こんばんは。
RFC-7 さっそく作ってみました! 画像添付
いやいや、色鉛筆で回路図塗りながら一日配線してたのですが、2か所ミスあって深夜になってしまいました… 汗;
しかしこれは凄いですね! → Time-to-Digital Converter、測定精度を2桁も上げてしまう正にブレイクスルーな技術!?
TDC で時間補間する方法( https://ojisankoubou.web.fc2.com/rfc/rfc-7/index.html )
に書かれているブロック図とタイミング図が肝だと思いますが、、
元信号のLPタイマー出力と、そのDFF(ディレイライン)信号の時間差を TDC7200(TDC)で補間して 時間分解能を一気に上げる、という原理でしょうか。。
→タイマークロック130MHz(7.69ns),TDC7200の分解能(55ps)で補間すると、 7690/55=139.8 ← ふた桁時間分解能が上がる!?
タイムチャート未だ理解できていないので考えてみますぅ… 汗;;
あと、シリアル受信できていないので調べないとっ、、、
Re: RFC-7 - 笛吹おじさん
2025/01/19 (Sun) 00:46:44
やどさん、今晩は。
音沙汰ないと思っていたら、、もう造ってしまったのですね。
いやー早い!。
私の方は部品が明日(もう今日ですかね)届きますので
もう少し時間がかかりそうです。
Re: RFC-7 - やどさん
2025/01/19 (Sun) 09:38:37
笛吹おじさん おはようございます。
恐れ入ります。。
2桁も改善するってどういう事??
、と云うことで作ってみるしかないと、先週末,不足部品をマルツ電通大構内店で受取ってきました。
>シリアル受信できていないので調べないとっ、、、
布団の中でTX,RX逆?と思って、、朝一見たら案の定でした。。お恥ずかしい… 汗);
画像の様なシリアルデバッグ機能が搭載されてました!→115kbpsです..
//
Re: RFC-7 - 笛吹おじさん
2025/01/19 (Sun) 13:34:13
やどさん、今日は。
USBシリアル動いて良かったですね。
今日部品が来るかと期待しているのですが、どうも
関東の集配所で止まっている様です。
私はGPSを使った精度の良い基準が使えませんので
取り敢えず2桁改善能力を持っている(自己満足、、、)測定器として造っています。
多分、誤配線があるのですぐには動かないでしょう。
Re: RFC-7 - 笛吹おじさん
2025/01/20 (Mon) 19:53:00
今晩は。
取り敢えず配線が終わりました。
ST-LINKで書き込みをしてみたのですが、エラーです。どうもCPUを認識していないようですね。
誤配線かな?
前途多難、、、、
Re: RFC-7 - 笛吹おじさん
2025/01/21 (Tue) 12:21:30
今日は。
やどさん、質問です。
ST32CubeProgrammarは32bit版、それとも64bit版ですか?
私は64bit版を使っているのですが、動作が不安定で書き込みができないことが多いです。
配線はOKの様でST-LINKをUSBにつなぎ直したり、PCを再起動して何とか書き込みが出来ました。
LCDは秋月のAQM1602Aを使っています。
コントラストが薄く(カウンタは動作している感じ)
デフォルトの16から32に変更、コンパイル、書き込みをしたのですが、まったくできません。
CPUを認識できないようです。
ST32CubeProgrammarの最新をDLして入れ直しても結果は同じです。
CPUの1pinのLEDは最初は点灯していなかったのですが、今は点灯状態です。
CPUがロックされているのか?
RFC-5の時からST32CubeProgrammarは不調ですね。
何が悪いのか、、、、
2025/01/21 (Tue) 14:38:45
>笛吹おじさん
プログラムの書き込みに苦労されているようですね。
私の環境は CubeProgrammar 64bitの最新版です。(v2.6.0)
書き込みエラーは出ていません。
すでに試されていると思いますが、
1 ST-LINKをUSBケーブルで延長せずにパソコンに直刺しする。
2 ST-LINKを交換する。
3 STM32 ST-LINK utilityを使ってみる。
このぐらいでしょうか。
>やどさん
すでにRFC-7が完成していますね。
精度が2桁向上とは、すごいです!
わたしは、以前、こちらで話題になったロジック・アナライザを作っています。
Re: RFC-7 - 笛吹おじさん
2025/01/21 (Tue) 17:37:28
パオさん、今晩は。
どうもアドバイス有難うございます。
もう一度見直したところ半田不良が見つかりました。これを直して書き込みはできるようになりました。
どうもお騒がせ致しました。
まだおかしいところがありそうですので見直します。
ロジック・アナライザを作られているのですね。
APB1ですか?
Re: RFC-7 - 笛吹おじさん
2025/01/21 (Tue) 19:07:38
今晩は。取り敢えずOKになりました。
LCDはコントラストのデフォルト=16だと薄くて見えませんので30にしました。
外部基準の切り替えは今は省略しています。
ケースに入れる時に考えようと思います。
抵抗キャパシタは1608のチップ部品、変換基板を使い
きわどい配線をしていますので、振動でハンダが外れるかもです。
Re: RFC-7 - やどさん
2025/01/21 (Tue) 20:20:59
笛吹おじさん パオさん、こんばんは
バッチリ、動いてますね!
>カウント動作しているけどコントラストが薄い…
どこかに電流パスがあって電源電圧低下しているか、
LCD電源が5Vになっているか?とか考えているうちに、動作OKとの投稿、とにかく良かったです。
まだあまり弄ってないのですが、、電源OFF/ON2回目以降,LCD表示が外部リファレンス表示Exになるのが気になりました。
外部Refのため、メニューに AUTO F.ADJやF.ADJが出ないです。
回路的には内部/外部Refを自動判別してないと思います。。
//
Re: RFC-7 - パオさん URL
2025/01/21 (Tue) 20:45:50
>笛吹おじさん
>ロジック・アナライザを作られているのですね。
>APB1ですか?
やどさんが紹介されていた「gusmanb/logicanalyzer 」の基板を作ったので組み立て中です。
(完成したら「ロジックアナライザ 」への返信に記載します。)
お二人共に仕事が早いですね。
RFC-7 は、自作した 20pin カウンタ基板を改造して試験ができないか考えていました。
その前に、追加回路用の部品を注文しないといけないです。
Re: RFC-7 - 笛吹おじさん
2025/01/21 (Tue) 21:49:34
今晩は。
パオさん、ロジアナの件了解です。
発表楽しみにしています。
やどさん、
USB受信はただつないでTeratermを起動すればいいのですか?
Re: RFC-7 - やどさん
2025/01/21 (Tue) 23:32:16
はい、そうです。
115200bps 改行コードCR+LFに設定しました
//
RFC-7 - Ojisankoubou
2025/01/06 (Mon) 16:50:17
RFC-7 のページをつくりました。
TDC(Time Digital Converter) を使って時間補間することで RFC-5 より 2 桁高分解能になっています。
まだ作ったばかりで工事中のところも多くありますが、だんだんと充実させていくつもりです。
https://ojisankoubou.web.fc2.com/rfc/rfc-7/index.html
Re: RFC-7 - 笛吹おじさん
2025/01/07 (Tue) 08:21:33
おめでとうございます。
本年もよろしくお願い申し上げます。
分解能アップのRFC-7ですか、、、、食指が動いてしまいますね。
先ずは、部品代のかからないコンパイルをやってみますかね。
追記
コンパイルは問題なくOKでした。
部品の手持ちはゼロ、Aliexpress?で入手可能ですか?
パオさん基板使用rfc-5用ケース - 笛吹おじさん
2024/12/18 (Wed) 20:31:08
今晩は。
パオさん基板使用RFC-5周波数カウンタのケースを造っています。
私にとってケース作りは一番やりたくない作業なのです。
0.8mm厚のアルキ板を切り、曲げてLCDの長方形nの穴をあける、何といってもこれが一番大変です。
高齢になって指に力を入れると指がつってしまいます。
パソコンのキーを叩いている分にはいいのですが力仕事はだんだん出来なくなりつつあります。
Re: パオさん基板使用arfc-5用ケース - パオさん URL
2024/12/18 (Wed) 22:24:27
>笛吹おじさん
製作中(?)のケース写真を拝見しましたが、アルミ製の本格派ですね。
私は最近は手を抜いて、3Dプリンタでプラ製のケースを手軽に作っています。
(3Dプリンタなら、設計はパソコンで出来ますよ。おススメです。)
ところで、入力端子はどうされていますか?
私が作った基板の「20dB アンプ」部分は動作が不良ですが、ブログで紹介した市販品のアンプ基板(Amazonでも2個で千円程度で購入できます。)を代わりに付けると 300 MHz 位まで計測出来ます。
その為、2つの入力端子用の穴を開けておくと、その後の機能拡張に良いかもしれません。
Re: パオさん基板使用arfc-5用ケース - 笛吹おじさん
2024/12/20 (Fri) 23:21:21
今晩は。
ケースが出来ました。でも行き当たりバッタリですので
電池を入れるスペースがありません。(大笑い)
入力はパオさん20dBアンプ+5倍アンプにしました。
TRは2SC2714(550MHz)を使っています。
特性は90MHzくらいですね。PGはなしです。
やどさん、QTHお近くなのですね。お空でお会いできるかもですね。その時はよろしくお願い致します。
パオさん
小さく作りすぎ隙間がありません、いつもですが、適当に思い付きで造るものですから、つじつま合わせが
上手くいきません。
毎度お粗末な出来上がり?です。
Re: パオさん基板使用arfc-5用ケース - パオさん URL
2024/12/21 (Sat) 13:46:13
>笛吹おじさん
ケースの完成、おめでとうございます。
>毎度お粗末な出来上がり?です。
そんなことないと思います。
この短期間で独自に LCD を解析して、金属ケースを加工して、完成したのはすごいことです!
ちなみに、横の周波数特性のグラフは何をお使いですか?
グラフ化の方法などを教えていただけると幸いです。
Re: パオさん基板使用rfc-5用ケース - 笛吹おじさん
2024/12/21 (Sat) 14:43:42
パオさん今日は。
NanoVNA V2_2(S-A-A-2)を使っています。
おじさん工房にあるNanoVNAの改造
プログラムを入れています。
おじさん工房のプログラムを入れるにはCPUにフローティングポイントの演算ができるCPUが搭載されている必要が有ります。
同じNanoVNAでもCPUにこの機能がないものがあります。
私も最初に購入したものはNGでしたので買い換えました。
NanoVNAは中国の色々なストアが販売していますので、正統派の品物を手に入れることが重要です。
改造はおじさん工房に有りますのでこれに従って書き換えます。
NanoVNA Caputure ソフトが有りますのでこれを使えば画面をキャプチャーできます。
このアプリもおじさん工房に有ります。
追記
メニュー画面からconfigをセレクトしVersionを見ると
下の方にあるPort InfonにGD32F303と表示されれば対応品です。(記憶があいまいなのですが)
NG品は確かこの表示がでないと思います。
Re: パオさん基板使用rfc-5用ケース - 笛吹おじさん
2024/12/22 (Sun) 09:33:12
パオさん、お早うございます。
補足説明です。
1.フローティングポイントの演算ができるCPUが搭載されている必要が有ります。
これはおじさん工房のNanoVNAファームウエアの書き換えをする場合のことです。
2.周波数特性の観測は一般的なNanoVNAで出来ると思います。
3.NanoVNA Caputure ソフトは一般的なNanoVNAでも使えたと記憶してます。
もう1台持ってますので後程確認して見ます。
Re: パオさん基板使用rfc-5用ケース - パオさん URL
2024/12/22 (Sun) 10:16:10
>笛吹おじさん
ケースの話からズレてしまってすみません。
最後にこれ関係で1つだけ
素人質問で申し訳ないのですが、この様な試験をするときはテスト機材をどのように接続するのでしょうか?
フィルタやアッテネータなど単体の部品なら NanoVNA などの出力と入力の間につなぐと想像できますが、今回のような単体で動作する周波数カウンタの周波数特性は、回路のどこかに配線を追加して試験をするのでしょうか?
Re: パオさん基板使用rfc-5用ケース - 笛吹おじさん
2024/12/22 (Sun) 12:45:04
パオさん、今日は。
周波数カウンタの周波数特性は入力アンプの特性そのものですから、フイルタやアッテネータと同じ接続でつないでいます。
NanoVNAのPort1(出力)をカウンタの入力につなぎ、NanoVNAのPort2(入力)をアンプの出力につないでいます。
(アンプ単体ですと受け側の入力インピーダンスに等しい抵抗で終端する必要が有るかと思います。)
わたしの場合は入力アンプの出力がCPUの入力(8pin)につながった状態で測っています。
カウンタの電源を入れた状態でNanoVNAのスタートとストップ周波数を設定し測定しています。簡易測定ですのでおおまかな特性を見ています。
精度よく測るにはNanoVNA側にもアッテネータを入れる必要が有るのかもです。
おじさん工房にはその治具もありますのでご参考にされてください。
私も治具は作いアッテネータも入手したのですが行方知れずです。
20dB 低雑音アンプのプリント基板化 - パオさん URL
2024/10/19 (Sat) 11:42:57
現在、RFC-5 とプリスケーラの基板を KiCad で製作中ですが、ほぼ終了しました。
発注前に回路の再確認をしていたところ、分からない所があったので教えて頂けますか?
「20dB 低雑音アンプ」は最新版の 500MHz 版を用いましたがリップルフィルタ部の「C4」の値を勘違いしていました。
C3 は「120u」なので SMD の3216サイズが使えます。
ところが、1000p だと思っていた C4 は 1000u でした。
色々と調べたのですが、秋月など通販で入手できる SMD コンデンサの最大は 300u程度のようです。
このアンプを製作された方もいらっしゃるようですが、C4 には何を使われましたか?
今思い付くのは…
1 電解コンデンサ(1000uF)
2 300u 程度の SMD 3個並列(300u x 3 = 900uF)
3 300u 程度の SMD コンデンサ1個で様子を見る
Re: 20dB 低雑音アンプのプリント基板化 - やどさん
2024/10/27 (Sun) 16:45:37
パオさん みな様こんにちは。
もう発注されていると思いますが… 遅れて投稿です。。
低雑音化のリップルフィルターの実験は出来てないのですが、汗);
自分だったら秋月でも手に入る低ESRな導電性高分子アルミ固体電解コンや チップアルミ電解コンにすると思います。
で、思い立って 20dBアンプの広帯域f特改善について実験をしてみました。
以前、ちょっと試してみて旨くいかず放置していたため、再度試してみました。→ 画像
結果、明らかにS21特性など改善したグラフが得られましたが、ケーブルや基板をちょっとでも動かすとグラフが変わったりして、基板や環境を整備しないと高周波数の評価は難しそうと云う印象です。。(ちょっと評価ボードがテキトウ過ぎました 汗);;
あと、前回投稿では、STM32G030F6P6ボードでカウンタ入力端子のプルダウン抵抗をチューニングすると、5倍アンプのみで210MHzも安定表示しました。
もしかすると最高周波数は、マイコンのプルダウン・プルアップ抵抗比で決まるスレッショルド電圧にも影響されそう。→ マイコン製造バラつきで左右されるのかも…です。
//
Re: 20dB 低雑音アンプのプリント基板化 - パオさん URL
2024/10/27 (Sun) 20:04:52
やどさん
返信有り難うございます。
>チューニングすると、5倍アンプのみで210MHz
確か、やどさんの5倍アンプは、Q1 に 2SK2394、R1 を 190Ωにしていたと思いますが、210MHz まで計測できたバージョンも同じでしょうか?
200MHz まで計測できるのなら、私の用途には5倍アンプで十分ですね。
基板製造メーカにオーダーした物が来週中には届くので、同じぐらいの抵抗値で実験してみます。
ちなみに、プルダウン抵抗はどのくらいの値を使いましたか?
(データシートでは 40kΩとなっていますが・・・)
Re: 20dB 低雑音アンプのプリント基板化 - やどさん
2024/10/28 (Mon) 07:08:22
パオさん おはようございます。
はい、2SC2394CP6で、R1はボードを見たら220Ωでした。ちょっとゲインを上げようと試行したままだったようです。
20pinのSTM32G030F6P6のボードでは、プルダウン可変抵抗 34.2kΩ程度で最良でしたが、電特スペックを見たら、25kΩminの(40k typ)55kΩmaxでした!
これはチップ(ロット?)によってガラガラ変わりそうです。
でも、20pinのPKGならチップに合わせてVR調整できて良いかもです。
あと、プリアンプ入力の信号振幅でも最高周波数が変わります。
記入した最高周波数は-7dBm(100mVrms,141mVpeak @50Ω)の場合で、もう少し大きな振幅の信号を入れれば周波数は上がります。
感覚的ですが、プリアンプからの振幅中心電圧と、マイコン入力端子のスレッショルド電圧が少しでもずれると感度がガクンと落ちるイメージでした。
//
Re: 20dB 低雑音アンプのプリント基板化 - やどさん
2024/11/24 (Sun) 13:51:15
パオさん、皆様 こんにちは。
パオさん基板を送っていただき、ありがとうございました。
RFC-5(5倍プリアンプ)の基本動作確認しました (^^)/
信号源にはAPB-3拡張のSG_GHzを使用し、入力信号と安定カウント最高周波数を測定してみました。
→ ただし、RFC-5入力は1MΩ(50Ω終端せず, STM32G030F6P6(20pin)使用
SG振幅 安定カウント最高周波数
-1dBm 350MHz
-4dBm 280MHz
-7dBm 220MHz
-10dBm 160MHz
うわぁー、、STM32マイコンのタイマーって350MHzでもカウントできるのですね!? 常識なのかな 汗;;
回路図で変更した所があります。
C1: RFC-5の回路図のとおり1μFにしました。
R3: 以前、2SK2394を使った場合のシミュレーションで190Ωくらいが良かった?ため(記憶が曖昧ですぅ…)100+91Ωにしてみました。
IC2: レギュレータICは手持ちのAMS1117-3.3を使用しました。(C10,C11が46uFとなっていますが多分47uFの間違え?)
あと、20pin版の方ですが、スイッチ基板のGNDがスイッチ1,2に繋がっていなかったので、配線追加しました。
基本動作問題ないどころか、とても良さそうなので パオさんの基板で20dB低雑音アンプも組み立てて実験してみます。
ありがとうございました!!
//
Re: 20dB 低雑音アンプのプリント基板化 - パオさん URL
2024/11/25 (Mon) 19:14:03
>やどさん
>SG振幅 安定カウント最高周波数
> -1dBm 350MHz
すごいですね!350MHz まで計測出来ましたか。
ところで、RFC-5のページで公開されている回路図の「20220906」の C1 では値が分からなかったので 0.1uF にしてしまいましたが、本当は 1uF だったのですね。
自信がないので、その他の数値も青色で入れましたが合っていますか?
Re: 20dB 低雑音アンプのプリント基板化 - 笛吹おじさん
2024/11/25 (Mon) 22:28:59
パオさん、今晩は、
C5は1uF耐圧25Vです。C3は22uF耐圧10Vです。
R1は150オームです。
C1は0.1uFでもOKだと思います。
追記
やどさんの回路では190オームです。済みません。
Re: 20dB 低雑音アンプのプリント基板化 - パオさん URL
2024/11/26 (Tue) 11:11:45
>笛吹おじさん
教えて頂き、ありがとうございます。
コメントを読んだ途端に、久々に顔が真っ赤になりました。
そうですよね。
1/25uFなんて中途半端なコンデンサを使うはずがないですね。
考えれば分かりそうですが、「最近の回路シミュレータは、分数で値を計算してくれるんだ。」と勝手に思っていました。
恥ずかしい・・・
基板をお送りした方々に、早々に間違いの連絡をします。
Re: 20dB 低雑音アンプのプリント基板化 - やどさん
2024/11/26 (Tue) 16:48:14
パオさん、笛吹おじさん こんにちは!
もう解決されていますが、1uFですが、、
パオさんの回路図でC1 = RFC-5オリジナルでC5でした。
あっ、、オリジナルのC3は22uFでしたね!
E24系列に出てくる値なので、気が付きませんでした 汗);;
いかんいかん、失礼しました~
あと、オリジナルのC1は 0.1uFでOKです。
ノイズ除去のパスコン(バイパスコンデンサ)は・を打ったり、値を書かずに、回路図の余白に注記されていることが多いです。
//
Re: 20dB 低雑音アンプのプリント基板化 - やどさん
2024/12/04 (Wed) 23:33:42
パオさん 皆様、こんばんは。
遅くなりましたが、パオさん基板で20dBプリアンプの試行をしてみました。
少し抵抗値を変えましたので添付画像に回路図を入れておきます。 → 画像左側
結果:
・マイコンにつないで安定して周波数カウントする最高周波数は、約158MHz
→ ただし、TinySAのSG機能で -7dbm出力時です。プリアンプ入力部で50Ω終端しました。
・PG=150MHzで安定して周波数カウントする最小入力振幅は、-24dBm → 画像右上
→ これまでに試した中で最良な感度でした! -24dBm = 14mVrms = 20mVp = 40mVpp
原因不明事項
・周波数帯域が狭いというか、200MHz程度以上に共振回路もしくはLPFがあるような周波数特性を示します!? 汗);
→ NanoVNA-V2でS21特性を測定すると、画像右下のように急に増幅度が低下する周波数特性となり、配線や抵抗などの定数見直しでも同様な傾向でした。
ご参考用に、今回 LTspiceで回路シミュレーションを行ったネット(ascファイル)や使ったライブラリなどを、下記共有ディレクトリにおきました。
https://drive.google.com/drive/folders/1riC0zhOjh7L3jIOKZVYTP_VtJSxp-a_b
の中の、「RFC-5回路シミュレーション資料.zip」ファイルをダウンロードしてください。
→ 下手の横好き的シミュレーションなので、ご参考程度に… 汗;;
//
Re: 20dB 低雑音アンプのプリント基板化 - パオさん URL
2024/12/05 (Thu) 10:04:46
>やどさん
確認してもらい助かります。
私が測った時も、このアンプ単体では最大で 120 MHz 位までしか行かなかったので、基板上のどこかの配置が RF 回路的に NG なのでしょう。(配線の配置が RF フィルタを作っている?)
ここまで高い周波数を扱う基板を作ったのは初めてなので、オーダーに出す前に基板の RF をシミュレートする必要があったのだと思います。
とりあえず、すぐに確認できる、20dB 低雑音アンプ - 5倍アンプ - MCU の接続で、どこまで測れるか確認してみます。
Re: 20dB 低雑音アンプのプリント基板化 - パオさん URL
2024/12/14 (Sat) 22:21:48
>やどさん
やはり色々といじってみましたが、私が基板化した「20dB アンプ」部分は性能が良くない(上限周波数が低い)ようです。
そこで、安価で購入できる RF アンプモジュールを RFC-5 のプリアンプとして試してみたところ良好な結果が得られました。(320 MHz まで計測出来ました。)
また、試作品ですが LCD に I2C の AQM1602Y を使ったケースを Fusion360 で設計して 3Dプリンタで作ってみました。(まだ充電池は外部です。)
ところで、やどさんは TinySA と NanoVNA-V2 をお持ちのようですが、今回の様な周波数特性を「グラフ化」するため、私も同様な器材を購入したいと考えています。適した器材はどちらでしょうか?
Re: 20dB 低雑音アンプのプリント基板化 - やどさん
2024/12/15 (Sun) 00:44:09
パオさん こんばんは。
おおっ、5089Zとか5189な広帯域20dBのLNAですね。
うちにもAliで数百円だったか、買ったのが転がっています。
これを使えば、部品点数最小限のコスパ良し、高精度なレシプロカル式周波数カウンタが出来ますね!
いやいやケーシングが素敵です。
>TinySA と NanoVNA-V2
RF20dBアンプのような特性測定ならば、やはりNanoVNAがおすすめです。他にもいろいろな測定に使えます。
NanoVNA、TT@北海道さんが生み出したノーベル賞級なRF測定器で、許可を得ずに中国で複製して安く販売したのが原因と思いますが、世界中のアマチュア、プロ級の人々に使われています。
TinySAはNanoVNAをお手本に作られた簡易スペアナです。
今回は信号発生器としてしか使っていませんが、出力信号レベルを-7dBmから-70dBmくらいまで1dBm毎に可変できて重宝します。
(ちなみにNanoVNAも信号発生器になります)
//
Re: 20dB 低雑音アンプのプリント基板化 - パオさん URL
2024/12/18 (Wed) 19:57:06
RFC-5 プリント基板のアンプ部を色々と試験した記事をブログに書きました。
https://me-yoh.com/make_frequency_counter_12
最終的に、私の基板化した「20dB 低雑音アンプ」は動作不良ですが、AliExpress の RF アンプで 370 MHz (-13.7dBm)まで計測出来ました!
ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/13 (Fri) 23:34:52
今晩は。長くなりましたのスレッド(4)にしました。
Re: ACM1602NI-FLW-FBW-M01(4) - やどさん
2024/12/14 (Sat) 07:39:01
笛吹おじさん おはようございます。
> コマンドの、0x06部分では、表示エントリーモード設定になっていますが、0xC0にすればOK
おっと、すみません誤記です! 0xC0ではなく、0x0C (表示ON・カーソルOFF)でした。
で、80,80が続くのが文字データ送信部ですが、
よく考えたら、笛吹おじさんのコマンド送信部と同様に直せば、正しく表示データが送信されると思います。
表示データ1バイトを送信する部分、lcdc16xn_i2c.c内 lcdc_write8()を、下記のようにしたら文字出るはず、、汗);
//───────────────────────────────────
// データ1バイトをLCDに送る
//───────────────────────────────────
static int lcdc_write8( int data ) {
int err=0;
i2c_start();
err += i2c_write8( i2c_addrs ); // address + bit0=L(Write)
err += i2c_write8( 0x80 );
err += i2c_write8( data ); // data8bit
i2c_stop();
if( err ) return 1;
return 0; // OK
}
//
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/14 (Sat) 10:21:32
やどさん、お早うございます。
土曜の朝、早くからの御回答有難うございます。
早速やってみました。
結果************************************
244210-244355 I2C: Address/data: Address write: A0
244355-244376 I2C: Address/data: Write
244373-244394 I2C: Address/data: ACK
244399-244566 I2C: Address/data: Data write: 00
244563-244584 I2C: Address/data: ACK
244589-244755 I2C: Address/data: Data write: C0
244752-244773 I2C: Address/data: ACK
244821-244821 I2C: Address/data: Start repeat
244845-244990 I2C: Address/data: Address write: A0
244990-245011 I2C: Address/data: Write
245009-245030 I2C: Address/data: ACK
245034-245201 I2C: Address/data: Data write: 00
245199-245220 I2C: Address/data: ACK
245225-245390 I2C: Address/data: Data write: 0C
245388-245409 I2C: Address/data: ACK
245465-245465 I2C: Address/data: Start repeat
245489-245634 I2C: Address/data: Address write: A0
245634-245655 I2C: Address/data: Write
245652-245673 I2C: Address/data: ACK
245678-245845 I2C: Address/data: Data write: 00
245842-245863 I2C: Address/data: ACK
245867-246034 I2C: Address/data: Data write: C0
246031-246052 I2C: Address/data: ACK
246101-246101 I2C: Address/data: Start repeat
246125-246270 I2C: Address/data: Address write: A0
246270-246291 I2C: Address/data: Write
246288-246309 I2C: Address/data: ACK
246313-246480 I2C: Address/data: Data write: 80
246477-246498 I2C: Address/data: ACK
246502-246668 I2C: Address/data: Data write: 20
246666-246687 I2C: Address/data: ACK
246735-246735 I2C: Address/data: Start repeat
246759-246904 I2C: Address/data: Address write: A0
246904-246925 I2C: Address/data: Write
246923-246944 I2C: Address/data: ACK
246947-247114 I2C: Address/data: Data write: 80
247111-247132 I2C: Address/data: ACK
247136-247301 I2C: Address/data: Data write: 20
247300-247320 I2C: Address/data: ACK
247369-247369 I2C: Address/data: Start repeat
247393-247538 I2C: Address/data: Address write: A0
247538-247559 I2C: Address/data: Write
247557-247578 I2C: Address/data: ACK
247581-247748 I2C: Address/data: Data write: 80
247745-247766 I2C: Address/data: ACK
247770-247935 I2C: Address/data: Data write: 20
247934-247954 I2C: Address/data: ACK
248003-248003 I2C: Address/data: Start repeat
248027-248172 I2C: Address/data: Address write: A0
248172-248193 I2C: Address/data: Write
248191-248212 I2C: Address/data: ACK
248215-248382 I2C: Address/data: Data write: 80
248379-248400 I2C: Address/data: ACK
248405-248571 I2C: Address/data: Data write: 20
248568-248589 I2C: Address/data: ACK
248637-248637 I2C: Address/data: Start repeat
248661-248806 I2C: Address/data: Address write: A0
248806-248827 I2C: Address/data: Write
248825-248846 I2C: Address/data: ACK
248849-249016 I2C: Address/data: Data write: 80
249013-249034 I2C: Address/data: ACK
249039-249205 I2C: Address/data: Data write: 20
249202-249223 I2C: Address/data: ACK
249271-249271 I2C: Address/data: Start repeat
249295-249440 I2C: Address/data: Address write: A0
249440-249461 I2C: Address/data: Write
249459-249480 I2C: Address/data: ACK
249483-249650 I2C: Address/data: Data write: 80
249647-249668 I2C: Address/data: ACK
249672-249837 I2C: Address/data: Data write: 20
249836-249856 I2C: Address/data: ACK
249905-249905 I2C: Address/data: Start repeat
249929-250074 I2C: Address/data: Address write: A0
250074-250095 I2C: Address/data: Write
250093-250114 I2C: Address/data: ACK
250117-250284 I2C: Address/data: Data write: 80
250281-250302 I2C: Address/data: ACK
250306-250471 I2C: Address/data: Data write: 20
250470-250490 I2C: Address/data: ACK
250539-250539 I2C: Address/data: Start repeat
250563-250708 I2C: Address/data: Address write: A0
250708-250729 I2C: Address/data: Write
250727-250748 I2C: Address/data: ACK
250751-250918 I2C: Address/data: Data write: 80
250915-250936 I2C: Address/data: ACK
250940-251105 I2C: Address/data: Data write: 20
251104-251124 I2C: Address/data: ACK
251173-251173 I2C: Address/data: Start repeat
251197-251342 I2C: Address/data: Address write: A0
251342-251363 I2C: Address/data: Write
251361-251382 I2C: Address/data: ACK
251385-251552 I2C: Address/data: Data write: 80
251549-251570 I2C: Address/data: ACK
251574-251739 I2C: Address/data: Data write: 20
251738-251758 I2C: Address/data: ACK
251807-251807 I2C: Address/data: Start repeat
251831-251976 I2C: Address/data: Address write: A0
251976-251997 I2C: Address/data: Write
251994-252015 I2C: Address/data: ACK
252019-252186 I2C: Address/data: Data write: 80
252183-252204 I2C: Address/data: ACK
252208-252374 I2C: Address/data: Data write: 20
252372-252393 I2C: Address/data: ACK
252441-252441 I2C: Address/data: Start repeat
252465-252610 I2C: Address/data: Address write: A0
252610-252631 I2C: Address/data: Write
252628-252649 I2C: Address/data: ACK
252653-252820 I2C: Address/data: Data write: 80
252817-252838 I2C: Address/data: ACK
252842-253008 I2C: Address/data: Data write: 20
253006-253027 I2C: Address/data: ACK
253075-253075 I2C: Address/data: Start repeat
253099-253244 I2C: Address/data: Address write: A0
253244-253265 I2C: Address/data: Write
253262-253283 I2C: Address/data: ACK
253287-253454 I2C: Address/data: Data write: 80
253451-253472 I2C: Address/data: ACK
253476-253642 I2C: Address/data: Data write: 20
253640-253661 I2C: Address/data: ACK
253709-253709 I2C: Address/data: Start repeat
253733-253878 I2C: Address/data: Address write: A0
253878-253899 I2C: Address/data: Write
253896-253917 I2C: Address/data: ACK
253921-254088 I2C: Address/data: Data write: 80
254085-254106 I2C: Address/data: ACK
254110-254276 I2C: Address/data: Data write: 20
254274-254295 I2C: Address/data: ACK
254343-254343 I2C: Address/data: Start repeat
**********************************************
となり、20が連続で出ています。
まだ、その後の文字は表示されませんね。
まだ何かありそうです。
でもSW1,2を同時に押して電源を入れると「DFU G]と一瞬表示されますのでmain.cにある"DEFAULT SETTING"の1部?が出ているのかも、、、、、
これから日課のwalkingに行きますので2時間ほど投稿できません、よろしくお願い致します。
では、
Re: ACM1602NI-FLW-FBW-M01(4) - やどさん
2024/12/14 (Sat) 11:55:52
おおっ、表示出ましたね!
スペースの埋め尽くしなので、面白くありませんが、立派な文字です。多分、お豆腐やカーソルも消えた事と思います。
一瞬、DFU Gとも表示するということは、文字送信は成功です。
コマンド送信も同様な関数にしてしまえばバッチリいけそうです。
I2C液晶への変更の肝は、初期化コマンドと、コマンド送信に表示データ送信の部分だけなので、これがOKになったら基本問題ないです。
もし、問題あればI2Cデコード結果を眺めてNGなところのコマンドや表示データの送信がどうなっているのかをゆっくり調べれば良いと思います。
すみません、自分もとても興味があったので、なんか逆に急かしてしまったかも、、、と思っていました。
//
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/14 (Sat) 12:43:37
今日は、今日は北風が強いです(東京の郊外西多摩)
やどさん、歩きながら考えて居たのですが、CPUからはLCDへ信号をほぼ正常な形で送りだしている印象です。
あとはLCDの問題?
以下のclock period をいじってみようかと思うのですが。100KHzよりは早そうなので、遅くしてみた方が、、、。
//const int ic2_period = 5; // ic2 clock period =100kHz(5us*2) 実測85kHz
//const int ic2_period = 2; // ic2 clock period =250kHz(2us*2) 実測170kHz
const int ic2_period_ns = 100;//200; // ic2 clock period =250kHz(2us*2) 実測170kHz
木を見て森を見ず的な事をやっていますので森の景観がどうなるのかまでは考えが及んでいません。
>すみません、自分もとても興味があったので、なんか逆に急かしてしまったかも、、、と思っていました。
いえいえ、そんなことはありません。やどさん、パオさんの応援で大いに助かっています。
感謝です!
今しばらくお付き合い頂ければ有難いです。
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/14 (Sat) 14:37:23
今日は。
SCL周波数は140~150KHzくらいで100KHz以下にはならない様な、、、。
どこをいじくればいいのか?
Re: ACM1602NI-FLW-FBW-M01(4) - やどさん
2024/12/14 (Sat) 17:14:07
日が暮れるのが早いですね。
こちらは、寒くて車で移動… 運動不足ですぅ。Hi
先週、SCL周波数を落とすのも試してみました、
i2c_100khz.cを使って、20行目の
const int ic2_period = 2;
を 2から3や4にするとその比で遅くなりました。
ただ、 ACM1602NI-は、PiCマイコンでI2Cインターフェースしていて、消費電流を落とすためにPiCマイコンのクロック周波数を落としているとは思いますが、、
SCKで100kHz以下まで遅くしないと動かないのかは、試してみないと良く分からないです。
//
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/14 (Sat) 17:45:00
やどさん、今晩は。
車は免許も返納して乗れません(車持っていないです)
さて、お立合い!
何か出ましたよ。
const int ic2_period_ns = 500; //100;//200; // ic2 clock period =250kHz(2us*2) 実測170kHz
取り敢えず上記を500に替えてみました。
そうすると何やらそれらしい文字がでました。
SCL=132KHzくらいです。
この数字をもっと大きくすれば100kHzいかになるのか?
やってみます。
ゴールはもう少しですかね。
const int ic2_period_ns = 500; この数値を900まで増やしてみましたが130KHzよりは下がりません。
取り敢えず表示は良さそうです、SW2を押すと測定時間が変わりますがSW1を押したら気温表示が一瞬消えます。その時間がちょっと長い?(PCF8574アダプタにひかくして)かな。
あとは実際の周波数表示が出るか?をやってみます。
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/14 (Sat) 18:47:52
今晩は。
測定結果もちゃんと表示されている様です。
SCL周波数が100KHzにならないのはなぜ?
これを解決すれば概ねOKかなと。
const int i2c_addrs = 0xA0; //0x4E; // PCF8574 A2..0=111
//const int ic2_period = 5; // ic2 clock period =100kHz(5us*2) 実測85kHz
//const int ic2_period = 2; // ic2 clock period =250kHz(2us*2) 実測170kHz
const int ic2_period_ns = 900; //100;//200; // ic2 clock period =250kHz(2us*2) 実測170kHz
ST-LINK V2ですが、書き込みの度にUSBを抜き差ししないとCube Programmerとconnectできません。
そのうちUSBコネクタが壊れるのではと思っています。
そうなる前に終わらないと、、、、。
Re: ACM1602NI-FLW-FBW-M01(4) - やどさん
2024/12/14 (Sat) 22:11:35
笛吹おじさん こんばんは。
表示完璧ですね!
タイミングが怪しいと、笛吹おじさんが考えた通りでしたね!素晴らしいです。
一応、秋月のページでデータシート見てみたら、
SCLは100kHz max, SDAのセットアップ・ホールド2.4us以上って書いてありました。。。汗);;
st7032は400kHzでしたが、何故100kHz maxなのか?と思って、、
ChatGPTに訊いてみました。
「I2Cの規格自体は、標準モードで100kHzまで、高速モードで400kHzまでと定められています。」
「LCDモジュールの特性、ノイズ対策、消費電力などの様々な要因が複合的に作用して、そのように設計されていると考えられます。」
ちゃんと、I2Cの標準モード規格のLCDモジュールという事でした。。
//
Re: ACM1602NI-FLW-FBW-M01(4) - パオさん URL
2024/12/14 (Sat) 22:29:27
>笛吹おじさん
LCD へ無事表示が出ましたね。
おめでとうございます!
ところで、ST-LINK V2 の不具合の件ですが、ドライバを入れ直してはいかがでしょうか?
私は USB が調子悪い時には「USB Device Tree Viewer」というソフトで確認して調子悪い時はドライバを入れ直しています。
>やどさん
毎日遅くまでお疲れさまでした。
ちなみに、「20dB 低雑音アンプ」で RFC-5 のアンプの続報を報告させてもらいました。
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/15 (Sun) 00:10:28
やどさん、パオさん、ご協力有難うございました。
お陰様で何とかゴウルにたどり着くことができました。お礼申し上げます。
SCLの周波数を落とす部分は適当に変更しましたが、今一つ効果がでていません。
この部分は検討事項です。
ST-LINKの件了解です。入れなおしてみたいと思います。
後は20dBアンプ部を作ります。結果についてはまた投稿します。
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/15 (Sun) 09:08:31
お早うございます。快晴、風無し。
以下を1500にしてSCLCLKはちょうど100KHzになりました。
const int ic2_period_ns = 1500; //100;//200; // ic2 clock period =250kHz(2us*2) 実測170kHz
これにて1件落着でございまーーーす!
皆様、有難うございました。
Re: ACM1602NI-FLW-FBW-M01(4) - やどさん
2024/12/15 (Sun) 10:24:00
笛吹おじさん、おはようございます。
ちょっとデューティが気になって、こちらも実験してました。
i2c_250khz.c(delay_ns使用)だと、デューティーが悪くなってしまうので、
i2c_100khz.c(delay_us)を使った方がよいかもです。動いているので多分問題ないですが…
パラメータ振ってSCL周期をみると、こんな感じでした。
<i2c_250khz.c>
const int ic2_period_ns = 100; scl=3.90us
const int ic2_period_ns = 1000; scl=5.06us
const int ic2_period_ns = 5000; scl=7.19us
<i2c_100khz.c>
const int ic2_period_us = 3; scl=7.7us
const int ic2_period_us = 4; scl=10.8us
const int ic2_period_us = 6; scl=14.5us
//
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/15 (Sun) 12:27:13
やどさん、こんにちは。
どうもリポート有難うございます。
<i2c_100khz.c>に切替て書き込んでみましたが表示がおかしくなってしまいました。
<i2c_100khz.c>と<i2c_250khz.c>は内容が異なりますのでさらに<i2c_100khz.c>を直す必要が在りそうです。
<i2c_100khz.c>にはconst int ic2_period_usは有りませんのでこれを追加してic2_periodの部分をic2_period_us に変更しました。
まだ追加、変更が必要でしょうね。
Re: ACM1602NI-FLW-FBW-M01(4) - やどさん
2024/12/15 (Sun) 13:10:20
あっ、i2c_250hz.cを修正していると云うことですね。
ならば、i2c_250hz.cの
delay_ns(xxx) を delay_us(xxx)に全部置換すれば
早いのでは?と思いましたが、、、
i2c_250hz.cを良く見たら、
delay_period(123);とか合わせ込みしている部分がありますね。。デューティーが悪くなった原因です。
delay_period(123);をやめて、delay_us(xxx)にすればばいいか?
i2c_100khz.cを直した方が確実か?、、汗);
//
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/15 (Sun) 15:54:38
やどさん、今日は。
<i2c_100khz.c>
const int i2c_addrs = 0xA0; // 0x4E; // PCF8574 A2..0=111
//const int ic2_period = 5; // ic2 clock period =100kHz(5us*2) 実測85kHz
//const int ic2_period = 2; // ic2 clock period =250kHz(2us*2) 実測170kHz
const int ic2_period_ns = 6;
上記の結果が画像です。何だか時間が違うような気がしてます。
やどさんのは14.5us、私のは29.2us。どうして???
CPUのCLK20MHz(オリジナルは26MHz)これは関係ないでしすよね。
delay_us()この関数はgccがもっているのですか?
Re: ACM1602NI-FLW-FBW-M01(4) - やどさん
2024/12/15 (Sun) 16:59:35
>delay_us()この関数はgccがもっているのですか?
サーチすると見つけられますよ~
自分は、Linuxコマンド”grep”でディレクトリ下のどのファイルに”delay_us”文字列があるか探しています。
念のため、
オリジナルRFC-5のI2C波形と、
ST7032用のI2C波形をオシロでも観測してみました。→ 画像
//
Re: ACM1602NI-FLW-FBW-M01(4) - 笛吹おじさん
2024/12/15 (Sun) 23:55:44
やどさん、今晩は。
<i2c_100khz.c>の方がDutyはほぼ50%に近いですね、
此方を採用することにしました。
私の場合は
const int ic2_period_ns = 2;でSCL:1サイクルで
13.3us(75KHz)になって居ます。
やどさんの場合はic2_period_ns = 6で14.5us(69KHz)で多少異なりますが概ね同じと思えます。
この違いは多分CPUのXTAl発振周波数の影響でしょう。
表示も問題に様です。
これでFixとしようと思います。。
Re: ACM1602NI-FLW-FBW-M01(4) - やどさん
2024/12/16 (Mon) 01:06:01
笛吹おじさん こんばんは!
はい、たぶん源発振周波数で違いが出たのかと思っています。
もう表示もSCL周期も完璧ですね!お疲れ様でした。
ちょっとプログラム追いきれなくてメカニズムが分からりませんが一応、
delay_us()は、下記に見つけました。
board/stm32/stm32.h:
#define delay_us( us ) delay_usec( us )
board/stm32/stm32.c:
void delay_usec( uint32 us ) {
volatile uint i=(us*(SYSTEMCORECLOCK/1000000))/(LOOPTIME);
while(i--);
}
board/stm32/stm32.c:
#define LOOPTIME 8
board/board.c:
const int SYSTEMCORECLOCK = 32500000; // 32.5MHz = 260MHz/8
//
ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん
2024/12/11 (Wed) 17:24:16
今晩は。日が暮れると冷えてきました。
さて続きです。
画像の様に初期化は4個出ました。時間は10ms(プログラムでは5ms)です。
最初はA0+00+01でACKが戻っています。2個目以降は中身はプログラム通りなのですが、何故かACKが返っていません。なぜか?まだ解決していません。
追記
あれ❕ アドレス:50❓ A0じゃないとおかしい、、
Re: ACM1602NI-FLW-FBW-M01(3) - やどさん
2024/12/11 (Wed) 19:57:13
こんばんは、朝いち0℃くらいになってきました。ブルっっ;;
>アドレス:50?
波形を見るとA0なので大丈夫です。
スレーブアドレス表示は変えられるみたいです。
unshiftedを選ぶとLSBのWrを含めた、A0が表示されると思います。(画像添付)
>何故かACKが返っていません
あ、やはりST7032と同じ症状ですね!
I2C全体の波形をみると、通常pullupされているはずのSCLが”L“になっているのが原因だと思います。
一昨日 ACM1602NI-FLW-FBW-M01(1)で送った、
static void i2c_stop( void ) 関数の中の最後の
I2C_SCL_L(); をコメントアウトしてみてください。
//
Re: ACM1602NI-FLW-FBW-M01(3) - パオさん URL
2024/12/11 (Wed) 19:57:32
>笛吹おじさん
もう少しで表示が出そうですね。
頑張ってください!
>やどさん
最新のファイルを利用させてもらい、無事、I2C LCD へ表示が出来ました。
やったー!(動作もOKです。)
色々とありがとうございます。
表示できなかった原因を探ってみました。
1 1つしかなく動作試験でずっと使っていた AQM1602A は故障していました。Arduino UNO でも表示不能でした。(この前まで大丈夫だったのですが)
2 最初に試したバイナリは、多分 20Pin 用なので、 I2C のピンが違っているので、LCD を変えても表示しなかった。(多分)
ーその後ー
3 頂いた LCDC16xn_i2c.c に入れ替えてコンパイルしたら AQM0802 で表示できました!
4 プルアップ抵抗やリセット回路の配線を外しても表示OKです。
5 他に部品箱にあった AQM1602Y と ATD1602CP に差し替えても表示できました。
次は、自分でプログラムを修正してOKなら、ケースを作ってみようと思います。
Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん
2024/12/11 (Wed) 21:02:10
やどさん、今晩は。
ロジアナのADRS表示了解です、ありがとうございます。
それからACKは最初のA00001では出るのですがそれ以降はでないのです。
>I2C_SCL_L(); をコメントアウトしてみてください。
やってみましたが状況は同じでした。
まったくACKが返らないのなら分かるのですが、、、、。不思議です。
Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん
2024/12/11 (Wed) 23:20:44
今晩は。
ACK出る様になりました。
残るはDataの表示部分です。
Re: ACM1602NI-FLW-FBW-M01(3) - やどさん
2024/12/11 (Wed) 23:28:44
笛吹おじさん、パオさん こんばんは。
1)1つ目のコマンドライトのストップ(P)以後、2つ目のコマンドライト間のSClは”H”になっている?
2)2つ目のコマンド開始のスタートビット位置はSCL”H”でSDA”↓”で(S)になっている?
3)スレーブアドレスは、正しく0xA0?
もし3つ 問題なしで、ACKが返ってこないとすると、、、
と、書いている間に、ACK出るようになったとの事、おめでとうございます!
一番考えやすいのは、SCLが”H"になっていないでしたが、、、何を直しましたか?
ちなみに、スタート信号は、SCK”H"期間に SDA”↓”なので、
「別にSCLが通常”H"でなければいけない訳ではない」です。
以前投稿したように、何故ストップ後(またはスタート前)にSCL="H"でなければ、ST7032LCDが動かないのか解せません。。。
この投稿見ている方でご存じの方がいらっしゃいましたら教えてください。
//
Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん
2024/12/11 (Wed) 23:59:38
やどさん、
//───────────────────────────────────
// I2C stop
//───────────────────────────────────
static void i2c_stop( void ) {
I2C_SDA_L();
delay_ns(ic2_period_ns/2);
I2C_SCL_H();
delay_ns(ic2_period_ns/2);
//I2C_SDA_H(); <======== コメントアウト // stop
delay_ns(ic2_period_ns/2);
I2C_SCL_L();
}
上記をコメントアウトしました。
Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん
2024/12/12 (Thu) 20:17:26
今晩は、今日は冷たい大風で寒かったです。冬らしくなったのでしょう。
さて、今日は全く進展しませんでしたね。
LCD初期化は期待通りの結果が出たのですが、データ表示の段階はよく分からないことも有り、、、ダメです。
初期化はコマンドが決まっていますので
ADRS+00+コマンドを出すことで何とかなりました。
以下が泥臭いやり方です。(お恥ずかしいですが、)
void lcdc_init( void ) {
i2c_init();
delay_msec( 20 ); // 電源投入後 15ms 以上待つ
// LCDC_RS_L(); // LCD RS = 0 コマンド
lcdc_cmdwrite40( 0x01 );
delay_msec( 5 ); // 4.1ms 以上待つ
lcdc_cmdwrite41( 0x38 );
delay_msec( 5 );
lcdc_cmdwrite42( 0x0f );
delay_msec( 5 );
lcdc_cmdwrite43( 0x06 ); // 4ビットモード
delay_msec( 5 );
lcdc_cmdwrite41( 0x38 ); // 4ビット、2行表示、5x7ドット文字
lcdc_cmdwrite42( 0x0f ); // 表示 ON
lcdc_cmdwrite43( 0x06 ); // increment, no shift
// lcdc_write8( LCDC_NOCURSOR ); // カソールなし
lcdc_cls(); // ディスプレークリア
}
それぞれのcmdwriteXXに相対する関数i2c_txXXを用意して飛ばします。
static void lcdc_cmdwrite40( int data ) {
i2c_tx0( (0x00) + I2C_LCD_E + I2C_LCD_BL ); // RS=0,E=1
// i2c_tx( (0x00) + + I2C_LCD_BL ); // RS=0,E=0
}
以下の関数でLCDに送り込みます。
int i2c_tx0( int txdata ) {
int err=0;
//int lcdcmd = txdata;
i2c_start();
err += i2c_write8( i2c_addrs ); // address + bit0=L(Write)
err += i2c_write8( 0x00 );
err += i2c_write8( 0x01 ); // data8bit
i2c_stop();
if( err ) return 1;
return 0; // OK
}
ここまでは決まったコマンドですので何とかなりました。まえの関数から送られてくる引数は無視。
/*
//───────────────────────────────────
// データ1バイトをLCDに送る
//───────────────────────────────────
static void lcdc_write8( int data ) {
// lcdc_write4( data ); // 上位4ビット出力
// lcdc_write4( data<<4 ); // 下位4ビット出力
char txstr_d[5];
txstr_d[0] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_E + I2C_LCD_BL; // RS=1,E=1
txstr_d[1] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_BL; // RS=1,E=0
data = data<<4;
txstr_d[2] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_E + I2C_LCD_BL; // RS=1,E=1
txstr_d[3] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_BL; // RS=1,E=0
txstr_d[4] = 0;
i2c_tx_str_d( txstr_d );
}
*/
txstr_d[0] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_E + I2C_LCD_BL; // RS=1,E=1
txstr_d[1] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_BL; // RS=1,E=0
上記の中にある
(data&0xF0)ですが、、、どうすればいいのか?
データはADRS+80+dataで送り込む必要が在りますが、どうすればその形になるのか?
初期化の関数も1個ですべてのコマンドをあつかえればいいのですが、私の力では無理です。
そんな訳で頓挫しています。
追記
やどさん、初期化が終わりでーた転送に入った数バイトのロジアナ波形を見たいのですが、お願いします。
Re: ACM1602NI-FLW-FBW-M01(3) - やどさん
2024/12/13 (Fri) 01:06:22
笛吹おじさん こんばんは。
> 初期化後のデータ転送に入った数バイトのロジアナ波形
初期化後の lcdc_cls(); 部のロジアナ波形画像添付します。
アドレス0x7C→制御バイト(RS=1)→表示データ(スペース)の0x20 を1行分16回繰り返しています。
> (data&0xF0)ですが…、?
lcdc16xn_i2c.cのデータやコマンドを1バイト送る関数の中身ですが、
例えば、コマンド0x38を送る場合:
txstr_d[0] = (data&0xF0) + I2C_LCD_RS + I2C_LCD_E + I2C_LCD_BL; のところは、このままだと、、
(data&0xF0)の部分でコマンド38の上位4ビットを残して、下位4ビットにはRSやRW,E,BLの各制御ビットを追加しているので、
(0x30)+0x01 +0x04 +0x08 = 0x3D が送信されてしまいます。
最初の方にビット位置の定義があります。
#define I2C_LCD_RS 0x01 // P0 →SC1602LCDのRS端子につながる
#define I2C_LCD_RW 0x02 // P1 →SC1602LCDのRW端子へ
#define I2C_LCD_E 0x04 // P2 : Eへ
#define I2C_LCD_BL 0x08 // P3 :
元の(PCF8574+sc1602)なLCDでは、SC1602LCDのRSやRW,E,BL制御信号もI2Cで送らなければいけなかったので、コマンドや表示値は4ビット幅にして2回に分けて送る必要がありました。
でも、I2C-LCDでは、アドレスとRWの8ビット → RSを含む8ビット → コマンドや表示データ8ビット、と8ビット幅で送ることが出来ます。
(RSやRW,E,BLの制御ビットを付加する必要ありません)
そこで、対策案ですが、lcdc16xn_i2c.c で、
//───────────────────────────────────
// データ1バイトをLCDに送る
//───────────────────────────────────
static void lcdc_write8( int data ) {
char txstr[2];
txstr[0] = 0x80; // RS=1
txstr[1] = (data);
i2c_tx_str( txstr );
}
//───────────────────────────────────
// コマンド1バイトをLCDに送る
//───────────────────────────────────
static void lcdc_cmdwrite8( int data ) {
char txstr[2];
txstr[0] = 0; //RS=0
txstr[1] = (data);
i2c_tx_str( txstr );
}
LCD初期化 の部分は、
delay_msec( 20 ); // 電源投入後 15ms 以上待つ
// LCDC_RS_L(); // LCD RS = 0 コマンド
lcdc_cmdwrite8( 0x01 );
delay_msec( 5 );
lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示
delay_msec( 5 );
;
のように続ければ良さそうです。
あと、念のため、i2c_100khz.c のストップ条件の生成部と文字列を送る部分は、下記の様にしてみてください。
static void i2c_stop( void ) {
I2C_SDA_L();
delay_us(ic2_period);
I2C_SCL_H();
delay_us(ic2_period/2);
I2C_SDA_H(); // stop
delay_us(ic2_period/2);
//I2C_SCL_L(); <--- ここをコメントアウト
}
それと、
// 文字列を I2C に送る
int i2c_tx_str( char *txstr ) { の中の、
while( *txstr ) { はコメントアウトして、代わりに
for( int n=0; n<2; n++ ) { にしてください。
while( *txstr )のままだと、RSや表示データが0x00だと送信ストップしてしまうためです。
//
Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん
2024/12/13 (Fri) 08:30:19
やどさん、お早うございます。
夜遅くまで私の愚問にご回答頂きありがとうございます。感謝! 感謝! 感謝! です。
貴重なやどさんの睡眠時間が短くなってしまいましたね。済みません。 n(_ _)m
早速やってみます。
結果はまたご報告いたします。
どうも、、、でした。
Re: ACM1602NI-FLW-FBW-M01(3) - やどさん
2024/12/13 (Fri) 12:41:32
いえいえ、すみません、大丈夫です。
それに全然愚問ではないです。。
笛吹おじさんのように、自ら問題を解決しようとする姿勢は他の範であると思います。
きっと、きんさんぎんさんみたいに100歳過ぎても頭脳が衰えないです。
//
Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん
2024/12/13 (Fri) 17:13:48
やどさん、今日は。
結果です。
初期化の38-0F-06 CLS LCDは出ています。その後のデータ部分はA0-80-80 A0-80-80の繰り返しの様です。
LCD表示も豆腐が1個点滅しています。カーソルも豆腐が消えて時に出ています。
ACKはI2C_SCL_L();のコメントアウトでは駄目でした。
今はその上のI2C_SDA_H();をコメントアウトしています。
データ表示部分はプログラムをいじっていますので何か変わってしまったところが有る可能性もありますのでもう一度見直します。
static void i2c_stop( void ) {
I2C_SDA_L();
delay_us(ic2_period);
I2C_SCL_H();
delay_us(ic2_period/2);
I2C_SDA_H(); // stop <------ここに変更
delay_us(ic2_period/2);
//I2C_SCL_L(); <--- (ここをコメントアウト)
}
以下はロジアナの結果です。初期化の最初の部分は端折ってあります。
**********************
162426-162522 I2C: Address/data: Address write: A0
162522-162535 I2C: Address/data: Write
162535-162548 I2C: Address/data: ACK
162552-162663 I2C: Address/data: Data write: 00
162661-162675 I2C: Address/data: ACK
162679-162787 I2C: Address/data: Data write: 0F
162786-162799 I2C: Address/dress write: A0
162945-162959 I2C: Address/data: Write
162957-162971 I2C: Address/data: ACK
162975-163086 I2C: Address/data: Data write: 00
163084-163098 I2C: Address/data: ACK
163102-163212 I2C: Address/data: Data write: 06
163210-163224 I2C: Address/data: ACK
163262-163262 I2C: Address/data: Start repeat
163278-163374 I2C: Address/data: Address write: A0
163374-163388 I2C: Address/data: Write
163387-163401 I2C: Address/data: ACK
163404-163515 I2C: Address/data: Data write: 00
163513-163527 I2C: Address/data: ACK
163530-163641 I2C: Address/data: Data write: C0
163639-163653 I2C: Address/data: ACK
163686-163686 I2C: Address/data: Start repeat
163702-163799 I2C: Address/data: Address write: A0
163799-163813 I2C: Address/data: Write
163811-163825 I2C: Address/data: ACK
163827-163939 I2C: Address/data: Data write: 80
163937-163951 I2C: Address/data: ACK
163953-164063 I2C: Address/data: Data write: 80
164063-164076 I2C: Address/data: ACK
164110-164110 I2C: Address/data: Start repeat
164126-164223 I2C: Address/data: Address write: A0
164223-164237 I2C: Address/data: Write
164235-164249 I2C: Address/data: ACK
164251-164363 I2C: Address/data: Data write: 80
164361-164375 I2C: Address/data: ACK
164377-164489 I2C: Address/data: Data write: 80
164487-164501 I2C: Address/data: ACK
*************************
Re: ACM1602NI-FLW-FBW-M01(3) - やどさん
2024/12/13 (Fri) 20:57:40
笛吹おじさん こんばんは。
> ACKはI2C_SCL_L();のコメントアウトでは駄目でした
誤報かな?と思ったのですが、「// I2C_SDA_H(); stop」でないと表示されないのですね!
ストップ条件を出さずにスタートを重ねることになりますが、
ChatGPTに訊いてみたら、出来るそうです。(推奨はしないけれど、との事)
もしかすると、、I2Cポート設定時の最初のSCL・SDAがポイントなのかもと考えています。。
> 以下はロジアナの結果…
コマンド 0F→06→C0→表示データ 80→80→
表示データがスペース0x20でなく0x80になっているのが問題なだけで、これを直せば、表示しますね!!
っていうか、もうお豆腐とカーソルを表示しているのですね!
コマンドの、0x06部分では、表示エントリーモード設定になっていますが、0xC0にすればOKです。
あと、「Data write 0C 表示ON,カーソルOFF」のコマンドを加えれば、カーソルを消せます。
*ST7032液晶の初期化→表示クリア部分です(アドレスとStop行は省略)
Start
Data write 0 コマンド
Data write 38, 39, 14, 71, 56, 6C, 38, 01, 6C, 01, ← ST7032初期化部分
Start
Data write 0
Data write 0C 表示ON,カーソルOFF
Start
Data write 0
Data write C0 2行目の先頭指定
Start スペース書き込みを1行分 16回繰り返し
Data write 40 表示:RS=1
Data write 20 0x20 space
Start
Data write 0
Data write 80 1行目の先頭指定
Start
Data write 0
Data write C0 表示ON,カーソルOFF
Start
Data write 0
Data write 80 1行目の先頭指定
Start
Data write 40 スペース書き込みを1行分 16回繰り返し
Data write 20
//
Re: ACM1602NI-FLW-FBW-M01(3) - 笛吹おじさん
2024/12/13 (Fri) 22:30:10
やどさん、今晩は。
>コマンドの、0x06部分では、表示エントリーモード設定になっていますが、0xC0にすればOKです。
此処を直した結果です。
***********************
162341-162438 I2C: Address/data: Address write: A0
162438-162452 I2C: Address/data: Write
162451-162465 I2C: Address/data: ACK
162468-162579 I2C: Address/data: Data write: 00
162577-162591 I2C: Address/data: ACK
162595-162704 I2C: Address/data: Data write: 0F
162702-162716 I2C: Address/data: ACK
162743-162743 I2C: Address/data: Start repeat
162759-162855 I2C: Address/data: Address write: A0
162855-162869 I2C: Address/data: Write
162868-162882 I2C: Address/data: ACK
162885-162996 I2C: Address/data: Data write: 00
162994-163008 I2C: Address/data: ACK
163011-163122 I2C: Address/data:{ Data write: C0}
163120-163134 I2C: Address/data: ACK
163166-163166 I2C: Address/data: Start repeat
163182-163279 I2C: Address/data: Address write: A0
163279-163293 I2C: Address/data: Write
163291-163305 I2C: Address/data: ACK
163308-163418 I2C: Address/data: Data write: 00
163418-163431 I2C: Address/data: ACK
163435-163544 I2C: Address/data: Data write: C0 <ーー2回出ている
163544-163557 I2C: Address/data: ACK
163585-163585 I2C: Address/data: Start repeat
163601-163698 I2C: Address/data: Address write: A0
163698-163712 I2C: Address/data: Write
163710-163724 I2C: Address/data: ACK
163727-163838 I2C: Address/data: Data write: 80
163836-163850 I2C: Address/data: ACK
163853-163964 I2C: Address/data: Data write: 80
163962-163976 I2C: Address/data: ACK
164004-164004 I2C: Address/data: Start repeat
164020-164117 I2C: Address/data: Address write: A0
164117-164131 I2C: Address/data: Write
164129-164143 I2C: Address/data: ACK
164145-164257 I2C: Address/data: Data write: 80
164255-164269 I2C: Address/data: ACK
164271-164381 I2C: Address/data: Data write: 80
164381-164394 I2C: Address/data: ACK
***********************************************
Data Write CO が出ていますが(2回出ていますね)
0x20は出ないです。
表示はおかしいですが、取り敢えずは動いている印象です。
ACM1602NI-FLW-FBW-M01 - 笛吹おじさん
2024/12/04 (Wed) 22:15:06
皆さん、今晩は。
毎日が日曜日ですので、相変わらず的外れな解析?をやっています。
void lcdc_init( void ) {
i2c_init();
delay_msec( 20 ); // 電源投入後 15ms 以上待つ
// LCDC_RS_L(); // LCD RS = 0 コマンド
lcdc_cmdwrite4( 0x33 );
delay_msec( 5 ); // 4.1ms 以上待つ
lcdc_cmdwrite4( 0x33 );
delay_usec( 100 );
lcdc_cmdwrite4( 0x33 );
delay_usec( 100 );
lcdc_cmdwrite4( 0x22 ); // 4ビットモード
delay_usec( 100 );
lcdc_cmdwrite8( 0x28 ); // 4ビット、2行表示、5x7ドット文字
lcdc_cmdwrite8( 0x0C ); // 表示 ON
lcdc_cmdwrite8( 0x06 ); // increment, no shift
// lcdc_write8( LCDC_NOCURSOR ); // カソールなし
lcdc_cls();
このlcdc_initをロジアナで見ればコマンダが見えるはずではないかとやってみたのですが、アドレスの4Eは見えるのですが次が38、また4E、そして38と期待はずれの結果でした。(33が出るはず、、、)
表示の出ないACM1602もアドレスのA0は見えますがその後にはプログラムに書いた数値ではありません。
見方が悪いのかも知れませんが。
画像は全体的なタイミングを見たものです。
ACM1602はSDAが途中で出なくなっていますが、これは表示が出ないので当然の結果です。
全体的なタイミングの印象は大きくは違っていません。
パオさんの投稿にある
・コマンド送信は、ID(0xA0)、0x00、コマンド
・データ送信は、ID(0XA0)、0X80、データ
プログラムを見ると(初心者ですので、、、)そのような動きをする様に記述されています。
#include "i2c_100khz.c" のアドレスをA0にしてやれば動きそうな気がしますが、そうはならない?
むずかしいですねーーー。
Re: ACM1602NI-FLW-FBW-M01 - 笛吹おじさん
2024/12/06 (Fri) 17:36:26
今日は。
相変わらずやっています。
Arduinoで表示がされていますので、i2CのSCL,SDAをロジアナで見ますと、
A00001 A00038 A0000F A00006 初期化の数値が見えます。
ADRS+CMD(00)+Dataの形をとっていますね。
一方、RFC-5の場合はADRSは4Eと出ることは確認したのですが続くデータは異なります。
プログラムの流れをたどってみました(迷走状態ですが)。
void lcd_init2(void)の初期化の最初のdataは0x01はlcdc_cmdwrite4(0x01)ですので同じところの65行の関数に引数(0x01)が与えられます。
ここでi2c_tx( )に引数が渡されますね。
次にi2c_100khz.cの99行目のi2c_tx()に行きます。
ここでi2C_adrsとtxdataに渡され次のi2c_write8()に渡されLCDに初期化データの最初の0x01が書き込まれることになるのでしょう(私の想像ですが)。
i2_adrsとtxdataの間に命令コマンド(0x00)を送る必要が在ると思うのですが?
err += i2c_write8( i2c_addrs );
err += 0x00; <----追加
err += i2c_write8( txdata );
上記の様な泥縄をやってもNGでした(汗)
引数が関数を渡っていくのですが具体的に数値を当てはめてハードの動きを考えるのは、、、わたしには難しいです。
色々細かいところも考える必要が在るとは思いますがおおざっぱにたどるとこんな動きかなと。
Re: ACM1602NI-FLW-FBW-M01 - やどさん
2024/12/06 (Fri) 21:57:30
笛吹おじさん こんばんは。
コマンドが同じだったら簡単かと思ったのですが、そうでは無かったですね。。。
ちょっと、RFC-5でI2Cのプロトコル(の表現でいいのかな?)を簡易ロジアナでじっくり見てみました → 画像添付
で、あっ!と思ったのが、
コマンドは同じでも、LCDモジュールのRS,RW,EN端子にI2CなIOエキスパンダを通して制御信号を繋いでいて、
笛吹おじさんのI2C-LCDとは、ハード的にもI2Cプロトコル的にも違いそう、、という事です。
でも、、
2024/12/02 (Mon) 13:47:08の投稿から、
ちゃんと、ACKが返ってきて、豆腐の表示がクリアされたので、I2Cアドレスとデータ4ビットの順番(配線?)は正しいはずです。
問題は、RS(レジスタセレクト)だと思います。
RS=0でコマンドレジスタ、RS=1のときはDDRAM(表示RAM)が選択されます。
現状、RSが0のままで、表示dataが書き込まれず、コマンドレジスタが誤書き込みされているのではないでしょうか?
ちなみに、WRビットですが、レジスタやDDRAMをリードすることは無いとおもうので、0固定で良さそうです。
あと、EN(データバリッドのイネーブル?)は、決まったタイミングだし、I2C-LCDの場合は、RFC-5のSTM32マイコン側で発行するひつようは無さそうです。
さらに、パオさん情報のように、
・コマンド送信は、ID(0xA0)、0x00、コマンド
・データ送信は、ID(0XA0)、0X80、データ ← 80のMSBがRSです
となるようにする必要があります。
となると、、、
LCDC16xn_i2c.c の
// データ1バイトをLCDに送る
static void lcdc_write8( int data ) { } の部分の合わせこみが必要そうです。
現状のlcdc_write8は、4ビットモードなので、データ8ビットを上下に分けて、
ID{0x4E}、{上位4ビット+BL,EN,RW,RS} ← コマンド書き込み時(BL=1, EN=1->0, RW=0, RS=0)
ID{0x4E}、{下位4ビット+BL,EN,RW,RS} ← コマンド書き込み時(BL=1, EN=1->0, RW=0, RS=0)
のように2回に分けて I2Cでシリアルに送っています。
ここを表示データ書き込み時には、
ID(0XA0)、0X80、データ にすれば、表示データが正しく書き込めそう。。
ん? コマンド送信の時、ID(0xA0)、0x00、コマンドに直さないとダメだったら、初期化できたのは何故か??となりますが、、汗;
//
Re: ACM1602NI-FLW-FBW-M01 - 笛吹おじさん
2024/12/06 (Fri) 22:47:36
やどさん、今晩は。
画像はarduinoにつないだ時の物です。
画像上は初期化:01、38、0f、06、delay5ms
画像中はA0,00,01
画像下はA0,00,38 です。
0f,06も同様な形式です。
wire.hをincludeしていますのでwire.hの中身を見ればある程度分かるかと思ったのですが、、、、。
私には無理ですね。
rfc-5の場合は(やどさんの画像)はRSに目を付ける、RS=0かRS=1かを見ている?と言う事になるのかと。
LCDのドット(16個の□)が消えたので初期化が出来たと早合点かも知れません。
RSに注目してプログラムを直せば(追加)すればうまく行くかもですね。
ロジアナの下の数字に直したタイミングはロジアナアプリのオプションですか?
Re: ACM1602NI-FLW-FBW-M01 - やどさん
2024/12/07 (Sat) 02:15:12
>ロジアナアプリのオプションですか?
そうです、PulseViewソフトでは、I2Cのアドレスやコマンド値、データ値をHexで表示してくれてとても便利です。
参考にしたサイトです↓
“ロジックアナライザを試すその2(I2C)”
https://qiita.com/infinite1oop/items/b18197f74864b908a556
“簡易ロジアナを作り、Raspberry PiのI2Cアクセスを見る”
https://zenn.dev/hnz1102/articles/d2680aa4d9321b
Arduinoのようにライブラリでプログラムするのが普通になったので、ハードとソフトの関係が良くわからなくて頭が混乱しますよね。しかもハード(レジスタ設定など)が複雑怪奇になってるので… 汗;
自分はハードを弄ってた世代なので、、ソフトは苦手ですが、、
SDR-3プログラムを弄って、修正もされている笛吹おじさんなら、絶対直せますよ~。(と自分が云うのも変?…)
で、夜中に部品箱さがしたら、秋月で買った? AE-AQM0802という8文字x2行のI2CなLCDモジュールが出てきました。
ST7032というコントローラみたいですが、I2Cでのコマンドやでーたの送り方は似ているので、これで表示できるか試してみたいと思っています。
OLEDなモジュールもスタンバっているのですが、、こっちはコマンドが全然ちがうので、、未着手です。汗;
多分ですが、、
I2Cハードに近い側のi2c.c, Arduinoのwire.hとかは、そのまま使えて、、
I2Cにデータやコマンドを送り出す手順? を決めている、LCDC16xn_i2c.c を直せば良いのではないかと思っています。
PCF8574 + sc1602の場合は、RS,RW,Eの信号もデータと同時にI2Cで送る必要があるので、データを4ビット幅にしなければならなかったですが、
I2C-LCDなら不要なので(RSのみコントロールバイトでおくれば、LCDモジュール側のマイコンが生成してくれて?)、
データ8ビット幅の設定でOKなはず。
そうならば、
lcdc_write8() は、RS=1で、
ID(0XA0)、0X80、表示データ を各8bitで送る
lcdc_cmdwrite8() は、RS=0で、
ID(0XA0)、0X00、コマンドデータ を各8bitで送る
に直せば良いのではないか?です。
//
Re: ACM1602NI-FLW-FBW-M01 - パオさん URL
2024/12/07 (Sat) 10:56:29
>笛吹おじさん
ソフトウエアはお手伝いできなくてすみません。
ACM1602NI-FLW-FBW-M01 は持っていないのですが、
https://techv.exblog.jp/33817326/
では
「データシートにはMAX100Kまでと書いてありますが、100Kだと誤作動を起こすようです。安全なところで50Kとしました。」
と
「コマンドやデータを送る前に、0x80や0x00を先に送らなければならない」
と書かれていました。
また、
https://zenn.dev/maedan/articles/84590afbb0fe8b
では初期化と文字表示のソースが公開されていました。ご参考まで。
>やどさん
AE-AQM0802 や同じドライバ IC を使った LCD の在庫があります。
表示成功をお祈りしています。(「他力本願」で申し訳ないです。)
Re: ACM1602NI-FLW-FBW-M01 - 笛吹おじさん
2024/12/07 (Sat) 12:48:18
パオさん、今日は。
>ソフトウエアはお手伝いできなくてすみません。
いやいや私がかってにやっていることですのでお気使い無用でございますよ。
また有益な情報のご提供有難うございます。
トンネルの出口はまだ見えませんが、何となく明るくなってきていますので、、、出ることができるかもです(笑い)
もう暫く藻掻いてみます。
Re: ACM1602NI-FLW-FBW-M01 - やどさん
2024/12/09 (Mon) 00:36:37
笛吹おじさん パオさん こんばんは。
秋月の8文字2行なI2C液晶(AE-AQM0802)で表示させてみました。
実は、何十回も修正してはI2C波形確かめての繰り返し。。汗);
アドレスが合わなかったり、アドレス正しくでているのにLCDモジュールからACKが返ってこなかったり、、アドレス送信後のコントールバイト以降が送信されないなど… うーーむ。。
結果、やっと表示出ました。。汗);
ACM1602NI液晶とST7032のI2Cモジュールでは、I2Cアドレスと初期化設定とRSのビット位置が違いますが、ほぼ同じ送り方で大丈夫だと思います。
以下、修正したファイル名と修正した部分をそのまま記載します。
インターフェースは8ビット幅にしました。Functionレジスタの初期設定は 8ビット幅で設定しています。
< i2c_250khz.c >
const int i2c_addrs = 0x7C; // ST7032 3E: 01111100 ST7032追加
//const int i2c_addrs = 0x4E; // PCF8574 A2..0=111 コメントアウト
< LCDC16xn_i2c.h >
#define I2C_LCD_RS 0x01 // P0
#define I2C_LCD_RW 0x02 // P1
#define I2C_LCD_E 0x04 // P2
#define I2C_LCD_BL 0x08 // P3
#define I2C_LCD_RS0 0x01 // C0,RS=00 for st7032 追加
#define I2C_LCD_RS1 0x40 // C0,RS=01 for st7032 追加
注:
コントロールバイトは、コマンドライト時は 0x00なのですが、
0にしてしまうと、txstrの文字列が無いと判定されて送信されなくなるので、故意に0x01にしました。
ST7032のRSビットはbit6なので、表示データライト時のコントロールバイトは0x40にしています。
//───────────────────────────────────
// データ1バイトをLCDに送る for st7032
//───────────────────────────────────
static void lcdc_write8( int data ) {
char txstr[3];
txstr[0] = I2C_LCD_RS1; // C0,RS=01
txstr[1] = (data);
txstr[2] = 0;
i2c_tx_str( txstr );
}
//───────────────────────────────────
// コマンド1バイトをLCDに送る for st7032
//───────────────────────────────────
static void lcdc_cmdwrite8( int data ) {
char txstr[3];
txstr[0] = I2C_LCD_RS0; // C0,RS=00
txstr[1] = (data);
txstr[2] = 0;
i2c_tx_str( txstr );
}
//───────────────────────────────────
// LCD初期化 for st7032
//───────────────────────────────────
void lcdc_init( void ) {
i2c_init();
delay_msec( 20 ); // 電源投入後 15ms 以上待つ
// LCDC_RS_L(); // LCD RS = 0 コマンド
lcdc_cmdwrite8( 0x38 );
delay_msec( 20 );
lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示
delay_msec( 20 ); // 4.1ms 以上待つ
lcdc_cmdwrite8( 0x39 ); // IS=1
delay_msec( 20 );
lcdc_cmdwrite8( 0x14 ); // Internal OSC
delay_msec( 20 );
lcdc_cmdwrite8( 0x71 ); // 3.3V=0x71, 5V=0x7A(コントラスト)
delay_msec( 20 );
lcdc_cmdwrite8( 0x56 ); // 3.3V=0x56, 5V=0x54 Bon
delay_msec( 20 );
lcdc_cmdwrite8( 0x6C ); // Follower-Cont.
delay_msec( 20 );
lcdc_cmdwrite8( 0x38 ); // 8ビット、2行表示 IS=0
delay_usec( 100 );
lcdc_cmdwrite8( 0x01 ); // 表示クリア
delay_msec( 20 );
lcdc_cmdwrite8( 0x0C ); // 表示 ON
delay_usec( 100 );
// lcdc_write8( LCDC_NOCURSOR ); // カソールなし
lcdc_cls(); // ディスプレークリア
}
注:なかなか表示が出なくて,ディレイ時間を多めに設定してました。ST7032だと20ms→2msでOKなはず.
i2c-sclクロックは250kHzでも問題なく動作します。
//
Re: ACM1602NI-FLW-FBW-M01 - 笛吹おじさん
2024/12/09 (Mon) 12:38:59
やどさん、今日は。
やりましたね!表示が出ていますね。いやいやすごいです。
やどさんの変更部分をコピペして部分的にわたしのLCDに合わせてみたのですが、コンパイルでエラーが出てしまいました。
再検討が必要です。
もう少し時間がかかりそうですね。
Re: ACM1602NI-FLW-FBW-M01 - パオさん URL
2024/12/09 (Mon) 20:10:36
>やどさん
日を越す時間まで頑張った成果、すごいです!
とうとう I2C LCD(ST7032)で表示が出来たのですね。
私もいくつかある同様の I2C LCD で試してみましたが、エラーが出ます。
ところで、間違っていたら申し訳ないのですが、変更箇所を確認させてください。
1 rfc-5_20220906/board/lcd/ 内の「i2c_250khz.c」に
const int i2c_addrs = 0x7C; // ST7032 3E: 01111100 ST7032追加
を追加
//const int i2c_addrs = 0x4E; // PCF8574 A2..0=111 コメントアウト
2 同じフォルダの「LCDC16xn_i2c.h 」に
#define I2C_LCD_RS0 0x01 // C0,RS=00 for st7032 追加
#define I2C_LCD_RS1 0x40 // C0,RS=01 for st7032 追加
を追加
3 「LCDC16xn_i2c.h 」に
// データ1バイトをLCDに送る for st7032
// コマンド1バイトをLCDに送る for st7032
// LCD初期化 for st7032
の3つを追加
ということですが、
追加するのは「lcdc16xn_i2c.c」ではないでしょうか?
もし、そうならば、すでに入っている
// データ1バイトをLCDに送る
などの部分はコメントアウトしなくても動きますか?
Re: ACM1602NI-FLW-FBW-M01 - やどさん
2024/12/09 (Mon) 22:18:13
パオさん、笛吹おじさん こんばんは。
>同じフォルダの「LCDC16xn_i2c.h 」に..
すみません、「lcdc16xn_i2c.c」です。
なんで".h”にしてしまったのか??寝ぼけてたかな、って思って lcdc16xn_i2c.cを見たら、頭のタイトル文字列をコピペしてました・・失敗 汗;;
そして、「lcdc16xn_i2c.c」の中の下記関数を置きかえます。
// データ1バイトをLCDに送る
static void lcdc_write8( int data ) { }
// コマンド1バイトをLCDに送る
static void lcdc_cmdwrite8( int data ) { }
// LCD初期化
void lcdc_init( void ) { }
上記修正で、コンパイルエラーはなくなると思います。
あと、
昨晩 良く把握できなくて書かなかったのですが、
もし、正しいI2Cアドレスを送っているのにACKが返ってこなくて表示しなかったら、下記も修正してみてください。
「i2c_250khz.c」内の関数
static void i2c_stop( void ) の最後の行で
I2C_SCL_L(); ← ストップ波形を生成した最後に、SCLをLowにしてますが、
//I2C_SCL_L(); ← コメントアウトしてPullUpのままにしてみてください。
AE-AQM0802はこの修正でACKが返ってきて表示OKになりました。
さらに:
さきほど、カウンタ周波数はちゃんと数字表示するかな?と思って、発振器をつないだのですが、、LCD一行目に肝心の周波数が表示しない!? ですぅぅ.. 汗);;
SW長押しでPGモードに入れた時の一行目の表示は全く問題ないのですが??
おかしいぃなぁ、、
文字表示の書き込みは、lcdc_write8( int data ) だけだのはずだと思ったのですが、、他にあるのかな…、、うーむ。。
もしかすると、"Hz""℃"など単位を入れた修正ソースを元に直したため?何か間違えてたかも?
//