Arduinoで作るパルスジェネレーターを「居酒屋ガレージ日記」バージョンに改造
◆まえがき
「居酒屋ガレージ日記」さんがArduinoで動かすパルジェネの新しいソフトを公開されていて、その性能が凄いのでうちのパルジェネも改造してそのソフトを入れることにしました。
該当記事はこちら→ パルスジェネレータを作ってみた:箱に入れた
・改造後の外観
◆過去のバージョン
このパルジェネは過去に以下のような順で改版しています。なお、パルスジェネレーターのカテゴリをたどっていただくと全貌が判りますが、主なものは下記です。
1)最初のバージョン
Arduinoを使ったパルスジェネレーターの製作、(ソフト解説編)(2016/03/13)
ソフトで割込みをキャッチボールさせてパルスを作っているため、ジッタが大きいです。
ロータリーエンコーダーを廻すだけ、つまりレンジ切り替え無しで広い周波数範囲をカバーしようとしました(実はHP3314Aというファンクションジェネレーターの真似です)。
実際には出力可能な波形(デューティー)の制限から、ツマミを廻すだけでは大幅なレンジ変更は出来ない物になっていました。
2) vabenecosiさんバージョン
Arduinoで作るパルスジェネレーターの改良(ソフト入れ替え) (2018/02/14)
ハードウエアタイマーカウンタでタイミングを決めているのでパルスの品質(ジッタ)大幅に良くなっています。最大周波数500kHz.
3) 居酒屋ガレージ日記さんバージョン
今回のバージョンです。クロック周波数切替と、カーソル移動で設定する方式になっています。デューティ一定モードがあるので、ツマミを廻すだけで広い周波数範囲の出力が可能です。最大周波数8MHz
◆内容説明
まえがきに記載したURLと、その記事内のリンクを参照ください。
◆回路図
公開されている回路図を私のパルジェネの回路に合わせて書き直したものが下図です。(クリックで別窓に拡大)
【9/8追記】動作の安定化のため初版の回路にR10,R11を追加しました。理由はこの記事のコメント欄参照ください。初版の回路図はこちら。
液晶などの接続ピンの変更とタクトスイッチの追加が変更内容です。オリジナルではロータリーエンコーダーのピンとGNGの間に1000pFが入っていますが、無くても支障無かったので省略しました。(元々入れてなかった)
◆基板
・部品面
緑矢印部でコネクタを1ピン増設しています。
・配線面
緑色の線が今回修正を行った箇所です。
基板以外は既存のままですが、操作パネルはタクトスイッチが一つ増えたので簡単な改造では済まなくなり、既存のケースの上に薄いアルミ板を貼り付けることで作り直しました。文字もパワポで紙に印刷した物を貼り、表面は透明テープで保護しています。
◆ソフト
前掲の「居酒屋ガレージ日記」さんの記事で公開されている物をそのまま使います。現時点の最新版の p_gen16c.inoを使いました
このコードはプロが作られただけあって、ものすごく勉強になります(マクロの使い方、構造化変数、PROGMEM、ポートの初期化、等々)
◆動いている様子
・8MHzを出力して周波数カウンタで確認
8MHz設定で出力は8.000015MHzでした。なお、TC1でぴったり合わせ込むことが出来ます。ちなみにTC1は最初のバージョンを作った時に合わせたので、数年で15Hz(1.9ppm)の経時変化があったことになります。
これ以外の周波数やパルス幅の精度も調べましたが、いずれもクロック周波数誤差の範囲で時間精度の高いパルスが出ていました。
・ツイッターの動画
この動画が判り易いです
「居酒屋ガレージ日記」さんのパルジェネを作ってみた。中身はArduinoで動いていてMax8MHzまで出力可能で使い易いです。https://t.co/KiiGsDytaS
私の製作記事は後日ブログに掲載予定。 pic.twitter.com/PbZWxbsq4z
— ラジオペンチ (@radiopench1) September 5, 2022
◆まとめ
すばらしい性能のソフトを開発してくださった「居酒屋ガレージ日記」さんには感謝しかありません。愛用させていただきます。