正弦波発生器(PIC18F14K50)
<カテゴリー:PICマイコン>
CQ誌のPWM変調AM送信機の記事に魅せられて、微力ながら、このアナログの塊のオールソリッドステートの送信機を作りたくなりました。 WEB上の情報から、この送信機の構成は理解できましたので、部品集めを進める傍らで、AM変調用の低周波発振器の必要性を認識しました。 実は、45年前に購入した20Hzから200KHzまでカバーするKENWOOD製の低周波発振器を6年前に完動品のまま粗大ごみに出してしまった事を悔やんでいます。
CWのサイドトーン用にウィーンブリッジ式の正弦波発振器の製作例はこのブログでも紹介していますが、せっかくPICマイコンを曲がりなりにもいじれるようになりましたので、マイコンからDA変換を利用した正弦波発生器ができないか検討する事にしました。 WEBで検索すると、PICマイコンで正弦波を発生させる方法が沢山見つかりました。 その中で、マイコンのシステムクロックをフリーランの外部クロックで駆動し、任意の低周波周波数を得る方法と、固定クロックでADの出力周期を変えながら複数のスポット周波数として発生させるアイデアがあるようですが、その中で、比較的ひずみ率が良好で、簡単なCRフィルターで構成出来る8bitのラダー抵抗式DAコンバーターが良さそうです。
AM送信機で必要な周波数は1KHz、及び300Hzから3KHzの変調周波数特性と、これより広い範囲でどれだけ減衰しているかをチェックできる周波数帯となる100Hzから6KHzくらいをスポットでカバーできる周波数があれば良く、周波数も大体でOKですが、ひずみ率は1%以下とし、全周波数帯域に渡り出力レベルは+/-0.5dBくらいに抑えたいという条件があります。
マイコンは、使い道が無く、ジャンク箱に転がっていたPIC18F14K50というチップを拾い上げ、これにアセンブラでソフトを仕込む事にしました。 アセンブラによるソフトの開発は30年以上前にMC68000で少しかじっただけでしたが、データシートやWEBでの情報を頼りに再挑戦する事にしました。
まずは、ちゃんと正弦波が発生できるかどうかですが、約1週間かかり、なんとかそれらしき信号が得られました。
左は最低周波数、1サイクルを256分割した40Hzの波形。右は最高周波数、1サイクルを64分割した12.5KHzの波形です。いずれもまだLPFは入っていないDAC出力直後の波形です。
波形の様子から、簡単なCRによるLPFでクロックによる高調波は取り除く事ができそうです。OP-AMPによりカットオフ周波数約30KHzのLPFを作り、DACとこのLPFが持っている周波数特性をもう1段のOP-AMPで補正し、40Hzから12.5KHzまでほぼフラットな正弦波発生器ができました。
左から40Hz,1KHz,12.5KHzのLPF後の波形で、周波数特性の補正を行い、振幅を一定にしたものです。ひずみ率計がありませんので、はっきりした数値は判りませんが、経験的にいずれもひずみ率は1%以下になっているようです。
上がPICによるDAコンバーターとLPFのOP-AMPを実装した基板です。 基板裏側の左側の空き地は後日、この正弦波発生器をコントロールするマイコンを実装するスペースです。
PICのプログラムは周波数を初期設定した後、無限ループに入って、正弦波を出力し続けますので、周波数を変更したい場合、周波数設定用のSW1からSW5をセットした後、RESETスイッチSW9を押すことで実現します。 これをロータリーSWかロータリーエンコーダーの操作のみで実現する為に、周波数表示が可能な簡単なマイコンを実装する予定にしていますが、今回の目的が、AM送信機を作る事なので、コントロールマイコンやケース入れは後回しにします。
ソースコード sin_wave_osc.ASMをダウンロード
SW1-SW4に対応した周期カウント値は適当な値ですので、周波数カウンターを使い、トリミング必要です。