Spannungsmessung mit dem Arduino

Mit dem Arduino lässt sich ein einfaches Spannungsmessgerät bauen, mit dem man z.B. Batterien testen kann.

Messungen bis 5V

Dadurch, dass die I/O-Pins des Arduino zwischen 0V und 5V belastbar sind und als Eingang auch gültige Ergebnisse liefern, kann man für alle Spannungsquellen unter 5V eine simple Schaltung für die Spannungsmessung aufbauen.
Achtung: Vor der Messung sicherstellen, dass die zu messende Spannungsquelle definitiv unter 5V liegt, sonst kann der Arduino beschädigt werden!

Verwendete Bauteile

Schaltung & Aufbau

Schaltplan
Abb.: Schaltplan für die Spannungsmessung mit dem Arduino
Aufbau der Schaltung
Abb.: Aufbau der Schaltung auf dem Breadboard

Code

#define PIN_TEST A0

#define REF_VOLTAGE    5.0
#define PIN_STEPS   1024.0

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    Serial.print("U = ");
    Serial.print(analogRead(PIN_TEST)*REF_VOLTAGE/PIN_STEPS);
    Serial.println(" V");
    delay(2000);
}
Ausgabe in der seriellen Konsole
Abb.: Ausgabe in der seriellen Konsole: Die anliegende Spannung am Pin A0 wird ausgegeben

Messungen bis 30V

Da die I/O-Pins des Arduino nur für max. 5V ausgelegt sind, wir aber auch Spannungsquellen überhalb dieses Wertes messen wollen, z.B. Auto-Batterie, benötigen wir einen etwas anderen Aufbau der Schaltung.
Die Widerstände (R1 = 100kΩ und R2 = 10kΩ) reduzieren die zu messende Spannung auf ein Elftel des ursprünglichen Werts (Spannungsteiler). Wenn an den I/O-Pins des Arduino nicht mehr als 5V ankommen dürfen, ergibt sich so eine theoretisch mögliche Eingangsspannung von 55V (=11 * 5V).
(Zum Schutz vor Verpolung setzen wir noch eine Diode ein).

Erklärung

Zur Berechnung der Teilspannung U2 über R2 muss zunächst der Gesamtwiderstand berechnet werden:
Rges = R1 + R2
Wenn die Gesamtspannung und die Widerstände bekannt sind, lässt sich nach dem Ohmschen Gesetz die Stromstärke (I) bestimmen:
I = U/Rges = U/R1 + R2
Nach den Regeln der Reihenschaltung ist der Strom durch alle Bauteile gleich, somit lässt sich das gesuchte U2 bestimmen:
U2 = I * R2
Setzt man die Formel für den gemeinsamen Strom (I = U/Rges) ein, ergibt sich die Ausgangsspannung (in Abhängigkeit von den Widerständen und der Eingangsspannung):
U2 = U/Rges * R2
Setzt man die oben angegebenen Werte ein, ergibt sich:
U2 = 55/110 * 10 = 5
Weil bei realen Widerständen die angegebenen Werte nur näherungsweise zutreffen, empfiehlt es sich, einen Sicherheitsbereich zu den errechneten Grenzwerten einzuhalten und die Eingangsspannung auf 30V zu begrenzen.

Verwendete Bauteile

Schaltung & Aufbau

Schaltplan
Abb.: Schaltplan
Aufbau der Schaltung
Abb.: Aufbau der Schaltung (hier mit 9V-Batterie als Test-Spannungsquelle)

Code

Hinweis: die Werte für R1 und R2 sollten im Sketch sehr exakt angegeben werden, d.h. es empfiehlt sich, diese vorher mit dem Multimeter genau zu messen. Da die verwendete Diode eine Vorwärtsspannung UV besitzt (üblicherweise von ca. 0,5V) muss dies in der Messung ebenfalls berücksichtigt werden. UV sollte daher vorher ebenfalls mit dem Multimeter vorher gemessen und in den Sketch eingetragen werden.

#define PIN_TEST A0

#define REF_VOLTAGE 5.0
#define PIN_STEPS 1024.0

const float diodeVoltage = 0.538;  // forward voltage of the used diode in Volts
const float R1 = 99200.0;          // exact resistance of R1 (= 100 kOhm)
const float R2 =  9990.0;          // exact resistance of R2 (= 10 kOhm)

float vout = 0.0, vin = 0.0;
int rawValue = 0;

void setup()
{
    Serial.begin(9600);
    pinMode(PIN_TEST, INPUT);
}

void loop()
{
    rawValue = analogRead(PIN_TEST);
    vout = (rawValue * REF_VOLTAGE) / PIN_STEPS;
    vin = vout / (R2 / (R1 + R2));

    if (vin < 0.09) {
        vin = 0.0; // suppress noise
    } else {
        vin += diodeVoltage;
    }

    Serial.println("U = " + String(vin) + " V");
    delay(1000);
}
Ausgabe in der seriellen Konsole
Abb.: Ausgabe in der seriellen Konsole: Die anliegende Spannung wird am Pin A0 ausgegeben.

Weitere Möglichkeiten

Es ist auch möglich externe Module wie den INA226 zusammen mit dem Arduino zu verwenden. Damit ließe sich Spannung bis zu 36V messen. In einer späteren Anleitung werde ich den INA226 genauer unter die Lupe nehmen.

zurück