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

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:

Hardware ist die BOBHat V5a Platine, den SW1 habe ich bestückt. Den Lipo hatte ich wahlweise über den pyTrack oder direkt über die BOB Platine angeschlossen.

Dann wird es das von @MKO geschilderte Problem sein, dass der selbe pin für die Spannungsmessung und den SW1 verwendet wird.

Mein Vorschlag wäre:

  • BOBHat V5a zumindest den R4 rauslöten / unterbrechen und einen anderen pin als Switch nehmen, dann sollte es hier gehen
  • pyTrack hate der überhaupt einen voltage divider, nur laut gedacht, ich kenne das Teil gar nicht, du wirst vielleicht auch andere Werte eintragen müssen so das Ding die Spannung messen kann
  • mit dem expansion board alleine und LiPo ohne USB sollte es aber funktionieren mit diesen Werten:

OT

Siehe VBATT on pysense and pytrack | Pycom user forum und Pytrack & Pysense Battery Voltage Measurement | Pycom user forum

Ggf. ein anderer Mechanismus um Strom zu messen. Kann das ggf. das GPS un die Daten kommen von da?

Es scheint der Widerstand R4 für den SW1 gewesen zu sein. Ich habe diesen jetzt ausgelötet und jetzt sind die Werte der Messung im erwarteten Bereich, zunächst ohne angeschlossenen pyTrack. Ich mache morgen noch einen Test mit dem pyTrack zusammen, um zu sehen ob das einen Einfluss auf die Messung hat. Danke noch mal für die Hilfe!

Klasse, das wir so schnell helfen konnten.

Wir Sollten aber noch in der Doku eintragen, das entweder SW1 oder R10+R11 je nachdem welche Funktion gewünscht ist, bestückt werden dürfen.
BOB-HAT Platine selbst löten @Clemens Kannst Du das dort berarbeiten? [edit] done, cg]

Bin mir gerade nicht sicher welchen Switch wir da jetzt empfelen sollten.
Flash fällt ja auch weg, wenn wir die RGB nutzen wollen. Der Button ist aktuell ja auch nur für Hiverize/FiPy von interesse, wo es aber keine Spannungsüberwachung gibt. Beim Terkin-Datalogger hingegen gibt es die Spannungsüberwachung, dafür aber keinen Switch.Will jetzt irgendwie nicht, das wir jetzt beim Wechsel der Firmware ständig hin und her Löten müssen.

2 Likes