Hallo zusammen, ich hab zwar einen PPK2, aber das passt nicht überall (z.B. uC in einem BMS an einem 7S-Akku). Deshalb habe ich mir auf Basis des INA239 einen Power Profiler gebaut. Hat jemand Lust, mal über den Schaltplan zu schauen? Ich bin sehr dankbar dafür. Das QSPI und die SD-Karte sind dazu da, dass der Profiler auch eine Weile aufzeichnen kann ohne dass ein Laptop/PC am USB hängt. Zudem ist die Funktion ganz nützlich, wenn man galvanisch getrennt messen will. Um Strom zu sparen, wird der DC/DC bei ausgeschaltetem Gerät oder langen Aufzeichnungsintervallen ausgeschaltet. Er kann über die RTC (PC13), den OK-Button oder durch einstecken der USB-Versorgung oder der 5V vom JLink Adapter wieder eingeschaltet werden. Der uC kann dann die Selbsthaltung über ENABLE DC/DC aktivieren. Dazu wird die RTC über eine Schottky-Diode direkt von der Batterie, nach de Gas Gauge, gespeist. LG, Eduard
Ah, sorry, hab gerade noch einen Copy-Paste-Fehler gesehen: Beim J301 sollte Battery, nicht OLED stehen.
Brauchen deine Buttons keine Pull-Widersände? Wenn du dem OLED di Spannungsversorgung aus schaltest, darfst du keine HIGH Pegel mehr auf dem I²C Bus haben. Hast du aber (wegen der Pull-Up Widerstände). Du könntest die beiden Leitungen per Software auf LOW ziehen, um die Bedingung einzuhalten. Es hängt ja sonst nichts dran. 10 kΩ Pull-Ups wären mir zu hochohmig, ich rechne immer mit 1-2 mA. Siehe https://www.nxp.com/docs/en/user-guide/UM10204.pdf Kapitel 7.1
Hallo Nepomuk, danke fürs drüberschauen. Zu den Pull-Ups: Das macht der Controller. Beim ButtonOK ist im Ausgeschalteten Zustand der Pull-Up via R302 (1k) und R303 (1M) vorhanden. Die I2C-Leitungen gehen auch zur Gas Gauge. Die kann ich ja auch über eine PFET Parallel zur OLED-Versorgung schalten, oder? Die Pull Ups werde ich dann zu 2k ändern, dann bin ich bei 1.5mA. Danke und LG, Eduard
Eduard I. schrieb: > Zu den Pull-Ups: Das macht der Controller. Ich hoffe, du hast Taster eingeplant, die keinen Wetting Current brauchen. Ich habe leider zu viele Geräte gesehen, deren Taster genau deswegen degradierten. Im Zweifelsfall empfehle ich mindestens 1 mA, besser mehr. Eduard I. schrieb: > Die I2C Leitungen kann ich ja auch über eine PFET Parallel > zur OLED-Versorgung schalten, oder? Vermutlich nicht, weil die Leitungen bidirektional arbeiten. Warum schaltest du das Display nicht per Befehl in einen Ruhezustand?
Ich bin nochmals in mich gegangen. Ich brauche natürlich N-Fets, um die SDA und SCL-Leitung zu schalten. So wie im Anhang. Korrekt, oder?
Alle STM32, die mir bisher unterkamen, haben die Widerstände für D+ und D- eingebaut. R210 und R220 sollten also 0 Ω haben. Andererseits baue ich üblicherweise einen Serienwiderstand in die MISO-Leitung zwischen INA229/INA239 und der MCU ein, ich hatte schon Probleme mit Reflektionen. In der Gegenrichtung kann man die Flankensteilheit per Software einstellen. Der ESD-Schutz für R212 und R213 ist unnötig. D201, D202 und D203 sollten uni-direktional sein, denn der INA239 mag es nicht, wenn VBUS, IN+ oder IN- negativ werden. Da fehlt eine Sicherung (analog F201) in der Leitung zu J204.4. Ist 5A für die Sicherungen nicht etwas viel für die armen TVS-Dioden? Ist SMJ85CA ein Tippfehler für SMBJ85CA? Für D+ und D- bevorzuge ich den USBLC6-2SC6 gegenüber dem USBLC6-4SC6, damit werden Stichleitungen reduziert. Da der STM32L476 aber eh nur LS/FS kann, ist das hier kein Problem. PC13 sollte man lieber nicht benutzen, kann den LSE stören.
Nemopuk schrieb: > Vermutlich nicht, weil die Leitungen bidirektional arbeiten. Warum > schaltest du das Display nicht per Befehl in einen Ruhezustand? Hallo Nepomuk, guter Punkt, ich hab gerade mal nachgeschaut. Das SSD1306 brauch <5uA im Sleep Mode. Du hast absolut recht, da muss ich nix schalten, bei den 6Ah Akku hat das kaum einen Einfluss auf die Laufzeit. Ich hatte übersehen, dass die Ladungspumpen im Sleep ausgeschaltet werden. Danke für den Wink mit dem Zaunpfahl.
Hallo Anton, herzlichen Dank für Deinen wertvollen Input. Noch eine Frage: Anton schrieb: > PC13 sollte man lieber nicht benutzen, kann den LSE stören. Was wäre die alternative? Ich wollte eigentlich PC13 nutzen, um den DC/DC per RTC starten zu können, um zum Beispiel der Gas Gauge die Batterietemperatur zu übergeben oder bei Messungen mit sehr langem Intervall zwischendurch den DC/DC auszuschalten. Danke und Gruss, Eduard
Mit den angegebenen Werten von R307 und R308 liefert der TPS63020 3,0 V, nicht wie beschriftet, 3,3 V. Der TPS63020 möchte 3x 22 µF am Ausgang, bekommt aber nur 5x 10µF plus 100 nF. Das Datenblatt sagt nicht, daß der DC Bias eingerechnet ist.
Wenn Dir die Pins ausgehen, kannst Du einen INA238 statt INA239 verwenden. Aber ENABLE_OLED hat sich ja eh als überflüssig herausgestellt.
Eduard I. schrieb: > Anton schrieb: >> PC13 sollte man lieber nicht benutzen, kann den LSE stören. > Was wäre die alternative? Ein externer 32kHz-Oszillator, z.B. OV-7604-C7 oder SIT1630AI-S4-DCC-32.768E.
Hallo Anton, Anton schrieb: > Der TPS63020 möchte 3x 22 µF am Ausgang, bekommt aber nur 5x 10µF plus > 100 nF. Das Datenblatt sagt nicht, daß der DC Bias eingerechnet ist. Mit den 3V hast Du natürlich recht, danke. Da habe ich vergessen, die Beschriftung zu ändern. Wegen den Ausgangskondensatoren... Webbench schlägt da 3X10uF/6.3V vor. Ich habe 4x10uF/25V vorgesehen, das wären dann Effektiv bei 3V so um die 36.9uF, wenn wir von einem DC-Derating von 8% ausgehen. Mit
Komme ich bei einer Frequenz von 2.4Mhz und einer Eingangsspannung von 4.2V auf 238mA Ripplestrom in der Spule. Das ergibt dann nach
eine Ausgangsripplespannung von < 350uV (Ich ignoriere jetzt mal den ESR der Kondensatoren, der liegt bei um die 0.72 mΩ. Sollte doch in Ordnung sein, oder Übersehe ich da was? Natürlich ist das der Idealwert, das Platinendesign wird da die entscheidende Rolle spielen. Im Power Save Mode wird der Rippel dann ca. die 25mV Hysterese des PSM sein, oder?
Anton schrieb: > Wenn Dir die Pins ausgehen, kannst Du einen INA238 statt INA239 > verwenden. Aber ENABLE_OLED hat sich ja eh als überflüssig > herausgestellt. Den kannte ich noch gar nicht, der ist Durchaus eine Überlegung Wert, vor allem da die Offsetspannung einiges geringer ist als beim INA239. Nochmals zum PC13: Die RTC kann aber gar keinen andern Pin als den PC13 zum Aufwecken nutzen? LG, Eduard
SD-Karten haben ziemlich fiese Lastspitzen mit mehreren Hundert mA, gerade wenn man schnell schreibt (was du ja per SDMMC machst). Eventuell wäre ein größerer Pufferkondensator sinnvoll, und vielleicht ein FET mit geringerem R_DSON. Oder gleich ein Load-Switch.
Eduard I. schrieb: > Die RTC kann aber gar keinen andern Pin als den PC13 > zum Aufwecken nutzen? Ja, das ist der einzige Pin, der aus VBAT versorgt wird (neben PC14 und PC15, aber die brauchst du ja anderweitig). Du kannst entweder den LSE oder den PC13 benutzen. Also vergiss den LSE und benutze PC13, die 32kHz kann man auch extern erzeugen und das zuverlässiger und genauer. Noch besser: vergiss die ganze interne RTC und spendiere einen RTC-Chip mit integriertem Quarz. Der INT-Ausgang ersetzt dann den PC13. INT ist Open Drain, also aktiv Low. Du kannst den parallel zum OK-Button anschließen. Das spart auch die zwei lästigen 18pF. Wenn der Akku abgeklemmt wird, muss die Uhr neu gestellt werden. Um das zu überbrücken, gibt es RTC-Chips mit integrierter Ladeschaltung für SuperCaps, z.B. RV-3032-C7. Der hat auch ein sehr gutes Preis-Leistungs-Verhältnis.
Die offizielle Lösung für das PC13-Problem ist, den STM32L476MGYxT zu verwenden.
Eduard I. schrieb: > Anton schrieb: >> Wenn Dir die Pins ausgehen, kannst Du einen INA238 statt INA239 >> verwenden. Aber ENABLE_OLED hat sich ja eh als überflüssig >> herausgestellt. > > Den kannte ich noch gar nicht, der ist Durchaus eine Überlegung Wert, > vor allem da die Offsetspannung einiges geringer ist als beim INA239. Nein, INA238 und INA239 sind bis auf SPI vs. I²C identisch. Vielleicht schautest Du ins Datenblatt des INA228 (I²C) oder INA229 (SPI)?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.