Hallo miteinander,
ich arbeite gerade an einem Projekt für einen Battery-Balancer und kann
dabei über Ausgänge meines µC wählen, welche der 4 Batterien entladen
werden soll. Solange ich jeweils einen Ausgang auf High schalte,
funktioniert alles problemlos, und so ist es prinzipiell auch
programmiert.
In einem potentiellen Fehlerfall könnte es jedoch dazu kommen, dass der
µC 2 oder mehrere Ausgänge gleichzeitig schaltet, wodurch es zu einem
Kurzschluss der Batterien kommen würde. Dies möchte ich vermeiden, und
zwar durch eine Verriegelung der Ausgänge gegeneinander, und zwar
hardwareseitig (um softwarebugs generell zu vermeiden).
Habt ihr dafür eine Idee? Gibt es für sowas einen fertigen IC? Im
Prinzip wäre es ja eine 4fach-XOR-Schaltung oder?
Danke und viele Grüße,
Thomas
Im einfachsen Fall eine Transistor Dioden Logig, bei der jeder aktive
Ausgang die Ansteuerung der anderen Transistoren blockiert.
Bei gleichzeitigem Schalten wird eben einer gewinnen.
Unter "Hardware-Verriegelung" stelle ich mir eher Relais mit
Umschaltkontakten vor. Für 4 Akkus reichen 2 Relais mit je 2xUM. Evt.
können die auch direkt die Last schalten, das würde 4 fette FETs sparen.
Hier will ich mal den Begriff "break bevor make" einwerfen. Der nächste
Ausgang sollte erst eingeschaltet werden, wenn der alte schon
ausgeschaltet ist. Eine Überschneidung von 1ms und auch weniger kann
schon verheerende Folgen haben.
Blackbird
Man nehme Relais mit Wechsler, oder 2. Kontaktsatz und deren Öffner.
Und dann wird über die Öffner gegenseitig verriegelt.
Sollte ein Relais mal hängen, so ist die Sicherheit gegeben, da der
Öffner offen ist.
Von welcher Größenordung der Batterien reden wir überhaupt?
Von 100 mAH, oder 65 Ah?
Eine mit mächtig Ah lässt nicht mit sich spaßen bei Kurzschluss. Hier
würde ich extrem sicher gehen wollen.
Thomas W. schrieb:> Habt ihr dafür eine Idee? Gibt es für sowas einen fertigen IC? Im> Prinzip wäre es ja eine 4fach-XOR-Schaltung oder?
Mit rein kombinatorischer Logik kommst du nicht weiter. Du solltest auch
über Zeiten nachdenken. Um einen Kurzschluss zwischen zwei Batterien zu
vermeiden, brauchst du eine Schaltfunktion mit break-before-make, d.h.
du darfst den schließenden Kontakt erst mit Verzögerung freigeben.
Falls du das Programm nicht anpassen kannst (erst alle Ausgänge aus,
kurz warten und dann wieder den richtigen einschalten, Watchdog nicht
vergessen zu nutzen), sollte ein 74xx154 helfen, denn der ist ein
4-Bit-Binärdekoder (4 zu 16) und würde die 4 Ausgangssignale des µCs auf
4 korrekte und 12 "ungültige" Ausgänge kodieren.
Hallo an alle,
die Lösung mit 74xx138 hat mir gut gefallen, leider ist dieser am
Ausgang invertiert. Deswegen hab ich jetzt ein Auge auf den 74xx238
geworfen. Dieser ist am Ausgang nicht invertiert. Und wenn ich das
Datenblatt richtig interpretiere, dann steht da:
The 74HC238; 74HCT238 decodes three binary weighted address inputs (A0,
A1 and A2) to eight
mutually exclusive outputs (Y0 to Y7)
Demnach sind die (lediglich) 4 Outputs, die ich verwenden möchte,
gegeneinander verriegelt, richtig?
Die anderen 4 Outputs würde ich offen lassen, ist das korrekt?
Danke schonmal für die guten Ideen =)
Grüßla,
Thomas
Thomas W. schrieb:> Demnach sind die (lediglich) 4 Outputs, die ich verwenden möchte,> gegeneinander verriegelt, richtig?
Ja.
> Die anderen 4 Outputs würde ich offen lassen, ist das korrekt?
Ja.
Aber den dritten, nicht benutzten Eingang musst du noch richtig
beschalten: z.B. A2=GND, wenn du die Ausgänge Y0..Y.3 benutzt.
Und CS1...3 müssen natürlich auch noch richtig beschaltet werden.
H. H. schrieb:> Nein, es gibt keine Totzeit.
Ich gehe davon aus, dass da eine kleine Totzeit drin ist. Mutually
exlusive würde ich als "gegenseitig ausschließend" interpretieren.
Demnach sollten nie 2 Ausgänge gleichzeitig an sein?? Hat jemand andere
Erfahrungswerte? Ich kann nur aus dem Datenblatt sprachlich
interpretieren...
Dietrich L. schrieb:> Ja.> Aber den dritten, nicht benutzten Eingang musst du noch richtig> beschalten: z.B. A2=GND, wenn du die Ausgänge Y0..Y.3 benutzt.> Und CS1...3 müssen natürlich auch noch richtig beschaltet werden.
Genau, das habe ich schon so beachtet. Danke!
Thomas W. schrieb:> The 74HC238; 74HCT238 decodes three binary weighted address inputs (A0,> A1 and A2) to eight> mutually exclusive outputs (Y0 to Y7)>> Demnach sind die (lediglich) 4 Outputs, die ich verwenden möchte,> gegeneinander verriegelt, richtig?>> Die anderen 4 Outputs würde ich offen lassen, ist das korrekt?
Wenn du zwischen den genutzten Ausgängen jeweils kurzzeitig einen
ungenutzten Ausgang anwählst, kannst du damit ein sicheres
'Break-before-Make' implementieren.
H. H. schrieb:> Nein, es gibt keine Totzeit.
Da hast du schon recht. Aber wie seine Schaltung mit einem Kurzschluss
im µs-Bereich zurecht kommt, wissen wir nicht...
Max schrieb:> Wenn du zwischen den genutzten Ausgängen jeweils kurzzeitig einen> ungenutzten Ausgang anwählst, kannst du damit ein sicheres> 'Break-before-Make' implementieren.
Aber das kann ich ja im Software-Fehlerfall nicht garantieren leider.
Alternative mit erzwungener signifikanter Totzeit, wenn es akzeptabel
ist, die Ausgänge sequentiell zu schalten, statt wahlfrei: CMOS 4017 /
74HC4017 und die Ausgänge 1,3,5,7 verwenden.
Thomas W. schrieb:> Aber das kann ich ja im Software-Fehlerfall nicht garantieren leider.
Ja, das ist ein Problem. Wenn du auch das Timing per Hardware sichern
willst, brauchst du noch etwas mehr.
Z.B. mit einen unsymetrischem RC-Glied: Low->High wird länger verzögert
als High-Low.
1
Yx >--+---R---+---> je nach weiterer Schaltung kann
2
| | hier noch ein Gatter mit
3
+--|<|--+ Schmitt-Trigger-Eingang nötig sein.
4
|
5
C
6
|
7
GND
Wenn man es ganz "sauber" machen will, müsste man noch den Entladestrom
über die Diode per Widerstand begrenzen.
Matthias S. schrieb:> CD4052 enthält 2 Stück 4 zu 1 Analogschalter mit Break before Make> Funktion.
Aber ob das Timing zur Schaltung von Thomas W. passt?