Relay schakelt wel aan maar niet uit

Ik heb een relay aangesloten op een ESP32 dev. bordje.
Het is een 1 kanaals relay die uiteindelijk 220 volt moet schakelen.

Dit is de sketch

int relay_pin = 23;

void setup() {

pinMode(relay_pin, OUTPUT);
}

void loop() {
digitalWrite(relay_pin, 1); // turn the LED on (HIGH is the voltage level)
delay(30000); // wait for a minute
digitalWrite(relay_pin, 0); // turn the LED off by making the voltage LOW
delay(30000); // wait for a minute
}

De ESP32 wordt door usb gevoed vanuit laptop.
Het relay heeft 3 pinnen, VCC verbonden met de VIN op esp32, GND verbonden met de GND op de esp32, de IN verbonden op pin 23 van de esp32.

Het rode ledje op de relay brand altijd en geeft aan dat het relay van stroom is voorzien, de groene led op de relay brand als relay gesloten is en gaat uit als deze open is.

Maar de groene led blijft altijd aan en relay schakelt dus niet, terwijl mijn multimeter geen stroom meet na 1 minuut en na 1 minuut wel stroom meet op pin 23.

Als ik de draad op 23 met de hand erin en eruit doe schakelt relay wel.

Waarom schakelt relay niet op het moment dat pin 23 geen stroom krijgt??

Alvast hartelijk dank.

Hallo hobbyvriend

Kan het relais worden aangestuurd met 3,3 volt?

Hartelijk dank voor je reactie

nee dat is een 5 volt relay .
ik meet 5 volt bij VIN en GND van de ESP32, maar niet bij GND en pin 23 die is 3,3 volt.
zou dat de oorzaak zijn?

Dan ga ik de relay extern voeden met 5 volt, en ook de esp32 want wil de usb niet gebruiken. Kan dat met dezelfde voeding?

Kan het zijn dat jouw relais met negatieve logica werkt, dwz. dat het bij 0V opkomt en bij +5V afvalt? Test dat even, los van de ESP32!

Kan je een linkje posted naar het relais dat je hebt. Ook graag een schema (evt met de hand getekend) Meestal is de stroom die je van een Dev bordje krijgt niet echt voldoende om het relais te voeden, hoewel dat hier niet echt van toepassing lijkt aangezien je het wel handmatig kan schakelen.

ESP32 krijgt voeding via usb. Het relay heeft 3 pinnen. VCC zit op de 3,3 volt van de ESP en de GND van relay zit op GND van de ESP. De IN van relay zit op RX van de ESP32.
De rode led is aan dus relay krijgt voeding. De groene led is ook aan, circuit gesloten, GND en RX geeft 0 Volt aan. Na 1 minuut is GND en RX 3,3 Volt groene led is ook uit maar je hoort geen klik. Circuit zou open moeten zijn maar volgens multimeter dus dicht.

5V 12V 24V Relais Module Met Optocoupler Relais Uitgang 1 Manier Voor Arduino - AliExpress

Als Het Relay z'n stroom krijgt van de 3.3v pin van de ESP dan is de kans groot dat de voltage regelaar (die het voltage van 5v naar 3.3v omzet) te veel belast wordt. Eigenlijk zou het Relais via een aparte voeding gevoed moeten worden, maar toch op z'n minst via de 5v van de USB.

Maar in je sketch heb je de relay pin gedefineerd als 23.
de RX pin is pin 3. Althans volgens de pinout.


Dus de foto laat zien dat je de controle draad verkeerd hebt aangesloten.

Ja dat klopt ik had de sketch inmiddels aangepast. Die heeft nu de juiste pin.
Ik zal het relay extern voeden buiten de esp om. Alvast bedankt

Wel met gedeelde GND !

Heb je post #4 gelezen? En de test uitgevoerd? En: wat was het resultaat?

Op de manier zoals jij omschrjjft werkt dit relay. Alleen is de vraag hoe ik dat kan testen.? Kan er wel 5 volt opzetten maar waar haal ik dan de stuurstoom vandaan zonder gebruik te maken van de esp.?

Grote kans dat voor de stuurstroom 3.3v wel voldoende is. De stuurstroom schakelt een transistor die het relais aanstuurt. Mocht de 3.3v toch niet genoeg zijn, dan kan je eventueel een 7400 serie logische poort gebruiken om het voltage naar 5v op te hogen.

Tja, hoe test je een relais dat met 5 volt gevoed wordt en aan de input ook 0 of +5V verwacht?

Niet zo flauw ..

Twee problemen:

  • De sketch is geschreven voor positieve logica, maar het relais werkt negatief. Dat staat ook in de advertentie op Ali, zij het in een schier onbegrijpelijke zin. Zo moet het worden:
digitalWrite(relay_pin, 0); // turn the LED on
delay(30000);               // wacht 30 sec.
digitalWrite(relay_pin, 1); // turn the LED off
delay(30000);               // wacht 30 sec.
  • De output van de ESP is maximaal 3.3V, en dat is te weinig om het relais uit (!) te doen schakelen. Je hebt een of andere level-converter nodig die er 5V van maakt. Een transistor plus twee weerstanden is al genoeg, maar er zijn ook complete prints te koop (zowel bij Ali als in Nederland).

PS.: Ali zegt dat er een optocoupler in zit, maar die zie ik niet...

Ik ook niet, wel een transistor.

Dat eenvoudigste oplossing is om een 74HCT04 te gebruiken en deze met 5v te voeden. Als je het signaal door 2 gates heen stuurt is de logical weer zoals die was, maar in dit geval kan het zelfs handig om maar 1 gate te gebruiken, zodat de logica omgekeerd is en aan dus 5v+

Tot op zekere hoogte, er zitten 3 pinnen op. Echter wanneer er geen voedingsstroom is staat het relais al aan en schakelt het uit. etc. het is ook lastig uit te leggen. Ik vraag me trouwens af of the transistor een PNP is, want in dat geval zou je de pinMode op INPUT kunnen zetten ipv van de pin HIGH. Dat zou overigens niet echt verstandig zijn omdat je de pin dan blootsteldt aan 5v.

Alle hartelijk dank voor jullie inzet om het probleem op te lossen.
Gisterenavond nog even bezig geweest en heel gek werkt 1 relais via bovenstaand foto.
Al meerdere malen zo gedaan en toen werkte het niet, nu in een keer wel.

Maar ik heb nog een tweede relais en die klikt 2 keer maar daarna niet meer, maar de groene led gaat wel aan en uit.
Het is dus op deze manier wel onstabiel.

Op internet nog het een en ander uitgezocht en een level shifter is idd een oplossing.
Bijvoorbeeld deze:

1Pcs 2 Kanaals Iic I2C Logic Level Converter Bi-Directionele Module 5V Naar 3.3V Voor Arduino - AliExpress

Heb ook nog wat anders geprobeerd, de ESP gevoed met 5 Volt via de VIN pin, maar dan komt er maar 2,4 volt uit de controle pin ofwel de stuurstroom.
Dat zou toch ook 3,3 volt moeten zijn??

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.