In Maschinen, Gebäudetechnik und Landwirtschaft ist 24 V Gleichspannung der Standard für Steuersignale. Endschalter, induktive Näherungsschalter, Lichtschranken und die Ausgänge einer SPS liefern 0 oder 24 V. Ein Mikrocontroller-Pin verträgt aber nur 3,3 oder 5 V, und die Leitungen draußen fangen Störungen ein, führen Spannungsspitzen und haben manchmal ein anderes Massepotenzial. Ein Optokoppler löst alle drei Probleme: Er überträgt nur Licht, keinen Strom. Beide Seiten sind elektrisch vollständig getrennt.
Hier baust du einen solchen Eingang für einen ESP32 so, dass er sich wie ein Industrieeingang verhält: sicher aus unter 5 V, sicher an ab 11 V, verpolungsfest und dauerhaft bis 30 V belastbar.
Schaltplan
- U1, PC817C: Optokoppler mit Fototransistor im DIP-4-Gehäuse, 5000 V Isolationsspannung. Der Buchstabe C steht für die Stromübertragungsklasse: 200 bis 400 % bei 5 mA.
- R1, 4,7 kΩ, 0,5 W: begrenzt den Strom durch die LED. Er nimmt fast die ganze Eingangsspannung auf.
- R2, 1 kΩ: liegt parallel zur LED. Bei kleinen Spannungen fließt der Strom durch ihn statt durch die LED; so entsteht eine definierte Einschaltschwelle.
- D1, 1N4148: Diode antiparallel zur LED. Bei verpoltem Anschluss leitet sie und hält die Sperrspannung der LED unter 1 V – erlaubt sind nur 6 V.
- R3, 10 kΩ: Pull-up auf der Mikrocontrollerseite. Der Fototransistor zieht IO27 nach Masse.
- U2, ESP32-WROOM-32E: IO27 ist Pin 12 des Moduls.
So funktioniert die Schaltung
Liegen 24 V am Eingang, fließt Strom durch R1 und teilt sich auf R2 und die LED auf. Die LED leuchtet im Infrarotbereich, der Fototransistor auf der anderen Seite wird leitend und zieht IO27 auf Low. Ohne Eingangsspannung bleibt die LED dunkel, der Transistor sperrt, und R3 hält den Pin auf High. Der Eingang ist also aktiv low.
Wie viel Strom auf der Ausgangsseite fließen kann, bestimmt das Stromübertragungsverhältnis CTR (Current Transfer Ratio):
Bei einem PC817C liefert 1 mA LED-Strom also mindestens 2 mA Kollektorstrom – mehr als genug für den Pull-up.
R2 sorgt für eine saubere Schwelle. Eine LED leitet erst ab etwa 1 V nennenswert. Solange die Spannung an R2 darunter bleibt, fließt der ganze Eingangsstrom durch R2, und die LED bleibt dunkel. Erst wenn die Eingangsspannung so hoch ist, dass an R2 rund 1 V liegen, setzt der LED-Strom ein:
Ohne R2 würde die LED schon bei 2 V Eingangsspannung glimmen, und ein Leckstrom eines Sensors könnte einen High-Pegel vortäuschen.
Dimensionierung
Ziel sind die Grenzwerte eines Eingangs nach IEC 61131-2, Typ 3, wie ihn auch eine SPS hat: unter 5 V (oder 1,5 mA) sicher aus, ab 11 V und 2 mA sicher an, Betrieb bis 30 V.
1. Einschaltstrom bei 11 V. Die LED hat dann knapp 1,1 V:
Davon fließen 1,1 V / 1 kΩ = 1,1 mA durch R2, für die LED bleibt rund 1,0 mA. Die Norm verlangt mindestens 2 mA, das ist erfüllt.
2. Nennbetrieb und Maximum. Bei 24 V fließen 4,85 mA, davon 3,7 mA durch die LED; bei 30 V sind es 6,1 mA und 4,9 mA. Die LED verträgt 50 mA.
3. Ausschaltbereich. Bei 5 V liegen an R2 5 V · 1 kΩ / 5,7 kΩ ≈ 0,88 V. Die LED führt dann nur wenige Mikroampere. Der Eingangsstrom von 0,88 mA liegt unter den erlaubten 1,5 mA.
4. Ausgangsseite. Damit IO27 sicher auf Low geht, muss der Transistor den Strom durch R3 aufnehmen:
Im ungünstigsten Fall bei 11 V am Eingang fließt 1,0 mA durch die LED. Selbst mit vorsichtig angenommenen 50 % CTR – weniger als jede PC817-Klasse bei kleinem Strom garantiert – sind das 0,5 mA. Der Transistor sättigt, die Restspannung liegt unter 0,2 V, weit unter der Low-Schwelle des ESP32 von 0,83 V.
5. Verlustleistung. In R1 entstehen bei 30 V (28,9 V)2 / 4,7 kΩ ≈ 0,18 W. Ein Widerstand für 0,25 W wäre dauernd zu 70 % belastet und würde heiß; mit 0,5 W bist du auf der sicheren Seite. R2 und LED setzen nur wenige Milliwatt um.
6. Geschwindigkeit. Der Fototransistor ist langsam, vor allem mit großem Lastwiderstand: Mit R3 = 10 kΩ dauert das Ausschalten einige zehn Mikrosekunden. Für Schalter, Sensoren und Zählimpulse bis etwa 1 kHz reicht das. Schneller wird es mit kleinerem R3 und mehr LED-Strom, nicht mit weniger.
Code
const int EINGANG = 27; // IO27, aktiv low
volatile unsigned long impulse = 0;
void IRAM_ATTR zaehle() { impulse++; }
void setup() {
pinMode(EINGANG, INPUT); // Pull-up R3 ist extern
attachInterrupt(digitalPinToInterrupt(EINGANG), zaehle, FALLING);
Serial.begin(115200);
}
void loop() {
bool an = digitalRead(EINGANG) == LOW; // 24 V liegen an
Serial.print(an ? "24 V an, " : "aus, ");
Serial.print(impulse);
Serial.println(" Impulse");
delay(500);
}
Am Arduino Uno funktioniert dieselbe Schaltung mit R3 an 5 V und IRAM_ATTR gestrichen; dann fließen 0,5 mA durch R3, immer noch gut im Rahmen.
Bauteilliste
| Bezeichner | Wert/Typ | Hinweis |
|---|---|---|
| U1 | PC817C (DIP-4) | CTR 200–400 % bei 5 mA; Pin 1 Anode, 2 Kathode, 3 Emitter, 4 Kollektor |
| R1 | 4,7 kΩ, 0,5 W | Metallschicht 0207 oder SMD 1206 mit 0,5 W |
| R2 | 1 kΩ | parallel zur LED |
| D1 | 1N4148 | Kathode an der Anode der LED |
| R3 | 10 kΩ | an 3,3 V bzw. 5 V des Mikrocontrollers |
Varianten
Störfilter. Ein Kondensator von 100 nF parallel zu R2 bildet mit R1 einen RC-Tiefpass mit τ ≈ (R1 ∥ R2) · C ≈ 82 µs. Er schluckt kurze Störspitzen auf langen Leitungen. Prellende Kontakte entprellst du zusätzlich in Software (Taster entprellen).
Weiter Eingangsbereich. Statt R1 sorgt eine Konstantstromquelle aus zwei Transistoren oder ein Stromregler-IC dafür, dass von 10 bis 60 V immer etwa 2 mA fließen. Die Verlustleistung bleibt dann klein.
Wechselspannung. Für 24 V~ nimmst du einen Optokoppler mit zwei antiparallelen LEDs wie den PC814 und einen Kondensator am Ausgang, der die Lücken in den Nulldurchgängen überbrückt.
Ausgang statt Eingang. In die andere Richtung, also um 24-V-Lasten zu schalten, nimmst du einen Low-Side-Schalter mit MOSFET oder ein Relais.
Ohne Trennung. Teilen Sensor und Mikrocontroller sicher dieselbe Masse und die Leitung ist kurz, genügt ein Spannungsteiler mit Schutzdiode. Die Trennung des Optokopplers ist aber genau das, was einen Eingang an einer Maschine robust macht.
Typische Fehler
- Eingang reagiert nicht: LED verpolt, oder die 0-V-Leitung der 24-V-Seite fehlt. Mit dem Multimeter die Spannung an der LED messen: etwa 1,1 V bei 24 V am Eingang.
- Pin bleibt dauerhaft Low: Die Massen sind falsch verbunden, oder Kollektor und Emitter vertauscht.
- Zwei-Draht-Näherungsschalter schaltet nicht ab: Solche Sensoren lassen auch ausgeschaltet einen Reststrom von 1 mA und mehr fließen. Hier hilft ein kleinerer R2, der mehr Strom an der LED vorbeileitet.
- R1 wird heiß: Bauform für 0,25 W bei 30 V. 0,5 W nehmen.
- Zählimpulse fehlen: Signal zu schnell für Fototransistor und 10 kΩ. R3 verkleinern oder einen schnellen Optokoppler wie den 6N137 einsetzen.
Selbsttest
Warum ist der Eingang aktiv low?
Leitet der Fototransistor, zieht er IO27 gegen Masse; ohne Licht hält R3 den Pin auf High.
Wozu dient R2?
Er leitet kleine Ströme an der LED vorbei und hebt so die Einschaltschwelle auf rund 6 V. Spannungen unter 5 V und Restströme schalten den Eingang nicht ein.
Welcher Strom fließt bei 24 V durch R1, und wie viel Leistung setzt er um?
(24 V − 1,2 V) / 4,7 kΩ ≈ 4,9 mA; 22,8 V · 4,9 mA ≈ 0,11 W.
Welcher LED-Strom ist nötig, wenn R3 = 4,7 kΩ an 5 V hängt und du mit 50 % CTR rechnest?
IC = 5 V / 4,7 kΩ ≈ 1,06 mA, also mindestens 2,1 mA LED-Strom.
Warum darfst du die beiden Massen nicht verbinden?
Dann wäre die galvanische Trennung aufgehoben; Störungen und Potenzialunterschiede der 24-V-Seite kämen direkt zum Mikrocontroller.