Hallo zusammen, ich verwende einen Raspberry PI und schalte damit auf einer externen Platine den Sutdown Pin eines FET Treibers. Dieser FET Treiber wird mit 6.4V betrieben und hat einen internen pull-up. Der Shutdown Pin führt also 6.4V, solange er nicht aktiv auf 0 getrieben wird. Wenn ich nun diesen Pin direkt an den GPIO hänge, kracht es. Der GPIO ist per default als Eingang beschaltet und damit liegen dann 6.4V am Eingang an. Ich kann ihn erst nach dem Booten als Open-Drain konfigurieren, was offenbar zu spät ist (mal abgesehen davon, ob eine open-drain config die 6.4V abkann?). Eine korrekte Lösung wäre wohl ein open-drain Buffer, der zwischen GPIO und Shutdown hängt. Somit wären GPIO und Shutdown "entkoppelt". Gibt es noch andere Möglichkeiten, die ich im bestehenden Design einfach "nachlöten" kann? Da ich aktuelle 8 FET Treiber habe, wäre ich an einem möglichst geringen workaround Aufwand interessiert, bis ich ein Redesign gemacht habe. Ein Spannungsteiler wird ja immer dazu führen, dass ich kein GND Potential am Shutdown bekomme, sondern nur irgendwas zwischen 6.4V und GND. Mein zusätzlicher Widerstand müsste also viel kleiner sein als der interne pullup, auch nicht schön. Hat jemand noch andere Ideen? Vielen Dank!
got_fried schrieb: > Ich kann ihn erst nach dem Booten als Open-Drain > konfigurieren, was offenbar zu spät ist (mal abgesehen davon, ob eine > open-drain config die 6.4V abkann?). Nein, Open-Drain ist nur open Drain bis zur Betriebsspannung. Da sind dann Schutzdioden verbaut, also bei 5V ginge es nur bis 5V+Diodendrop. Ergo: Mach' einen externen Transistor ran. mfg mf
Das ist relativ einfach zu erreichen - nur auf den ersten Blick ein bisschen unintuitiv. Schalte eine Shottky-Diode vor den Eingang. Und zwar so: Raspipin *---->|-----* FET (0..6,4V) dem Raspipin konfigurierst Du dann nach dem Hochfahren einen internen Pullup dazu. Wenn UFet = 0V wird die Diode leitetend und der Raspipin liegt auf ca 0,2 V (Flussspannung der Shottky-Diode) --> LOW. Wenn UFet = 6,4V ist die Diode gesperrt. Der interne Pullup des Raspi zieht die Diode auf 3,3V --> HIGH.
:
Bearbeitet durch User
got_fried schrieb: > Der Shutdown Pin führt also 6.4V, solange er nicht aktiv auf 0 getrieben > wird. Die Frage ist, wo ist die Schwelle zwischen Shutdown und kein Shutdown. Ist sie unterhalb der GPIO-HIGH-Spannung, dann mach doch einfach eine Z-Diode auf den Wert des HIGH-Pegels. Auch kann man extern einen R nach GND machen, so dass der mit dem internen Pullup einen Teiler auf deinen HIGH-Level macht. got_fried schrieb: > Ein Spannungsteiler wird ja immer dazu führen, dass ich kein GND > Potential am Shutdown bekomme, Nein, so wie ich das meine: einen Widerstand parallel zum GPIO nach GND. Bei HIGH-Impedance des GPIO geht das Potential auf die geteilte Spannung, bei LOW ist das ein sicheres LOW.
got_fried schrieb: > Eine korrekte Lösung wäre wohl ein open-drain Buffer, der zwischen GPIO > und Shutdown hängt. Der muss auch erst mal 6.4 V am Ausgang vertragen. (Du wärst damit auf jeden Fall jenseits der Recommended Operating Conditions.) > Gibt es noch andere Möglichkeiten, die ich im bestehenden Design einfach > "nachlöten" kann? Der übliche FET-Level-Shifter. Aber die Pullup-Widerstände brauchst du nicht, wenn der GPIO als Push/Pull konfiguriert ist und der Treiber schon einen Pullup hat.
Achim M. schrieb: > Open-Drain ist nur open Drain bis zur Betriebsspannung. Das bedeutet, dass ich eine mit IOVDD 3.3V betriebene GPIO Bank als Open drain konfigurieren kann, aber bei >3.xV dann der ESD Schutz greift? War nicht Sinn der Open-drain Sache, dass man eben verschiedene Spannungslevel schalten kann? Aber offenbar nur <VDD? Andi M. schrieb: > Schalte eine Shotky-Diode vor den Eingang. Der RPI Pin ist ja ein Ausgang. Nur beim Boot ist es offenbar per default ein Eingang, um keinen Schaden zu machen. In meinem Fall kontraproduktiv. Ich muss also aktiv eine 0V treiben, um meinen FET Treiber anzuschalten. Wenn ich also 0V am RPI Ausgang habe, leitet die Diode und ich habe 0.2V am Eingang des FET Treiber. Wenn ich aber nichts treibe, wozu dann der RPI-seitige pull-up, wenn dieser schon im FET Treiber ist? Vielen Dank! Die Idee mit der Diode verfolge ich mal weiter...
got_fried schrieb: > War nicht Sinn der Open-drain Sache, dass man eben verschiedene > Spannungslevel schalten kann? Ja, aber beim RPI nur bis zu VDD. Es gibt andere Mikrocontroller und Logik-Chips (z.B. 74LVC1G07), bei denen die ESD-Diode zu VDD weggelassen wurde.
got_fried schrieb: >> Schalte eine Shotky-Diode vor den Eingang. > > Der RPI Pin ist ja ein Ausgang. Nur beim Boot ist es offenbar per > default ein Eingang, um keinen Schaden zu machen. In meinem Fall > kontraproduktiv. Stimmt, ich ging irgendwie davon aus, dass der Raspi ein Input bereit stellt. Damit Du ein open drain-Verhalten erreichst müsste die Diode anders herum gepolt sein. Dann kannst Du mit einer 0 den Fet ansteuern. Wenn der Pullup des Fet aber auf 6,4V liegt, dann fliesst immer noch ein Strom in die Shutzdioden des Raspi. Der Pegel steigt damit nicht wesentlich über 3,3V an... Diode funktioniert hier also nicht. Also doch einen Transistor nachschalten... was anderes fällt mir nicht ein.
HildeK schrieb: > Nein, so wie ich das meine: einen Widerstand parallel zum GPIO nach GND. > Bei HIGH-Impedance des GPIO geht das Potential auf die geteilte > Spannung, bei LOW ist das ein sicheres LOW. Stimmt... so rum ergibt das Sinn, auch ohne weitere Bauteile. Norbert schrieb: > Vielleicht verstehe ich's ja falsch, aber... Das stimmt schon, aber ist etwas mehr Aufwand, um die aktuelle Platine lauffähig zu bekommen, ohne einen weiteren RPI zu opfern :) "Gürtel und Hosenträger" ist schön formuliert... better safe than sorry :D
Im Falle eines Gürtels ist zu beachten, dass ein sehr großer Unterschied (Leitwert) zwischen Kuh- und Kunstleder besteht.
Meine drei Vorschläge im Bild, zwei davon hatte ich schon genannt. (Sorry, hatte überall statt 6.4V nur 4.6V geschrieben - ändert aber am Prinzip nichts und deshalb male ich das Bild nicht neu ...). - die Schottkydiode sorgt dafür, dass am Eingang nicht mehr als VCC+0.3V liegen - der Teiler teilt mit R1 und R_PU2 von 6.4V auf 3.3V - Zenerdiode verhindert, dass mehr als 3.3V anliegen; imho die schlechteste Methode, weil die Z-Spannung evtl. nicht geeignet zu bekommen ist und die nur einen weichen Knick haben
Ich habe fix die Variante mit dem Widerstand getestet und komme nicht so recht weiter. Im Datenblatt steht nur ein 6uA Strom am SD PIN und es ist kein spezifistcher Widerstand angegeben als Pull-Up. Der FET Treiber ist ein ADP3624. Habe zwischen SD und VDD ca. 80k gemessen. Wenn ich nun bei 5V (statt 6.4V) testweise 150k und 850k gegen GND verwende, Messe ich bei 150k 0.66V 850k 3.22V Den GPIO habe ich erstmal getrennt und messe nur am Treiber. Das doofe ist, dass die Spannung sehr langsam ansteigt. Als ob eine Kapazität mit wenig Strom geladen wird. Muss nochmal nachrechnen... Die Spannung steigt in ca. 10s an. Geladen wird über 80k?! Das wäre eine riesige Kapazität. Vielleicht teste ich morgen nochmal die anderen Varianten, aber mit dem Widerstand komme ich nicht zurecht, zumal die Spannungswerte auch nicht auf den gleichen Pull-Up im Treiber schließen lassen? Wird denn hier wirklich etwas anderes als ein normaler Widerstand als Pull-Up verwendet? Sowas wie eine Konstantstromquelle? Vielen Dank!
>Die Spannung steigt in ca. 10s an. Geladen wird über 80k?! Das wäre eine >riesige Kapazität. Womit und wie gemessen? Gut, das DB sagt 6µA bei 12V. Sieht also eher nach 2MOhm aus. Trotzdem bräuchte man einige µF, um damit eine Zeitkonstante von 10s zu erreichen. Aber vielleicht haste auch nur den AC-Modus am Meßgerät eingestellt ...
:
Bearbeitet durch User
got_fried schrieb: > Wird denn hier wirklich etwas anderes als ein normaler Widerstand als > Pull-Up verwendet? Sowas wie eine Konstantstromquelle? Nachdem du nun auch den IC nanntest, kann man auch ins Datenblatt schauen. Dort steht, dass die PUs und PDs im IC typ. 6μA liefern/aufnehmen. Sieht also nach Stromquelle aus, was in Halbleitern auch viel leichter realisierbar ist. Aber 6μA sind gar nichts, jedenfalls nichts, was deinem Eingang und der ESD-Diode irgendwas ausmacht! Rein rechnerisch müssten ca. 560k den Pegel auf die 3.3V bringen, aber die internen Dioden schaffen das ohne eine Zusatz. Also: einfach direkt anschließen muss funktionieren! Du hast imho ein anderes Problem ...
got_fried schrieb: > Eine korrekte Lösung wäre wohl ein open-drain Buffer, der zwischen GPIO > und Shutdown hängt. Der ULN2008 wird da gerne genommen. Es gibt aber auch fertige High-Side Treiber, das spart dann den MOSFET ein. Z.B.: https://www.maximintegrated.com/en/products/power/mosfet-drivers-controllers/MAX14915.html
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.