Bonjour à tous.
J'aurai besoin d'aide
J'essaie de comprendre le fonctionnement des relais avec un montage simple. j'ai connecté un petit moteur (alimenté par une pile) sur un relais
Mon problème est que j'obtiens l'inverse de ce qu'il devrait faire.
C'est à dire que quand le code arrive à la ligne "digitalWrite(2, LOW); " le contacte se ferme et le moteur se met en marche et inversement quand ilarrive sur " digitalWrite(2, HIGH); " le moteur s'arrête. Cela devrait être le contraire ?
Mon code :
J'ai testé plusieurs relais (des unitaires et un double) achetés dans des magasins différents, toujours avec le même résultat. J'ai même essayé avec 2 Arduino Uno.
A chaque fois ils sont actifs avec LOW, c'est un mystère pour moi.
Je n'arrive pas à voir où se trouve mon erreur.
Qu'entend tu par "As tu un lien sur ce module?"
Merci beaucoup jpbbricole
Donc si je comprends je fais comme si LOW était HIGH dans mon code ?
Je vais essayer et reviendrai pour dire mon résultat.
Le lien : https://www.aliexpress.com/item/1005002867727977.html
La bobine d'un relais tire trop de courant pour être connecté directement sur une sortie de microcontrôleur.
Je ne donne plus de chiffre de courant max sur une sortie de micro maintenant qu'un grand nombre de microcontrôleurs différents sont utilisés : il faut consulter la documentation technique du microcontrôleur considéré.
Mais c'est un point important à surveiller.
Les relais sont généralement vendus "en module". Les modules intègrent une interface de puissance, ce qui permet de les connecter directement sur un microcontrôleur.
Cette interface est soit un transistor en montage émetteur commun, soit un optocoupleur.
Le montage émetteur commun est une amplification en courant, dans le cas du relai il n'inverse pas le fonctionnement. Un niveau "LOW" ne devrait pas activer le relai.
L'opto coupleur apporte un isolement galvanique, en général la ou les diodes optiques d'entrée sont câblées pour ne pas inverser, mais tout est possible.
Si la cathode est reliée à la masse pas d'inversion, si l'anode est reliée à Vcc il y a inversion.
Conseil :
Fais des contrôles sans microcontrôleur, juste avec le 5V.
Tu alimentes le module par Vcc et Gnd et tu relies IN au GND → est-ce que le relai est activé ?
Tu relies maintenant IN à VCC → même question.
Transistor -> boîtier à 3 pattes au-dessus du petit tube en verre. Entre la lettre N et le marquage VCC
Opto coupleur : gros rectangle noir à 4 pattes.
Si j'en crois la photo du lien que tu as fournis le relai est un relai inverseur
Le relai de gauche est un interrupteur simple.
Celui de droite est un inverseur.
Sur ton relai le point 2 est appelé COM → "common" in britiche
le point 1 est appelé NC → "normaly closed" → contact repos (R) en français
Le point 3 est appelé NO → "normaly open" → contact travail (T) en français
Quand j'établis un schéma et que je fais des choix avec un relai, j'ai deux priorités :
que se passe-t-il à la mise sous tension. Faut-il que l'état du relais soit impérativement Repos ou Travail ?
un relai consomme alors, autant le câbler dans la position où il restera le plus longtemps non activé.
Le choix définitif est un compromis entre les deux impératifs, parfois contradictoires.
Bonjour 68tjs et merci
J'ai testé comme tu demandes, Le relais s'active (choix 2.) quand je relie IN à VCC, les 2 leds s'allument (rouge et verte)
Sur le choix 1. le relais ne s'active pas, leds éteints
Oui, 68ths, je comprends, mais pourquoi, quand je connecte le relais sur mon Arduino Uno j'ai le contact allumé avec LOW et éteint avec HIGH
J'ai essayé une énième fois avec le code :`
J'ai bien les 10 secondes sans contact avec... HIGH, ensuite le relais "s'allume" 2 secondes avec LOW !
C'est juste pour essayer de comprendre, en attendant je vais faire comme dis fdufnews en inversant les 2 termes
La manip que je t’ai proposée etait pour lever le doute sur le matériel.
C’est fait.
J’ai ”tendance” a penser que la suite se trouve dans le code ou le câblage.
Quand tu dis que le relais est activé avec un etat bas c’est que :
tu entends le relais claquer ?
Ou
tu le deduis de la fermeture du contact et dans ce cas n’y aurait-il une inversion dans le choix NO/NC ?
Cela peut se verifier en n’alimentant le montage et en testant le contact a l’ohmmetre.
Bonjour 68tjs,
J'ai fait un montage Arduino + capteur d'humidité + le fameux relais + un mini-moteur (pour une future pompe à eau) avec le code d'inversion de fdfnews et ça marche à la perfection . Avec LOW le moteur se met en marche et il s'arrête avec HIGH.
Sinon pour répondre à tes questions,
quand je dis que le relais est activé avec un état bas c’est que j'entends le relais claquer et vois les leds rouge et verte s'allumer
et j'en déduis aussi la fermeture du contact puisque le contact se ferme alimentant ainsi le moteur qui se met à fonctionner
il n'y a pas d'erreur à mon avis dans le choix NO/NC car
quand je mets sur NC le moteur tourne en permanence même sans alimenter l'Arduino, normal car le contact est fermé du départ, donc pas bon
et si je mets sur NO, tout fonctionne à merveille en utilsant l'inversion LOW et HIGH comme dis fdfnews
Cela correspond aussi à ce qu'il dit également concernant mon matériel où il est noté "this module is triggered at low level..."
Merci à tous
Bonjour tous,
Le relais fonctionne sur Arduino comme dis plus haut, par contre j'ai exactement le même problème avec ESP32 mais sans pouvoir le résoudre.
En résumé, quand j'ai téléchargé le code (ci-dessous avec GPIO 32) de fdufnews, le relais se déclenche le moteur tourne et ne s'arrête pas.
Bonjour,
2 leds, la rouge pour l'alim et la verte pour le circuit quand il est fermé (je suppose).
Ici, les 2 leds s'allument et restent allumés en permanence dès l'allumage.
J'ai mis les delay dans des valeurs plus "raisonnables" que 200000 - code ci-dessous