Eine Methode, den Strom, der durch einen Leiter fließt, zu messen, besteht darin, dass man den zu messenden Strom durch einen sehr niederohmigen Leistungswiderstand (Shunt) fließen lässt. Der Shunt wird dazu in Reihe geschaltet. Über dem Shunt ist ein Spannungsabfall Ushunt messbar, der proportional zum durchfließenden Strom I ist.
In diesem Abschnitt wird ein Sensor mit Shunt benutzt (INA219) und gezeigt, wie man mit ihm Ströme messen kann. Im Kapitel Ströme messen - 2 werden Ströme mit einem Sensor über den Hall-Effekt gemessen.
Zur Strommessung in elektronischen Schaltungen muss man immer den Umweg über eine Spannungsmessung nehmen. Dazu nimmt man einen bekannten Widerstand mit geringer Fehlertoleranz (Shunt) und lässt durch diesen den zu messenden Strom laufen. Aus dem Spannungsabfall über diesem Präzisionswiderstand lässt sich dann mit Hilfe des Ohmschen Gesetzes die Stromstärke bestimmen.
Nach diesem Prinzip arbeitet auch der Baustein INA219, den wir uns jetzt genauer bei der Arbeit anschauen wollen. Er wird als Breakout von der Fa. Adafruit angeboten.
Busspannungen : 0V bis +26V (Gleichspannung) Stromstärke max. : +/- 3,2A Shunt : 0,1 Ohm, 1% ADC intern : 12-Bit Ermittelt : Stromstärke, Spannung, Leistung Genauigkeit : max. 0,5% Schnittstelle : I2C Betriebsspannung : 3V - 5,5V Stromaufnahme : max. 1mA
Ströme messen mit dem Arduino UNO | |
Material |
|
Aufgaben |
|
Das Programm Strommessung_2.ino
Terminalausgabe
Instanz setzen
Adafruit_INA219 ina219;
Ohne weitere Adressenangabe ist 0x40 gesetzt (Werkseinstellung). Werden weitere Module eingesetzt (maximal 4 möglich), muss die jeweils entsprechende Adresse gesetzt werden, zum Beispiel durch Adafruit_INA219 ina219(0x41);
ina219.begin()
initialisiert das erste INA219 Board. Weitere Boards müssen vorher instantiiert werden.
float getBusVoltage_V(void);
Spannung zwischen GND und Vin-; Rückgabewert in der Einheit Volt.
float getShuntVoltage_mV(void);
Spannung zwischen Vin- und Vin+ ; entspricht dem Spannungsabfall über dem Shunt von 0,1 Ohm.
float getCurrent_mA(void);
Stromstärke (über Ohmsches Gesetz und Shunt-Widerstand berechnet) in Milliampere.
Das Programm Strommessung_2.ino muss in der drittletzten Programmzeile angepasst werden. Der Wert 470 ist durch den Wert 220 auszutauschen. Im Terminal werden die folgenden Werte angezeigt:
Terminalausgabe
Der Spannungsabfall über dem Shunt-Widerstand ist konstant in beiden Messungen 0,49mV, was zu erwarten war.
Die Summe der ermittelten Spannungswerte Spannung ueber R aus Messung 1 und 2 ergibt einen Gesamtwert von 3,36V. Ein nahezu gleicher Wert sollte sich aus der Summe der beiden Spannungswerte aus Uvin-_GND (Messung 2) und Spannung über R (Messung 1) ergeben. Die Summe liegt hier bei 3,36V. Die Stromstärken aus beiden Messungen liegen zwischen 4,70mA und 4,90mA.
Die beiden eingesetzten Widerstände über 220 Ohm und 470 Ohm haben eine Fehlertoleranz von 10%. Daraus ergibt sich rechnerisch ein maximaler Durchgangsstrom von 5,31mA und ein minimaler von 4,34mA ohne das weitere Parameter wie zum Beispiel Temperaturdrift mit einbezogen wurden. Der mit dem Sensor gemessene Wert liegt mit 4,80mA im Toleranzbereich.
Mehrere Ströme messen mit dem Arduino UNO | |
Material |
|
Aufgaben |
|
In diesem Teil geht es darum, in einer vorgegebenen Schaltung aus drei Widerständen die Einzelströme durch die Widerstände zu messen und mit den vorher berechneten Werten zu vergleichen. Dazu ist die nachfolgende Schaltung aufzubauen.
Bevor die Breakout-Boards in die Schaltung eingebaut werden, müssen die I2C-Adressen auf jedem einzelnen Board gesetzt werden.
I2C Adressen einstellen
Werksseitig sind keine Brücken gesetzt und die I2C-Adresse lautet: 0x40. Es lassen sich auf dem Breakout-Board insgesamt vier verschiedene Adressen einstellen. Das geschieht am Besten dadurch, dass man die entsprechenden Felder mit Lötzinn überbrückt:
Schaltungsaufbau
Das Programm
Terminalausgabe
Vergleich von Mess- und Rechenergebnissen
Geht man von einer Versorgungsspannung U = 5V aus, dann errechnen sich die Ströme zu:
Igesamt ~ 4,4 mA, I2 ~ 1,4 mA, I3 ~ 3,0 mA. Die gemessenen Werte bestätigen innerhalb der Toleranzgrenzen diese Ergebnisse.