Ich habe da mal wieder ein Problem mit der Verbindung von externen Komponenten zum ESP32.
Mein externes Modul mit 12V Vcc hat einen Open Collector Ausgang und einen weiteren xyz Ausgang.
Bei Betätigung der Taste "BELL" könnte ich über den Open Collector Ausgang eine Last von bis zu 100mA gegen 12V schalten.
Wie kann ich diesen Anschluss am ESP32 nutzen, um einen GPIO auf LOW oder HIGH zu ziehen, ohne den ESP zu zerstören.
Der xyz Ausgang hängt im Ruhezustand in der Luft und liefert bei Betätigung der Taste "BELL" 0.45V gegen GND.
Wie kann ich diesen Anschluss am ESP32 nutzen, um einen GPIO auf LOW oder HIGH zu ziehen, ohne den ESP zu zerstören.
Bei Verwendung des xyz Ausgangs mit Pullup gegen Vcc des ESP wird der GPIO aber niemals HIGH
und meine Bedingung:
if (digitalRead(BELL_INPUT_PIN) == LOW) {
}
wird nie erfüllt.
freddy64:
Geht das wirklich einfach so?
Ran an den GPIO und fertig, ohne zusätzliche Widerstände?
Ja, wie der Name schon sagt: Offener Kollektor, der schaltet (evtl. Datenblatt prüfen) den Ausgang gegen GND.
Daher brauchst du einen (internen) Pullup-Widerstand.
Google mal danach !
Open Collektor heißt das es ein Ausgangstransistor ist wo der Emittor gegen MAsse (NPN Transistor) oder Versorgungsspannung (PNP Transistor).
Ohne zu wissen welcher Typ Transistor verbaut ist kann man nicht generell sagen daß der Ausgang gegen Masse schaltet und per Pullupwiderstand auf Versorgungspannung gezogen wird, also ein NPN Transistor Ausgang ist.
Wenn der Satz stimmt:
Bei Betätigung der Taste "BELL" könnte ich über den Open Collector Ausgang eine Last von bis zu 100mA gegen 12V schalten.
scheint mir ein NPN Ausgang sein.
Kontrolliere mal mit einem Multimeter oder gib uns die genaue Bezeichnung des Moduls.
Grüße Uwe
Ja, wie der Name schon sagt: Offener Kollektor, der schaltet (evtl. Datenblatt prüfen) den Ausgang gegen GND.
Nicht gegen +VCC ???
Hab mal eine LED mit 1K Vorwiderstand gegen Vcc gelötet.
Die leuchtet wie sau, wenn der BELL - Taster betätigt wird.
Dann sind unsere Vermutungen ja richtig.
Der Transistor ist ein NPN und schaltet gegen GND.
Und dann kannst du den Ausgang auch direkt auf einen Pin des ESP legen.
Solche Dinge stehen normal auch im Datenblatt oder man kann es mit einem Vielfachmeßgerät ausmessen.
Geil, funktioniert. Ausgang mit PullUp auf GPIO und fertig.
Die DFPlayer - Bimmel hat vorher immer gestottert und die Melodie im loop stets wieder neu gestartet.
Ein kleiner Trick im Sketch hat für Abhilfe gesorgt.
BellEnabled und isPlaying sind global. BellEnabled kann über ein Web-Setup uhrzeitabhängig eingestellt werden.
void loop() {
if (BellEnabled) {
if (dfPlayer.available()) {
uint8_t type = dfPlayer.readType();
if (type == DFPlayerPlayFinished || type == DFPlayerCardOnline) {
isPlaying = false;
}
}
if (!isPlaying) {
if (digitalRead(BELL_INPUT_PIN) == LOW) {
dfPlayer.volume(BellVolume); //Set volume value (0~30)
dfPlayer.play(BellFile); //Play the selected mp3
isPlaying = true;
}
}
}
}
freddy64:
Geil, funktioniert. Ausgang mit PullUp auf GPIO und fertig.
Danke für die Rückmeldung!
Vorsichtige Menschen könnten zur galvanischen Trennung Optokoppler verwenden. Wenn eine Seite kaputt geht, wird die andere nicht mitgenommen. Ob das bei Dir sinnvoll ist, vermag ich nicht einzuschätzen.
HotSystems:
In diesem Fall wohl eher "ängstliche Menschen", da bei einem offenen Kollektor sehr selten etwas passiert.
Ursprünglich hatte ich "ängstlich" geschrieben, dann aber daran gedacht, daß Optokoppler in der Industrie gerne verwendet werden. Da ich die dort Handelnden aber nicht als ängstlich einschätzen würde, habe ich korrigiert.
Meine Sorge gilt GND, denn womit das zusammengeschaltet wird, ist hier nicht beschrieben. Ausgleichsströme über zu dünne Leitungen wären nicht gut.
agmue:
Meine Sorge gilt GND, denn womit das zusammengeschaltet wird, ist hier nicht beschrieben. Ausgleichsströme über zu dünne Leitungen wären nicht gut.
Deshalb hatte ich auch geschrieben: Datenblatt lesen und/oder nachmessen.
HotSystems:
In diesem Fall wohl eher "ängstliche Menschen", da bei einem offenen Kollektor sehr selten etwas passiert.
Selten weil meist ein NPN Transistor als Open Collektor vorhanden ist.
Einige Industriesensoren haben aber auch PNP Open Collektorausgänge und da geht es schief.
Grüße Uwe
Meine Sorge gilt GND, denn womit das zusammengeschaltet wird, ist hier nicht beschrieben. Ausgleichsströme über zu dünne Leitungen wären nicht gut.
GND geht sternförmig an alle angeschlossenen Komponenten und nicht von A über C nach B.
Diese Bedingung habe ich aus der NF Audiotechnik übernommen.
Schlechte GND Führung == Brummschleife und an dem Fehler sucht man dann ggf tagelang.
Optokoppler wäre noch eine Option, die ich für die nächste Version im Auge behalten werde.
Das Bild im Anhang ist jetzt der Prototyp, auf dem ich aufbauen kann.
Dank noch mal an alle Beteiligten in diesem Thread.
Gestern habe ich das Projekt "im echten Leben" installiert.
Die absolute Katastrophe
Der Strom des Türöffners lässt die 12V Versorgungsspannung aus diesem Trafo im Sicherungskasten dermaßen zusammenbrechen, dass diverse PINS am ESP32 auch gleich noch auf LOW gehen und dadurch die Türklingel ausgelöst wird.
Kurz zu Schaltung:
Ein 12V DC Trafo versorgt über einen Step-Down einen ESP32 mit 5V an VIN und einen DF-Miniplayer für die Türklingel.
Vor dem Step-Down greife ich die 12V für den Türöffner ab und schließe die +12V an den COM eines dieser blauen Mini-Relais aus dem Land des Lächels an. NO des Relais liefert dann die Spannung für den Türöffner, wenn GPIOxy des ESP auf LOW geht und das Relais anzieht.
Erste Überlegung: größeren Trafo einbauen.
Trafo rein -> Ergebnis: Fehlanzeige.
Das gleiche Verhalten wie vorher.
Und jetzt meine Frage:
Reicht ein fetter ELKO > 4700 µF, um diese Störungen durch Spannungsabfall zu verhindern.
Ich habe leider gerade keine großen ELKOs rumliegen.
Die 220µ auf dem Step-Down sind jedenfalls für die Katz.