ESP32 S3 - PC817-Optokoppler: 12V/24V-DC-Eingangssignal überwachen

Industrie- und Fahrzeugtechnik arbeitet mit 12V und 24V, der ESP32 S3 ist jedoch eine reine 3,3-V-Platine ohne jede 5-V-Toleranz — berühren Sie einen GPIO-Pin mit 24V, und dieser Pin ist im Nu zerstört. Ein PC817-Optokoppler-Isolationsmodul beseitigt diese Gefahr vollständig, indem es das Signal als Licht über eine isolierende Strecke überträgt. So kann Ihr ESP32 S3 einen 24V-SPS-Ausgang oder einen 12V-Fahrzeugstromkreis wie einen ganz gewöhnlichen Digitaleingang überwachen. Da das Modul den Vorwiderstand für seine interne LED bereits enthält, beschränkt sich die ganze Arbeit darauf, die zu Ihrem Signal passende Variante zu kaufen und zwei Feldleitungen an einer Schraubklemme anzuschließen. In der Praxis beantwortet das die Frage, mit der die meisten Menschen tatsächlich kommen — läuft die Maschine, die Pumpe, das Förderband gerade? —, denn das Modul greift direkt an der eigenen Versorgung des Geräts ab und meldet dessen tatsächlichen Zustand, ohne auch nur einen einzigen Draht daran zu verändern.

Was Sie in diesem Tutorial bauen werden:

  1. Eine isolierte Eingangsstufe, die ein 12V- oder 24V-DC-Signal in einen sicheren 3,3-V-Logikpegel für den ESP32 S3 umwandelt
  2. Die eine Kaufentscheidung, die darüber entscheidet, ob es überhaupt funktioniert: die Wahl der Modulvariante für 24V, 12V oder 3-5V
  3. Einen einminütigen Test auf dem Labortisch, der Ihnen zeigt, ob Ihr Modul aktiv-LOW oder aktiv-HIGH liest, und einen Sketch mit einer einzigen Konstante für beide Fälle
  4. Einen parallelen Abgriff an einer 24V-Signalleuchte oder Schutztürverriegelung, der Ihnen sagt, ob das Gerät tatsächlich unter Spannung steht
  5. Denselben Eingang, aufgebaut aus dem nackten PC817-Chip und einem selbst dimensionierten Widerstand, falls Sie lieber löten als kaufen
ESP32 S3 PC817-Optokoppler isolierter 24V-Digitaleingang

Erforderliche Hardware

1×ESP32 S3 WROOM N16R8
1×(Alternativ) ESP32 S3 SuperMini Dev Module
1×(Alternativ) ESP32 S3 Uno-form Board
1×(Alternativ) ESP32 S3 Camera Board
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×PC817 Optocoupler Isolation Module (12V input)
1×PC817 Optocoupler Isolation Module (3-5V input)
1×Breadboard
1×Verbindungskabel
1×(Empfohlen) Screw Terminal Expansion Board for ESP32 S3
1×(Empfohlen) Breakout Expansion Board for ESP32 S3
1×(Empfohlen) Power Splitter for ESP32 S3

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Sie benötigen genau ein Modul — dasjenige, dessen Eingangsspannung zu dem Signal passt, das Sie überwachen möchten. Welches das ist, ermittelt der nächste Abschnitt für Sie.

Überblick über PC817 Optocoupler

Der PC817 — auch als Fotokoppler oder Optoisolator verkauft — ist ein 4-poliges DIP-Bauteil, das zwei einander gegenüberliegende Komponenten mit einer isolierenden Strecke dazwischen enthält: auf der einen Seite eine Infrarot-LED, auf der anderen einen Fototransistor. Wenn Strom durch die LED fließt, schaltet ihr Licht den Transistor ein. Das Signal überquert die Strecke also als Licht und nicht als Strom, und die beiden Seiten teilen sich niemals einen Kupferpfad. Genau diese Eigenschaft erlaubt es, einen 3,3-V-ESP32 S3 sicher neben einem 24V-Maschinenstromkreis zu betreiben, und es ist derselbe PC817, der die Arbeit verrichtet — ganz gleich, ob Sie den nackten Chip selbst einlöten oder das fertige Isolationsmodul kaufen, um das sich dieses Tutorial dreht.

Wichtige Spezifikationen

ParameterWert
Gehäuse4-poliges DIP (Pin 1 durch einen Punkt oder eine Kerbe markiert)
LED-Durchlassspannung (Vf)typisch ca. 1,2 V, max. 1,4 V
LED-Durchlassstrom (If)max. 20 mA dauerhaft, normal 5-20 mA, 10 mA ist ein guter Zielwert
Kollektor-Emitter-Spannung (VCEO)max. 35 V
Kollektorstrom (IC)max. 50 mA
Kollektor-Verlustleistung150 mW
Isolationsspannung5000 Vrms für 1 Minute
Stromübertragungsverhältnis (CTR)50% bis 600% je nach Klasse
SchaltgeschwindigkeitAnstieg ca. 4 us, Abfall ca. 3 us
Betriebstemperatur-30 C bis +100 C

Pinbelegung

Der PC817 hat seine vier Pins als zwei gegenüberliegende Paare angeordnet, wobei Pin 1 durch einen Punkt oder eine Kerbe markiert ist und die Nummerierung von dort gegen den Uhrzeigersinn verläuft. Auf einem Modul sind diese vier Pins bereits mit den Schraubklemmen und der Stiftleiste verbunden, doch wenn man sie kennt, versteht man trotzdem alles, was das Modul tut.

  1. Pin 1 - Anode (A) — LED-Anode, der Pluspol der Eingangsseite; das 12V- oder 24V-Signal kommt hier über einen Vorwiderstand an, der auf einem Modul bereits für Sie bestückt ist.
  2. Pin 2 - Kathode (K) — LED-Kathode, der Minuspol der Eingangsseite; verbinden Sie diesen Pin mit der Masse des 12V/24V-Stromkreises, niemals mit GND des ESP32 S3.
  3. Pin 3 - Emitter (E) — Emitter des Fototransistors auf der Ausgangsseite; verbinden Sie diesen Pin mit GND des ESP32 S3.
  4. Pin 4 - Kollektor (C) — Kollektor des Fototransistors auf der Ausgangsseite; verbinden Sie diesen Pin mit dem digitalen Eingangspin des ESP32 S3.
PC817-Optokoppler Pinbelegung für isolierten ESP32 S3-Eingang
image source: diyables.io

Welches Optokopplermodul benötige ich — 24V, 12V oder 3-5V?

Ein PC817-Isolationsmodul wird mit bereits aufgelötetem Strombegrenzungswiderstand geliefert, und dieser Widerstand kann nur für eine einzige Eingangsspannung dimensioniert sein. Deshalb werden diese Platinen nicht als ein universelles Bauteil verkauft, sondern als drei getrennte Varianten, und deshalb entspricht die Wahl der richtigen Variante beim Modul dem Berechnen des Widerstands von Hand. Messen Sie die Spannung des Signals, das Sie überwachen möchten, und kaufen Sie entsprechend:

  1. 24V-Modul — für 24V-DC-Signale: SPS-Transistorausgänge, Schutztürverriegelungen, Schütz- und Magnetspulen, Statusleuchten von Förderbändern, die meisten Feldverdrahtungen in der Fabrikhalle.
  2. 12V-Modul — für 12V-DC-Signale: Kfz- und Bootsstromkreise, 12V-Alarm- und Gefriergerätausgänge, LED-Streifen-Versorgungen, kleine Tür- und Torsteuerungen.
  3. 3-5V-Modul — für 3,3V- und 5V-Logiksignale von einem anderen Mikrocontroller, einer Sensorplatine oder einer Steuerplatine, die Sie elektrisch vom ESP32 S3 getrennt halten möchten.

Die falsche Variante einzubauen ist der eine Fehler, der Sie das Modul kostet und nicht nur einen Nachmittag. Betreiben Sie ein 12V-Modul an einer 24V-Leitung, fließt etwa der doppelte vorgesehene Strom durch seine interne LED, was sie beschädigt. Betreiben Sie ein 24V-Modul an einer 12V-Leitung, passiert das Gegenteil: Die LED wird zu schwach angesteuert, sodass der Ausgang verspätet, unzuverlässig oder gar nicht schaltet — und ein solcher sporadischer Messwert ist weit schwerer zu diagnostizieren als eine tote Platine. Vergleichen Sie den Aufdruck auf dem Modul mit der Spannung auf Ihrem Messgerät, bevor Sie etwas anschließen; bei einem Modul rechnen Sie nie, Sie wählen einfach richtig aus.

Ein 3,3V- oder 5V-Logiksignal isolieren

Auch Niederspannungssignale lohnt es sich zu isolieren, und dafür ist die 3-5V-Variante da. Immer wenn die beiden Stromkreise aus getrennten Netzteilen versorgt werden, an entgegengesetzten Enden eines langen Kabels liegen oder einer von ihnen elektrisch verrauscht ist — ein Motortreiber, eine Schrittmotorstufe, die 5V-Steuerplatine im Inneren eines netzbetriebenen Geräts —, besteht die Aufgabe des PC817 darin, den gemeinsamen Massepfad zu unterbrechen, und nicht darin, eine hohe Spannung zu überstehen. Es lohnt sich auch daran zu denken, dass es dem Eingang des PC817 auf den Strom ankommt, nicht auf die Spannung: Eine 5V-Schiene, die zehn Ampere liefern kann, belastet den Optokoppler nicht stärker als eine, die zehn Milliampere liefert, weil der Widerstand auf der Platine den LED-Strom in beiden Fällen festlegt — was das kräftigere Netzteil wirklich ändert, ist, wie schlimm ein Verdrahtungsfehler an anderer Stelle endet, was ein weiteres Argument für die Isolation ist. Die 3-5V-Platine deckt 3,3V- und 5V-Signale mit derselben Variante ab, und 3,3V ist die praktische Untergrenze für den PC817 in jeder Form, da allein die interne LED etwa 1,2 V davon abfallen lässt.

Verdrahtungsdiagramm

Die 12V/24V-Seite und die ESP32 S3-Seite werden als zwei vollständig getrennte Stromkreise verdrahtet, die sich nur im Kunststoffgehäuse des PC817 treffen. Bei einem Modul ist diese Trennung physisch und offensichtlich: Die Feldverdrahtung wird an den Schraubklemmen an einem Ende der Platine angeschlossen, der ESP32 S3 an der Stiftleiste am anderen Ende, und nichts verläuft zwischen ihnen.

Sicherheitshinweise

Verbinden Sie die Masse des 12V- oder 24V-Stromkreises nicht mit GND des ESP32 S3. Dass diese beiden Massen getrennt bleiben, ist der einzige Grund, warum diese Schaltung Ihre Platine schützt — verbinden Sie sie, schaltet das Modul zwar weiterhin, aber die Isolation, für die Sie es gebaut haben, ist verloren, und ein Fehler auf der Industrieseite erreicht den ESP32 S3 direkt. Ebenso wichtig ist es, die Modulvariante einzusetzen, die zu der tatsächlich gemessenen Spannung passt, und nicht irgendeine, die gerade in der Schublade lag: Ein 12V-Modul an einer 24V-Leitung steuert seine interne LED mit etwa dem doppelten Nennstrom an und beschädigt sie, während ein 24V-Modul an einer 12V-Leitung zu schwach angesteuert wird und verspätet oder gar nicht schaltet; wenn Sie stattdessen die Variante mit dem nackten Chip bauen, wird aus derselben Regel die Dimensionierung des Vorwiderstands für die Eingangsspannung. Achten Sie dabei auch auf die Polarität dieses Eingangs, denn es handelt sich um eine LED, die nur in eine Richtung leitet — vertauschen Sie IN+ und IN-, bleibt die Schaltung einfach dunkel und meldet nichts. Stellen Sie also vor dem Verdrahten fest, welche Seite Ihres Abgriffs positiv ist. Wenn das überwachte Gerät induktiv ist — eine Relaisspule, ein Schütz, ein Magnetventil, ein Motorstarter oder die Spule, die eine Signalleuchte ansteuert —, bauen Sie eine gewöhnliche Diode antiparallel direkt über die Eingangsklemmen ein, Kathode an IN+ und Anode an IN-: Das zusammenbrechende Magnetfeld erzeugt eine große Sperrspannungsspitze an einer Eingangs-LED, die nur für 6 V Sperrspannung ausgelegt ist. Im Normalbetrieb bewirkt diese Diode überhaupt nichts, bei einer Spitze leitet sie jedoch und begrenzt die Sperrspannung auf deutlich unter ein Volt. Eine 1N4148 eignet sich für kleine Abgriffe, eine 1N4007 für größere. Beziehen Sie auf der Ausgangsseite alles auf 3,3V: Der ESP32 S3 ist nicht 5V-tolerant, versorgen Sie das Modul daher über die 3,3-V-Schiene der Platine und niemals über 5V. Wählen Sie schließlich den GPIO mit etwas Sorgfalt. Dieses Tutorial verwendet GPIO19, der beim ESP32 S3 zugleich die native USB-Leitung D- ist, GPIO20 ist D+ — diese zweite Rolle belegt die Pins jedoch nur, wenn Ihr Sketch tatsächlich die native USB-Peripherie nutzt. Auf einer Platine, die über eine USB-zu-UART-Brücke mit der Arduino IDE kommuniziert, wie es bei den meisten ESP32 S3-Entwicklungsplatinen der Fall ist, sind GPIO19 und GPIO20 gewöhnliche GPIOs mit funktionierendem internem Pull-up. Wenn Sie stattdessen natives USB verwenden — USB-CDC-Seriell über den nativen Anschluss der Platine, USB HID oder alles, was auf TinyUSB aufbaut —, gehören diese beiden Pins der USB-Peripherie, und der Ausgang des Moduls muss an einen anderen Pin; GPIO16 und GPIO17 haben keine besondere Funktion und eignen sich beide. Unabhängig davon sollten Sie bei N16R8-Modulen GPIO26 bis GPIO37 meiden, die für den Octal-SPI-Flash und das PSRAM reserviert sind. Die Anleitung zur Pinbelegung des ESP32 S3 listet die Einschränkungen aller Pins auf, falls Sie einen anderen benötigen.

Verdrahtung mit einem PC817-Optokoppler-Isolationsmodul:

ESP32 S3 PC817-Optokoppler-Isolationsmodul Verdrahtungsdiagramm

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Modulklemme/-pinVerbunden mit
IN+ (Schraubklemme)Pluspol des 12V/24V-Signals
IN- (Schraubklemme)NUR Masse des 12V/24V-Stromkreises
VCC (Stiftleiste)ESP32 S3 3.3V
GND (Stiftleiste)ESP32 S3 GND
OUT / DO (Stiftleiste)ESP32 S3 GPIO19

Module gibt es in Versionen mit 1, 2, 4 und 8 Kanälen, und jeder Kanal wiederholt dasselbe Muster: sein eigenes Paar Eingangsschraubklemmen, sein eigener Ausgangspin und meist eine eigene Status-LED, die leuchtet, solange die Eingangsseite dieses Kanals unter Spannung steht. Nur VCC und GND werden von allen Kanälen gemeinsam genutzt.

Den PC817 parallel zum Gerät anschließen, um zu sehen, ob es läuft

Der Eingang des Moduls muss über dem überwachten Gerät liegen — also parallel dazu — und niemals in Reihe damit. Eine Reihenschaltung würde den gesamten Laststrom des Geräts durch eine Infrarot-LED leiten, die für 20 mA ausgelegt ist, und der PC817 würde in dem Moment zerstört, in dem sich der Stromkreis schließt. Nehmen wir als Beispiel die 24V-Leuchte "Läuft" eines Förderbands: Beide Drähte der Leuchte bleiben unangetastet, und Sie führen einfach ein zweites Leitungspaar parallel dazu zu den Schraubklemmen des Moduls — ohne einen eigenen Widerstand hinzuzufügen, denn das 24V-Modul hat bereits einen.

Abgriffpunkt am GerätVerbunden mit
Geschaltete / positive Klemme der LeuchteSchraubklemme IN+ des Moduls
Negative / Rückleiter-Klemme der LeuchteSchraubklemme IN- des Moduls

Im bestehenden Stromkreis wird nichts durchtrennt oder umgeleitet, und der Abgriff zieht nur etwa 10 mA — vernachlässigbar im Vergleich zu dem, was eine Leuchte, eine Schützspule oder ein Förderband-Motorstarter aufnimmt —, sodass die Maschine genau wie zuvor weiterarbeitet. Es handelt sich um eine reine Lesemessung.

Da der Abgriff die eigene Versorgung des Geräts überwacht und nicht einen Befehl, den Ihr Sketch gesendet hat, folgt der ESP32 S3 dem tatsächlichen Zustand der Anlage: Er sieht das Förderband, das ein Bediener am Schaltpult gestartet hat, und ebenso die Schutztürverriegelung, die eingeschaltet werden sollte, aber nie tatsächlich angesprungen ist. Genau das macht den Messwert protokollierungswürdig — Betriebsstundensummen, Stillstandsaufzeichnungen und Warnungen vom Typ "Ist es wirklich angelaufen?" ergeben sich alle daraus. Eine ehrliche Einschränkung sollte klar gesagt werden: Das zeigt Ihnen, dass das Gerät unter Spannung steht, nicht, dass es funktioniert. Ein festgefressener Motor oder ein durchgebranntes Heizelement nimmt weiterhin Strom auf und wird weiterhin als ENERGIZED gemeldet.

Zwei Eigenheiten aus der Praxis sollten Sie kennen, bevor Sie echte Maschinen abgreifen. Manche SPS-Transistorausgänge, Triac-Ausgänge und LED-Leuchtentreiber lassen auch im ausgeschalteten Zustand einen kleinen Leckstrom fließen, und genügend Leckstrom lässt die LED des PC817 halb leuchten, sodass der ESP32 S3 dauerhaft ENERGIZED meldet. Das Erkennungszeichen ist ein Messwert, der nie auf OPEN zurückfällt, und die Abhilfe ist ein Ableitwiderstand von etwa 4,7 kOhm bis 10 kOhm parallel zu den Eingangsklemmen des Moduls, der dem Leckstrom einen Pfad an der LED vorbei bietet. Die zweite Eigenheit ist, dass der Eingang eine einzelne LED ist und daher nur in eine Richtung leitet. Das macht den PC817 zu einem reinen DC-Bauteil — zum Erfassen einer Wechselstromleitung benötigen Sie einen Optokoppler, dessen Eingangsstufe stattdessen zwei antiparallele LEDs enthält.

Ist Ihr Optokopplermodul aktiv HIGH oder aktiv LOW?

Beim nackten Chip ist die Antwort eindeutige Physik. Der Pin des ESP32 S3 wird durch seinen internen Pull-up hochgehalten, während der Fototransistor ihn nach unten zieht, daher ist der Messwert invertiert:

  • Externes 12V/24V-Signal vorhanden → LED an → Transistor leitet → der Pin liest LOW
  • Externes 12V/24V-Signal nicht vorhanden → LED aus → Transistor aus → der Pin liest HIGH

Bei einem Modul müssen Sie prüfen, wie herum Ihres arbeitet, denn es werden beide Arten verkauft: Viele Hersteller führen den Fototransistor direkt heraus, sodass sich das Modul genau wie der nackte Chip verhält, während andere eine invertierende Stufe auf der Platine hinzufügen, sodass der Ausgang dem Eingang folgt. Der Aufdruck auf der Platine ist selten eindeutig genug, um ihm zu vertrauen, und der Test dauert weniger als eine Minute:

  1. Verdrahten Sie das Modul wie in der obigen Tabelle und laden Sie den Sketch aus diesem Tutorial hoch, der den Zustand bei jeder Abfrage ausgibt.
  2. Lassen Sie die Eingangsschraubklemmen unbeschaltet und lesen Sie ab, was der Serielle Monitor ausgibt — das ist Ihr Ruhezustand.
  3. Legen Sie das echte Signal an IN+ und IN- an und lesen Sie den Seriellen Monitor erneut ab.
  4. Der Pegel, der bei anliegendem Signal erscheint, ist der aktive Pegel Ihres Moduls. Meldet der Sketch in diesem Moment bereits ENERGIZED, ist Ihr Modul aktiv-LOW, und es muss nichts geändert werden.
  5. Vergleichen Sie mit der eigenen Status-LED des Moduls, die leuchtet, sobald die Eingangsseite unter Spannung steht. Leuchtet diese LED, während der Sketch noch OPEN meldet, haben Sie die invertierende Art.

Die Korrektur ist eine einzige Änderung statt einer Neuprogrammierung: Der folgende Sketch enthält eine Konstante, MODULE_ACTIVE_LOW, die standardmäßig auf true gesetzt ist. Ändern Sie sie auf false, und jeder Messwert wird für ein aktiv-HIGH-Modul umgekehrt.

Optional: Aufbau mit dem nackten PC817-Chip

Wenn Sie lieber den nackten 4-poligen Chip einlöten als ein Modul zu kaufen, gilt alles oben Gesagte weiterhin — Sie stellen lediglich den Widerstand selbst bereit, den das Modul gehabt hätte. Verdrahten Sie ihn anhand der zuvor aufgeführten Pinbelegung: die Signalleitung über den Widerstand an Pin 1, die Masse des externen Stromkreises an Pin 2, GND des ESP32 S3 an Pin 3 und GPIO19 an Pin 4. Dimensionieren Sie den Widerstand mit R = (Vin - Vf) / If, mit Vf = 1,2 V und einem Zielstrom von 10 mA. Das ergibt 220 Ohm bei 3,3V, 390 Ohm bei 5V, 1 kOhm bei 12V und 2,2 kOhm bei 24V. Verwenden Sie an einer 24V-Leitung ein Bauteil mit 1/2 W; darunter reicht überall 1/4 W. Einen 1-kOhm-Widerstand an 24V wiederzuverwenden ist hier der klassische Fehler — er treibt etwa 22,8 mA durch eine LED, die für 20 mA Dauerstrom ausgelegt ist, und verkürzt die Lebensdauer des PC817 ebenso sicher wie ein unpassendes Modul.

Programmierung

Für dieses Projekt wird keine Bibliothek benötigt — das Modul liefert dem ESP32 S3 einen einfachen digitalen Pegel, daher sind pinMode() und digitalRead() das gesamte Werkzeug. Konfigurieren Sie GPIO19 als INPUT_PULLUP, sodass der Pin im Ruhezustand HIGH ist, wenn ihn nichts ansteuert, und lassen Sie dann den Sketch diesen Rohpegel in einen realen Zustand übersetzen, anstatt LOW- und HIGH-Vergleiche über den restlichen Code zu verstreuen. Diese Übersetzung erfolgt an genau einer Stelle, anhand der Konstante MODULE_ACTIVE_LOW am Anfang der Datei: Lassen Sie sie für das übliche aktiv-LOW-Modul und für den nackten Chip auf true und setzen Sie sie auf false, wenn der obige Polaritätstest gezeigt hat, dass Ihr Modul auf der Platine invertiert. Der Sketch fragt den Pin zweimal pro Sekunde ab, gibt den aktuellen Zustand der überwachten Leitung aus und fügt eine zusätzliche Wechselmeldung hinzu, sobald der externe Stromkreis ein- oder ausschaltet.

ESP32 S3-Code - PC817-Optokoppler

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-s3/esp32-s3-pc817-optocoupler-monitor-12v-24v-dc-input-signal */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-pc817-optocoupler-monitor-12v-24v-dc-input-signal */ #define PC817_PIN 19 // ESP32-S3 pin GPIO19 connected to the PC817 collector (pin 4) // Most PC817 modules pull the output LOW when the input signal is present. // If your module works the other way round, change this to false. const bool MODULE_ACTIVE_LOW = true; int lastState = HIGH; // the pull-up keeps the pin HIGH while no external signal is present void setup() { Serial.begin(115200); // the internal pull-up holds the pin HIGH; the PC817 phototransistor pulls it LOW // when the external 12V/24V signal turns the internal LED on pinMode(PC817_PIN, INPUT_PULLUP); Serial.println("PC817 isolated input monitor started"); } void loop() { int pinState = digitalRead(PC817_PIN); // with an active-LOW module the reading is INVERTED: LOW means the external // 12V/24V signal IS present; an active-HIGH module reports it the other way bool signalActive = MODULE_ACTIVE_LOW ? (pinState == LOW) : (pinState == HIGH); // report the moment the external line switches on or off if (pinState != lastState) { if (signalActive) Serial.println("Isolated input -> ENERGIZED"); else Serial.println("Isolated input -> OPEN"); lastState = pinState; } // report the current state of the monitored line if (signalActive) Serial.println("24V line: ENERGIZED"); else Serial.println("24V line: OPEN"); delay(500); }

Schnelle Schritte

  1. Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
  2. Messen Sie das Signal, das Sie überwachen möchten, und wählen Sie das passende Modul — das 24V-Modul für eine 24V-Leitung, das 12V-Modul für eine 12V-Leitung, das 3-5V-Modul für ein Logikpegel-Signal.
  3. Schließen Sie die Feldverdrahtung an den Schraubklemmen an: den geschalteten Pluspol an IN+, den Rückleiter des externen Stromkreises an IN-.
  4. Verdrahten Sie die Ausgangsseite: VCC an den 3,3-V-Pin des ESP32 S3, GND an GND und OUT an GPIO19.
  5. Überprüfen Sie nochmals, dass die Masse des externen Stromkreises NIRGENDS mit dem ESP32 S3 verbunden ist.
  6. Schließen Sie den ESP32 S3 mit dem USB-Typ-C-Kabel an Ihren Computer an.
  7. Öffnen Sie die Arduino IDE und wählen Sie Ihre ESP32 S3-Platine und ihren COM-Port aus.
  8. Kopieren Sie den obigen Code in den Editor und drücken Sie die Schaltfläche Upload.
So laden Sie ESP32 S3-Code in der Arduino IDE hoch
  1. Öffnen Sie den Seriellen Monitor und stellen Sie ihn auf 115200 Baud ein.
So öffnen Sie den Seriellen Monitor in der Arduino IDE
  1. Schalten Sie das externe 12V- oder 24V-Signal ein und aus und beobachten Sie, wie der gemeldete Zustand folgt. Ist die Anzeige umgekehrt, setzen Sie MODULE_ACTIVE_LOW auf false und laden Sie den Code erneut hoch.
  2. Profi-Tipp: Bevor Sie etwas Industrielles verdrahten, proben Sie die Schaltung mit einem Labornetzteil oder einem übrigen 12V-Netzteil — bleibt der ausgegebene Zustand bei abgeklemmtem Eingang auf ENERGIZED, sind Ihre beiden Massen irgendwo versehentlich verbunden.

Ausgabe im Seriellen Monitor

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-03-04 14:07:51] PC817 isolated input monitor started [2026-03-04 14:07:51] 24V line: OPEN [2026-03-04 14:07:52] 24V line: OPEN [2026-03-04 14:07:52] 24V line: OPEN [2026-03-04 14:07:53] 24V line: OPEN [2026-03-04 14:07:53] Isolated input -> ENERGIZED [2026-03-04 14:07:53] 24V line: ENERGIZED [2026-03-04 14:07:54] 24V line: ENERGIZED [2026-03-04 14:07:54] 24V line: ENERGIZED [2026-03-04 14:07:55] 24V line: ENERGIZED [2026-03-04 14:07:55] 24V line: ENERGIZED [2026-03-04 14:07:56] Isolated input -> OPEN [2026-03-04 14:07:56] 24V line: OPEN [2026-03-04 14:07:57] 24V line: OPEN [2026-03-04 14:07:57] 24V line: OPEN
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

※ Notiz:

Wenn der Serielle Monitor ständig ENERGIZED meldet und sich nie ändert, prüfen Sie vier Dinge in dieser Reihenfolge: ob die Modulvariante zu Ihrer Eingangsspannung passt, ob MODULE_ACTIVE_LOW für Ihr Modul richtig herum gesetzt ist, die Polarität von IN+ und IN- (die interne LED leitet nur in eine Richtung) und ob die externe Masse auf die GND-Schiene des ESP32 S3 gelangt ist. Meldet er ständig OPEN, leuchtet die Eingangs-LED mit ziemlicher Sicherheit nicht — die eigene Status-LED des Moduls zeigt Ihnen das auf einen Blick, und ein 24V-Modul an einer 12V-Leitung ist eine häufige Ursache.

Anwendungsideen

Sobald Ihr ESP32 S3 einen isolierten Digitaleingang lesen kann, wird fast jedes 12V- oder 24V-Gerät zu etwas, das Sie überwachen können, ohne es zu verändern.

  1. Protokollierung der Schutztürverriegelung: Überwachen Sie die 24-V-Verriegelungsleitung einer geschützten Maschine und zeichnen Sie jedes Öffnen des Schutzkreises auf, damit Sie sehen, wie oft die Produktion tatsächlich unterbrochen wird.
  2. Betriebsstundenzähler für Förderbänder: Greifen Sie die 24-V-Lampenleitung ab, die die Leuchten "Läuft" und "Störung" eines Förderbands ansteuert, spiegeln Sie den Status aus der Fabrikhalle auf ein WLAN-Dashboard, das der ESP32 S3 bereitstellt, und summieren Sie die Stunden, in denen das Förderband tatsächlich läuft, sodass eine Warnung "Ist es angelaufen?" ausgelöst wird, wenn es laufen sollte und es nicht tut.
  3. Überwachung des Gefriergerätealarms: Erkennen Sie, wenn der 12-V-Alarmausgang eines gewerblichen Gefriergeräts aktiv wird — eine Aufgabe für das 12V-Modul —, und senden Sie eine Benachrichtigung, lange bevor zufällig jemand am Gerät vorbeigeht.
  4. Betätigungszähler für Magnetspulen: Überwachen Sie eine 24-V-Magnet- oder Schützspule und zählen Sie die Betätigungen, damit die Wartung nach den tatsächlichen Schaltzyklen statt nach dem Kalender geplant werden kann.
  5. Torschalter-Eingang über lange Leitungen: Lesen Sie einen 24-V-Schalter am fernen Ende einer langen Kabelstrecke, wo eine nackte 3,3-V-Leitung zu viele Störungen aufnehmen würde, um vertrauenswürdig zu sein — ein robusterer Verwandter des Projekts ESP32 S3 Endschalter.
  6. Isolierter Auslöser für eine geschaltete Last: Lassen Sie ein geprüftes 24-V-Feldsignal entscheiden, wann der ESP32 S3 ein Relais schließt, und halten Sie so die Steuerlogik an beiden Enden von der Feldverdrahtung getrennt.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3-Projekt an.

Fordern Sie sich heraus

Die Schaltung ist klein, bietet aber viel Raum, um sie zu etwas wirklich Nützlichem auf der Werkbank auszubauen.

  1. Einsteiger: Lassen Sie die integrierte RGB-LED des ESP32 S3 an GPIO48 leuchten, sobald der isolierte Eingang unter Spannung steht, damit Sie eine Anzeige auf einen Blick haben, ohne den Seriellen Monitor zu öffnen.
  2. Fortgeschritten: Messen Sie, wie lange das externe Signal bei jeder Aktivierung anliegt, geben Sie die Dauer in Sekunden aus und führen Sie eine laufende Summe der Einschaltzeit seit dem Start.
  3. Experte: Fügen Sie eine Software-Entprellung für kontaktgesteuerte Signale hinzu und erweitern Sie auf ein 4-Kanal-24V-Optokopplermodul, das vier unabhängige Feldleitungen liest und ihren gemeinsamen Zustand über WLAN veröffentlicht.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!