Arduino UNO R4(WiFi)は、オペアンプを内蔵していますので、その使い方の勉強をします。「それやってみよう」というサイトのこちらのページとArduino チュートリアルのこちらのページを参照しました。
Arduino UNO R4(WiFi)は、4個のオペアンプを持っていますが、実際にすぐ使えるのは1つ(OPAMP0)で、入出力は、アナログピンに次のように割り当てられています。
OPAMP0 input+ = A1
OPAMP0 input- = A2
OPAMP0 output = A3
このオペアンプを使って、ボルテージフォロアと非反転増幅のテストをします。
まず、ボルテージフォロアのテストをします。
DACの出力(A0)をOPAMP INPUT+に接続します。OPAMP output(A3)をOPAMP input-(A2)に接続します。DACにオペアンプを接続することにより、低い出力インピーダンスで安定して電圧を取り出すことができます。
スケッチです。
-------------------------------------------
#include <OPAMP.h>
void setup() {
OPAMP.begin(OPAMP_SPEED_LOWSPEED);
analogWriteResolution(12);
analogWrite(DAC,1023);
}
void loop() {
}
void setup() {
OPAMP.begin(OPAMP_SPEED_LOWSPEED);
analogWriteResolution(12);
analogWrite(DAC,1023);
}
void loop() {
}
-------------------------------------------
このスケッチでDACから1.19Vが出力されます。
ボルテージフォロアを通した電圧です。1.19Vと変わりません。
次に、オぺアンプの配線を非反転増幅に変えて、テストします。
R1=10kΩ、R2=20kΩとして、増幅率3倍の非反転増幅器としてオペアンプの出力電圧を測定してみました。3倍の電圧が出力されました。OKです。
以前、DACのテストで行った鋸歯状波をオペアンプのボルテージフォロアを通して出力させてみました。
スケッチです。OPAMPのスピードはHIGHとしました。
ちなみに、帯域幅は、LOWSPEEDのとき低電力で40KHzまで、HIGHSPEEDは1.7MHzまで
-----------------------------------------------------
#include <OPAMP.h>
void setup() {
OPAMP.begin(OPAMP_SPEED_HIGHSPEED);
analogWriteResolution(10);
}
void loop() {
for(int i=0;i<1024;i++ ){
analogWrite(DAC,i);
}
}
-----------------------------------------------------
OPAMP.begin(OPAMP_SPEED_HIGHSPEED);
analogWriteResolution(10);
}
void loop() {
for(int i=0;i<1024;i++ ){
analogWrite(DAC,i);
}
}
-----------------------------------------------------
観測されたオペアンプの出力波形です。
オペアンプがないときに比べギザギザが少なくなっています。