Wenn ich meinen Sensor (wie auf dem ersten Bild) anklemme bekomme ich exakt die Ampere die ich am Netzteil einstelle angezeigt. Schonmal ziemlich geil. Wenn ich jetzt aber wie auf dem zweiten Bild einen Verbrauchenr (meinen 12V Motor) anklemme und der ACS712 PLus vom Netzteil bekommt und abgehend zum Motor geht, bekomme ich kaum andere Werte angezeigt als wenn nichts angeklemmt wäre. auf Minus das gleiche Spiel aber der strom fließt ja von Minus nach Plus. deshalb wollte ich hinter den Verbraucher.
Heißt: plus und minus vom Netzteil direkt an den Sensor angeklemmt bekomme ich genau das angezeigt was ich will. Wenn ich den ACS712 auf plus oder minus zwischen Netzteil und Motor anklemme bekomme ich werte als wäre er nicht angeschlossen.
Verwendet wird ein:
Arduino mega 2560
ACS712 30 A (den Richtigen mV/A Wert =0,066 habe ich im Programm berücksichtigt)
Infos Habe ich von folgender Seite:
Ich brauche maximal eine genauigkeit von 0,2 Ampere was hier gegeben ist, selbst wenn das Netzteil und PC direkt neben dem Hall Sensor sind.
ein float zufällig als long geschrieben. vermutlich wird auch nicht helfen. obwohl ähnlicher sketch bei mir funzt, aber Strom ist constant, einfache Batterieentladung.
zum verständnis. es geht um den motor an der welle. den Ampere Wert auszulesen. Ich habe folgende schaltungen probiert (wie im abgebildet im Internet):
Die erste Schaltung ist korrekt. Dass du nur 200-300mA bekommts, kann richtig sein. Denn der Motor braucht nur im Anlauf viel Strom, oder wenn er etwas ziehen muss. Wenn er frei läuft, also keine Kraft aufwenden muss, kann das jederzeit stimmen mit den 200-300mA.
auserdem, Motor dreht und sein Strom pilsiert, im Sketch werden 50 Werte gesamelt und durch 50 geteilt, also du bekommst ~Mittelwert. anscheinend musst du Max Wert ermitteln
const int ACS712_Pin = A0;
const float zeroCurrentValue = 510.8;
void setup() {
Serial.begin(9600);
Serial.println("ACS712 - Stromsensor");
}
void loop() {
int rawValue = 0;
for (int i = 0; i < 50; i++) {
int RW = abs(analogRead(ACS712_Pin) - zeroCurrentValue);
if (rawValue < RW) rawValue = RW;
}
float current = ((float)rawValue ) * 58.59;
Serial.print("Strom [mA]: ");
Serial.println(current);
delay(2000);
}
Ich mich vor einiger Zeit mit den ACS beschäftigt, was bei den sehr wichtig ist, ist sehr stabile Spannung am VCC, am Mega ist die Spannung bei Versorgung über USB < 5V was auch im Sketch angepasst muss sein muss.
Die ACS sind sehr empfindlich auf Fremdmagnetfelder, im unterem Messbereich tanzen die angezeigte Werte unheimlich.
Wenn du solche niedrige werte messen willst dann ist der 30A schlecht ausgewählt.
Persönlich liegen meine ACS in der Kiste, und habe im Endeffekt INA219 genommen mit angepasstem Shunt, streut nicht so ist stabil und unempfindlich auf die VCC.
Die INA219 als Modul sind nur bis 3A vorgesehen.
wie andere schon geschrieben haben, ohne Last am Motor braucht der auch nicht mehr Strom. Das kannst Du doch ganz einfach überprüfen indem Du ein Amperemeter mit in die Leitung schließt.
Ansonsten geht es mir wie @fony, - meine ACS verstauben auch in irgend einer Kiste. Für alles wo ich Strom messen will verwende ich nur noch "INAxx" Varianten mit angepasstem shunt, ist viel genauer, stabiler und braucht weniger Strom.
Der Mittelwert passt schon, - im Leerlauf braucht so ein Motor nicht viel. Leider iet der Leerlaufstrom bei den "brushed" DC Motoren selten angegeben, hab aber mal eine Ausnahme gefunden: