Batterien Testen

So werd ich es machen. Vielen Dank. Bei der Schnellentladebedingung muss ich halt darauf achten, dass der Arduino nur für den Upload am USB hängt und den Rest erst nachher anschließen.
Es gibt den einfachen "Spannung am PIN" Sketch, denn kann ich eventuell mittels Zeitschaltung integrieren, aber das ist ja für mich schon eine rechte Herausforderung.

odl:
Es gibt den einfachen "Spannung am PIN" Sketch, denn kann ich eventuell mittels Zeitschaltung integrieren, aber das ist ja für mich schon eine rechte Herausforderung.

Nochmals: NIEMALS den Entladestrom über den Arduino führen, auch wenn du ihn zusätzlich mit einem Transistor schaltest.

odl:
Wenn ich bei den LEDs den Widerstand messe

... dann machst du was verkehrt. Eine LED hat keinen konstanten Widerstand, den man messen kann.
Du kannst und musst eine LED in Serie mit einem Vorwiderstand betreiben, dann kannst du durch den Spannungsabfall am bekannten Widerstand den Strom errechnen, der durch beide fliesst.

Wenn ein Batterie-Pack an der runden Buchse oder an Vin angeschlossen ist, ist der Strom am 5V Pin auch begrenzt. Ein Spannungsregler auf dem Arduino ist im Spiel und wird dann heiss. So den Batterie-Pack zu entladen, ist nicht sinnvoll für deinen Test, finde ich.

Ich würde empfehlen, das Entladen der Batterie erstmal unabhängig vom Arduino zu machen:
Den Arduino über USB versorgen, damit die Spannung einer einzelnen 1,5V Batterie messen und auf dem PC protokollieren.
z.B. im einfachsten Fall alle 5 oder 10 Minuten   Serial.println(analogRead(A0));

Damit kannst du eine Kurve malen und musst nicht stundenlang danebensitzen, messen und aufschreiben.
So hat der Arduino einen Sinn und du es leicht.

Wenn du so ein paar Batterien gekillt hast, und tiefer in die Arduino-Programmierung und Elektronik einsteigen willst, kannst du die Vorschläge mit Relais oder Transistor zum Verfeinern in Angriff nehmen und den Test automatisch beenden, bevor eine wiederaufladbare Batterie tiefentladen und so kaputtgemacht wird.

Auch die Frage "Entladen über PWM oder entsprechend kleineren Dauerstrom?" kannst du später klären und dir dann überlegen, wie/ob du dafür einen npn-Transistor einsetzt um Batterie-Entladestrom vom Arduino-Strom zu trennen.

Deine Abschätzung, ob ein Tipgeber viel Ahnung vom Arduino hat, musst du auch dagegen abwägen, ob du glaubst, einen Tip verstanden zu haben und dir das Umsetzen zutraust. :wink:

Viel Spass.

Hi

Was spricht bitte gegen die Entladung mit bekanntem Strom? (aka #1)
Eine LED ergibt keinen bekannten Strom.
Ein Widerstand ebenfalls nicht, da sich wohl die Spannung des Messobjekt ändert.

Wenn Das Alles nur dazu dient, einen Hersteller herauszufinden, Dessen Akkus am Längsten halten, mach Folgendes:

  • Lade den/die Akku/s
  • Packe Deinen Spannungs-Mess-Sketch auf den Arduino, erweitere Diesen um eine Laufzeit-Anzeige
  • versorge den Arduino aus diesem Paket
  • lasse den Arduino Deinen 'Entladewiderstand' zuschalten
  • gebe jede Sekunde die aktuelle Laufzeit im Terminal aus
    ... Morgen früh ist der Arduino aus (Spannung reichte nicht mehr) und im Terminal hast Du die erreichte Laufzeit.

Nebenbei: der abgeschaltete Arduino sollte durch Inaktivität dazu führen, daß der Entlade-Widerstand abgeklemmt wird ... also N-FET oder so was.

Nächster Akku, gleicher Aufbau, fertsch.

Alles ohne jeglichen SchnickSchnack, der 'verfälschende' Arduino ist ebenfalls immer der Gleiche und verfälscht somit überall gleich, also egal.

MfG

Was dagegen spricht ist die benötigte Eingansspannung, wenn Du eine Zelle testen willst.

Elektrische Eigenschaften:
Eingangsspannung 4 - 28 V DC
Ausgangsstrom 20 mA

Gruß André

michael_x:
... dann machst du was verkehrt. Eine LED hat keinen konstanten Widerstand, den man messen kann.
Du kannst und musst eine LED in Serie mit einem Vorwiderstand betreiben, dann kannst du durch den Spannungsabfall am bekannten Widerstand den Strom errechnen, der durch beide fliesst.

Wenn ein Batterie-Pack an der runden Buchse oder an Vin angeschlossen ist, ist der Strom am 5V Pin auch begrenzt. Ein Spannungsregler auf dem Arduino ist im Spiel und wird dann heiss. So den Batterie-Pack zu entladen, ist nicht sinnvoll für deinen Test, finde ich.

Ich würde empfehlen, das Entladen der Batterie erstmal unabhängig vom Arduino zu machen:
Den Arduino über USB versorgen, damit die Spannung einer einzelnen 1,5V Batterie messen und auf dem PC protokollieren.
z.B. im einfachsten Fall alle 5 oder 10 Minuten   Serial.println(analogRead(A0));

Damit kannst du eine Kurve malen und musst nicht stundenlang danebensitzen, messen und aufschreiben.
So hat der Arduino einen Sinn und du es leicht.

Wenn du so ein paar Batterien gekillt hast, und tiefer in die Arduino-Programmierung und Elektronik einsteigen willst, kannst du die Vorschläge mit Relais oder Transistor zum Verfeinern in Angriff nehmen und den Test automatisch beenden, bevor eine wiederaufladbare Batterie tiefentladen und so kaputtgemacht wird.

Auch die Frage "Entladen über PWM oder entsprechend kleineren Dauerstrom?" kannst du später klären und dir dann überlegen, wie/ob du dafür einen npn-Transistor einsetzt um Batterie-Entladestrom vom Arduino-Strom zu trennen.

Deine Abschätzung, ob ein Tipgeber viel Ahnung vom Arduino hat, musst du auch dagegen abwägen, ob du glaubst, einen Tip verstanden zu haben und dir das Umsetzen zutraust. :wink:

Viel Spass.

Das habe ich mir auch schon gedacht. Am besten wäre es wohl das Widerstandsarray gesondert an die Batterie anzuschließen und leerzumachen und den Arduino nur zum Protokolieren zu verwenden.
Mit dem Pulsen hätte ich noch eine Frage: Kann man den Arduino an USB anschließen (zum Protokollieren und Pulsen) wenn man das Batterieentladeding gesondert mit Strom versorgt und über einen Transistor getrennt ansteuert? Der Gating-Strom für den Transistor käme dann über USB vom Arduino und readAnalogPin vom Batterieentladeding, oder verstehe ich da was prinzipiell falsch (muss alles im selben Stromkreis sein)?

odl:
....Kann man den Arduino an USB anschließen (zum Protokollieren und Pulsen) wenn man das Batterieentladeding gesondert mit Strom versorgt und über einen Transistor getrennt ansteuert? Der Gating-Strom für den Transistor käme dann über USB vom Arduino und readAnalogPin vom Batterieentladeding, oder verstehe ich da was prinzipiell falsch (muss alles im selben Stromkreis sein)?

Kannst du das auch in einer verständlichen Sprache bringen ?
Was ist Gating-Strom ?
Was meinst du mit "Batterieentladeding" ?

Wie gesagt bin ich nicht gerade ein Profi. Mit Batterieenladeding meine ich meinen Verbraucher (einfache Widerstände parallel oder in serie). Dieses möchte ich natürlich nicht direkt an den Arduino hängen sondern nur über einen Transistor (welcher vom Arduino angesteuert wird) schalten während der Verbraucher selbst nur an den zu testenden Batterien hängt. Mit Gating-Strom (wahrscheinlich falsch) meine ich den Strom der der den Transistor auf den anderen beide Anschlüssen gängig macht, soweit ich einen Transistor verstehe.

ich habe da mal ein grobe Skizze gemacht (siehe Attached)

Zusätzlich möchte ich die Spannung an der Batterie regelmäßig ablesen (readAnalogPin). Aber das stell ich mir wohl zu einfach vor. Vorallem sehe ich da keinen Stromkreis mehr. Spannung relativ zu was.

Irgendwie drehst du dich im Kreis. Ein Widerstand lässt einen bestimmten Strom bei einer bestimmten Spannung fliesen. Wenn du einen normalen Transistor dazwischen hast, ist der Gesamtwiderstand nicht mehr zuverlässig bekannt, also Mist.
Der Widerstand von Relaiskontakten ist zu vernachlässigen. Deswegen würde ich dir das der Einfachheit zu empfehlen.
Dann misst du z.B. alle 60 Sekunden die Spannung und protokollierst diese. Daraus lässt sich mit dem bekannten Widerstandswert der Strom ausrechnen und somit auch die Leistung mit U x I. Damit hast du die verbratenen mA-Minuten, der letzten Messperiode. Selbige geteilt durch 60 und du halt mAh. Addierst du nun die mAh der Messungen, hast du die Gesamtkapazität der Batterie.
Und aus den Werten der Spannungsmessung hast du deine Entladekurve.

Weol was bringt dir es zu wissen, dass ein Lipo mit 300mAh 25C eine andere Entladekurve hat wie ein 500mAh 45C, wenn du nicht die tatsächliche Kapazität mitmisst?

Wieso sagt mir denn keiner, dass das so gar nicht geht. Offensichtlich kann man wohl gar nicht gleichzeitig eine Batterie leermachen (über z.B. einen Widerstand) und mit dem Spannungsteiler über readAnalog(0) die aktuellen Spannungswerte mit dem Arduino auslesen. Im gedachten Extremfall - wenn ich die Batterie über einen Maximalverbraucher kurzschließe - käme ja z.B. gar nichts mehr an den Spannungsteiler an, und ich kann auch nichts messen, oder?
Am Anfang schauts noch gut aus, aber dann werden die Werte immer unplausibler.
Ich will ja nur gute und schlechte Batterien vergleichen und vergleichbare Entladungskurven bekommen. Es geht mir nicht darum geeichte Kapazitätswerte zu erhalten, sondern nur einen Vergleich zwischen billigen und teueren Batterien zu machen, d.h. ich brauche nur eine Schaltung die mir die Entladung der Batterie reproduzierbar und vergleichbar aufzeichnet während die Batterie leer wird.
Ich hätte mir NIE gedacht, dass so etwas Einfaches (Spannungsabfall einer Batterie im Betrieb) messen schon so schwierig sein kann.
Ich bin wie gesagt Anfänger und bräuchte mal ganz konkrete, einfache Tipps bzw. Anleitungen, sonst sieht es schlecht aus mit meiner Facharbeit.
Habe mir das echt einfacher vorgestellt und stehe nun ganz schön auf der Seife....

Es ist ganz einfach. Wobei einfach Definitionssache ist. Wenn das eine Facharbeit ist und das für dich nicht „einfach“ ist, solltest du etliche Schritte, die du in deiner bisherigen Ausbildung offensichtlich übersprungen hast, zurück gehen und deutlich mehr Basics lernen. Schließlich machst du das ganze für dich und dein späteres Berufsleben, und nicht nur, um kurzfristig ein Ergebnis vorlegen zu können.

Warum werden die Werte unplauslbler?
Bei welchem Testaufbau?
Sketch ?

Ich gehe zurzeit in die 10.Klasse eines Gymnasiums und habe mir wie gesagt das Thema als Facharbeit ausgesucht. Meine Kenntnisse im Bereich der Elektrotechnik sind also ziemlich gering (U=R*I,Paralell- und Reihenschaltung). Jedoch habe ich im Laufe des Projekts schon ziemlich viel gelernt. Ich habe bereits eine Schaltung mit einem 10Ohm Widerstand und einem Spannungssensor (0-25V) gebaut der die Spannungswerte auf dem seriellen Monitor gut ausgibt. Mein Problem ist jedoch, dass ab ca. 0,9V die Werte praktisch konstant bleiben. Wenn ich nun z.B. 3x10Ohm parallel mache (also 3,3Ohm) dann fängt das Ganze schon mal bei 1,34V statt 1,5V an (was eigentlich für den Vergleich gar nicht so schlimm wäre). Meine Befürchtung ist nun, dass ich prinzipiell gar nicht verbrauchen kann (über Widerstände) und über den Spannungsteiler (was der Spannungssensor ja ist - den kann man ja auch eigentlich selber stecken) vernünftige Werte über readAnalogpin bekommen kann. Im extrem Fall könnte ich ja einen Maximalverbraucher sprich Kurzschluss an die Batterie klemmen, dann käme ja gar nichts mehr am Spannungsteiler zum Spannungmessen an. Oder geht das doch?

reicht ein einfacher Aufbau?
Steuere über den Arduino eine Einfach-Relaiskarte deinen Stromkreis - Zu_Messende_Batterie - Lampe
und misst über einen Analog-Eingang (evtl. mit einem die Spannungsteiler) die Zu_Messende_Batterie.

Das Relais soll halt bei einer unterspannung die Batterie trennen, dass diese unter x nicht sinnlos weiter entladen wird.

Auf Serial schreibst mit wann du gestartet hast, gibst deine Spannung aus, wann das Limit x erreicht wurde.

Da du mehrere Analogeingänge hast kannst sogar mehrere Kreise gleichzeitig messen, dann müssen halt deine Spannungsteiler für die Spannungsmessung sowie deine Last (Lampe) sehr exakt stimmen bzw. Softwareseitig zueinander abgeglichen werden.

DE: Wie man Fragen postet:
1. was hat man (Sketch und Hardware)
2. was SOLL es machen
3. was macht es: IST (Fehlverhalten, Fehlermeldungen, Serial.Output ...)
4. Eine Frage stellen bzw. erklären was man erwartet

1.) Foto anbei

Sketch:


int wert1;
float wert2;

void setup()
{
Serial.begin(9600); //serielle Verbindung starten
}

void loop()
{
float temp;
wert1=analogRead(1); //Spannungswert am analogen Eingang 1 auslesen
temp=wert1/4.092; //Wert mathematisch umwandeln um den Spannungswert in Volt zu erhalten
wert1=(int)temp;
wert2=((wert1%100)/10.0);
Serial.println(analogRead(1)/40.96,6); //Endgültigen Spannungswert im seriellen Monitor anzeigen
delay(10000); //Eine Sekunde warten
}


2.) Wir wollen Batterieentladungskurven bekommen

3.) Die Werte sind unplausibel. Am Anfang hängen sie ganz stark vom Verbrauchswiderstand am Breadboard ab. Danach sinken sie, aber nach ein zwei Stunden so um 1V rum schwanken die werte munter zw. 0,6 und 1,2V und das geht ewig und verhaut jede Kurve

4.) Wie bekommen wir vergleichbare Entladungskurven (wir wollen billige und teure Batterien vergleichen). Dabei geht es nicht um "echte" Werte (die müssen nicht genau geeicht stimmen da die Bedingungen ja immer gleich sind sollen sie ja nur zum Vergleichen dienen.
Geht das überhaupt, dass man gleichzeitig einen Verbraucher anhängt und über den Spannungssensor ( ist ja ein Spannungsteiler) die Spannung am AnalogInput des Arduino rauskriegt?

Bitte um möglichst konkrete Hilfe oder Anleitung

mach noch schöne code tags rund um deinen code, dann freuen sich auch andere.

2.) Wir wollen Batterieentladungskurven bekommen

warum interessiert dich die Batteriespannung unter 1V überhaupt noch, eine 1,5 Mignon ist mit 1V Nutztechnisch "leer".

Dass die Spannung unter Last mehr oder weniger "einbricht" ist auch klar. Wenn dich das stört kannst ja die Last (z.b. mittels Relais) wegschalten, dann 5 sec messen und dann wieder die Last für 55sec drannschalten

schau dir mal ein Datenblatt von einer Batterie an

gut, die Messen bis 0,8 ... ist trotzdem "leer" ...

noch eins: welche Widerstände (Ohm) sind auf diesem Spannungsteiler?

und überhaupt, wozu einen Spannungsteiler wenn du mit einem 5V Arduino nur 1,5 V Zellen misst?

Ich hab den Spannungssensor von Amazon:

Da steht nur, dass die Widerstände ein Verhältnis von 5:1 haben.

Wie gesagt bräuchte ich da ganz konkrete Anleitungen. Diese Kurven bei:

sind ein Traum.

Genau sowas brauch ich.

Woher kann dass kommen, dass das ganze bei 1 V dann so zu schwanken beginnt?

Wie kann man (konkret) sowas realisieren, dass man 55 sec verbraucht und dann 5 sec misst?
Ich bräuchte da schon ganz konkrete Layouts für das Breadboard und Sketch.

nochwas zu Deiner letzten Antwort noiasca:
Ich will tatsächlich nur 1,5 Volt Batterien testen. Brauch ich da gar keinen Spannungsteiler?

Hi,

wenn Du nur 1,5V Batterien testest, und Deine Referenzspannung am Arduino 5V, also die Betriebsspannung ist, brauchst Du keinen Spannungsteiler, in diesem Fall sogar kontraproduktiv, da er Deinen Wert auf nur 1/5 reduziert!

Gruß André

Am Arduino hast Du nur 10bit Genauigkeit am Analogeingang.
Du erhälst also einen Wert, der zwischen 0 und 1023 liegen kann (hier 5V / 1024 = 0,00488V pro Step).
Hat Dein gemessener Wert am Analogeingang z.Bsp. "297" dann representiert dieser eine Spannung von 1,45 Volt.

odl:
wert1=analogRead(1); //Spannungswert am analogen Eingang 1 auslesen
temp=wert1/4.092; //Wert mathematisch umwandeln um den Spannungswert in Volt zu erhalten

Da die Betriebsspannung nie genau 5V ist, würde sich für den Fall die Verwendung der internen Rewferenz von 1,1V anbieten. Da brauchst Du aber einen Spannungsteiler.

Gruß Tommy