ArduinoとMCP4922(DAC)で正弦波発生の簡易実験

任意波形発生器が欲しくなったので、ArduinoとDACで正弦波発生の簡易実験を行いました。

マイコンとDACを使って波形発生器を作るにあたり何に気をつければ良いのかと、
Arduinoでどこまでできるのかを確認することが主な目的です。

用意したもの

・Arduino UNO
・MCP4922(DAC)
・NJM4558D(手元にあったオペアンプ)
・MAU109(オペアンプ用両電源±15V)
・その他(抵抗やらキャパシタなど)

スケッチ

ArduinoとDAC接続部分およびスケッチはすべて下記サイトを参考にしています。
ありがとうございます。
参考サイト:http://www.geocities.jp/zattouka/GarageHouse/micon/circuit/D_A.htm

DACから正弦波を出力させてオペアンプ(反転増幅器)で増幅する回路を作ってます。

正弦波発生のスケッチが以下です。

DACの分解能が12bitなので、4096フルに使うようにしてます。

マイナスの電圧は出力できないので、バイアス+振幅で4096としてます(Bias=2040となっているのはBias=2048にするとクリッピングしたためです)。

バイアスは電解コンデンサを直列に挿入してとってます。

出力結果

出力波形(負荷はオシロスコープのみ)は以下のようになりました。

黄色:DAC出力 青:オペアンプ出力(DAC出力が2倍となるようにボリュームを調整)
wave

結果見て割と驚愕したのが、数Hzにしかなっていないことです(Arduinoのクロックとか考えれば当たり前なのかもしれないけど、気にしてませんでした)。

簡易実験なのでこのまま進めますが、高周波波形を作りたければArduinoだと無理がありますね。

周波数高くするために、時間軸を1024->32分割にした波形結果は以下の通りです。
wave2

これでも、ローパスフィルタかければきれいになるとは思います。

正弦波発生部分+DAC出力まで(スケッチのloop部分)がどれくらい時間がかかるかは波形の直線部分を見ればわかるので見てみました。
wave3

これみると大体200μsかかってます。

そりゃ低周波しか出せませんよ。

次は可変周波数やら可変振幅やらを検討するための実験をしてみたいと思います。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です