ESP32 C3 Super Mini - PC817-Optokoppler: 12V/24V-DC-Eingangssignal überwachen

Der ESP32 C3 Super Mini ist klein genug, um in einem Projektgehäuse zu verschwinden, aber jeder seiner GPIO-Pins verträgt höchstens 3,3V DC – eine 12V-DC- oder 24V-DC-Leitung von einem Auto, einer Türklingel oder einem Maschinenschaltschrank würde das Board in dem Moment zerstören, in dem Sie sie an einen Pin anlegen. Ein PC817-Optokoppler-Isolationsmodul ist das günstige, fertige Bauteil, das dieses Problem löst, und es ist kaum größer als das Board selbst.

Meistens lautet die eigentliche Frage nicht „Liegt ein Signal an?", sondern „Läuft dieses Gerät gerade wirklich?" – dreht sich die Pumpe, hat der Gong seinen Befehl erhalten, zieht die Heizung noch Strom. Ein PC817-Modul, das parallel an einem 12V- oder 24V-Gerät abgreift, beantwortet genau das, und der ESP32 C3 Super Mini ist klein genug, um dauerhaft im Gerät zu bleiben und diese Frage immer wieder zu beantworten.

In diesem Tutorial lernen Sie:

ESP32 C3 Super Mini PC817-Optokoppler isolierter 12V- und 24V-Eingang

Warum der ESP32 C3 Super Mini einen PC817 braucht

Erforderliche Hardware

1×ESP32 C3 Super Mini
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 Module 12V
1×PC817 Optocoupler Module 3-5V
1×Breadboard
1×Verbindungskabel

Oder Sie können die folgenden Kits kaufen:

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.

Hinweis: Kaufen Sie EIN Modul – die Variante, die zu der Leitung passt, die Sie überwachen möchten. Der nächste Abschnitt zeigt Ihnen, wie Sie herausfinden, welche das ist.

Wie ein PC817-Optokopplermodul funktioniert

Ein PC817-Optokoppler-Isolationsmodul ist eine kleine Platine, die um den 4-poligen PC817-Chip herum aufgebaut ist. In diesem Chip steht eine Infrarot-LED einem Fototransistor über einen isolierenden Spalt gegenüber: Strom durch die LED erzeugt Licht, das Licht schaltet den Transistor ein, und das ist schon der ganze Trick. Da das Signal als Licht statt als Elektrizität übertragen wird, bleiben die 12V/24V-Seite und die Seite des ESP32 C3 Super Mini elektrisch getrennt.

Was das Modul um den Chip herum ergänzt, erspart Ihnen Arbeit: Der Vorwiderstand für die Eingangs-LED ist bereits bestückt, der Eingang kommt über Schraubklemmen, die Feldverdrahtung direkt aufnehmen, und eine Status-LED auf der Eingangsseite zeigt Ihnen auf einen Blick, wann die Leitung unter Spannung steht. Module gibt es in Versionen mit 1, 2, 4 und 8 Kanälen.

Hauptmerkmale des PC817 im Modul:

  • Isolationsspannung: 5000 Vrms für 1 Minute zwischen Eingangs- und Ausgangsseite
  • Eingangs-LED: etwa 1,2 V Durchlassspannung, maximal 20 mA Dauerstrom, mit 5-20 mA als normalem Arbeitsbereich
  • Ausgangstransistor: maximal 35 V Kollektor-Emitter-Spannung, maximal 50 mA Kollektorstrom, 150 mW Verlustleistung
  • Stromübertragungsverhältnis (CTR): 50% bis 600%, je nach auf dem Bauteil aufgedruckter Klasse (Klasse A 80-160%, B 130-260%, C 200-400%, D 300-600%)
  • Geschwindigkeit: etwa 4 us Anstiegszeit und 3 us Abfallzeit, was für alles, was ein Mensch oder eine Maschinenleuchte tut, sofort ist
  • Temperaturbereich: -30 C bis +100 C

Warum dies für Einsteiger mit dem ESP32 C3 Super Mini geeignet ist:

  • Nichts zu berechnen – der Widerstand des Moduls wurde ab Werk für seine Eingangsspannung dimensioniert
  • Es gibt nichts zu kalibrieren und nichts zu konfigurieren
  • Ein Verdrahtungsfehler auf der 12V/24V-Seite endet am Modul, statt Ihr Board zu erreichen
  • Dank Schraubklemmen können Sie die Felddrähte installierter Geräte anschließen, ohne dass ein Steckbrett in der Nähe sein muss

Welches Optokopplermodul brauche ich? Messen Sie zuerst die Leitung

Fast alles auf dieser Seite ist eine Nachrüstung – Sie überwachen einen Gong, eine Pumpe oder eine Schaltschrankleuchte, die jemand anderes installiert hat. Die ehrliche Antwort auf „Welches Modul?" beginnt daher mit „Ich weiß es noch nicht, ich messe erst". Tun Sie das, bevor Sie etwas bestellen.

Die Leitung in drei Schritten messen:

  • Stellen Sie ein Multimeter auf Gleichspannung (DC) und legen Sie die schwarze Messspitze an den Minus- oder Rückleiteranschluss des zu überwachenden Geräts
  • Legen Sie die rote Messspitze an den Plus- oder geschalteten Anschluss und schalten Sie dann das Gerät ein – drücken Sie den Klingelknopf, lassen Sie den Thermostat die Pumpe anfordern, was auch immer es normalerweise ansteuert
  • Lesen Sie die Spannung ab, während es eingeschaltet ist. Diese Zahl, nicht die Angabe auf dem Netzteil, ist das, wofür Sie ein Modul kaufen
Was das Messgerät bei eingeschaltetem Gerät anzeigt Dieses Modul kaufen Typische Quellen
Etwa 12 V DC 12V-Modul Türgongs, Garagentorsteuerungen, Kfz-Stromkreise, kleine Pumpen und Lüfter
Etwa 24 V DC 24V-Modul Maschinenschaltschrankleuchten, Schütz- und Magnetspulen, SPS-Ausgänge, HLK-Steuerungen
3,3 V oder 5 V DC 3-5V-Modul Logikausgänge, Sensorplatinen, die Steuerplatine in einem Gerät

Warum die Variante so wichtig ist: Der Vorwiderstand des Moduls ist auf der Platine bestückt und für genau diese eine Eingangsspannung dimensioniert. Die Wahl der Variante ist beim Modul das Gegenstück zur Dimensionierung des Widerstands – es ist die einzige Kaufentscheidung auf dieser Seite, bei der etwas schiefgehen kann.

WARNING

Verwechseln Sie die Varianten nicht.

Versorgen Sie ein 12V-Modul aus einer 24V-Leitung, fließt etwa der doppelte vorgesehene Strom durch die interne LED, was sie beschädigt.

Versorgen Sie ein 24V-Modul aus einer 12V-Leitung, wird die LED zu schwach angesteuert, sodass der Ausgang verspätet, unzuverlässig oder überhaupt nicht schaltet.

Wenn Sie ein fertiges ESP32 C3 Super Mini-Projekt später von einer 12V-Maschine auf eine 24V-Maschine umziehen, tauschen Sie das Modul – der Code ändert sich nicht.

Auch ein 3,3V- oder 5V-Signal lohnt sich zu isolieren:

  • Greifen Sie zum 3-5V-Modul, wann immer die beiden Schaltungen von getrennten Netzteilen versorgt werden, Meter voneinander entfernt sind oder eine Seite elektrisch verrauscht ist – eine lange Kabelstrecke, ein Motortreiber oder die Niederspannungs-Steuerplatine tief in einem netzbetriebenen Gerät. Bei der Isolierung geht es darum, den Massepfad zu unterbrechen, nicht nur darum, eine hohe Spannung zu überleben
  • Für den Eingang zählt der Strom, nicht die Spannung: Eine 5V-Schiene, die zehn Ampere liefern kann, belastet die LED des Moduls nicht stärker als eine, die nur zehn Milliampere liefern kann, weil der Widerstand auf der Platine den LED-Strom in beiden Fällen festlegt. Was die kräftige Versorgung ändert, ist, wie viel Schaden ein Verdrahtungsfehler an anderer Stelle anrichtet – ein weiteres Argument für die Isolierung
  • 3,3V ist die praktische Untergrenze. Allein die interne LED verbraucht davon etwa 1,2 V, sodass darunter nur sehr wenig Spielraum bleibt

Verdrahtungsdiagramm

Wir lesen das isolierte Signal an D5. Dieser Pin ist ein einfacher GPIO am ESP32 C3 Super Mini: Er ist weder der Pin der eingebauten LED (GPIO8) noch der BOOT-Pin (GPIO9), keiner der USB-Datenpins und keiner der Pins, die das Standard-UART und I2C verwenden. Seine Verwendung stört daher weder das Hochladen noch die LED auf der Platine noch den Seriellen Monitor.

WARNING

Verbinden Sie die Masse des 12V/24V-Kreises NICHT mit der GND des ESP32 C3 Super Mini. Genau diese Trennung ist der ganze Sinn des PC817. Wenn Sie die beiden Massen verbinden, schaltet der Optokoppler zwar weiterhin und der Code funktioniert noch, aber die Isolierung ist weg, und ein Fehler auf der 12V/24V-Seite kann nun Ihr Board erreichen.

ESP32 C3 Super Mini PC817-Optokoppler-Isolationsmodul Schaltplan

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

Modulklemme/-pin Verbinden mit
IN+ (Schraubklemme) dem 12V/24V-Signaldraht
IN- (Schraubklemme) der Masse des 12V/24V-Kreises
VCC (Stiftleistenpin) ESP32 C3 Super Mini 3,3V
GND (Stiftleistenpin) ESP32 C3 Super Mini GND
OUT (Stiftleistenpin) D5
  • Versorgen Sie die Ausgangsseite mit 3,3V, nicht mit 5V – der ESP32 C3 Super Mini ist nicht 5V-tolerant, und der OUT-Pin des Moduls schwingt auf die Spannung, die Sie an VCC anlegen
  • Kein eigener Widerstand gehört in die Nähe von IN+. Das Modul hat bereits einen, und ein zweiter in Reihe lässt die LED nur verhungern
  • Die Schraubklemmenseite und die Stiftleistenseite sind zwei getrennte Schaltungen, die nichts außer dem isolierenden Spalt im PC817 gemeinsam haben
  • Die Eingangsseite ist eine LED und leitet nur in eine Richtung: IN+ erhält den Plus- oder geschalteten Draht, IN- den Rückleiter

Optional – Denselben Eingang aus dem nackten PC817-Chip aufbauen

Sie löten lieber selbst? Ein nackter PC817 ist ein 4-poliges DIP-Gehäuse mit einem Punkt oder einer Kerbe neben Pin 1, und ein einziger Widerstand macht daraus denselben isolierten Eingang.

PC817-Optokoppler Pinbelegung für isolierten Eingang am ESP32 C3 Super Mini
  • Pin 1 - Anode (A): Eingangsseite – das 12V/24V-Signal über Ihren Vorwiderstand
  • Pin 2 - Kathode (K): Eingangsseite – die Masse des 12V/24V-Kreises, niemals die Board-Masse
  • Pin 3 - Emitter (E): Ausgangsseite – ESP32 C3 Super Mini GND
  • Pin 4 - Kollektor (C): Ausgangsseite – D5

Die Dimensionierung dieses Widerstands ist genau die Aufgabe, die Ihnen die Modulvariante abgenommen hat. Streben Sie 10 mA durch die interne LED an: R = (Vin - 1.2) / 0.01.

Eingangsspannung Zu bestückender Widerstand Hinweis
3,3V 220 Ohm etwa 9,5 mA, 1/4 W
5V 390 Ohm etwa 9,7 mA, 1/4 W – 470 Ohm ist ein guter Ersatz
12V 1 kOhm etwa 10,8 mA, 1/4 W
24V 2,2 kOhm etwa 10,4 mA – verwenden Sie hier einen 1/2-W-Widerstand

Wechseln Sie den Widerstand, wann immer sich die Eingangsspannung ändert: Lassen Sie 1 kOhm eingebaut und legen 24 Volt an, fließen etwa 22,8 mA – über der 20-mA-Grenze der LED.

Das Modul parallel zu einem bereits installierten Gerät verdrahten

Die beste Aufgabe für ein so günstiges und kleines Board ist eine Nachrüstung: ein 12V-DC-Türgong, ein Gerät oder eine Pumpe, die bereits an der Wand verschraubt und verdrahtet ist und die Sie nun überwachen möchten, ohne etwas davon auseinanderzunehmen. Das funktioniert, weil der Eingang des Moduls über das Gerät geschaltet wird – parallel dazu. Nichts im bestehenden Stromkreis wird durchtrennt, abgesteckt oder umgeleitet; Sie schließen zwei Drähte an bereits vorhandene Klemmen an und lassen alles andere in Ruhe.

WARNING

Schalten Sie das Modul niemals in Reihe mit dem Gerät. In Reihe fließt der gesamte Laststrom des Gongs, der Lampe oder der Pumpe durch die interne LED des Optokopplers, die für 20 mA ausgelegt ist – das Bauteil wird in dem Moment zerstört, in dem das Gerät einschaltet. Der Abgriff erfolgt parallel zum Gerät, nicht in der Leitung.

Vorhandenes 12V/24V-Gerät Modulklemme
Plus- / geschalteter Anschluss IN+
Minus- / Rückleiteranschluss IN-
  • Bei einem Modulabgriff ist kein Vorwiderstand nötig: Zwei Drähte laufen von den Anschlüssen des Geräts direkt auf IN+ und IN-, weil der Widerstand, der den LED-Strom festlegt, bereits auf dem Modul sitzt – deshalb muss die Variante auch zur an diesem Gerät gemessenen Spannung passen
  • Der Abgriff zieht etwa 10 mA, was im Vergleich zu dem, was eine Gongspule, eine Lampe, ein Ventil oder ein Motor zieht, nichts ist, sodass sich das Gerät genauso verhält wie zuvor. Es ist eine reine Lesemessung
  • Die Polarität ist wichtig: Die Eingangsseite ist eine LED und leitet nur in eine Richtung. Vertauschen Sie IN+ und IN-, schaltet sie einfach nie ein. Prüfen Sie daher mit einem Multimeter, welcher Anschluss des Abgriffs positiv ist, bevor Sie etwas festziehen
  • Der Messwert folgt dem tatsächlichen Zustand des Geräts: Da der Abgriff über dem Gerät statt über Ihrem eigenen Schalter liegt, ist er immer dann wahr, wenn das Gerät unter Spannung steht – auch wenn der Taster, Timer oder Thermostat eines anderen es einschaltet, und auch wenn es überhaupt nicht angeht. Das ermöglicht Betriebsstundenprotokolle, Leerlaufzeitzählung und „Ist es wirklich angelaufen?"-Warnungen
  • Eine ehrliche Einschränkung: Dies sagt Ihnen, dass das Gerät unter Spannung steht, nicht, dass es funktioniert – eine festgefressene Pumpe oder ein Gong mit durchgebrannter Spule zieht trotzdem Strom und wird weiterhin als EIN gelesen
  • Nur DC: Der PC817-Eingang ist eine einzelne LED und reagiert daher nur auf eine Polarität. Wenn diese Türklingel von einem Wechselstromtrafo statt von einer 12V-DC-Versorgung betrieben wird, ist dies das falsche Bauteil – zur Erfassung von Wechselstrom benötigen Sie einen Optokoppler, dessen Eingangsstufe zwei antiparallele LEDs hat

WARNING

Eine Gongspule, ein Relais, ein Magnetventil, ein Schütz oder ein Motor schickt beim Abschalten eine große Rückspannungsspitze zurück durch die Leitungen, und die Eingangs-LED des PC817 ist nur für 6 V in Sperrrichtung ausgelegt. Setzen Sie eine gewöhnliche Diode antiparallel direkt über die Eingangsklemmen des Moduls – Kathode an IN+, Anode an IN- (beim nackten Chip in gleicher Weise über Pin 1 und 2). Im Normalbetrieb ist diese Diode in Sperrrichtung gepolt und tut überhaupt nichts; bei einer Spitze leitet sie und begrenzt die Sperrspannung auf deutlich unter ein Volt. Eine 1N4148 reicht für einen kleinen Abgriff, eine 1N4007 für einen stärkeren.

Ist Ihr Optokopplermodul Active High oder Active Low?

Beginnen Sie mit dem nackten Chip, denn dieser Teil ist gesicherte Physik. Die Ausgangsseite des PC817 gibt keine Spannung aus – sein Fototransistor verbindet den Digitalpin einfach mit GND, wenn er eingeschaltet ist. Der Pin benötigt daher einen Pull-up, um überhaupt eine Spannung zu haben, wenn der Transistor ausgeschaltet ist. Der ESP32 C3 Super Mini hat in jedem GPIO einen internen Pull-up eingebaut, und genau diesen verwenden wir hier.

Externes 12V/24V-Signal PC817-LED Fototransistor ESP32 C3 Super Mini-Pin liest
Vorhanden an leitend LOW
Nicht vorhanden aus sperrend HIGH

Beim nackten Chip gilt also: Signal vorhanden wird als LOW gelesen – immer. Bei einem Modul wird es interessant: Die meisten Hersteller verdrahten den Chip genau wie in der obigen Tabelle, und ihr OUT-Pin ist ebenfalls Active-LOW. Manche fügen jedoch eine invertierende Stufe auf der Platine hinzu, sodass OUT dem Eingang folgt und HIGH wird, während die Leitung unter Spannung steht. Beide Arten werden unter demselben Namen „PC817-Isolationsmodul" verkauft, prüfen Sie Ihres also, statt es anzunehmen.

Der einminütige Polaritätstest:

  • Verdrahten Sie das Modul wie in der obigen Verdrahtungstabelle und laden Sie den ESP32 C3 Super Mini-Sketch weiter unten auf dieser Seite hoch
  • Öffnen Sie den Seriellen Monitor mit 115200, lassen Sie IN+ und IN- unbeschaltet und notieren Sie, was der Sketch meldet – das ist Ihr Ruhezustand
  • Legen Sie nun Spannung an die Eingangsseite an. Die eigene Status-LED des Moduls sollte leuchten: Diese LED ist hier der ehrliche Zeuge, denn sie sitzt auf der isolierten Eingangsseite und lässt sich von nichts täuschen, was in Ihrem Code passiert
  • Was auch immer der Sketch meldet, während diese Status-LED leuchtet, ist der aktive Zustand
  • Wenn die Status-LED leuchtet und der Sketch trotzdem meldet, dass die Leitung ruhig ist, ist Ihr Modul vom Typ Active-HIGH

Die Korrektur ist eine einzige Änderung, kein Neuschreiben: Der Sketch enthält oben eine einzelne Konstante MODULE_ACTIVE_LOW, die standardmäßig auf true gesetzt ist. Ändern Sie sie auf false, laden Sie erneut hoch, und jede Meldung kommt richtig herum heraus. Sonst muss am Code nichts geändert werden.

※ Notiz:

Ein externer 10-kOhm-Widerstand vom Digitalpin nach 3,3V funktioniert genauso gut wie der interne Pull-up, aber auf einem Board mit so wenigen freien Pins und so wenig Platz wie dem ESP32 C3 Super Mini spart Ihnen INPUT_PULLUP ein Bauteil und eine Reihe auf dem Steckbrett.

Wie man den PC817 am ESP32 C3 Super Mini programmiert

Es wird keine Bibliothek benötigt. Es handelt sich um das einfache Lesen eines Digitaleingangs in zwei Schritten.

Schritt 1 – Den Pin als Eingang mit internem Pull-up festlegen:

pinMode(D5, INPUT_PULLUP); // D5 as input, internal pull-up enabled

Schritt 2 – Den Rohwert anhand der Polarität Ihres Moduls in eine Wahr/Falsch-Antwort umwandeln:

const bool MODULE_ACTIVE_LOW = true; // set to false if your module is the active-HIGH kind int raw = digitalRead(D5); bool signalActive = MODULE_ACTIVE_LOW ? (raw == LOW) : (raw == HIGH);

ESP32 C3 Super Mini Code - Überwachen, ob ein 24V-Gerät ein- oder ausgeschaltet ist

Was der Code macht:

  • Legt D5 als Eingang mit eingeschaltetem internem Pull-up des ESP32 C3 Super Mini fest
  • Liest den OUT-Pin des Moduls und wandelt ihn über die Konstante MODULE_ACTIVE_LOW um, sodass eine einzige Änderung beide Polaritäten abdeckt
  • Gibt nur dann eine Zeile aus, wenn die externe Leitung ihren Zustand ändert, sodass der Serielle Monitor lesbar bleibt
  • Nummeriert jede Aktivierung der externen 12V/24V-Leitung
  • Meldet bei jedem Abschalten, wie viele Sekunden die Leitung unter Spannung stand
/* * Dieser ESP32 C3 Super Mini Code wurde von newbiely.de entwickelt * Dieser ESP32 C3 Super Mini 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-c3/esp32-c3-super-mini-pc817-optocoupler-monitor-12v-24v-dc-input-signal */ // The ESP32 C3 Super Mini pin D5 is connected to the OUT pin of a PC817 // optocoupler isolation module, or to the collector (pin 4) of a bare PC817 chip. // D5 is a plain GPIO on this board: it is not the built-in LED (GPIO8), not the // BOOT pin (GPIO9), not one of the USB data pins and not one of the pins the // default UART and I2C use, so it is safe to use. #define SIGNAL_PIN D5 // Which way round does YOUR module report the signal? // // A bare PC817 chip is always active-LOW: the internal pull-up holds D5 at 3.3V // while nothing happens, and when the external 12V/24V signal arrives the PC817's // LED lights, its phototransistor conducts and drags the pin down to GND. // // Optocoupler MODULES are not all built that way. Most of them behave like the bare // chip and pull OUT low when the input terminals are energised, but some makers add // an inverting stage on the board so OUT follows the input and goes HIGH instead. // Both kinds are sold under the same "PC817 isolation module" name, so you have to // check yours rather than assume. // // How to check, in under a minute: upload this sketch, leave IN+/IN- unconnected and // look at the Serial Monitor, then energise the input and look again. If the module's // own input LED lights while the sketch still reports "quiet", your module is the // active-HIGH kind - change the line below to false and re-upload. Nothing else in // this sketch has to change. const bool MODULE_ACTIVE_LOW = true; bool signalActive = false; // true while the external 12V/24V signal is present bool prevSignalActive = false; // the value of signalActive on the previous loop unsigned long activationCount = 0; // how many times the external signal has switched on unsigned long activationStart = 0; // millis() timestamp of the latest switch-on void setup() { // Start the Serial port so we can watch the isolated input on the Serial Monitor Serial.begin(115200); // Configure D5 as an input and switch ON the ESP32 C3's internal pull-up resistor. // The pull-up is what makes the pin sit at 3.3V while the optocoupler is idle. // Without it, the pin would float and the readings would be random. pinMode(SIGNAL_PIN, INPUT_PULLUP); Serial.println("ESP32 C3 Super Mini - PC817 isolated input (D5)"); Serial.println("-----------------------------------------------"); } void loop() { // Read the raw pin state, then turn it into a true/false answer using the // polarity constant above. This is the only place in the sketch that cares // whether the module is active-LOW or active-HIGH. int raw = digitalRead(SIGNAL_PIN); signalActive = MODULE_ACTIVE_LOW ? (raw == LOW) : (raw == HIGH); // Only report when something actually changes, so the Serial Monitor stays readable if (signalActive && !prevSignalActive) { // The external 12V/24V line has just come alive activationCount++; activationStart = millis(); Serial.print("24V line: LIVE | activation #"); Serial.println(activationCount); } else if (!signalActive && prevSignalActive) { // The external line has just gone away - report how long it stayed on. // millis() counts milliseconds, so divide by 1000.0 to print seconds. float heldSeconds = (millis() - activationStart) / 1000.0; Serial.print("24V line: quiet | it stayed live for "); Serial.print(heldSeconds, 2); Serial.println(" s"); } // Remember this reading so the next loop can spot the next change prevSignalActive = signalActive; // A short pause. The PC817 switches in a few microseconds, so 20 ms is plenty // and it also smooths out any bounce coming from a mechanical 12V/24V switch. delay(20); }

Schnelle Schritte

  • Prüfen Sie vor allem anderen die Modulvariante: Sie muss zu der an der Leitung gemessenen Spannung passen – dies ist der Schritt, bei dessen Auslassen Bauteile beschädigt werden
  • Neu bei diesem Board? Arbeiten Sie zuerst Erste Schritte mit dem ESP32 C3 Super Mini durch
  • Ausgangsseite verdrahten: Modul-GND an GND, VCC an 3,3V, OUT an D5
  • Eingangsseite separat verdrahten: IN+ und IN- an das Gerät, und halten Sie die 12V/24V-Masse vollständig vom Board fern
  • Board anschließen: Verbinden Sie den ESP32 C3 Super Mini mit dem USB-Typ-C-Kabel mit Ihrem Computer
  • Board und Port auswählen: Wählen Sie ESP32C3 Dev Module unter Werkzeuge > Board und dann den COM-Port
  • Hochladen: Kopieren Sie den obigen Code in die Arduino IDE und klicken Sie auf Hochladen
  • Öffnen Sie den Seriellen Monitor und stellen Sie die Baudrate auf 115200 ein
  • Schalten Sie die externe Leitung ein und aus und beobachten Sie, wie die Meldungen erscheinen
  • Führen Sie einmal den Polaritätstest durch: Wenn die Meldungen verkehrt herum erscheinen, setzen Sie MODULE_ACTIVE_LOW auf false und laden Sie erneut hoch
  • Profi-Tipp: Wenn der Serielle Monitor die Leitung als aktiv anzeigt, bevor Sie etwas eingeschaltet haben, sind entweder Ihre beiden Massen verbunden oder Ihr Modul ist vom Typ Active-HIGH

Ausgabe im Seriellen Monitor

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32C3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32C3 Dev Module' on 'COM15')
New Line
9600 baud
ESP32 C3 Super Mini - PC817 isolated input (D5) ----------------------------------------------- 24V line: LIVE | activation #1 24V line: quiet | it stayed live for 2.41 s 24V line: LIVE | activation #2 24V line: quiet | it stayed live for 0.36 s 24V line: LIVE | activation #3 24V line: quiet | it stayed live for 7.08 s 24V line: LIVE | activation #4
Ln 11, Col 1
ESP32C3 Dev Module on COM15
2

Hinweis: Wenn MODULE_ACTIVE_LOW auf true bleibt, liest der Pin selbst bei jeder Zeile mit LIVE den Wert LOW. Der Code hat ihn bereits für Sie umgewandelt.

Zeilenweise Code-Erklärung

Der obige ESP32 C3 Super Mini-Code enthält in seinen Kommentaren eine zeilenweise Erklärung. Bitte lesen Sie die Kommentare im Code!

Anwendungs- und Projektideen

Der ESP32 C3 Super Mini ist günstig und winzig, was ihn zum natürlichen Board macht, um es dauerhaft in Geräten zu belassen, die bereits mit 12V oder 24V laufen.

  • Eine 12V-Garagentorsteuerung nachrüsten: Greifen Sie den 12V-Ausgang der Steuerung über ein 12V-Modul ab und lassen Sie das Board bei jeder Torbewegung eine WLAN-Benachrichtigung senden, ohne die Steuerung selbst zu verändern
  • Die Betriebsstunden einer 12V-Pumpe oder eines Lüfters zählen: Greifen Sie direkt am Gerät ab, nummerieren Sie jedes Einschalten und summieren Sie die Laufzeit, damit Sie auf einen Blick sehen, ob es heute überhaupt angelaufen ist
  • Wissen, wann ein vorhandener Türgong tatsächlich geklingelt hat: Der 12V-DC-Gong bleibt genau so verdrahtet, wie der Installateur ihn hinterlassen hat, und der parallele Abgriff macht aus jedem Klingeln eine Nachricht vom Board
  • Eine 24V-Maschinenstörungsleuchte überwachen: Verdrahten Sie ein 24V-Modul über die Störungsleuchtenleitung in einem Schaltschrank und protokollieren Sie jede Maschinenstörung mit den Zeitstempeln, die der Code bereits erfasst
  • Einen isolierten Eingang in ein abgedichtetes Gehäuse zwängen: Ein einkanaliges Modul und dieses Board passen in eine kleine IP-geschützte Box, in die ein Entwicklungsboard in voller Größe nicht passen würde – ideal für 12V-Tor- und Pumpeninstallationen im Freien
  • Prüfen, ob ein 12V-Fahrzeugstromkreis aktiv ist: Überwachen Sie Zündung, Scheinwerfer oder einen Türkontakt im Auto, ohne das Board dem Bordnetz des Fahrzeugs auszusetzen
  • Das Bestromen einer 24V-Magnet- oder Schützspule erkennen: Bestätigen Sie per Software, dass die Spule ihren Befehl tatsächlich erhalten hat, nicht nur, dass Sie einen gesendet haben
  • Einem bereits gebauten Projekt einen Kanal hinzufügen: Kombinieren Sie den isolierten Eingang mit einem Relais, damit ein 24V-Feldsignal eine separate Last schaltet
  • Einen Schalter über lange Leitungen verlängern: Bei Kabeln, die so lang sind, dass ein einfacher Taster-Eingang Störungen aufnimmt, betreiben Sie die Schleife mit 24V und lesen sie stattdessen über ein Modul

Video-Tutorial

Sehen Sie sich das folgende Video an, um eine visuelle Schritt-für-Schritt-Anleitung zu diesem Projekt zu erhalten.

Herausforderungen

Bringen Sie Ihren Aufbau mit ESP32 C3 Super Mini und PC817-Optokoppler mit diesen Aufgaben ein Stück weiter.

  • Einfach: Schreiben Sie die ausgegebenen Bezeichnungen für Ihre eigenen Geräte um – „Zündung", „Pumpe läuft", „Tor öffnet" – statt der allgemeinen 24V-Formulierung
  • Einfach: Spiegeln Sie den isolierten Eingang auf die LED an GPIO8 auf der Platine, damit Sie den Zustand ohne Seriellen Monitor sehen
  • Einfach: Setzen Sie MODULE_ACTIVE_LOW absichtlich auf false, beobachten Sie, wie jede Meldung verkehrt herum erscheint, und setzen Sie es dann zurück – so erkennen Sie das Symptom sofort, falls Sie jemals auf ein anders verdrahtetes Modul stoßen
  • Mittel: Führen Sie eine laufende Summe darüber, wie lange die externe Leitung seit dem Einschalten aktiv war, und geben Sie sie einmal pro Minute aus
  • Mittel: Lösen Sie eine Warnung aus, wenn die 24V-Leitung länger als ein von Ihnen gewählter Grenzwert aktiv bleibt – ein hängendes Schütz oder ein blockiertes Tor sieht genau so aus
  • Mittel: Verwenden Sie denselben Sketch mit einem 12V-Modul statt eines 24V-Moduls an einem anderen Gerät und bestätigen Sie, dass der Code überhaupt nicht geändert werden muss
  • Fortgeschritten: Fügen Sie eine Software-Entprellung hinzu, damit ein prellender 12V-Relaiskontakt nicht als Dutzende Aktivierungen gezählt wird
  • Fortgeschritten: Steigen Sie auf ein 4-Kanal-Modul um und überwachen Sie vier separate 24V-Maschinensignale gleichzeitig, wobei Sie den Zustand aller vier über WLAN melden

Fehlerbehebung

Jeder Messwert ist genau verkehrt herum (es wird LIVE angezeigt, während der Gong still ist, und ruhig, während er klingelt):

  • Ihr Modul ist vom Typ Active-HIGH – manche Hersteller invertieren den Ausgang auf der Platine. Führen Sie den obigen einminütigen Polaritätstest durch und vergleichen Sie die Status-LED des Moduls mit dem, was der Serielle Monitor ausgibt
  • Setzen Sie MODULE_ACTIVE_LOW oben im Sketch auf false und laden Sie erneut hoch. Diese eine Konstante ist die ganze Lösung

Der Pin liest immer LOW (der Code meldet immer LIVE):

  • Die beiden Massen sind irgendwo verbunden – trennen Sie sie
  • Beim nackten Chip ist der PC817 verkehrt herum eingesetzt; suchen Sie den Punkt oder die Kerbe, die Pin 1 markiert

Der Pin liest immer HIGH (es wird nie etwas erkannt):

  • Sie versorgen ein 24V-Modul aus einer 12V-Leitung, sodass seine LED zu schwach angesteuert wird – setzen Sie die Variante ein, die zur gemessenen Spannung passt
  • IN+ und IN- sind vertauscht, sodass die interne LED in Sperrrichtung gepolt ist und nie leuchtet
  • Das externe 12V/24V-Signal liegt tatsächlich nicht an – prüfen Sie es zuerst mit einem Multimeter

Der Messwert kehrt nie in den inaktiven Zustand zurück (es wird LIVE angezeigt, obwohl das Gerät ausgeschaltet ist):

  • Die Quelle ist ein Halbleiterausgang – ein SPS-Transistorausgang, ein Triac-Ausgang oder ein LED-Lampentreiber –, und diese lassen auch im ausgeschalteten Zustand einen kleinen Leckstrom fließen, der ausreicht, um die LED des Moduls teilweise leuchten zu lassen
  • Setzen Sie einen Ableitwiderstand von etwa 4,7 kOhm bis 10 kOhm parallel zu den Eingangsklemmen des Moduls, damit der Leckstrom durch den Widerstand statt durch die LED fließt
  • Wenn die Quelle ein einfacher mechanischer Kontakt ist, suchen Sie stattdessen nach verbundenen Massen

Der Messwert ist instabil:

  • INPUT_PULLUP fehlt in pinMode(), sodass der Pin schwebt
  • Der externe Kontakt ist mechanisch und prellt – fügen Sie eine Entprellung hinzu

Funktionsreferenzen

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!