Problème relais 5V + Wemos D1 mini (esp8266)

Bonjour à tous, je vous demande de l'aide après quelques jours de non réussite car je n'arrive pas à faire fonctionner un relais 5V bêtement.
Ma carte est une réplique Wemos D1 mini et mon relais est un FL-3FF-S-Z dont voici la fiche technique.
J'ai relié le VCC au 5V du Wemos, le Gnd au Gnd et le port in à un port digital de la carte (j'en ai essayé plusieurs).
J'en arrive à mon problème, je n'arrive pas à contrôler mon relais ainsi, en effet lorsque j'envoie de HIGH ou LOW sur mon port digital, la led verte témoin du relais change de luminosité mais reste tout le temps allumé.
J'ai essayé avec un bête code comme celui-ci :

void setup() {
  // put your setup code here, to run once:
  pinMode(16, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(16, HIGH);
  delay(1000);
  digitalWrite(16, LOW);
  delay(1000);
}

ou avec un programme Blynk mais rien n'y fait.

Sur ce merci à tous pour votre aide et bonnes fêtes à vous!

Bonjour,

Je vois dans les spécifications techniques :
Courant : 100 mA sous 5V
Tension min de commande 3,75 V

Question :
La spec est celle d'un relai nu. C'est un relai nu ou c'est un module ?

Si c'est un relai nu cela ne peut pas fonctionner les 100 mA devraient être délivrés par une sortie du micro et le micro ne donnera que 3,3V, mais avec un courant de plus de 20 mA la tension de la sortie s'écroulera.

Si c'est plus probablement un module :
lien vers le module ?
Le "5V" peut-il fournir 100 mA ?
Si tu met simplement le fil de commande au 5V (sans passer par le micro) le relai colle t-il ?

Bonjour,

On va supposer que tu as un module relais sans optocoupleur.
Si tu alimentes le module relais en 5V et le commandes en 3.3V, à l'état haut la tension n'est pas assez élevée pour relâcher le relais.
Essaies d'alimenter ton module relais en 3.3V (bien que ce soit hors spécifs).

Essaies d'alimenter ton module relais en 3.3V (bien que ce soit hors spécifs).

Cela ne va probablement pas fonctionner puisque la spécif indique 3,75V min et à l'état neuf, au bout de quelques heures de fonctionnement cela va se dégrader.

On élucubre actuellement il faut la référence exacte du produit.

Merci beaucoup pour vos réponses, je suis désolé d'être si lent à réagir mais je m'attendais à recevoir un mail dès lors qu'une réponse serait publiée.
Voici la page produit sur AliExpress.
Le mien est un monocanal.

Sur la photo pour le module à un relai :
On lit les référence TONGLING JQC-3FF-S-Z
Si on fait une recherche sur : TONGLING JQC-3FF-S-Z datasheet
On obtient la datasheet : http://en.tonglingrelay.com/product/1130.html

On voit :
Une del verte et une rouge.
Une diode de roue libre (tube de verre) qui est indispensable
Une bête à 3 pattes qui est un transistor --> il n'y a pas d'opto-coupleur.
3 résistances de semble t-il 1 kohms (marquage 102 si j'ai bien lu).

  • Une pour chaque dels
  • Une pour attaquer la base du transistor
    Ces modules peuvent être connectés au + 5V et commandé en 3,3 V , ce serait mieux si le 5V provenait d'une différente de celle qui alimente la carte microcontroleur.
    Ne pas oublier de relier les deux masses des alims (la masse est au "moins").

Le courant dans le relai (Ic) est égal à 80 mA
Le courant dans la base (Ib) est égal à (3,3V - 0,7V) /1000 = 2,6mA
Ce qui donne un gain forcé 80/2,6 = 30.

Même sans avoir la référence du transistor on peut espérer sans crainte que son gain min est de 100 ce qui assure qu'il sera complètement saturé.
Conclusion : d'après les informations fournies ou trouvées une commande à 3,3V est suffisante à condition d'alimenter le relais sur 5V.

Note : Pour les modules à plusieurs relais la bête à 3 pattes est remplacée par une à 4 pattes --> c'est un opto-coupleur

Pour le calcul du transistor :
https://forum.arduino.cc/index.php?topic=100727.0

Merci beaucoup, je vous vais essayer tout de suite avec une alimentation externe plutôt que le 5V du micro qui fournis d'ailleurs une tension entre 4,4 et 4,6V max au lieu de 5.
Je vais me renseigner sur le fonctionnement de ce genre de module ca m'a l'air intéressant!
Mais du coup si j'ai bien compris le problème viendrait du fait que le courant fournis par le micro au module relais serait trop faible?

Ps: je vous préviens de si ca fonctionne dans un instant (ou demain)

Bonne fin de soirée

Malheureusement ça revient au même en reliant le 5v du module à une alimentation externe... La led verte est allumé dès que tout est connecté et quand j'envoie du courant dans le pin digital, sa luminosité baisse légèrement mais le relais ne s'active pas.

J'ai une dernière info pas des moindre, si je débranche le câble reliant le pin digital du micro au pin In du module relais, le relais s'active(la led verte s'éteint)

Salut,

J'ai vu que tu utilisais un Wemos. As-tu essayé de déclaré différemment le pin? De ce que je comprends (pas sûr que ce soit bon hein), tu utilises la pin D8?

Du genre :
pinMode(15, OUTPUT);
Ou alors :
pinMode(D8, OUTPUT);

Je me base sur ce schéma pour trouver le nom des sorties du Wemos.

En espérant que cela puisse t'aider...

Que le module relais soit alimenté avec le 5V de la carte arduino ou un 5V externe ne change pas le problème.
Ce module ne peut pas fonctionner s'il est alimenté en 5V et commandé en 3.3V.
Essaies d'alimenter le module en 3.3V. C'est juste pour essayer, même si ça fonctionne c'est hors spécifications.

@kamill
Sur la photo on voit bien un transistor en interface de puissance.
Sauf si le transistor est une sombre bouse une tension de 3,3V sur l'entrée du module (1k en série avec la base) devrait être suffisant pour le saturer et enclencher le module.
Ca c'est pour la commande du transistor en 3,3V sauf si ce n'est pas un bipolaire mais un mosfet mais dans ce cas pourquoi y aurait-il une résistance de 1k en série ?
Coté bobine du relai la datasheet donne 3,75V comme tension minimale. La bobine du relai doit être reliée à 5V.

@PierreGin
Je te propose de découpler les problèmes.
Tu oublie la carte micro contoleur pour le moment.
Tu relie le module à une alim 5V
Tu connecte l'entrée commande du module :

  1. au 5V --> le relai ferme t-il ?
  2. à un 3V ( provenant d'un régulateur, d'un convertisseur abaissseur, d'une carte arduino (uno, nano, etc ......) et tu regarde si le relais ferme.
    Attention de bien relier les masses des deux alims !

Et tu donnes les résultats. Cela permettra de mettre en cause ou hors de cause le relai ou la carte micro.

Tu lis aussi ce qu'il y a écrit sur le "transistor" et dans un moteur de recherche tu écrit ce que tu as lu et tu ajoute datasheet.
Tu donne le lien obtenu.

Conseil : approvisionne des convertisseurs de tension réglable abaisseur (step down) et élévateur (step up). Cela sert toujours pour faire des tests de fonctionnement, plus un multimètre bien entendu.
Il existe aussi des montages qui font abaisseur et élévateur (step up-down).

J'ai un module qui semble identique (sauf les leds qui sont des cms).

Voici le schéma (que j'ai pu vérifier sur mon module). On voit bien que, avec une commande de 3.3V, la tension collecteur base du transistor pnp est trop élevée pour bloquer le transistor. Conséquence le transistor est toujours passant.

Il faut essayer en alimentant le module en 3.3V. Même si le relais ne commute pas, la led devrait fonctionner, ce qui prouvera le problème.

C'est idiot comme schéma ! Effectivement dans ce cas l'alim du module doit être égale au Vcc de la carte micro.

@PierreGln

Regarde si la bobine est reliée à la masse, tu aurai un module comme celui de Kamill, ou si la bobine est reliée à l'alim.

Et aussi la référence du transistor !

Si c'est le même schéma il ne reste plus qu'insérer un translateur de niveau (level shifter in angliche) sur le chemin commande.

68tjs:
C'est idiot comme schéma !

Effectivement, je suis d'accord avec toi. On ne comprend pas trop pourquoi avoir choisi un transistor pnp, qui inverse la commande.
On pourrait penser que c'est pour que le relais ne se déclenche pas à l'initialisation, mais même pas car quel que soit le sens de commande, à l'initialisation les pins du micro sont en entrée et ne fournissent pas assez de courant pour commander le transistor.

J'ai donc testé en alimentant le relais en 3,3V, dans ce cas mettre du HIGH ou LOW sur le pin digital permet bien d'éteindre complètement ou d'allumer la LED verte.
Par contre le relais ne switch pas donc c'est inutile.
Je pense que je vais devoir contrôler le relais avec du 5V mais je ne sais pas trop comment faire... Dois-je utiliser un transistor et contrôler le transistor avec du 3,3V pour faire passer du 5V dans le IN?

jerome69960:
Salut,

J'ai vu que tu utilisais un Wemos. As-tu essayé de déclaré différemment le pin? De ce que je comprends (pas sûr que ce soit bon hein), tu utilises la pin D8?

Du genre :
pinMode(15, OUTPUT);
Ou alors :
pinMode(D8, OUTPUT);

Je me base sur ce schéma pour trouver le nom des sorties du Wemos.

En espérant que cela puisse t'aider...

Et pour te répondre Jérome, oui ne t'inquiètes pas je ne me fais plus avoir avec les pins des Wemos :D, j'utilise moi aussi toujours les schémas trouvés sur internet pour convertir les D'X' en GPIO'X'

PierreGln:
Je pense que je vais devoir contrôler le relais avec du 5V mais je ne sais pas trop comment faire... Dois-je utiliser un transistor et contrôler le transistor avec du 3,3V pour faire passer du 5V dans le IN?

Oui, il faut mettre une adaptation de niveau avec un transistor (par exemple).

PierreGln:
J'ai donc testé en alimentant le relais en 3,3V, dans ce cas mettre du HIGH ou LOW sur le pin digital permet bien d'éteindre complètement ou d'allumer la LED verte.
Par contre le relais ne switch pas donc c'est inutile

À partir du moment où la datasheet du relai indique 3,75 V minimum c'est peut être un peu normal que cela ne fonctionne pas à 3,3V.

PierreGln:
Je pense que je vais devoir contrôler le relais avec du 5V mais je ne sais pas trop comment faire...

La réponse à ta question a déjà été donnée en #12

68tjs:
Si c'est le même schéma il ne reste plus qu'insérer un translateur de niveau (level shifter in angliche) sur le chemin commande.

Tu peux le faire avec un simple transistor câblé selon le très classique montage émetteur commun mais si ton module a le même schéma que Kamill avec un transistor PNP il faut connaître la valeur des résistances, ce sera plus simple avec un module tout fait.

Deux exemples pris au hasard.
Clé de recherche : Arduino level shifter

https://fr.aliexpress.com/item/1972789887.html

https://fr.aliexpress.com/item/32583237273.html

D'accord, encore merci! Je suis allé voir sur internet ce qu'était un level shifter, je vous avoue que ca m'embêterait de devoir encore acheter quelque chose... je me dis que j'aurai mieux fais d'acheter un Sonoff tout fait x)
Je me demandait donc pourquoi faire un circuit comme celui-ci ne pourrait pas fonctionner? (voir photo)


Sur les schémas trouvés sur internet, je vois qu'ils utilisent à chaque fois plusieurs transistors et résistances? Pouvez vous m'expliquer rapidement à quoi cela sert s'il vous plaît?
Merci encore!

Une bobine de relai consomme trop d'ampères : le tien 75 mA alors qu'une sortie de microcontrôleur ne peut pas fournir plus de 20 mA si on tient à préserver la fiabilité du micro.

Cette limitation est due au fait que dans un microcontrôleur les transistors sont tout petits.
Il faut donc ajouter un transistor entre le micro et la bobine du relais qui sert d'amplificateur de courant.

Le problème avec le module relai que tu as acheté c'est que le transistor est un PNP qu'il est impossible de bloquer avec une tension de 3,3V sur la base.
Le schéma serait le suivant (le transistor NPN peut être un 2N2222 ou équivalent : c'est un transistor passe partout).

Quand le micro est à l'état bas le NPN est bloqué et la base du PNP est à 5V donc il est aussi bloqué et le relai n'est pas actionné.
Quand le micro est à l'état haut (3,3V) le transistor NPN est saturé et son collecteur est à 0,3V qui est la tension de saturation appelée Vce_sat. Le transistor PNP sera lui aussi saturé et la bobine du relai verra 4,7V (5V - 0,3V de Vce_sat)

Il faut calculer les valeurs des résistances de base et de collecteur du NPN.
On commence par fixer le courant Ic à la saturation, 5mA est une valeur qui devrait aller.
5V, 5mA avec U = Rc*I donne Rc = 1 kohm .

Résistance de base :
Je prends la datasheet d'un 2N2222. Je lis pour le paramètre HFE (ou Beta ou gain statique)
Ic = 1 mA HFE min = 50
Ic = 10mA HFE min = 75
À la louche pour 5mA je dis que HFE = 60
Pour avoir de la marge je prends 40.
Ce qui donne un courant de base 5mA/40 = 0,2 mA.

Comme le micro délivre 3,3V et que le Vbe d'un transistor vaut 0,8V, la résistance Rbase sera égale à (3,3 - 0,8)/ 0,2 ~= 10 k ohms.

Pourquoi j'ai choisi 5mA ?
Déjà c'est un peu téléphoné : 5V, 5mA cela fait 1 k c'est facile à calculer :grin: .
On peut augmenter cette valeur pour moins consommer mais ce n'est pas forcément une bonne idée.
Les transistors ne sont pas parfaits, ils ont des courants de fuite et ce serait gênant qu'avec une résistance Rc de 100k le courant de fuite du transistor NPN provoque une tension dans la résistance Rc qui viendrait rendre un peu conducteur le transistor PNP.
Vu que le relai consomme déjà 75 mA, on n'est pas à 2 ou 3 mA près, autant ne pas se prendre la tête.