Spannungsmessung und automatische Abschaltung bei leerem Akku

Einzeiler zum Test:

Serial.println(analogRead(A6));

Aber nicht wundern wenn da dann eine Zahl zwischen 0 und 1024 raus kommt das ist der roh wert des 8 bit adc.

Klaro. Deswegen meinte ich ja zum Test. Muss man dann natürlich entsprechend umrechnen oder ggf. mit map() arbeiten (wobei das mit integern arbeitet, für Spannungen in dem Bereich eher unvorteilhaft).

Hallo zusammen,

ich setze ebenfalls gerade die Spannungsmessung für zwei Tonuino’s um.
Bei einem funktioniert es tadellos, bei dem anderen erhalte ich immer den Wert 1023, egal welche Spannung anliegt.

Überprüft habe ich folgendes:

  • Spannung (Lifepo4 Akku) mit dem Multimeter überprüft, es liegen 3.45 V an.
  • ich habe es an den Analogen Pins A3-A5 getestet (auf die anderen habe ich auf Grund meines Setups leider keinen Zugriff)
  • Test mit verschiedenen Kabeln

Hat vielleicht noch jemand Ideen was ich testen kann, oder ist mein Arduino hinüber?

Viele Grüße

Also wenn es bei einem Arduino funktioniert, und der gleiche Sketch auf einem anderen nicht, muss es ja am Aufbau bzw. an der Hardware liegen?!

Hast du ma einen kleinen Testsketch geschrieben, mit dem du den ADC testen kannst? Um jegliche andere Auswirkungen auszuschließen.

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!