Entwicklung einer Power Bank für einen Laptop. Vom Layout bis zum fertigen Produkt. Zweiter Teil
Im letzten Teil des Artikels über die Entwicklung der PowerBank für einen Laptop haben wir uns auf ein hergestelltes Layout, eine gemessene Effizienz und ein Verständnis für die nächsten Schritte festgelegt . Und dann musste das Stück Eisen wiederbelebt werden. Deshalb präsentiere ich Ihnen Teil zwei: Software-Layout.
Der Bruch zwischen den Teilen erwies sich als ziemlich groß - alle Kräfte wurden auf das Projekt einer schnell aufladbaren externen Batterie geworfen , die jetzt beim Boomstarter Unterstützung findet . Lass uns weitermachen. Um zu verstehen, welche Mikroschaltungen wir programmieren müssen, sehen wir uns das Blockdiagramm des Layouts an. Von hier aus ist klar, dass wir Software für die Steuerung MK (STM32F042) schreiben und das Li-Ionen-Batteriesteuerungssystem + Ladegerät (BQ40Z60) konfigurieren müssen. Ich habe mit dem zweiten angefangen, weil ich diesen Teil für den schwierigsten hielt. Zum Programmieren des BQ40Z60-Controllers benötigen wir: - den Adapter EV2400 und EV2300 ( fertig oder hausgemacht). Ich habe den EV2300 aus früheren Projekten verlassen und ihn verwendet. - Programm
Batteriemanagement-Studio (bqStudio) .Der Adapter wird über den SMBus-Bus angeschlossen, für den Anschluss habe ich Lötpunkte auf den SMBD- und SMBC-Leitungen gelassen. (Nicht die praktischste Lösung - dann wurde mir klar, dass ich den Stecker installieren musste).
Nachdem der BQ40Z60 mit einem Tamburin getanzt hatte, entschied er sich für das Battery Management Studio. Der Grund dafür war der Ruhemodus, in den der Controller wechselt, wenn auf dem SMBus-Bus kein Pull-up und kein Zugriff darauf erfolgt. Er wacht auf, wenn er die Erinnerung verbindet.Als nächstes werden wir den BQ40Z60-Chip direkt abstimmen. Zu sagen, dass er viele Register hat, bedeutet nichts zu sagen. Eine Million Einstellungen. Da die Konfiguration ein langer und komplizierter Prozess ist (zur Beschreibung ist ein separater Artikel erforderlich), werde ich ihn kurz beschreiben.Nach dem Start wird das Hauptfenster von Battery Management Studio angezeigt.
Die Registerkarte Datenspeicher enthält eine Vielzahl von Feldern, in die wir die Batterieparameter und die Betriebsarten der Steuerung eingeben müssen.
Auf der Registerkarte Chemie können Sie versuchen, vorgefertigte Kalibrierungen für die verwendeten Zellen zu finden.
Für meinen YOKU LP 5558115 3500mAh gab es keine vorgefertigten Kalibrierungen (die Kalibrierungen werden übrigens ständig aktualisiert ). Gefunden ähnliche YOKU LP 656193 4000mAh. Nachdem ich festgestellt habe, dass ich noch nichts über die verfügbaren Pakete weiß, habe ich dieses Profil ausgewählt.Dann habe ich auf der Registerkarte Datenspeicher Folgendes konfiguriert:Kalibrierung: Kalibrierungswerte für Voltmeter (Zellen, Batterien und ein externer Adapter), Widerstand des Stromsensors, Kalibrierungswerte für den Temperatursensor.Die Einstellungen:Inklusive Schutz, Thermistoren, LEDs, Ruhemodus, Batteriekonfiguration.Schutz: Einstellen der Schutzschwellen (Spannung, Zeit, Temperatur), Einstellen der Spannungsschwellen des externen Adapters.Permanenter Fehler : Festlegen von Schwellenwerten für irreversible Fehler (sodass ein weiterer Batteriebetrieb nicht möglich ist).Erweiterter Ladealgorithmus: Einstellen des Ladegeräts (Ströme, Spannungen für verschiedene Temperaturbereiche, Vorzeichen des Ladeendes, Ausgleich).Gasmessung: Einstellung des Geräts zur Bestimmung des Ladezustands (Typenschildkapazität / Zellenspannung, Drahtwiderstand, Statistik).Leistung: Einstellen der Betriebsarten des Controllers.PF-Status:Permanenter Fehlerstatus BitstatusSystemdaten: Felder für Herstellerdaten.SBS-Konfiguration: Einstellen der Auslöseschwellen für den Alarmauslöser, grundlegende Batterieinformationen (Seriennummer, Produktionsdatum, Hersteller, Name, Chemie).LED-Unterstützung: Einstellen des Modus der LED-Anzeigelampe.Black Box: Black Box (Verlauf der Änderungen der Statusbits des Schutzes).Lebensdauer: Batteriestatistik.Ra-Tabelle: Eine Tabelle der internen Zellwiderstände.Während des Einrichtungsprozesses habe ich nicht alle Felder geändert, aber dies war genug, um zu beginnen.Mit diesem Teil der Schaltung war nur ein Hardware-Pfosten an den Ausgang der 21-AFEFUSE-Mikroschaltung angeschlossen. Es passierte so:Ich habe den Stromkreis von der Debug-Platine gerissen, mit Ausnahme des Mikrokreises für den Sekundärschutz und der durchgebrannten Sicherung. Der BQ40Z60 verfügt über 21 AFEFUSE-Stifte zum Durchbrennen einer Sicherung (wie ich dachte). Also schaute ich auf die 5. Seite des BQ40Z60-Datenblattes. Ich sah die
Art der Ausgabe Ausgabe in der Tabelle und ließ sie mit gutem Gewissen in der Luft hängen. Die Probleme traten nach dem Löten der Platine auf: Ich habe alle Einstellungen sortiert (und zu diesem Zeitpunkt gab es viele Zweifel), aber es hat nicht funktioniert - die Lade- und Entladungstransistoren ließen sich nicht einschalten. Nach 2 Tagen voller Zweifel / Überlegungen / Versuch und Irrtum bemerkte ich, dass das Bit FUSE_EN nicht gesetzt war und beschloss, "Leute zu fragen", und als ich eine Frage stellte, kam mir ein Einblick
Mit Blick auf die Platine der Debug-Platine schlug ich vor, dass der AFEFUSE-Pin auch ein Eingang sein kann, was durch Abschnitt 9.3.2.4, S. 24 bestätigt wurde. Wenn der Pin nicht verwendet wird, muss er mit Masse verbunden werden. Ich habe es mit einer Pinzette gemacht und es hat funktioniert. Nach 5 Minuten antworteten sie mir auf e2e.com - die Antwort ist klar und richtig, ich drückte mein "Phi" über den Fehler in der Ausgabetabelle aus - sie versprachen, ihn in zukünftigen Versionen der Dokumentation zu beheben.Um die Controller-Einstellungen zu beenden, habe ich 2 Trainingszyklen mit vollem Laden / Entladen + Entspannung durchgeführt (insgesamt 30 Stunden).Fahren wir nun mit der Programmierung des STM32F042 fort. In der Scheinphase benötigte dieser Prozessor nicht viel:- Steuern Sie den Spannungswandler, verarbeiten Sie die Tasten.- Gehen Sie so weit wie möglich in den Schlaf, um den Akku nicht zu entladen.- Lesen Sie die Hauptparameter der Batterie von der Steuerung ab (Spannung, Strom, Ladezustand, Temperatur, Stromzustand, Anzahl der Zyklen, Zeit bis zum vollständigen Laden / Entladen) und geben Sie sie über USART an den PC aus (da der CP2102-Konverter bereits auf der Platine war). Obwohl der Prozessor USB an Bord enthält, habe ich ihn nicht im Layout verwendet, und es wurde ein Layout für 051 MK erstellt, aber ich konnte es nicht kaufen.Die Steuerung des Wandlers wurde auf zwei Schlussfolgerungen (Einschalten und Betriebsmodus) reduziert, wobei die PWM (mit anschließender RC-Filterung) an den Ausgang der LTC3780-Chipumwandlungsfrequenzeinstellung (als Ergebnis wurde die Frequenz auf maximal 400 kHz eingestellt) und an den PowerGood-Signalüberwachungseingang geliefert wurde. Aber auch hier habe ich es geschafft, auf den Rechen zu treten. Der Fehler schwebte und trat auf, als sich die Power Bank für eine lange Zeit hinlegte, was sich darin äußerte, dass sie sich einfach nicht einschaltete. Das Problem war, dass ich zuerst den Interrupt für das PowerGood-Signal vom LTC3780 und dann den Chip selbst (EN) einschaltete. Es stellte sich heraus, dass der Interrupt bereits vor dem Start des Konverters ausgelöst und ausgeschaltet wurde. Ereignisse an bestimmten Stellen neu angeordnet und eine Verzögerung hinzugefügt - das Problem verschwand. Ansonsten war diese Funktionalität einfach.Es wurde beschlossen, eine Benutzeroberfläche mit 1 Taste und 5 (6) LEDs zu erstellen (obwohl sich 2 Tasten und 10 LEDs auf der Layoutplatine befanden). Es funktioniert wie folgt:Das Gerät ist ausgeschaltet -> kurzes Drücken (<500 ms) - Animation des Ladezustands auf 4 LEDs.Das Gerät ist ausgeschaltet -> lange drücken (> 500 ms) - Gerät einschalten (die 5. LED leuchtet auf).Das Gerät ist ausgeschaltet -> Speicher anschließen -> Animation des Ladezustands auf 4 LEDs bis zum Ende des Ladevorgangs.Das Gerät ist eingeschaltet -> kurz drücken - Animation des Ladezustands auf 4 LEDs.Gerät ein -> lange drücken - Gerät ausschalten.Gerät aus -> Stromaufnahme unter 50 mA für mehr als 3 min. - Gerät ausschalten.Dadurch konnten 27 Elemente aus dem Gerät entfernt werden.Ich hatte bereits Erfahrung mit der Implementierung von Schlafmodi auf STM32F0xx, daher habe ich hier nicht mit einem großen Rechen gerechnet. Um den Verbrauch zu optimieren, habe ich zuerst das 3,3-V-LDO durch mcp1703 mit einem geringen Strom meines eigenen Verbrauchs ersetzt (es war notwendig, nicht vom Debuggen abzureißen, sondern es sofort zu installieren). Größe, Preis, Verbrauch, Bodykit - alles weniger als beim LP2951.Dank an Hardegor für die Bearbeitung von LDO für Li-Ion 4s. Mcp1703 kann aufgrund der niedrigen Eingangsspannung nicht verwendet werden. Ich habe LiFePo4 für die Chemie verwendet - es gibt kein solches Problem. Seien Sie vorsichtig!!!-Wenn das Gerät ausgeschaltet ist, befindet sich der MK im STANDBY-Modus und reagiert nur auf Knopfdruck oder Anschließen eines Speichergeräts. Der Verbrauch in diesem Modus beträgt 108 μA (100 davon verbrauchen BQ40Z60).- Wenn das Gerät eingeschaltet ist, befindet sich der Prozessor die meiste Zeit (mit Ausnahme der Momente der Anzeige und Abfrage des BQ40Z60) im STOP-Modus mit einem Verbrauch von 1,5 mA (1 mA ist eine LED). Zum Zeitpunkt der Abfrage und Anzeige liegt der Stromverbrauch zwischen 4,5 und 9 mA.- Wenn ein USB MK im 48-MHz-RUN-Modus angeschlossen ist, beträgt der Verbrauch 15 mA. In Zukunft werde ich den MK in diesem Modus über USB mit Strom versorgen.Das größte potenzielle Problem war die Umfrage BQ40Z60. Ich habe nicht mit SMBus gearbeitet und bis zum letzten Mal gehofft, dass SMBus I2C 1v1 ist (dies liegt teilweise daran, dass die physische Ebene für sie gleich ist), aber es stellte sich heraus, dass die Kanalebene sehr unterschiedlich ist und dies eine Reihe von Schwierigkeiten verursachte. Hier werde ich nicht die Unterschiede zwischen SMBus und I2C beschreiben, sondern einen Link zu einem ziemlich kompetenten Artikel bereitstellen . In der Phase des Layouts war ich nicht in den Kampf gegen SMBus involviert (übrigens bin ich als Programmierer viel schwächer als ein Schaltungsentwickler) und da die Sende- und Empfangsbytebefehle in SMBus und I2C völlig identisch waren, habe ich nur sie verwendet. Als Ergebnis las ich SOC, SOH, Current, CellVolt, TimeToFull, TimeToEmpty vom BQ40Z60. Abhängig von den Werten der Register änderte sich die Betriebsart (Warnungen wurden ausgegeben, es kam zu einem Herunterfahren).Auf der PC-Seite wurde natürlich ein Programm benötigt, das die von der Batterie gelesenen Daten in einer bequemen Form anzeigen konnte. Da ich in Borland C ++ Builder nur GUIs verwenden konnte und dies lange Zeit tat, bat ich den Programmierer, ein einfaches Debugging für mich zu skizzieren. Für eine schnelle Peitsche kam folgendes heraus:
Dies ist die gesamte Arbeit, die in der Layoutphase ausgeführt wurde. Weiter in den Plänen (und da ich die bereits abgeschlossenen Operationen beschreibe, wurde ein Teil der Arbeit bereits ausgeführt), die Übertragung technischer Spezifikationen an den Konstrukteur für die Entwicklung / Herstellung des PowerBank-Pakets, Fehlerkorrektur / Überarbeitung der Schaltung, Änderung der Platine für den Fall, Softwarerevision. Danach ähnelt das Gerät einem Produkt und wird nach Fertigstellung zu einem Produkt im wahrsten Sinne des Wortes. In den folgenden Teilen des Artikels werden wir die Phasen und Hauptschwierigkeiten des Übergangs von einem Layout zu einem fertigen Produkt betrachten, an der Verpackung arbeiten, die Kosten für verschiedene Lösungen und Vorgänge berücksichtigen, optimieren und auch das Endergebnis sehen. Source: https://habr.com/ru/post/de386899/
All Articles