Forum: Analoge Elektronik und Schaltungstechnik Ausgangstufe umschaltbar PushPull/OpenDrain


von Ralph T. (programinator)



Lesenswert?

Moin,

ich sitze hier gerade an einer einfachen Ausgangssufe, die je nach 
Konfiguration PushPull und OpenDrain können soll. Die Schaltung ist mit 
zwei komplementären MosFETs aufgebaut und für Spannungen von max. 30V 
für OpenDrain bzw. 24V für PushPull sowie Strömen bis max. 1A ausgelegt. 
Die Stufe soll von einem Mikrocontroller mit 3,3V angesteuert werden. 
Dabei soll die Schaltfrequenz bei <100Hz liegen. In der Realität wird 
dies vermutlich bei <<10Hz liegen.

Die Bilder _1.. und _2.. zeigen die beiden Zustände im PushPull-Betrieb 
mit der internen 24V-Versorgung. Die Schalter Switch1 und Switch2 stehen 
symbolisch für zwei Portpins des uCs. Diese müssen je nach Schaltzustand 
immer identisch geschaltet werden.
Die Bilder _3.. und _4.. zeigen die beiden Zustände im OpenDrain-Betrieb 
mit einer externen Schaltspannung von 30V. Für diese Variante muss der 
Switch1 permanent auf 0V liegen. Switch2 schaltet dann ausschließlich 
den LowSide-MosFET.

Um Vgs von max. +-12V einzuhalten ist die Z-Diode D3 vorgesehen. Damit 
bei OpenDrain die 30V nicht rückwärts über X1 laufen, hängt am Drain von 
X1 die Diode D4.
Exemplarisch habe ich in der Simulation die MosFETs Sia400 und Sia421 
verwendet, die zumindest von der Schaltleistung überdimensioniert sind.

In der Simulation funktioniert die Schaltung. Allerdings bin ich mir 
unsicher, ob die Umsetzung auch praxistauglich sein wird. Von daher bin 
ich über jeden kritischen Kommentar dankbar.


Vielen Dank (für jede ernst gemeinte Antwort)

von Georg (Gast)


Lesenswert?

Ralph T. schrieb:
> Die Schalter Switch1 und Switch2 stehen
> symbolisch für zwei Portpins des uCs. Diese müssen je nach Schaltzustand
> immer identisch geschaltet werden

Das lässt sich per Software nicht ausreichend sicherstellen, vielmehr 
ist das eine Anleitung zum Harakiri der Ausgangsstufe. Es muss 
unabhängig vom Prozessor sichergestellt werden, dass die beiden 
Leistungstransistoren NIEMALS gleichzeitig leiten können.

Georg

von M.A. S. (mse2)


Lesenswert?

Georg schrieb:
> Es muss
> unabhängig vom Prozessor sichergestellt werden, dass die beiden
> Leistungstransistoren NIEMALS gleichzeitig leiten können.
Würde ich auch so sehen.
(Es sei denn, eine Selbstzerstörungsfunktion soll ausdrücklich 
ermöglicht sein.)

von Walter T. (nicolas)


Lesenswert?

Georg schrieb:
> Das lässt sich per Software nicht ausreichend sicherstellen, vielmehr
> ist das eine Anleitung zum Harakiri der Ausgangsstufe. Es muss
> unabhängig vom Prozessor sichergestellt werden, dass die beiden
> Leistungstransistoren NIEMALS gleichzeitig leiten können.

Also muss sichergestellt werden, dass die Trennung immer vor dem 
Schließen erfolgt. Das geht eigentlich ganz gut in Software. Etliche 
STM32 haben sogar Timer, die genau für diesen Zweck ausgestattet sind.

von foobar (Gast)


Lesenswert?

R9?

von Michael M. (Firma: Autotronic) (michael_metzer)


Angehängte Dateien:

Lesenswert?

Georg schrieb:
> Es muss unabhängig vom Prozessor sichergestellt werden, dass die beiden
> Leistungstransistoren NIEMALS gleichzeitig leiten können.

Das kann man prima mit einer Verriegelungslogik aus NOR-Gattern (CD4001) 
noch vor den Transistoren Q1 und Q2 realisieren.

von Prokrastinator (Gast)


Lesenswert?

Walter T. schrieb:
> Also muss sichergestellt werden, dass die Trennung immer vor dem
> Schließen erfolgt. Das geht eigentlich ganz gut in Software.

Genau so lange, bis die Software abkoffert oder irgendein Dingenskirchen 
beim Programming / Debugging wirr läuft und alles in Schutt und Asche 
legt.

Dafür gibt es kombinierte high / Lowside Mosfet Treiber mit 
Verriegelung, wenn man das nicht selber bauen will.

von Ralph T. (programinator)


Lesenswert?

foobar schrieb:
> R9?
aus einem vorherigen Ansatz übriggeblieben und natürlich überflüssig

Georg schrieb:
> eine Anleitung zum Harakiri der Ausgangsstufe
ja, ich gebe dir und allen anderen Recht. Ich kann leider nicht 
sichherstellen, dass die Programmierer die Pins immer korrekt bedienen. 
Von daher kommt dieses wirklich einem Selbstzerstörungsmechanismus 
gleich

Walter T. schrieb:
> Etliche STM32 haben sogar Timer
der uC ist dafür leider nicht ausgelegt. Aber danke für den Tipp, habe 
ich nicht gewusst

Michael M. schrieb:
> Verriegelungslogik aus NOR-Gattern
darauf wird es wohl hinauslaufen müssen

Prokrastinator schrieb:
> kombinierte high / Lowside Mosfet Treiber mit Verriegelung
das war mein erster Ansatz. Ich habe nur keine mit getrennten Enable 
gefunden, um nur den HighSide-Schalter zu deaktivieren. Gibt es sowas 
überhaupt?

Gibt es ansonsten etwas am Grundprinzip der Um- und Verschaltung 
PushPull/OpenDrain auszusetzen?

von Peter D. (peda)


Lesenswert?

Man sollte darauf achten, daß beide Ausgänge inaktiv sind, solange die 
CPU im Reset oder Bootloader hängt, d.h. nicht aktiv treiben kann.

von Elliot (Gast)


Lesenswert?

Ralph T. schrieb:
> Gibt es ansonsten etwas am Grundprinzip der Um- und Verschaltung
> PushPull/OpenDrain auszusetzen?

Der Mosfet X1 wird von knapp 8V Ugs durch 10k ausgeräumt, der X2 aber 
über 1k mit 3V3 eingeschaltet. PMOS haben etwa die 4-fachen Kapazitäten 
gegenüber vergleichbaren NMOS. Das Ausschalten des PMOS dauert also etwa 
40-mal solange wie das Einschalten des NMOS. Wenn der Ausgang hart 
umgeschaltet wird, hilft dir auch die Verriegelungslogik nicht.

von Helge (Gast)


Lesenswert?

Sind die 30V am Ausgang wirklich notwendige Option? Die Diode frißt 
Leistung.

von Sebastian (Gast)


Lesenswert?

Ralph T. schrieb:
> Ich habe nur keine mit getrennten Enable gefunden, um nur den
> HighSide-Schalter zu deaktivieren. Gibt es sowas überhaupt?

SN754410?

LG, Sebastian

von Harald A. (embedded)


Lesenswert?

Sebastian schrieb:
> Ralph T. schrieb:
>> Ich habe nur keine mit getrennten Enable gefunden, um nur den
>> HighSide-Schalter zu deaktivieren. Gibt es sowas überhaupt?
>
> SN754410?
>
> LG, Sebastian

So etwas hätte ich jetzt auch in der Art genommen. Neben der 
Eigensicherung hat man ja oft auch noch den Anspruch, dass der Ausgang 
nach außen möglichst unkaputtbar sein soll. Einfach eine Kombination aus 
intelligentem High- und Low-Side nehmen, z.B. BSP78 und BSP452. Sind 
jeweils sicher gegen verschiedene Formen der Misshandlung. Verriegeln 
muss man da auch nichts, im schlimmsten Fall fließt mal etwas 
Maximalstrom und dann schaltet sich das von alleine ab.

von Ralph T. (programinator)


Lesenswert?

Sebastian schrieb:
> SN754410?
erinnert stark an den klassischen L293, mit dem ich zu Jugendzeiten 
(letztes Jahrtausend!) gespielt habe. An die H-Brückcne hatte ich noch 
gar nicht gedacht

Harald A. schrieb:
> eine Kombination aus
> intelligentem High- und Low-Side nehmen, z.B. BSP78 und BSP452
diese Lösung ist sexy!

Vielen, vielen Dank für eure tollen und hilfreichen Kommentare!

von Walter T. (nicolas)


Lesenswert?

Prokrastinator schrieb:
> Walter T. schrieb:
>> Also muss sichergestellt werden, dass die Trennung immer vor dem
>> Schließen erfolgt. Das geht eigentlich ganz gut in Software.
>
> Genau so lange, bis die Software abkoffert oder irgendein Dingenskirchen
> beim Programming / Debugging wirr läuft und alles in Schutt und Asche
> legt.

Ich kann mir kein glaubwürdiges Fehlerszenario, bei dem die Operationen 
"Pin0 trennen" und "Pin1 setzen" plötzlich vertauscht sind, vorstellen. 
Ich kann mir Szenarien vorstellen, bei denen die zweite Operation massiv 
verzögert wird, aber das ist für den Treiber erst einmal kein Fehler mit 
schlimmen Auswirkungen.

Aber ich lerne gerne dazu.

Btw. die Funktionionalität der Timer wird bei den STM32 auch genau für 
diesen Zweck beworben (Motor driver applications).

von Georg (Gast)


Lesenswert?

Walter T. schrieb:
> Aber ich lerne gerne dazu.

Das wichtigste was du noch lernen musst: Software macht manchmal/oft 
nicht das was sich der Programmierer gedacht hat, und auch wenn der als 
seltene Ausnahme mal keine Fehler gemacht hat kann der Ablauf durch 
einen Störimpuls durcheinandergebracht werden.

Fehlerfreie Software existiert in der Praxis nicht, nicht bei mehr als 
hundert Zeilen Code. Poster hier im Forum natürlich ausgenommen, die 
arbeiten alle 100%ig fehlerfrei.

Georg

von Walter T. (nicolas)


Lesenswert?

Georg schrieb:
> Fehlerfreie Software existiert in der Praxis nicht,

Das war auch nicht die Frage. Aber welcher Fehler in einem µC kommt real 
mit einer deutlich größeren Häufigkeit als vagabundierende 
Elementarteilchen vor, der dafür sorgen kann, dass das öffnen/schließen 
der Push- und Pull-Stufe vertauscht wird, so dass beide gleichzeitig 
leiten?

Softwareseitig handelt es sich schließlich um eine Funktionalität, die 
sich hervorragend kapseln und testen lässt.

Oder sogar häufiger als andere Fehler, die eine Push-Pull-Stufe grillen 
können?

: Bearbeitet durch User
von Abdul K. (ehydra) Benutzerseite


Lesenswert?

Sicherung oder PTC kann nicht schaden. Man steckt nicht komplett in der 
MCU drin. Vieles ist gar nicht voll dokumentiert.

: Bearbeitet durch User
von Dieter (Gast)


Lesenswert?

Abdul K. schrieb:
> Vieles ist gar nicht voll dokumentiert.

Ein Modellbauforum hatte einige dieser Features in einer Übersicht über 
alle Varianten der BLDC-Ansteuerungen aufgeführt. Wegen vieler 
Anfeindungen haben diese diese Seite vom offenen Zugangsteil entfernt 
und kann man als pdf auf Wunsch noch bekommen. Da war zum Beispiel die 
innere Verriegelung der Ausgänge über interne Logiken aufgeführt.

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
Noch kein Account? Hier anmelden.