Arduino Dueのアナログ出力を入力範囲に合わせて調整
部品と材料
| Arduino Due | 1 | |
| コンデンサ C1, C2: 100nF(セラミックまたはポリエステル) | 各1 | |
| 抵抗 R1: 100kΩ ±1% ¼W | 2 | |
| 抵抗 R2: 150kΩ ±1% ¼W | 2 | |
| 抵抗 R3: 1.3kΩ ±1% ¼W | 1 | |
| 抵抗 R4: 6.8kΩ ±1% ¼W | 1 | |
| トリマー抵抗 Rp: 200Ω(マルチターン推奨) | 1 | |
| オペアンプ U1: LM358(本文参照) | 1 |
このプロジェクトについて
Arduino Dueのアナログ出力範囲を、アナログ入力範囲(0~Vref)と一致させることを目的としています。
Arduino DueのDAC(デジタル-アナログ変換)出力電圧は、0V~Vrefではなく、基準電圧の1/6~5/6の範囲、すなわちVref=3.3Vの場合0.55V~2.75Vです。これはAtmelのデータシートでも確認されています(参考文献1)。
DACの出力電圧範囲はわずか 2.75 - 0.55 = 2.2V で、分解能は 2.2V / 4095 = 約0.5372mV です。
この制限を克服するため、差動増幅回路(オペアンプ使用)で0.55Vのオフセットを除去し、出力信号を増幅して所望の範囲に合わせます。図1に回路図を示します。
回路の動作原理
- 基準電圧Vp = 0.55Vの生成: R3、R4、Rpの分圧回路で生成。トリマーRpで調整し、DACに0を書き込んだとき出力が0Vに近くなるようにします。シングル電源では完全な0Vは不可能ですが、数mV(試作では約8mV)まで近づけられます。
- 差動増幅器のゲイン: G = Vo / (Vi - Vp) = R2 / R1
- ゲインを変更することで異なる出力電圧範囲に対応可能(4V未満)
- ゲイン G = 3.3 / 2.2 = 1.5 とすると、出力範囲は0~3.3Vとなり、入力範囲と一致します。
重要な注意点
- 増幅器の4つの抵抗(R1、R2)には許容差1%以下の精密抵抗を推奨
- LM741、LM1458、TL081などのシングル電源非対応オペアンプは使用不可
- 出力電圧が3.3Vを超える場合は、レール・ツー・レール対応オペアンプ(TLC2272等)が必須
回路図

製造プロセス
- OpenSensorsで空気質を測定: ArduinoとPythonによるガイド
- ArduinoでユニバーサルIRリモコンを自作:ステップバイステップガイド
- スマートブラインド:Arduinoとソーラー電源で実現する自動光制御
- Arduino Dueで作るタッチスクリーン三目並べゲーム
- デジタル身長計の自作:Arduino Nanoとレーザー距離センサーで成長記録
- Arduinoでシンプルな障害物センサーを自作 – IR LEDとフォトダイオード入門
- FlightGear用アナログトリムタブホイールをArduino Nanoで自作 ─ Python経由でUDP連携
- Arduinoで作るパンチングキーボードボタン:ストレス解消カスタムキー
- Arduino用8ビットI/Oポートライブラリ:デジタル制御を拡張
- サーミスタを使った温度測定: Arduinoステップバイステップガイド
- Arduino用絶縁アナログ入力回路の設計:LM331 V-F変換+フォトカプラでノイズ耐性を確保