最終更新時間:2007年11月22日 19時25分24秒
[公開:any]
[電子工作/AVR]
[電子工作/PIC]
[電子工作/一般]
[AVR,PIC,PIC24F,MAX038,ファンクションジェネレーター,周波数カウンタ,74HCU04,ATmega168,TD62003,測定器]
働き出してからは、仕事先が秋葉原に近くになったのですが、電子工作への興味が薄れた時期でもあって、あんまり購入はしていませんでした。その中で昔作ったけど現在行方不明(引越しのときに捨てたかも??)となっている「MAX038(MAXIM社)使用広帯域精密波形オシレータキット」を、再度作成ということで購入してみました。
パッケージ開けてみると、超高速オペアンプがインテルシル社のHFA1100からナショナルセミコンダクタ社のLM7171に変更になっています。HFA1100は、帯域幅が800MHzもあるスゲェー高性能オペアンプだったのですが、LM7171は200MHzの帯域しかありません。なんとなく残念ですが、MAX038は20MHzまでなので、これでも十分でしょう。(付属のペラガミマニュアルは、HFA1100のデータシートのままでした。)
で、いきなり完成です。部品少ないので30分程度しか楽しめません。
周波数レンジを決めるコンデンサはつけていません。マニュアルの注意書きには、基板に直接実装するように書いてありますが、ロータリースイッチで数種類の切り替えにする予定です。
電源も、±5Vが必要なので動作確認もできてません。
スイッチング電源と負電圧コンバータでカッコよく作りたいんですが、手持ち部品の都合とノイズ対策が大変なので、昔ながらのシリーズレギュレート方式です。
とりあえず波形を見てみたいので、基板に発信用コンデンサをつったててオシロスコープで観察します。
正弦波です。周波数は230KHz程度ですが、あんまりきれいな波形ではありません。チョット歪んで見えます。でも、50KHz以下だと見た目はきれいな波形でした。
方形波です。(見りゃわかるわな)
三角波です。
動作は問題ないようです。後は、どう完成させるかですな。
とりあえず、5段階程度の周波数レンジ切り替えと、発振周波数表示のためのカウンタをAVRかPICのワンチップマイコンで作って内蔵させようかと考えています。
ワンチップマイコンには、AVRかPICか迷います。フリーの開発環境に優位性があったAVRですが、先日、PIC24を調達したことにより、PICもフリーの開発環境が構築できます。
とりあえず、周波数カウンタ機能を内蔵したLCメーターの製作で使用したAVRを使うことにして開発を進めます。
時計用クリスタル発振器の32.768KHzを入力してみました。正確にカウントされているようです。比較のために奥底から取り出した市販周波数カウンタと比較しても問題ないようです。(ちなみに市販周波数カウンタは、5年前に校正期限が切れています。^^;)
で、せっかく28ピンもあるAVRを使うのなら、周波数のレンジ切り替えもマイコンで切り替えてやろうと、リレーを使った発信用コンデンサ切り替え回路も作成しました。
キットに付属のコンデンサは、セラミック、積層セラミック、電解コンデンサとなっていましたが、一応、フイルムタイプをメインにしたものに変更しました。ただし、最高周波数のレンジをカバーする20pFは、通常のセラミックコンデンサです。また、1μFは、積層メタライズドフィルム??となっています。
が、・・・・しかし、・・・2.8MHz以上がカウントできません。
プログラム的には、8ビットx16ビットで16MHz程度までカウントできるはずですが、なぜか動作しません。
しかたがないので、内蔵プリスケーラで分周しようとデータシート読んでみると、PICのプリスケーラのようには使用できないようです。弱ったな。
外部にプリスケーラをつけるしかないのかな。
LCメーターの製作では、PICからAVRへと途中でチップを変更しましたが、今回は、AVRからPICへ変更します。(「節操がない」とのツッコミは遠慮しときます。^^;)
PIC24をつかった周波数カウンタは、ありがたいことに、この世界で有名な電子工作の実験室に製作例としてまとめられたものがあります。
スクラッチで作る技量も時間もありませんので、ソースを参考にさせていただきながら、一部LCD回りは、AVRでLCD表示の参考にした趣味関係のメモ帳のソースをPIC用に一部変更して利用させて頂きました。
ブレットボードに組み込んで、PIC自身の外部クロック源12.8MHzを表示させてみると問題無く表示します。
ちなみに、ソースプログラムは、よそ様のを拝借したので簡単に周波数カウンタを実現できますが、PIC24をつかう上で面倒なのは、3V程度の別電源が必要なのと、PIC内部動作のための10μFの低ESRコンデンサを外付けにしなければならないことです。
チップコンデンサの10μFは、秋月電子で購入してあったので、リード線を半田付けしてブレットボードで使用できるようにしました。
10MHzや12.8MHzのクリスタル発振器の発振周波数を測定してみました。
市販周波数カウンタと比較しても、1,2Hzの誤差しかありません。当然ながら、カウンタとしての精度は外部クロックのクリスタル発振器の精度に左右されますが、今回の用途では、十分過ぎる精度です。
さっそく、広帯域精密波形オシレータキットと接続してみました。高い周波数では、MAX038の出力レベルが低下し、カウントミスがでるようなのでCMOSインバータの74HCU04を入力アンプとして利用します。
周波数カウンタは問題ないのですが、オシレータキットの発振周波数は、コンデンサを外付け切替え式にしたためか、かなり変動するようです。
水魚堂さんの回路図エディタBSch3Vを使って回路図を作ってみました。
リレードライブのためにトランジスタアレイ(TD62003APG)を使用します。この部分は、3-8デコーダなどのロジックを入れるとPICのIOピンにも余裕ができるのですが、手持ちがないのでこういう接続になっています。
オシレータキットのオペアンプ出力は、BNC出力とするため、周波数カウンタへの入力は、MAX038の出力そのままを接続します。そのため、高い周波数での振幅が足りずに周波数カウンタが誤カウントするのを防ぐためにアンプを1段入れることにします。
回路図右上に書いてあるFETを使ったアンプとCMOSインバータICの74HCU04を使ったアンプの比較を行いました。
20MHz程度までなら、どちらでも差が無いため、部品点数の減らせる74HCU04を使用したアンプとすることにしました。
ユニバーサル基板を使って製作します。
完成したら早速、オシレータキットと接続して機能試験を行います。
リレーを切り替えるとたまにPICがリセットしたり、スイッチ入力の誤検出が発生するようです。リレーが切れるときのサージが影響しているようです。回路図にはありませんが、すべてのリレーにサージ吸収用のダイオードを追加したら正常になりました。
あとは、一番手間のかかるケースの加工が残っています。
いよいよ一番面倒なケースの加工を行い、組み込みを行います。
ケースは、タカチのYM-250を使用します。デザイン的には、シンプルでつや消しのブラックパネルがかっこよくて割と気に入っているのですが、正面パネルと背面パネルが底板と一体成型なので、パネル加工に失敗すると痛い目にあいます。(金銭的にね)
過去、このシリーズで数回、失敗をやらかしている実績もあります。リカバリー出来ない失敗の場合は、黒いアクリル板をパネルサイズに切り出して、そのパネルを取り付けるなどの方法もありますが、当然、出来上がりはよくありません。
ということで、まずは実体配置からイメージを作ります。
で、いきなり完成です。メンドーな、金属加工は、一気にかたをつけました。
PICライターをつないで、プログラムを手直ししています。リレー回路への接続や、スイッチへの接続間違いは、配線を直すよりもソフトウェアで対応したほうが簡単です。(手抜き)
正面パネルは、左から
と並んでいます。
動作的にも、安定していて十分実用になりそうです。
ただ、発信用コンデンサを切替式にしたため、浮遊容量の影響で最高周波数が11MHzに制限されます。リレーをすべてOFFでコンデンサの接続をオープンとするモードも作りましたが、それでも16MHzまでの発振となっています。あと、高い周波数では、やはり周波数変動があります。
当然かもしれませんが、出力レベルを小さく絞ったときには、ノイズレベルがある程度高いために実用的ではありません。実際的にどの程度使えるかは、使用目的によるということですね。
今回の失敗
電源基板、オシレータ基板、リレー基板、コントロール基板と4枚に分けたため、ケース内の基板固定ポストが16個も必要です。基板間の接続取り回しもメンドーなので、オシレータ基板はショウガナイですが、その他は、まとめたほうがよかった。
あと、スイッチまでLED付きのものにしてしまったことやLCDのバックライトを明るめにしたために、+5Vの3端子レギュレータの発熱がキビシーものになっています。
しばらく動作させると、3端子レギュレータは触れなくなるほど発熱します。小さなヒートシンクをつけていたのですが、最後は、5mm厚のアルミブロックに変更しました。