Arduino test: voltmeter
First experiment with Arduino. Trying to implement a voltmeter.
Each analog input of Arduino has 1024 steps. From 0 to 5 volt. This experiment used a simple voltage divider to measure roughly 0 to 12 volt (using 50k as R1 and 4k3 as R2).
By varying the values of R1 and R2, the precision and range of the measurement can be changed.
Here is the Arduino code:
Each analog input of Arduino has 1024 steps. From 0 to 5 volt. This experiment used a simple voltage divider to measure roughly 0 to 12 volt (using 50k as R1 and 4k3 as R2).
By varying the values of R1 and R2, the precision and range of the measurement can be changed.
Here is the Arduino code:
// variables for input pin and control LED
int analogInput = 1;
int LEDpin = 13;
int prev = LOW;
int refresh = 1000;
float vout = 0.0;
float vin = 0.0;
float R1 = 50000.0; // !! resistance of R1 !!
float R2 = 4300.0; // !! resistance of R2 !!
// variable to store the value
int value = 0;
void setup(){
// declaration of pin modes
pinMode(analogInput, INPUT);
pinMode(LEDpin, OUTPUT);
// begin sending over serial port
Serial.begin(9600);
}
void loop(){
// read the value on analog input
value = analogRead(analogInput);
//Serial.print("value=");
//Serial.println(value);
if (value >= 1023) {
Serial.println("MAX!!");
delay(refresh);
return;
}
else if (value <= 0) {
Serial.println("MIN!!");
delay(refresh);
return;
}
// blink the LED
if (prev == LOW) {
prev = HIGH;
} else {
prev = LOW;
}
digitalWrite(LEDpin, prev);
// print result over the serial port
vout = (value * 5.0) / 1024.0;
vin = vout / (R2/(R1+R2));
//Serial.print("vout=");
//Serial.println(vout);
Serial.print(vin);
Serial.println(" volt");
// sleep...
delay(refresh);
}
http://en.wikipedia.org/wiki/Voltage_divider
Choose your combination of R1 and R2 based on: (1) R1 + R2 will affect the current drawn from the source. Keep the current small to avoid overheating and increase accuracy; (2) Arduino input can read 0V to5V. Values returned range from 0 to 1023.
(now you asked... i am wondering if i actually used 4k3 and 50k resistors in my experiment... anyway...)