秋月キットを使ったLCD周波数表示付きFG完成
最後の最後でつまづく(11/15/08)
実装のため、ブレッドボードから部品を取り出そうとして、大事なテストをするのを忘れていたのに気づいた。10Mhz以上測るため、4分周した直接計時入力と、レシプロカル方式で測る入力を分離して測るテストである。
これまでは、同じT1(PD5)ピンで動かしている。別のピンで受けても関係ないはずだが、念のためということもある。プリスケーラーとMCUのピンの間に100Ωの抵抗を入れて、パルスがなまり(オシロで確認)、悩まされていた測定値のふらつきが劇的に改善された例もある。ハードのテストは環境の自由なブレッドボードでしておくに限る。
確認テストくらいのつもりで気楽に、ピンの設定をソフトで換え、ジャンパーコードを1本追加して動かしてみた。ややや、動かない。レシプロカル方式は計測を入力の立ち上がりパルスに同期させるため、ピンにパルスが来るまでいつまでもループして待つ方式である。オシロで入力波形をみてみる。ちゃんと波形が入っている。しかし、波形が小さい。そうか。2つの入力に同時に入れたために、出力が下がってパルスにならなくなってしまったのか。
これは大問題である。MCUに入れる前に、増幅するか、デジタル化する必要が出てきた。思わぬところに落とし穴があった。しかし、これだけのためにインバーターICを使うのも芸がない。ましてや増幅するオペアンプは高周波用が必要だ。で、思いついたのが例のトランジスターによるスイッチングである。レシプロカル方式はそもそも500Khzまでしか測らない。
早速、トランジスタを持ち出した。この前のアナログと違って飽和領域を使うデジタルなので簡単である。動かしてみた。オシロで出力波形を見る。ははは、アナログアンプになっている。抵抗を替え、めでたくパルス波形になった。レシプロカル方式の入力に入れる。うむ、やっと周波数カウンターが動き始めた。これで実装だと、念のため高い周波数に切り替えてみた。何と、今度は直接計測が動いていない。オシロを見るとパルスがでていない。
やれやれ、トランジスタを飽和領域まで動かそうとすると電流が流れて、FGの出力が下がってしまい、バイナリカウンターそのものが動かなくなるのだ。試行錯誤しているうち、オシロの画面をみていて、ふっと気がついた。波形出力が下がっているのではないのだ。中位電圧が下がっているだけなのである。
あわてて中位電圧を作っている分圧抵抗の抵抗値を確認する。ありゃりゃ100KΩだ。これはいくらなんでも高すぎる。マイクロアンペアのオーダーで中間が崩れるはずだ。これを5Kにする。おー、バイナリーカウンターが動き始めた。待てよ。もしかしたらトランジスタも必要ないかもしれない。
そのとおりだった。トランジスタでパルス波形にしなくても、普通の正弦波で何事もなくレシプロカル計測は動き始めた。しかし、ノイズが多く、周波数表示にばらつきが多い。色々やっているうちに、このあいだ入れた100Ωの抵抗をとるとぱったりノイズがなくなることを発見した。抵抗を入れるとまたノイズ。雑音発生器になっている。結局、最終的に安定した回路は、トランジスタもなし、抵抗もなしの一番単純な回路であった。替えたところは分圧抵抗値だけ。いやあ、アナログは難しい。
あとは順調。遂にケースに入れた実装版が動く(11/16/09)
周波数カウンターを作り始めてちょうど3週間、秋月のFGキットを使ったLCD表示付きのファンクションジェネレーターの実装版がやっと完成した。いやいや今回も楽しませてもらった。沢山の勉強をして、また経験値が上がったと思う。写真をとり、散らかった机の上を片付ける。プロジェクトの完了したときの気分はいつも同じだ。心は充実感で一杯なのだけど、ちょっと片隅に、何となくさびしい気分がよぎるのは私だけだろうか。
ケースのレイアウトは、保守性を高めるため、構造に工夫がしてある。すべてのパーツをケースの下半分に固定し、しかも容易に分解できるよう、コネクターを4つも使って、LCD、VR、電源スイッチ、ロータリースイッチの間をつないでいる。上蓋は穴が開いているだけ(まだ開けていないが)で、部品は全くつけない。このあたりが、アマチュアと言えども、ちょっとこだわっているところである。
実装版の配線は、久しぶりの完全試合で電源を入れるとすぐ動いた。FGからの出力をプリスケーラに接続する最後の半田付けを忘れていたから、完全試合でなくノーヒットノーランくらいかもしれないが、このところ凡ミスが続いていたので、最初電源を入れてLCDが表示されたときは、正直、本当にほっとした。MCUはちゃんと動いている。
しかし、FGの方は動いていない。いじったところは、秋月FGの外部抵抗の設定ピンだけである。説明書を読み返し正しい設定にしたら元通り動き始め、ちゃんと周波数が表示された。万歳。これまでドライバーでちまちま変えていた周波数がつまみひとつで自由に変えられる。素晴らしい。
波形選択はどうだ。おや、方形波が出ないぞ。これはソフトの疑いが強い。LEDが点くようにしただけで、正確な仕様を確認していない。説明書を読み返す。やっぱりそうだった。正論理と負論理を間違えている。始めつけないつもりであとで念のためにつけたISPピンが早速役に立つ。コンパイルし直したファームをISPを通して流し込む。これは便利だ。今度のレイアウトではLCDがMCUチップの上に乗っているので、もしこれをいちいちチップを外してライターなどに書き込む石だったら、とんでもない手間がかかっているところだ。
ファームをとりかえて無事、方形波も出るようになった。LCDのコントラストが少し強すぎ見づらいが、これで周波数表示付き秋月FGキットの完成である。MCUのTiny2313のフラッシュサイズはプッシュスイッチで波形を選択できるロジックを入れて、ぎりぎりの2016バイト。分解能は、400khz以上が10hzである。それ以下はレシプロカル方式で測るため1hz以下(1khz以下は小数点2位まで)、レシプロカルは500khzまで動くがたまに不正確になることがあるため、安全のため400khzを境界にした。外部抵抗にしたためか最高周波数は24Mhzまで下がったが特に問題ない。そこそこのスペックに納まったと自己満足する。
次の日、最後の工作、上蓋の穴明けに着手する。一番の難物は、LCDのスクリーンの窓明けである。このあいだのプラスチック工作ではマイクだけでなく、スクリーンも少し大きく開けすぎている。今度は慎重にノギスで何度も測って位置決めし、例のピラニア糸鋸で開ける。プラスチックほど楽ではないが、この糸鋸はアルミの1ミリの板でも快調に切れる。ハンドニプラーを買おうかと思ったが、これで今のところ十分なようだ。思ったより簡単に切り取ることができた。あとはやすりで整形する。
これが済むとあとは、リーマでBNC出力と、DCアダプターの丸穴を広げるだけである。位置決めを丁寧にやったおかげで、誤差が少なく穴あけが楽だ。いやいや会心の出来だ。工作技術も大分腕が上がってきた。勢いに乗って、LCDのコントラストが強すぎる修正までやってしまう。始め半固定抵抗でコントラストの最適位置を測って、1Kと10Kの固定抵抗で分圧する。このあいだのLCDは電池で電圧が4.5Vだったので必要なかったが、5Vだと0.5Vくらいかけてやるとちょうど良いコントラストとなった。
秋月のFGキットを買ってきてから2ヶ月、カウンターの開発を始めてから3週間、遂に、ケースに入った周波数表示付のファンクションジェネレーターの完成である。ソースコードと回路図を公開することにする。ただ、ソースコードはともかく回路図は余り自信がない。少なくとも、こちらでは無事に動いているが何か基本的な誤りがあるかもしれない。自己責任でお使いください。
ソースコードはこちらから。前に公開したソースとファイル名が同じなので注意してください。回路図のハードで動く実装版です。
注記:2011/4/29 eNastyさんの指摘でソースコードを直してあります。PD4とPD5が逆さまに
なっていました。回路図はこのとおりで間違っていません(PD4は外部クロックT0で固定)
| 固定リンク
「電子工作」カテゴリの記事
- 生存証明2(2022.10.19)
- 生存証明(2022.01.23)
- パソコン連動テーブルタップの修理を諦めて自作(2021.02.16)
- 半年ぶりのブログ更新に漕ぎつけた(2019.09.19)
- 研究所活動は停滞したままでCCDカメラ顕微鏡導入など(2019.02.08)
コメント