LOCODUINO
Discussions Générales => Aide => Discussion démarrée par: loulout le avril 09, 2025, 11:50:18 am
-
Bonjour à tous,
J'édite ce commentaire pour changer le titre du sujet mais je laisse intact ce qui suit et qui correspond à mon expérience un peu déroutante de débutant que j'ai faite avec certains relais couramment disponibles sur le marché :
Pour commander un aiguillage Peco avec un moteur Twistlock, je suis en train de faire un essai avec un module à 6 relais et une carte ESP32 C3 mini. Il est indiqué dans la doc du module https://www.gotronic.fr/pj2-relaisarduino-2226.pdf (https://www.gotronic.fr/pj2-relaisarduino-2226.pdf) que ces relais s'activent avec l'instruction digitalWrite(relai, HIGH) et non pas digitalWrite(relais,LOW) comme indiqué dans l'article https://www.locoduino.org/spip.php?article142 (https://www.locoduino.org/spip.php?article142). Premier point un peu étrange.
J'utilise donc 2 relais pour un moteur.
Lorsque j'utilise ce code, l'axe commandé par le moteur se déplace brièvement, le temps indiqué dans l'instruction delay (2 s), et revient à la position précédente.
digitalWrite(relais1, HIGH);
delay(2000);
digitalWrite(relais1, LOW);
Quand j'utilise le 2e relais, aucun déplacement ne se fait. Il y a juste un petit clic.
digitalWrite(relais2, HIGH);
delay(2000);
digitalWrite(relais2, LOW);
Et si j'inverse le HIGH et le LOW, je... grille le moteur.
digitalWrite(relais1, LOW);
delay(2000);
digitalWrite(relais1, HIGH);
Avez-vous une explication à ce fonctionnement ?
Je vais aussi faire l'essai prochainement avec une carte Uno classique.
-
J'ai résolu une partie du problème. Je faisais mes essais avec le moteur posé sur une table mais il n'était pas placé convenablement, l'axe n'était pas totalement vertical. Maintenant, l'axe ne revient pas à sa position précédente.
De plus, j'avais constaté que le moteur chauffait un peu. En adoptant une impulsion d'une durée de 20 ms, ça a l'air normal.
Le seul point qui reste un peu étrange est cette inversion entre HIGH et LOW (gotronic vs locoduino). Mais il se peut qu'il y ait une erreur chez gotronic et que la carte ESP32 fonctionne différemment d'une carte Uno. En effet, avec cette carte, il faut par exemple faire digitalWrite(LedPin, LOW) pour allumer la led. Et on obtient LOW avec digitalRead(pin) avec par exemple un signal IR activé. Tout est inversé semble-t-il, donc pourquoi pas la commande d'activation d'un relais. Je vais faire le même essai avec une carte Uno. Mais je ne voudrais pas griller un moteur... Si vous avez des infos au sujet de ces relais et/ou de ces cartes ESP32, je suis preneur.
-
Je crois avoir compris cette histoire d'inversion entre HIGH et LOW. Et cela pourrait être utile à d'autres personnes aussi peu expérimentées que moi.
Certains relais permettent de choisir entre l'activation avec HIGH ou avec LOW. Certains modules ont un cavalier qui permet ce choix mais d'autres, comme celui de gotronic par exemple, possède 2 sorties possibles, et on utilise l'une des 2 en fonction du choix que l'on fait. Sur le schéma de la doc de gotronic, on voit le branchement pour obtenir l'activation avec HIGH. Il y a une remarque ("Si vous souhaitez utiliser la sortie inverseuse du relais, il suffit de raccorder votre charge entre le commun et la broche NF du relais") qui précise cela. Mais on ne voit pas où se trouve NF... Sur certains modules comme le mien, on voit des sorties NO1, NC1, NO2, NC2, ... Apparemment les sorties NC correspondent à NF avec activation avec LOW. Les sorties NO permettent l'activation avec HIGH.
Je trouve cela un peu complexe et ambigu (et dangereux pour les appareils connectés aux relais) et je ne vois pas trop l'intérêt de sortir du standard qui apparemment veut qu'on active un relais avec digitalWrite(relais, LOW).
Pour info, NO signifie Normalement Ouvert ou Normally Open, NF signifie Normalement Fermé, et NC signifie Normally Closed.