Hallo, ich muss mal bei den Experten nachfragen, ob jemand eine gute Idee hat. Undzwar würde ich gerne für mein Lithium BMS in Zukunft auf daisy chain, das heißt die Cell Boards alle mit einem Kabel vom nächsten Cell Board beschalten. Aktuell sind alle "Parallel" per Optokoppler anzusprechen. Hat jemand eine Idee wie man das implementieren könnte? Man könnte natürlich einen Level Shifter bauen, damit der nächste das Signal bekommt, aber meine Frage zielt eher auf das Problem ab, dass bei einer Reihenschaltung von zb. 40 Zellen das 1. Cell Board die Daten rausschieben muss, und durch alle Cell Boards "durchwandern" muss, bis ans letzte, welches dann wieder mit der Main Unit verbunden ist. Oder wäre es sinnvoll die Schaltung so auszulegen, dass bei anlegen eines Signals an der Leitung, automatisch alle Cell Boards das selbe Signal bekommen, natürlich gäbe es da einige ns - µs Zeitunterschiede, aber zumindest wäre das Signal, relativ schnell auch vom 1. Board am Ende. Danke schonmal an alle die sich meinem Problem annehmen wollen :) Lg Florian
Als ob ich das nicht schon in einem anderen Thread gesagt hätte: Einfache Koppelkondensatoren (wie für Audio) reichen, wenn man kurze Impulse überträgt. Kondensatoren wirken sogar bidirektional. Optokoppler fressen viel zu viel Strom., Transformatoren sind zu aufwändig, Basis-Transistorschaltung ist aufwändiger und braucht auch im Strom.
Hallo MaWin Danke für deine Antwort. Du hast natürlich recht, Kondensatoren bieten sich dafür ideal an. Aber meine Frage zielt ja auch auf das System ab, wie ich sie verschalten soll. Das heißt echt in Serie, sodass die Daten durch jedes Board durch müssen, oder eben mehr oder weniger parallel, wo jedes Board die selben Daten zum "selben" Zeitpunkt bekommt. Bei zweiterem ist das Problem, dass ich die Zelladressen vorher einprogrammieren muss, da sie sich ja zu beginn komplett ident verhalten, und ich nicht unterscheiden kann ob es Cell Board 1 oder Cell Board 40 ist. Grüße Florian
Bei Kondensatoren kann man einen BUS aufbauen, ähnlich I2C, in dem zwar zu einer Zeit nur einer Senden kann, aber alle hören. Damit ist es nicht nötig, eine Daisy-Chain mit getrennten Ein-Ausgängen für den Anschluss nach "unten" und den Anschluss nach "oben" zu haben, und den Prozessor eine Weiterleitung machen zu lassen für Daten/Befehle die ihn nicht interessieren, aber die weiter "oben" interessieren könnten. Da aber die Daisy Chain es erlaubt, daß ein Prozessor nicht seine Adresse / Position im Akku kennen muss, weil beispielsweise als Adresse ein Byte im Kommando verwendet wird, das bei Weiterleitung immer um 1 dekrementiert wird, und bei 0 fühlt sich dann der Prozessor angesprochen, habe ich das als Daisy-Chain mit "interception" aufgebaut. Ist einfacher als ein DIP-Schalter oder unterschiedlich geflashte Prozessoren pro PCB.
Das hört sich sehr interessant an, hast du zufällig genauere Informationen, über dein BMS? Das Bus System - einer sendet alle lauschen, war schon so geplant, deine Ausführung zu folgendem ist mir allerdings noch nicht 100%ig klar. [quote] Da aber die Daisy Chain es erlaubt, daß ein Prozessor nicht seine Adresse / Position im Akku kennen muss, weil beispielsweise als Adresse ein Byte im Kommando verwendet wird, das bei Weiterleitung immer um 1 dekrementiert wird, und bei 0 fühlt sich dann der Prozessor angesprochen, habe ich das als Daisy-Chain mit "interception" aufgebaut. [/quote] Angenommen, der Master sendet ein Byte aus, dieses Byte bestimmt die Adresse des Cell Moduls. Sendet nun der Master zu beginn, wenn jeder Flash gleich programmiert ist, das Byte "1", so würden alle dem Master lauschen ( alle bekommen die Daten gleichzeitig ) und jeder würde antworten, bzw. dekrementieren. Diese "Weiterleitung" funktioniert doch mit dem BUS System via Kondensator nicht, oder habe ich deine Ausführung hierzu falsch aufgefasst? Danke für deine Hilfe Florian
Master sendet "Spannung Akku 2" an den "downward" Eingang an ersten uC (der an Akku 1 sitzt) der decrementiert die Adresse (aus 2 wird 1) vergleicht auf 0 (nein) also sendet er es (mit Adresse 1) über den "upward Ausgang" an den "downward" Eingang des nächsten uC (der an Akku 2 sitzt) der decrementiert die Adresse (aus 1 wird 0) vergleicht mit 0 (ja) du fühlt sich angesprochen die Spannung zurückzusenden, über den "downward " Ausgang an den uC am Akku 1, der er weitersendet an den Master. Dadurch reicht dasselbe Programm für alle Zellen, und wenn "Spannung Akku 4" nicht antwortet, gibt es eben nur 3 Zellen. Der letzte uC kann sogar durch eine Kurzschlussbrücke statt einem Verbindungskabel feststellen, daß er der letzte ist und mit "no more cells" antworten.
Hallo, ja dann habe ich dich vorher falsch verstanden. So ergibt das Sinn :) Aber das hieße ja, eine Anfrage vom Master muss durch alle unteren Cell Boards durch, bevor es beim angesprochenen ankommt, das heißt Master sendet Anfrage an Zelle 40. Zelle 1 - Zelle 39 lesen ein, dekrementieren, und geben wieder aus. Das heißt um die Zelle 40 abzufragen, braucht es die 40 - fache Zeit als wenn ich Zelle 1 abfragen möchte. Insgesamt hieße das, für eine Komplettabfrage, brauche ich die 800-fache Zeit, wie wenn ich nur Zelle 1 abfrage. Wird das System dadurch nicht etwas sehr träge? Gruß Florian
Florian schrieb: > Wird das System dadurch nicht etwas sehr träge? SPI ist ziemlich schnell, und es kann ein Byte schon gesendet werden bevor die ganze Botschaft angekommen jst. Schlimmer ist, dass man alle uC aufwecken muss, um eine Anfrsge an den letzten stellen zu können. Aber wenn man sekündlich abfragt, sind die uC immer noch 99.9% der Zeit im Sleep Modus, und sekündlich ist unnötig schnell.
Hallo, da hast du natürlich recht. SPI wäre mir zwar sehr recht, da es zumeist schon in Hardware vorhanden ist, allerdings müsste ich das ganze ja synchron machen, das heißt den Takt müsste ich mitübertragen, was ich eigentlich nicht will, dann bräuchte ich schon 2 Leitungen. Hast du es per SPI gelöst?
Florian schrieb: > Hast du es per SPI gelöst? Nein, Software-seriell da ich 2 brauchte und der Pin auch als wake-up dienen konnte. Zudem gab es ein Kommando das ganz nach oben gereicht wurde und dann die ganze Kette von Spannungswerten lieferte.
Hallo, das hört sich interessant an, mit welcher Datenrate verwendest du die Übertragung?
Hallo MaWin, ja es ist etwas Zeit vergangen, allerdings hatte ich einiges zu tun und bin nicht zum weiterarbeiten gekommen. Ich wollte dich nochmal auf dein serielles Protokoll ansprechen, bzw. die Hardware realisierung. Hast du eventuell einen Schaltplan für mich? Du sagtest du kannst bereits Daten rausschicken, während du noch nicht das komplette Datenpaket empfangen hast, wie genau realisierst du das denn ? Darf ich dich auch eventuell nach dem Protokoll dahinter fragen? Wie unterschiedest du 0/1, über die Zeit? Danke Grüße Florian
Hallo, der LTC6820 hört sich zwar gut an, aber mit knapp 10€ für 2 Stück pro Platine ist der auch reichlich teuer.
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.