1. オペアンプによる出力増幅
今回はセンサの出力を演算増幅器(オペアンプ)で増幅する方法を紹介する。Arduinoのデジタル入力を使用する場合、出力電圧が低いセンサだとすべてLOWと判別されてしまいそのままでは使えないことがある。そこで増幅器を介してArduinoへ入力することで出力が低いセンサでも利用することができる。
2. 増幅回路図
Tinkercadでは741演算増幅器が用意されているのでこれを利用する。741増幅器の各端子の機能は下図のようになっている。なお回路図は以前紹介した回路図エディタBSch3Vを使用して作図している。
次に741演算増幅器を使用した電圧増幅の回路図は下図となる。種類としては非反転増幅器と呼ばれるもので入力電圧と同じ極性で増幅する回路である。増幅率Gは
とあらわせる。今回はフォトダイオードで最大416mVの出力を5V付近の12倍に増幅することを考える。上の式からR2=10kΩとしたときにR1=900ΩでG=12が得られる。またオフセットは今回使わないので何も接続しない。増幅器に入力する電源電圧は±5Vとした。なお増幅後の出力は電源電圧(この場合5V)以上にはできない。
3. Arduinoとの接続
上の回路図をTinkercad上で再現したのが下の接続図になる。演算増幅器の出力はArduinoの2ピンへ入力している。またフォトダイオード(PD)と演算増幅器の出力電圧はマルチメーターでモニターするようにしている。演算増幅器への±5Vの供給は定電圧電源を用いている。
今回のArduinoの動作としては、フォトダイオードの入力により2ピンがHIGHを検出したら、13ピンにHIGHを出力してオンボードLEDを点灯させるというものになる。目新しいところはないが、スケッチは以下のようになる。
int state=0; void setup() { pinMode(2, INPUT_PULLUP); //2ピンを入力に設定 pinMode(13, OUTPUT);//13ピンを出力に設定 } void loop() { state=digitalRead(2);//2ピンの状態を読み出す if (state==HIGH){ digitalWrite(13,HIGH);//2ピンがHIGHならば13ピンへHIGHを出力 } else{ digitalWrite(13,LOW);//2ピンはHIGHでなければ13ピンへLOWを出力 } }
Tinkercadのシミュレーションを開始して、フォトダイオードの光量つまみを動かすと、フォトダイオードに電圧が発生し演算増幅器で4V~5Vに増幅された電圧が2ピンに入力され、ArduinoのオンボードLEDが点灯することが確認できる。光量つまみを動かしてほぼ0にするとオンボードLEDが消灯する。フォトダイオード入力電圧が416mVに対して増幅後の電圧が4.97VでR1,R2の設定通り12倍に増幅されていることがわかる。なお光量つまみの移動量に対してフォトダイオードの出力が非線形(急上昇して、あとは緩やかに上昇)に変化するようになっている。