SSブログ

Arduino で Softeare DDS を動かしてみました [Arduino]

 SSB の測定の為に、低歪率の Two Tone Generator を用意しようと考えています。

まず、FCZ の1石 CR 発振回路のものは歪率が酷く、PC ソフトの WaveGene はそれなりに良いのですが、PC が必須となってしまいます。RF の回り込みとかで誤動作が心配です。
で、Arduino で DDS を実現しようかと思い、ググったらそのものずばりの物がこちらにありました。
これを動かしてみたところ、PWM 出力が出ているので、出力に簡単な LC Low Pass Filter を付けて波形を見てみました。なかなか良い結果です。
〔実験風景〕
DSC06734.JPG

〔LC Low Pass Filter〕
3.jpg
手持ちの部品で有り合わせで作ったものです。

〔測定結果〕
2.jpg
1.jpg
1000Hz でプログラムしているのでちゃんと1サイクル1mSec で出ています。
歪率もいきなり 0.13% が出ています。
元記事では -50dB と出ていました。換算するとだいたい同じような値です。
ちゃんとした Low Pass Filter を付けて、ケースに組み込んでみようと思います。
「あちゃんでいいの」を2個用意し、それぞれ 1000Hz、1700Hz でプログラムしてケースに入れてみるつもりです。

スケッチの動作はかなり ATmega328 のタイマー機能を理解していないとその動作が分かりにくいです。理解できたらメモ書きを残してみようと思います。
概要は Timer2 を使い、サイン波の値でオン・タイムを変える PWM 出力を作っており、出力する周波数で Software DDS のモジュローを計算して出力しています。Timer2 で割り込みもかけているのですが、割り込みと PWM 出力設定の辺りが今一つ、理解できていません。(´;ω;`)
nice!(2)  コメント(0) 
共通テーマ:趣味・カルチャー