PIC-DDS

Copyright(c) 1999 光永 法明
jm3wud <@ mark> ever.sanda.gr.jp
DDS は、基準発振、加算器、ROM、D/Aコンバータからなっています。 そのほかにヒューマンインターフェースあるいは、ほかの機器との インターフェースが必要になります。 DDSチップを使うと高速動作のものが簡単に実現できますが、 DDSチップを使わずPICのみで実装してみました。
全体図 基板全体図 PIC周辺拡大 基板裏面
回路図

当初は基準周波数を 100[kHz] を目指していましたが、意外と余裕がなく 40[kHz]となってしまいました。サイン波のサンプルポイントは一周期で2000 としました。 DDSで構造を簡単にし高速動作をさせようとすると基準周波数を2の指数に したくなるのですが、都合のいいクリスタルが必ずしも手に入らないという 問題があります。そこでまず PIC の動作周波数を最高の 20 MHz とし、 20M を素因数分解してそれぞれの数値を決めていきました。

プログラムサイズが 1024 words ほぼ一杯(残り10バイト前後)になって しまったので機能別に4種類選べるようにしました。

発振周波数周波数ステップ機能
1-10000[Hz]1[Hz]スイッチによる周波数アップダウン
1-10,000[Hz]1[Hz]外部同期(位相0度, 90度)
0.1-6553.5[Hz]0.1[Hz]スイッチによる周波数アップダウン
0.1-6553.5[Hz]0.1[Hz]外部同期(位相0度, 90度)
いずれも周波数設定を2つ持ち、それらを高速に切替えることが出来ます。 また 1200bps のシリアルポートから周波数の直接指定、 周波数の切替え、EEPROMへの周波数の記憶が出来ます。

波形はこんなふうになりました。周波数カウンタの数値の単位は 0.1[Hz] です。 波形ではわかりませんが、周波数カウンタの 値には 1[Hz] の違いがきちっと出ています。
256[Hz] 1024[Hz] 4096[Hz] 8192[Hz] 9999[Hz] 10000[Hz]

オシロのスイープ周期を遅くしていくと妙な波形が出てきます。 LPFなしのDDSならではでしょうか。
8192[Hz]-1 8192[Hz]-2 8192[Hz]-3 8192[Hz]-4 8192[Hz]-5 8192[Hz]-6


この PIC-DDS についての記事が トランジスタ技術 2002年 6月号 に掲載されました。ソースについては、そちらの ダウンロードサービス を御利用下さい。 また申し訳ないのですが、記事に訂正がありますの で、あわせてごらん下さい。


戻る (本を出しました: はじめてのPICアセンブラ入門| センサとデジカメで遊ぶ電子工作入門)