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

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

Hier noch die Info bzgl. angeschlossenem pyTrack: die Spannungsmessung ist auch mit angeschlossenem pyTrack ok. Die Spannungswerte liegen in einem plausiblen Bereich, z.B. beim Anschluss über den USB-Port am Laptop werden 4,70 V gemessen. Die Messung wird durch den pyTrack also wohl nicht beeinträchtigt.

1 Like

Kannst den Wert ja mal spasseshalber mit

import pytrack
py = pytrack.Pytrack()
print( '{}V'.format(py.read_battery_voltage()))

vergleichen, s. VBATT on pysense and pytrack | Pycom user forum

Ein kleiner schneller Test mit Strom über den USB Port am Notebook:
Terkin readout: 4.692 V
Pytrack readout: 4.761971 V

Unterschied ist also ca. 0.07 V und in diesem Rahmen wohl vernachlässigbar, oder?

1 Like

In Anbetracht, das die Messmethode von Hause aus nicht die genaueste ist, ist das auf alle Fälle zu vernachlässigen.