Hobby Science&Experiment

愛と工作の日々

趣味でやっている工作や勉強したことのメモ書きです。

Arduino分圧回路による抵抗測定(回路・プログラム)

ロガー代わりにArduinoで分圧回路を使うことが良くありますのでここにメモっておきます。n回積算の平均化も行っています。

原理

f:id:tara-chang:20210918075852p:plain

コード

デジタルピンを分圧回路への電源供給に使っちゃってます。多分あんまりよくない方法です。

#define voltPin1 2
#define readPin1 A2
float Rref1 = 10.03;
float voltAplied = 4.97;//V
byte num1 = 5;

void setup()
{
  Serial.begin(9600);
  pinMode(voltPin1, OUTPUT);
}

void loop()
{ 
digitalWrite(voltPin1,HIGH);
float resistance1 = resMeasure(readPin1, num1, Rref1);
digitalWrite(voltPin1,LOW);
Serial.println(resistance1);
delay(500);
}

float resMeasure(byte pin, byte num, float resRef){
  float test[num];
  for (byte i=0; i<num; i++){
    int analogData = analogRead(pin);
    float voltSmp = analogData* voltAplied; 
    voltSmp /= 1024;
    float voltRef = voltAplied - voltSmp ;
    float resSmp = voltSmp/voltRef;
    resSmp *= resRef;
    test[i] = resSmp;}
  float resAve = makeAve(test, num);     
  return resAve;
}

float makeAve(float readArray[], byte number){
  byte i;
  float sum = 0;
  for (i=0; i<number; i++){
    sum += readArray[i];
  }
  float averate = sum / number;
  return averate;
}

参考リンク

qiita.com
note.com