Serial output actual voltage through divider

Method to convert raw analog data back into voltage and then convert back to actual voltage before divider.

Sketch:

/* This sketch serial outputs a voltage through a voltage divider into

  analog pin 0

This is written in as simple terms as possible, so its long.

  Actual real numbers math is only 3 lines of code so
  skip to the code if you understand voltage dividers.

Resistance divider follows Vout = Vin * (R2 / (R1 + R2))

  This sketch is assuming 25V max is measured.
  Resistance values used for 1/5 divider are R1 = 10k and R2 = 2.5K

BEFORE YOU CONNECT voltage divider to arduino, test with a meter to verify.

  If you connect 25Vdc to arduino... its bad.  

Meter Black Lead to Gnd

  Gnd -- R2 -- Meter Red Lead -- R1 -- V+ (measured voltage 0-25Vdc)

Connection: Gnd -- R2 -- arduino pin A0 -- R1 -- V+ (measured voltage 0-25Vdc)

I can get to within 0.05 Vdc by measuring actual value of resistors

 */

//Analog volt read pin

const int voltPin = 0;

//Variables for voltage divider

float denominator;

int resistor1 = 10000;

int resistor2 = 2500;

void setup() {

  Serial.begin(9600);
  //Convert resistor values to division value
  //  Equation is previously mentions voltage divider equation
  //  R2 / (R1 + R2)
  //  In this case returns 0.20 or 1/5
  denominator = (float)resistor2 / (resistor1 + resistor2);

} // Void Setup Close

void loop() {

  float voltage;
  //Obtain RAW voltage data
  voltage = analogRead(voltPin);

  //Convert to actual voltage (0 - 5 Vdc)
  voltage = (voltage / 1024) * 5.0;

  //Convert to voltage before divider
  //  Divide by divider = multiply
  //  Divide by 1/5 = multiply by 5
  voltage = voltage / denominator;

  //Output to serial
  Serial.print("Volts: ");
  Serial.println(voltage);

  //Delay to make serial out readable
  delay(500);

} // void loop close

Share