HOME 

 )AVR用ファーム(DAC)

 

 DAC用のファームです。 オリジナルのMiniDDSは以下のサイトをごらんください。

http://www.myplace.nu/avr/minidds/index.htm

今回作成したものはDAC使用なのでDACのLATCHのため、LOOPを12サイクルへ改造しています。

使用部品

   水晶 : 18.432MHz (10MHz等も可、水晶周波数は変更しても良いです)

  AVR : ATiny2313-20PU

  DAC : AD557JN (ラッチ機能使用)

    シリアル : MAX202CPE

  実験用LPF : C=1500pF 、 R=10K (カットオフ10KHz)

  R2Rラダー抵抗を使ったオリジナル回路ではDAC出力間隔の1LOOPは9Cycleですが、DACをラッチするために、12Cycleになります。そのため波形の解像度が若干落ちます。またDACの問題点はノイズが多いことです。2007.4.18追記DACの問題点は自らのノイズとマイコンからのノイズを受けやすいことです。このため、マイコンとDACのGNDを分ける等のデジ/アナ分離が重要になってきます。今回はデジ/アナ分離対策として、マイコンに繋がっているGNDをデジタルGNDとし、DACのGNDおよび出力波形のGNDをアナログGNDとして、電源の大元のコンデンサ根元から分岐させて繋いでいます。いわゆるアナ/デジ回路は分離して、GNDは最後の一点で交わるというものです。最初はデジ/アナ混在GNDでノイズ大でしたが、分離することでノイズが少なくなりました。

 R2Rラダー抵抗によるminiDDSの作成記事はkumanさんのサイトでどうぞ。ラダー抵抗ではノイズが少ないです。

改良点

     DAC出力をLATCHするための信号を2313のPD6に出力として追加

 

  原理

 360度の円を思い浮かべてください。その円を256分割した角度に波形テーブルの値が存在します。

 ある周波数を設定する場合、円を進むΔθ(図中:黒い矢印)を1LOOP毎に加算していきます。このΔθは256分割よりも小さい角度で出力周波数により計算されます。256分割の各値n+xを超えていれば、新しい波形の値がDA出力されます。

step(図中:青刻み)はAVRの水晶周波数と1LOOPのサイクル数により計算されます。

 波形の1周期分をカウンターの24ビットに割り振っているので、最小カウント1がstepになると思われます。

 DACはLATCHがないとデータが変化途中でも出力してしまいます。これは、ビットエラーとなって現れてしまうので、データが確定してから出力するようにLATCHをします。

 プログラム

 

AVR Studio4 Ver4.12 Service Pack4用プロジェクト ダウンロード(zipファイル) Ver1.0 2007.4.18

 

inserted by FC2 system