LT3080実験用DC電源プロジェクト(4)DACとオペアンプ

 


秋月定番?のMCP4725をDACには利用。オペアンプは、NJM2745Mを使った(後に理由があり変更する予定だが現時点ではこれ)

この時点で、マイコンから指示を送って、DACが所定の出力をし、オペアンプでしっかりと3倍の電圧に変換されている事を確認する。

今回は最初から横着する事を目的に328PBを使っているので、Adafruitから提供されているMCP4725のライブラリーを使ってサクッと動かしてみる。

#include <Wire.h>
#include <Adafruit_MCP4725.h>

Adafruit_MCP4725 dac;

void setup() {
  Serial.begin(9600);
  Serial.println("Hello!"); // put your setup code here, to run once:
//For MCP4725A0 the address: when A0 is high, the adress is 0x61.
  dac.begin(0x60);
  dac.setVoltage(0, true);
}

void loop() {
// for (uint16_t i = 0; i < 4095; i++)
// {
// dac.setVoltage(i, false);
// delay(1);
// }
dac.setVoltage(4000, false);
delay(3000);
dac.setVoltage(3000, false);
delay(3000);
dac.setVoltage(2000, false);
delay(3000);
dac.setVoltage(1000, false);
delay(3000);
dac.setVoltage(0, false);
delay(3000);

dac.setVoltage(0, true);

第一引数が0-4095の4096階調の出力を示して、第二引数がtrueならMCP4725ないのEEPROMの値の初期値を変更する。

setup内のこのコメントで、EEPROMを書き換え次回から電源が入ると初期設定がゼロになる。設定しない場合、電源を入れると初期値では半分の値になる。

ここでは、3秒ごとに、出力を下げていくようにプログラムしていて、これをテスタで出力がちゃんと下がっていくかを確認する。


328PBのI2Cのピンは、SDAが27ピンでSCLが28ピンになる。それをMCP4725のSDAとSCLに繋いでやる。
4000(一番大きな出力時)には、3.3Vx4000/4095=3.22Vが理論値。
よって、3.22、2.42、1.61、0.81、0VとテスターでDACの出力を見て変化してればOK!


3.223V、2.412V、1.606V、0.809V、0.007Vと変化しているのが確認できる。特に難しい事はない。

次にオペアンプ。オペアンプは、NJM2746Mを利用。(後々に交換する予定。この時点で手元にあったレールtoレールで耐圧が12V以上だったので利用)
非反転増幅回路を構成して、フィードバックの抵抗を20k,GNDへは10kを使用。よって3倍になってくる。
電源には+側には12V、マイナス側は今のGNDへ接続。

オペアンプの非反転増幅の出力は、
9.58V、7.17V、4.77V、 2.413V、0.054Vとなる。

およそ倍率は2.97。ただしゼロボルト付近だけは0.007V→0.054Vなので、ずっと8倍近くになっている。これはNJM2746MのVOL の床に当たっているので 0V まで行けず、その途中で止まっているため。

せっかくLT3080を使ってゼロからスイングできるようにとしたいので、ここはもう一回り小さくしたい所。術はある(オペアンプのマイナス側の電源をGNDではなくマイナス電位を接続すること)ので現時点ではこのまま先に進む。





コメント

このブログの人気の投稿

【充電回路】TP4056(保護回路は電池側)

CH9329で日本語キーボード109で正しく表示する方法

Attiny85とAQM0802A(LCD)のI2C接続