Spannungsteiler mit Z-Diode liefert falsche Spannung? Raspberry Pi GPIO 32V Input mit Zener Diode prüfen?
Für mein Projekt mit dem Raspberrypi wollte ich mittels der GPIO Pins prüfen, ob an meinem externen Gerät eine Spannung anliegt. Nachdem diese jedoch 32V beträgt, und die GPIO Pinks maximal 3,3V vertragen, wollte ich das Problem mit einem Spannungsteiler, 2 Widerständen in Reihe, einem 100k Ohm und einem 10,4k Ohm Widerstand lösen. Dabei fällt an R2 die gewünschte Spannung von ca. 3V ab.
Jedoch besteht nun das Problem darin, dass die externe Spannung schwankungen unterliegt. Um unabhängig von der Spannung prüfen zu können, ob eine Spannung anliegt oder nicht, sollte die Schaltung aus 2 Wiederständen mit jeweils 100k Ohm und einer Z-Diode von 3V gebaut werden. (vgl. Abbildung).
Durch die Zener Diode in Sperrichtung wird sichergestellt, dass immer 3V abfallen, liegt die Spannung unterhalb, sorgt der Parallelgeschaltete Widerstand als "Pulldown" Widerstand für einen sicheren 0V Zustand am Raspberry Pi, bzw. für 1/2 U_ges wenn 3 > U_ges > 0.
So viel zur Theorie. In der Praxis messe ich jedoch an der Diode eine Spannung zwischen 1,8 und 2,2 V, bei einer Eingangsspannung von 12 bis 40V. Die Abweichung sollte durch den parallelen Widerstand hervorgerufen werden, jedoch kann ich mir nicht erklären, weshalb keine Spannung zwischen 2,8 und 3V vorliegt, wie es eigentlich auch die Simulation in https://www.falstad.com/circuit/circuitjs.html zeigte.
Liegt es an falsch gewählten Werten der Widerständen, oder benötige ich eine Zener Diode mit einer höhren Durchbruchsspannung ?
Vielen Dank im Voraus.
Abbildung 1
2 Antworten
Nimm bei deinem Widerstandsteiler einfach oben 10k und den unteren Widerstand lässt du weg (die Z-Diode begrenzt dir die Spannung ja auf 3V). Dann fließt bei 20-30V genügend Strom durch die Z-Diode (ein paar mA), damit du den gewünschten Spannungsabfall hast.
Die Diode hat natürlich auch einen Leckstrom, aber zur "Sicherheit" kannst du natürlich noch einen Widerstand benutzen. Das hätte auch den Vorteil, dass der I/O die 32V nicht bereits schon ab ca 2.5V als "high" erkennt. Wenn du z.B. hier 10K/2K2 nimmst, würde dein I/O die 32V erst oberhalb etwa 14V als "high" ansehen.
Eine unscharfe Zone hast du natürlich immer, die Diode macht dir dein Eingangssignal nicht eindeutig high oder low. Wenn du das möchtest, müsstest du noch einen Schmitt-Trigger zwischen Widerstandsteiler und IO setzen. Und wenn es ganz präzise sein soll: Voltage Supervisor (hat intern eine Bandgap Diode und einen Komparator).
Es wird wohl an der Kennlinie der Zenerdiode liegen. Welche Zenerdiode benutzt du?
Speziell die Zenerdioden mit sehr geringer Z-Spannung haben keine steile Kennlinie. D.h. sie beginnen schon bei kleineren Spannungen (1,6...1,9V) etwas zu leiten.
Wenn du mit 100 KOhm auf die Z-Diode gehst, dann fließt
- im 12V Fall ein Strom von grob I = (12V-3V)/100 KOhm = 0,09mA
- im 40V Fall ein Strom von grob I = (40V-3V)/100 KOhm = 0,37mA
In der Kennlinie bedeutet es die Z-Diode (z.B. 1N4727A) leitet schon etwas.
- Bei 0,09mA fällt vielleicht grob 1,8V ab.
- Bei 0,37mA fällt vielleicht grob 2,2V ab.
Fazit:
Die Z-Dioden für kleine Spannungen beginnen schon vor erreichen der Z-Spannung etwas zu leiten, die Kennlinie ist nicht so steil, sie hat ab 1,6V schon einen Widerstand.
Beispiel für die 1N4727A ( 3,3V Zenerdiode)
https://www.reichelt.de/zenerdiode-3-3-v-1-3-w-do-204al-do41-zd-3-3-p23080.html
Kennlinie dazu
https://cdn-reichelt.de/documents/datenblatt/A400/1N47XXA_SEMTECH2.PDF
Viel Erfolg!
Mein Vorschlag: "Rv + R1 + R2 als Reihenschaltung, mit 12V Zenerdiode"
Deine ursprüngliche Idee 100 kOhm + 10 kOhm war schon grob richtig.
Du musst nur eine Zenerdiode mit steiler Kennlinie nutzen, sie soll ja deine Messung nicht verfälschen, sondern nur dein Eingang schützen.
Also ich würde eine Zenerdiode für 12V einsetzen (1N4742A)
Deine maximale 32V Mess-Spannung geht:
über Rv = 51 kOhm (Uv wird 20V sein) I = 20V/51 kOhm = 0,392 mA
auf Spannungsteiler aus R1 + R2 (mit U1+U2 = 12V , mit Z-Dioden parallel)
R1 (U1 wird 8,8V sein) = 8,8V/0,392 mA = 22 KOhm
R2 (U2 wird 3,2V sein) = 3,2V/0,392 mA = 8,2 KOhm
Fazit:
Du hast dann Rv + R1 + R2 als Reihenschaltung von 3 Widerständen.
Über R1 + R2 ist die Z-Dioden und verhindert eine Spannung >12V über (R1+R2)
Ich habe bewusst Widerstandswerte aus der E24-Reihe berechnet/gerundet, damit die Beschaffung nicht so kompliziert ist (https://www.elektronik-kompendium.de/sites/bau/1109071.htm).
PS:
Die Reihenschaltung aus R1 + R2 wird im Extremfall max. Uz 12V erhalten. Die Spannung am Messeingang wird dann max. sein:
max. U2 = Uz* R2/(R1+R2) = 12V * 8,2/(22+8,2) = 3,258V
Formeln ? https://www.elektronik-kompendium.de/sites/slt/0110191.htm
Viel Erfolg!
Vielen Dank für deine Antwort. Ich verwende die Diode BZX55C3V0 und habe viele weitere BZX55C zu Hause. Soll ich einfach Z-Dioden mit einer höheren Spannung teste, so dass ich ca. 3V erhalte? Oder löst man dieses Problem normalerweise anders?
Mein Beispiel (siehe Vorschlag) habe ich so gerechnet, dass es weiterhin ein angenehmen Faktor=10 zwischen tatsächlicher Spannung, und Spannung am GPIO ist.
Also bei 3,2V am GPIO ist es dann 3,2*10=32V am Messobjekt.
Ich hoffe das die Kennlinie von Z-Dioden mit größeren Z-Spannungen viel steiler ist. Also eine Kennlinie zu BZX55C12 habe ich leider noch nicht gefunden, jedoch eine BZX55C12 könnte ähnlich gut sein, wie die 1N4742A in meinem Vorschlag.
Wenn es immer noch zu viel am Ergebnis (bei hoher Spannung nahe 30V) verfälscht, so würde ich einfach den Spannungsteiler so berechnen, dass er niemals mehr als 1,5V (im Maximalwert) am GPIO hat, dann wird die Zenerdiode hoffentlich noch sehr hochohmig sein und die Messung nicht beeinflussen. Also Faktor=20! Also 1,5V * 20 = 30V , ...
Das Prinzip "Rv + R1 + R2 als Reihenschaltung, mit 12V Zenerdiode" würde ich trotzdem bevorzugen.
Viel Erfolg!
Vielen Dank für deine Antwort. Wenn man den Widerstand parallel zu der Diode weg lässt, fehlt dann nicht ein "Pull Down " Widerstand, also dass der GPIO Pin bei keine Eingangsspannung einen festen Wert, also 0V besitzt? Oder reicht hierfür die Diode aus? Ich verwende übrigens die Diode BZX55C3V0, falls das weiterhilft.