Arduino Pins Watt auslesen?
Hallo,
Kann ich mit dem Arduino - wenn ich mit den Pins etwas als Output betreibe, messen wie viel Watt Strom ich dabei ausgebe? - wenn ja mit welchem Code?
Arduino UNO R3
LG
4 Antworten
Nicht direkt.
Aber Du kennst ja die Ausgangsspannung am PIN (U).
... und Du kannst den Ausgangsstrom messen, mittels eines Ampére-Meters (I).
Eine simple Rechnung ergibt Dir dann die Ausgangsleistung:
P (in Watt) = U (in Volt) mal I (in Ampere)
Beispiel vom Raspberry: U=3,3V / I=max. 0,16 A ==> Ausgangsleistung maximal 0,5 Watt
Hey,
Leider hat der Arduino UNO R3 keine eingebaute Funktion zur Messung des Stroms oder der Leistung. Allerdings ist es möglich, diese Daten zu ermitteln, wenn man zusätzliche Komponenten benutzt.
Eine Möglichkeit wäre die Verwendung eines Hall-Effekt-Stromsensors, zum Beispiel des ACS712 (der misst bis 5A, wenn du mehr brauchst schau einfach nach einem anderem, gibt genug). Mit diesem könntest du den Stromfluss messen. Und um die Leistung in Watt zu berechnen, kannst du den gemessenen Strom einfach mit der Versorgungsspannung multiplizieren. Vorausgesetzt natürlich, die Versorgungsspannung ist stabil und bekannt.
Ich habe hier einen Beispielcode für dich, der das macht:
#define ACS712 A0 // Der ACS712 Sensor ist am analogen Pin A0 angeschlossen
#define VCC 5.0 // Arduino läuft mit 5V
#define SENSITIVITY 185.0 // Sensitivität für ACS712 5A Modul
void setup() {
Serial.begin(9600); // Starte die serielle Kommunikation mit einer Baudrate von 9600
}
void loop() {
float I = readCurrent();
float P = VCC * I;
Serial.print("Strom: ");
Serial.print(I);
Serial.print("A, Leistung: ");
Serial.print(P);
Serial.println("W");
delay(1000); // Warte eine Sekunde zwischen den Messungen
}
float readCurrent() {
int raw = analogRead(ACS712);
float volt = (raw * VCC) / 1024.0; // Umrechnen in Volt
return ((volt - VCC / 2) / SENSITIVITY); // Umrechnen in Ampere
}
Mit diesem Code liest der Arduino den Stromwert vom ACS712 Sensor und berechnet dann die Leistung.
Das funktioniert mit einem einfachen GPIO Pin nicht wirklich.
Der liefert maximal um die 20mA, dafür ist der Sensor ein kompletter Overkill und nicht geeignet.
Ein Shunt kann hier bessere Ergebnisse liefern hat aber natürlich seine anderen Problemchen.
Da ein Pin aber eh nicht mehr als 100mW liefern kann macht eine Leistungsmessung hier auch nicht sonderlich viel Sinn.
Spannung am Pin ist bekannt, dann eine Strommessung machen (z.B. mit Shunt-Widerstand). Dann kannst du die Leistung berechnen (P = U · I).
So oder so wäre hier vermutlich ein externer IC besser. Bei den geringen Strömen, die der Arduino am Pin treiben kann, wäre der Spannungsabfall am Shunt sowieso eher ungenau zu ermitteln.
Und dann hätte man auch die Problematik mit der Spannung raus.
Direkt nicht. Das kannst du maximal mit einem externen Strom Spannungswandler (im einfachsten Fall ein Widerstand) und einem ADC Eingang.
Je nach Genauigkeit müsstest du dann die Spannung am Pin auch noch messen.
Ob die Spannung am Pin bekannt ist oder nicht hängt von der geforderten Genauigkeit und dem Stromfluss ab.
Die liegt eben irgendwo zwischen 5V und 4V.