Batterieüberwachung, voltage divider und attenuation für MicroPython-Firmware

Gut, dann warte ich damit bis zum nächsten Hardware-Upgrade ;].

1 Like

Einige input voltages und die zugehörige “Messung” des WiPys mit 10 MΩ / 2 MΩ voltage divider und 6 dB attenuation: – Passt für unsere Anforderung(en), würde ich sagen!

2 Likes

Man kann den FiPy mit einem normalen USB-Netzteil betreiben. Für nicht so hohe Ansprüche geht man von 5.0 V aus. Es gibt aber preiswerte USB-Meter ab 3,30 € bei Reichelt. Gute Netzteile liefern im Betrieb oft 5.2 V.
Auf einem Workshop sollte so etwas vorhanden sein.

Gut wär möglich, wär aber für mich ein klarer Fall fürs künftige Webinterface, da er ja nur das allererste mal die werte errechnen muß. Man hat 2 Möglichkeiten den Wert einzugeben, entweder das Verhältnis der Wiederstände, oder die Spannung die gerade anliegt.
Er würde dann anhand der Ist und Soll Spannung die Werte umrechen und das Verhältnis Aktualisieren.

Dieses könnte man zur Not auch bei der Vorkonfiguration der Nodes machen, da ja jeder Node für den Workshop einen eigenen AP braucht, um ihn zu erkennen und wiederzufinden. Wenn man die AP Konfiguriert einfach ein Netzteil mit bekanntem Spannungswert nehmen und den Wert eintragen.

Allerdings müssten wir vor der Umrechnung auch noch beachten, ob er die Spannung überhaupt mit dem Aktuellen werten überhaupt messen kann.

ich hab zwar bisher mehr mit dem esp8266 als mit dem esp32 gemacht und war zumindest erstmal verwirrt von den attenuation settings (die hat der 8266 afaik nicht)

fuer seinen adc war der ‘alte’ auch nicht beruehmt… aber ich darf hier mal aus dem datenblatt vom esp32 zitieren:

seite 23:
By default, there are ±6% differences in measured results between chips.

drunter gibt es noch eine tabelle was die ‘effective measurement ranges’ der moeglichen attenuation configurationen mit haarstraeubenden grenzwerten.

um ganz ehrlich zu sein… das ist soviel adc wie der alte joystick-port einer soundblaster isa karte. (das waren schmitt-trigger mit kondensator die man mit einem write auf den port entladen hat und dann gewartet bis die bits wieder kippen und die jeweilige zeit gemessen fuer ‘potiposition’ … das musste man dauernd kalibrieren und war nonlinear as s***

TL:DR wenn die spannung genauer gemessen sein soll als ‘iss so ungefaehr halb voll… vll auch 3/5!!1!’ wuerde ich einen einfachen i2c adc vorschlagen.
gibts fuer einzelne euro beim ebay chinesen mit chips von den ueblichen verdaechtigen (maxim, ti, analog, etc.). da gibts dann auch doku mit erklaerung wie die reference voltages gemeint sind und funktionieren. ;)

soll nicht heissen das der esp schlecht waere, aber analoge dinge waren bisher nicht so die staerke der plattform.

2 Likes

Low-voltage cut-off

Für die nächste Iteration ab terkin-datalogger/doc/backlog.rst at 0.5.1 · hiveeyes/terkin-datalogger · GitHub


Zum Beispiel so etwas wie der TPS3839 low-voltage battery cut-off IC?

Wäre erst mal pragmatisch: Deep Sleep forever!

Wir sollten konservativ bei der Feststellung von low batterie sein, damit man nicht mit einer falschen Messung des System abschaltet, obwohl es nur ein Ausreisser war.

Zwischendings

Low-voltage cut-off

Devise: Vorschläge einholen und pragmatisch-sinnvoll implementieren.

@clemens:

  • Deep Sleep forever!

    Meinetwegen optional erstmal klar weil am einfachsten. Eine Mini-Ausbaustufe à la “vorher erstmal lustige Blinkmuster rauswerfen um zu warnen” fände ich aber nett.

  • Wir sollten konservativ bei der Feststellung von “low battery” sein, damit nicht…

    Klar klar, immer konservativ. Aufgrund von misreadings abzuschalten wäre natürlich fatal. Entsprechende Algorithmen nehme ich mit Kußhand, dann kann ich mir die Nachforschungen in Richtung estimating battery life - MicroPython Forum (Archive) sparen. Am besten natürlich gleich als Implementierung in (Micro-)Python.

Spannungsmessungsdämpfung whatever

  • Bei der Spannungsmessung über den internen ADC des FiPy ist fraglich, ob wir nach der Korrektur der nun richtigen Widerstandswerte passend zum Voltage Divider – nun mit 6dB oder 11dB Dämpfung messen sollten, schließlich ergeben sich daraus unterschiedliche Meßwerte. Ohne (Un-)Sicherheit an dieser Stelle brauchen wir auch kein low-voltage cut-off machen.

Noch mehr

Falls ich noch offene aber wichtige Punkte bei dieser Übersicht vergessen haben sollte, ergänzt sie gerne für mich.

Dieser Artikel beleuchtet das Thema: Akku-Monitor.pdf (1,8 MB)

Im Pycom-Forum tauchten ein paar neue Beiträge zum gleichen Thema auf, was uns hier umtreibt.

Ob wir mit 6dB oder 11dB messen hängt von der erwarteten maximalen Spannung am Messpin ab und die hängt wieder von dem eingesetzten voltage divider ab, der fürs expansion board und für unsere boards unterschiedlich sind. 6dB sollte aber für alle BOB-Heads / shields passen. Bei der zusätzlichen Nutzung des expansion boards muss der voltage divider dort per jumper deaktiviert werden.

vielleicht eine bloede frage… aber kann man das shield ‘detecten’ ?
also via i2c oder aehnliches einen id register auslesen der auf dem andren board nicht da ist…

nur so ne idee. dann koennte man da automagisch presets umschalten… ;)

Theoretisch ja. Man könnte bestimmte unbenutzte Ports z.B. gegen Masse schalten und dann beim hochfahren abfragen. Aber sowas ist, denke ich, unerwünscht und hinderlich. Du musst bedenken, das hier alles open source ist, also Nachbau und Weiterentwicklung erwünscht. Das würde dem nicht gerade dienlich sein.
Man könnte aber im zukünftigen Capital Portal eine Auswahl machen wie Board A; Board B; Board C und Benutzerdef.

A post was split to a new topic: LiPo-Überwachung mit einem MAX 17043

Ich wollte mal fragen, ob es bei der Batterieüberwachung bzw. Spannungsmessung mit dem FiPy/LoPy irgendwelche Änderungen oder Fortschritte gab.

Hintergrund ist, dass ich an meinem LoPy4 - ob mit oder ohne angestecktem pyTrack - keine plausiblen Werte bei der Spannungsmessung erhalte, obwohl die Werte für den Spannungsteiler richtig eingestellt sind der settings.py (BOBHatV5a mit 10M und 2M). Dabei ist es auch egal, ob ich einen Lipo verwende oder das Board über USB betreibe.

Ich habe schon ungefähr alle mir eingefallenen Kombinationen beim Einstellen der Widerstandwerde ausprobiert und komme hier leider nicht mehr weiter. Wenn ich die Werte von 10M und 2M einstelle ist der Spannungswert konstant auf 10.99 V, egal ob per USB oder Lipo versorgt. Stelle ich z.B. 1k und 1k ein, so ist der Spannungswert konstant 3.664 V, mit und ohne pyTrack.

Da kann bei mir ja irgendwas grundlegend nicht stimmen, oder? Ich habe schon gemessen, ob ich die richtigen Widerstände eingelötet habe und habe die Lötstellen sogar schon nachgelötet, weil ich keine andere Idee mehr hatte…

Sollte eigentlich funktionieren, allerdings habe ich es mit einer neueren Firmwareversion noch nicht wieder probiert. Kann sein, das bei einem Release er aus versehen mal auf der strecke geblieben ist.
Wenn ich mir den Schaltplan von @didilamken anschaue ist mir aber ein weiteres Problem aufgefallen, falls die SW1 bestückt wurde, ist der Spannungsteiler zwischen Vin und GND (R10+R11) auch noch zusätzlich über R4 mit 3V3 verbunden ?!?

1 Like

ups! nicht gut! @didilamken magst du mal schauen und das fürs nächste Release merken.

Was verwendest du denn als Hardware? Den LoPy4 und wo ist der LiPo angeschlossen? Was beim pyTrack passiert weiß ich nicht. Hast du mit expansion board solo versucht oder eine eigene Platine? Eigentlich funktioniert die Spannungsmessung nämlich!

Bei externen voltage dividern plus expansion board auch das berücksichtigen: