Spannungsmessung und automatische Abschaltung bei leerem Akku

Das Sketch-Beispiel ReadAnalogVoltage funktioniert tadellos. Allerdings bin ich jetzt überfragt.
Was genau sollte ich jetzt prüfen?

Mein Aufbau basiert auf der Schaltung des folgenden Beitrags: Tutorial - Bau dir deine eigene Powerbank

Mit dem Multimeter habe ich alles nachgemessen und kontrolliert.
Der einzige mir bekannte Unterschied zwischen den beiden Aufbauten ist, dass der eine einen Lipo und der andere (der nicht funktioniert) einen LiFePo4 verwendet. Auf dem TP5000 ist die Brücke für den LiFePo 4 gesetzt. Der Rest im Aufbau ist identisch.

Hmm, hast du mal den Arduino hin und her getauscht? Wandert der Fehler mit? Du könntest auch die Akkus tauschen (natürlich umstellen Lipo<->Fepo nicht vergessen!) und schauen ob der Fehler mitwandert.

Ich hatte noch einen Ersatz-Arduino. Ich habe ihn getauscht (entlöten/löten)und jetzt geht es. Dafür hat es jetzt den RFID-Reader zerschossen. :roll_eyes:

Wir empfehlen ja aus dem Grund immer Buchsenleisten. Da ist das tauschen dann ein Kinderspiel. Aber schön das du da scheinbar den Fehler gefunden hast.

Hi

Wenn Du fertig bist, kannst Du dann deinen Aufbau kurz vorstellen und deine Codeschnipsel zur Verfügung stellen? Ich bin an meinem Vorhaben bisher leider gescheitert. Was ich unbedingt brauche um den Tonuino sicher mit meinen LiFePO4 Akkus zu betreiben, ist eine Spannungsmessung, Ansage bei fast leerem Akku, Ansage und Abschaltung bei leerem Akku mittels Pololu…

Danke!
Gruß
Papa

Ich habe mich mal mit der Hardwareseite dieses Problems befasst. Der Arduino soll ja im ausgeschalteten Zustand möglichst keine Spannung an den Eingängen anliegen haben. Meine Idee ist nun, daß man die direkte Akkuspannung zum Eingangspin des Arduino über einen p-MosFet schaltet. Dieser wird so angesteuert, dass er die Spannung nur bei eingeschaltetem Arduino bzw Tonuino zum Eingangspin durchschaltet.

Es können natürlich auch andere Mosfets als im Schaltbild angegeben verwendet werden.

Die Funktion ist so:
Wenn über die Einschaltelektronik oder Schalter ect der Tonuino eingeschaltet ist, bekommt der N-Fet positives Potential am Gate und steuert durch. Dadurch wird das Gate des P-Fet gegen Ground gezogen und er schaltet durch. Die Spannung des Akkus gelangt jetzt zum Eingangspin des Arduino . Über die Software muss diese nun ausgewertet werden und die gewünschte Reaktion ausgelöst werden. Heißt im Klartext, wenn die Spannung einen festgelegten Sollwert unterschreitet, wird zum Beispiel eine Warnung ausgegeben. Wird ein weiterer niedrigerer Sollwert unterschritten, schaltet der Arduino über eine Powerdownschaltung den Tonuino aus. Nun liegen die +5V nicht mehr am Arduino an, der NFET sperrt und damit auch der PFET. Die Akkuspannung ist wieder vom Eingangspin des Arduino getrennt.
Wichtig ist hier, dass die Spannung die am Gate des NFET anliegt hinter der PowerOn/Off Schaltung abgenommen wird. Also an den +5V des Arduino.

Wer es ganz einfach haben will kann auch ein Miniaturrelais verwenden, dass Bei eingeschaltetem Tonuino anzieht und dann die Akkuspannung direkt über den Kontakt zum Auswerteeingang des Arduino durchschaltet.

2 „Gefällt mir“

Eine Frage noch dazu. Bin gerade selbst am planen und wollte die Schaltung ebenso aufbauen. Allerdings ohne die beiden 100kOhm Widerstände und den 47kOhm hätte ich jetzt auch nicht so hoch genommen. Hätte 10k genommen. Kannst du mir bitte erklären, wieso du diese Widerstände und auch in dieser Höhe genommen hast? Nicht dass ich da jetzt dann wieder Probleme mit meiner Schaltung bekomme :sweat_smile:.

Die Werte der Widerstände sind unkritisch. Der 100 kOhm am PFet zwischen Gate und Source dient dem zuverlässigen sperren des Mosfet, wenn er nicht angesteuert wird. Der 47 kOhm kann unbedenklich werte zwischen 10 kOhm und 100 kOhm haben. Er dient lediglich als Schutz, falls der NFet mal kaputt gehen sollte indem er z.B. einen Kurzschluss zwischen Gate und Source macht, der dann den Akku kurzschließen würde. Der andere 100 kOhm der in der Leitung zum Analogpin des Arduino liegt ist ebenfalls unkritisch. Er schließt lediglich den Stromkreis vom Akku über den PFet nach Ground. Je kleiner der aber ist, um so mehr unnützer Strom wird dem Akku entnommen. Du kannst hier auch unbedenklich Werte ab 10 kOhm nehmen.

1 „Gefällt mir“

Vielen Dank! Dann werde ich Widerstände übernehmen.

Mal ne Frage, wie lötest du bzw ihr die SMD FETs auf eine Lochrasterplatine?

Das musst du ausprobieren, wie er am besten passt. So auf die Platine legen, dass jedes Beinchen einen Lötpunkt berührt.Mit einer Pinzette oder Zahnstocher geht auch andrücken und vorsichtig löten. Ist ein bisschen fummelig, aber es geht.

Wie sieht es denn auf der Software Seite aus? Gibt es da schon Code den man übernehmen kann?

Noch nicht. Aber mit analogread () und dann vergleich mit Vorgabewerten sollte das kein Problem sein. Sind dann z.B. nur noch die Sounddateien für die Warnungen zu erzeugen und wie der Shutdown dann erfolgen soll. Shutdown an sich z.B. beim Standbytimer ist im Code ja schon vorhanden.

Ich habe in der Kategorie Software einen Beitrag mit dem Code erstellt. Der sollte eigentlich hier mit rein.

1 „Gefällt mir“

Hallo @papa
In meinem letzten Post ist ein Link zu dem Code. Falls du noch Interesse hast kannst du den gerne übernehmen. Eventuell musst du noch ein paar kleine Anpassungen machen. Pin und Akkutyp. Die Zusätzlichen SoundFiles musst du noch generieren. Wenn du mir deine e-mailadresse schickst, kann ich sie dir auch schicken. Sind mit google TTS erzeugt.

1 „Gefällt mir“

Hallo Thomas,

ich hab versucht, Deine Schaltung in meine Platine zu übernehmen. Ich schalte den Arduino über einen Pololu switch und verwende ein Wemos 18650 Battery shield.
Ich hab den unteren Mosfet gegen ein BSS123 getauscht. (Ich hab was in SMD gesucht, was bei Reichelt verfügbar war.)

Wenn ich alles anschließe, ist der Arduino und Pololu Switch-Ausgang spannungslos. Beim Einschalten mit dem Pololu funktioniert auch alles, Spannung des Akku liegt an A5 an. Beim Abschalten des Pololu liegen aber dann weiterhin 2,9V am 5V-Eingang des Arduino an und die Akkuspannung am A5.

Hab ich den falschen Mosfet verwendet? Kannst du mir hier weiterhelfen?

Danke!

Hallo @sirko
Versuche mal noch einen Widerstand an Q2 zwischen Gate und Source (1 und 2) zu schalten. Den Wert musst du ausprobieren. Fange mal mit 100 kOhm an. wenn das nicht ausreicht den wert langsam verringern bis minimal 22kOhm. Vielleicht kannst du da erst mal einen kleinen einstellregler nehmen und damit den besten Wert ermitteln. Gib dann mal feedback ob das was geholfen hat.
Eine weitere Möglichkeit wäre noch, in die Leitung zum Pin A5 einen zusätzlichen widerstand zu schalten. Der wert sollte hier zwischen 22 und 47 kOhm sein.
Ich vermute, dass beim Ausschaltennoch eine Restspannung am Gate von Q2 anliegt, die wiederum zum verzögerten abschalten der Akkuspannung von A5 sorgt. Diese Spannung kann dafür sorgen, dass über die internen Schutzdioden des A5 im Nano der Nano nicht komplett abschaltet und zu unvorhergesehenen Effekten führt. Der Widerstand in der Leitung verringert diesen Einfluss.
Gruß Thomas

Verstehe den o.a. Post so, dass beim Pololu gar keine zusätzliche Schaltung notwendig ist?!
Der Pololu hat doch zwei VOUT Pins. Der eine ginge dann doch an den StepUp und von da an den Arduino und der zweite VOUT eben an den A5. Und wenn der Pololu aus ist, sind dann nicht beide VOUT ohne Spannung?

Hallo Thomas,

danke für die schnelle Hilfe.
Mit einem Widerstand von 56K zwischen Gate und Source am Q2 funktioniert die Abschaltung, ab 57K trat das Problem weiterhin auf. Hab den Widerstand per Copy&Paste in meinen Schaltplan als R Neu gezeichnet.
Variante 2 probier ich noch aus, da ich das deutlich einfacher mit der Platine realisieren kann.

VG

Ich würde zur Sicherheit den widerstand noch etwas weiter verringern. 51 kOhm oder sogar 47 kOhm.

Ich hab mal den gesamten Schaltplan angehängt. Ich hab ein Wemos Battery Shield V3, dass 5V an meine Platine liefert. Ich greife mit J6 (Battery Plus) direkt den +Pol des LiIon-Akku ab.

@thomas: ich hab 47K genommen, da ich nichts anderes da hab und nicht stückeln wollte.