今回とりあげさせていただきますのは、マイクロチップ社製、12ビットのDAコンバータ MCP4725です。I2Cインタフェースで出力値を指定できるもの。加えてオンチップにEEPROMを搭載、出力値を記憶させ、電源投入と同時に所定の出力を得ることもできるデバイスです。
※「部品屋根性」投稿順Indexはこちら
最近の「売れ筋」マイコンにはほぼ漏れなくといって良いくらいADコンバータが搭載されています。しかし、DAコンバータについては、搭載しているマイコンもありますが、搭載が無いものの方が多いような気がします(個人の印象です。)ほぼすべてのマイコンがPWM回路を搭載しています。「アナログ的な」出力はPWMでもデキるので、真のアナログ出力まで搭載することもないということでしょうか。最近題材として良く使わせていただいている Raspberry Pi Pico(RP2040)も、BBC micro:bit(nRF51)も、ADコンバータは搭載していますが、DAの搭載は無いです。DAが欲しくなるのは、外部のアナログ回路をアナログ出力で制御する必要があるとき、ということでしょうかね。
MCP4725
さてDA搭載のないマイコンでアナログ出力が無いか、搭載されていても仕様的にダメな場合に使えるのが、外付けのDAコンバータICであります。今回のMCP4725もそんなチップです。I2Cバスインタフェースなので、マイコンに接続するのは簡単(後で取り付けてみますが。)
このMCP4725は小型表面実装パッケージのSOT-23なので、ブレッドボード上で実験するときにはチト取扱い難いです。そこでまたまた秋月電子殿から「DIP化」モジュールを購入させていただきました。URLは以下に。
MCP4725 EEPROM搭載12ビットD/Aコンバータモジュール
アイキャッチ画像にモジュールの外観を掲げました。ピンヘッダを半田づけすれば6ピンのDIPの足になります。モジュールにはI2Cバスのプルアップ抵抗とI2Cバスのアドレス設定用端子のプルダウン抵抗も搭載されていますが、半田ジャンパによるオプションです。購入時にはオープンです。今回は半田ジャンパは盛らず外付けできるように致しました。
LT1790
さて気になるのがMCP4725の電源に何を与えるかです。マイコンのデジタル電源をそのまま与えるのでは12ビットのDAが泣きそうです。せめて何かフィルタを介して「アナログ電源」とすべきでしょう。しかし、DAの参照電圧でもありなるべく精度の高い電圧を与えてあげたいと思いました。私は完全に失念しておりましたが、過去資料を調べていたら、実は良いものが手元にあることに気づきました。以下です。
お手軽ツールで今更学ぶアナログ(19) LT1790、マイクロパワーSOT-23低損失リファレンス
リニアテクノロジ(現アナログデバイセズ)の参照電圧生成用のデバイスLT1790です。同一のLT1790の名のもとに複数の品種があります。品種により2.5Vとか3.3Vとか特定の電圧を高精度で作ってくれる一品です。その中で上の投稿では、以下の電圧のデバイスを調べていました。
-
- 2.048V
- 4.096V
4.096Vを参照電源とすれば、12bitDAの1ビット=1mVとなります。なんと切が良い(もともとADやDAの参照電圧用のデバイスだと思います。)
但し注意が必要なのは、LT1790は参照電圧生成用なので電流の流しだしは5mAに制限されることです。MCP4725自体は低消費電力なので5mAで問題なさそうに思われましたが、DA出力から電流を流す場合には注意が必要であります。
LT1790-MCP4725回路
ということで、実験用の回路をブレッドボード上に組んでみました。おおもとの電源はノイズの乗らない静かなものをということで「1.5Vの単三電池3本」です。こんな感じ。
後でマイコンのI2C端子に接続して使ってみるつもりですが、別電源(電池)なので、マイコンの電源ノイズなどは気にせんでよいのではという期待です。
現物の様子はこちら。
出力電圧の確認
先ほどMCP4725にはEEPROMが搭載されていて、その設定内容に応じた電圧を出力することもできる、と書きました。工場出荷時には、EEPROMに2048という値が書き込み済であり、かつEEPROMの値をそのまま出力するモードに設定されていました。参照電圧 4.096V(LT1790の公称)を与えているので、EEPROM設定値が2048であれば、
2.048V
の出力が出ることが期待されます。ハンディDMMで実測した結果がこちら。
期待値よりも9mVくらい低い値が読めてます。しかし、測定しているハンディDMMの測定精度(0.8%+3dgts)からすると、測定誤差の範囲内です。他にも、MCP4725の誤差、LT1790の誤差なども含まれる筈ですが、ま、いいか、ということで。
次はマイコンに接続。しかしどんな外部回路に接続するか?