Les sorties digital marchent mal

Bonjour, je suis nouveau ici,
Sa fais environ 1 mois que je travaille sur Arduino. Au départ je codais, sur simulateur Autodesk puis quand j'ai reçu mon uno, sur scetch 1.6.10
J'ai reçu une carte 4 relais lu des tuto sur le fonctionnement. Là, il semble que les sorties que j'utilise ne fonctionne pas correctement. Au départ j'ai contrôle le code sans succés, essayé sur un mega que j'ai reçu par la suite rien ne change. Puis je me suis tourné vers Autodesk et j'ai simulé les relais avec des LED et ça fonctionne correctement.
Je pense donc que mon problème viens de scetch.
Je vous joint le code, on ne sais jamais.

Merci pour votre aide, cordialement, Nico.

void setup()
{
  pinMode(13, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  Serial.begin(9600);
}


void loop()

{ 
    for (int i=8; i<12; i++)
    {
    delay(2000);
    digitalWrite(i,HIGH);
    digitalWrite(13,HIGH);
    Serial.print("high " );
    Serial.println(i);


    digitalWrite(i-1,LOW);
    digitalWrite(13,hLOW);
    Serial.print("low ");
    Serial.println(i-1);
    }
    
    digitalWrite(11, LOW);
}

Qu'est-ce que tu espère de ce code? Parce que malgré le delay en début de boucle for, tu passes de l'état haut à bas de manière instantané, donc à l'oeil tu ne verra rien.

Bonsoir,
Merci pour votre intérêt. Le but de cette manip est de faire une sorte de chenillard avec les relais pour tester. En effet, c'est instantané, mais on agis pas sur la même sortie (i et i-1) malheureusement une chose que je n'explique pas, je n'ai que la pin8 et 10 qui semblent fonctionner mais pas dans la logique du code. Le moniteur série en témoigne.

hello
ton code est correct
regardes plutot du coté du cablage des relais

combien pompe un relais? par rapport à ce que peut fournir une sortie.

disposes tu d'une alimentation séparée?

Tu comptes de 8 à 11 et tu éteints de 7 à 10.

Bonjour,
Si simu OK et le montage ne fonctionne pas, c'est le hard qui ne va pas.
Un relais a un temps de réponse beaucoup plus long qu'une LED, mets des délais de plus d'une seconde pour voir ce qui se passe.
Autre souci : la consommation des relais, est ce que tu es sous ce qu'arduino peut fournir comme courant?

Gerard68:
Bonjour,
Je suis aussi de cet avis, si simu OK et montage ne fonctionne pas, c'est le hard qui ne va pas.
Un relais a un temps de réponse beaucoup plus long qu'une LED, mets des délais de plus d'une seconde pour voir ce qui se passe.
Autre souci : la consommation des relais, est ce que tu es sous ce qu'arduino peut fournir comme courant?

C'est une bonne question. J'utilise une carte relais arduino sans alim externe. Malgrés tout 2 sur 4 fonctionnent: lasequance: relais 1&3, 3, 1&3,1 et ça recommance. ça me fais penser à du binaire.

J'ai également testé sortie par sortie mais toujours le même problème.
S8 =R3
S9= R1&3
S10=R1
S11=R1&3

Le problème peut il venir des paramètres de mon scetch dans outil?

Commence par régler le cas de l'alim des relais
Si tu lis un peu ce qui est écrit sur les relais tu verra que partout il est écrit qu'il ne faut pas les alimenter à partir du 5V de la carte arduino.

Il faut ABSOLUMENT connaître leur consommation en courant et trouver un vieux chargeur de téléphone qui puisse les alimenter.
Surtout ne pas oublier de relier les masses de la carte arduino et du chargeur entre elles (fil gnd ou - ).

Ensuite tu apprendra que pour faire de la mise au point, surtout quand on débute, on commence par tester les relais un par un .
Ensuite on les introduit dans le programme mais progressivement : un puis deux puis trois puis quatre.

C'est la méthode la plus rapide pour obtenir un projet qui fonctionne car on ne se pose qu'une question à la fois.
Alors que là c'est le code ? c'est les relais ? c'est l'alim de la carte ?

fdufnews:
Tu comptes de 8 à 11 et tu éteints de 7 à 10.

+1

68tjs:
Commence par régler le cas de l'alim des relais
Si tu lis un peu ce qui est écrit sur les relais tu verra que partout il est écrit qu'il ne faut pas les alimenter à partir du 5V de la carte arduino.

Il faut ABSOLUMENT connaître leur consommation en courant et trouver un vieux chargeur de téléphone qui puisse les alimenter.
Surtout ne pas oublier de relier les masses de la carte arduino et du chargeur entre elles (fil gnd ou - ).

Ensuite tu apprendra que pour faire de la mise au point, surtout quand on débute, on commence par tester les relais un par un .
Ensuite on les introduit dans le programme mais progressivement : un puis deux puis trois puis quatre.

C'est la méthode la plus rapide pour obtenir un projet qui fonctionne car on ne se pose qu'une question à la fois.
Alors que là c'est le code ? c'est les relais ? c'est l'alim de la carte ?

Je vai regarder du côté de l'alim, mais J'ai également testé sortie par sortie et toujours le même problème.
S8 =R3
S9= R1&3
S10=R1
S11=R1&3

Il y a ça :

digitalWrite(13,hLOW);

C'est quoi "hLOW" ?

Il y a (peut être) ça aussi :

digitalWrite(i,HIGH);

Je n'ai jamais compris pourquoi mais sur mon installation (PC Debian) cela ne fonctionne pas si je n'ajoute pas un espace entre la virgule et HIGH/LOW.

digitalWrite(i, HIGH);

C'est pour moi contraire aux règles du C mais bon si quelqu'un a une explication.

Pour le reste quand cela ne fonctionne pas comme souhaité je ne démords pas de la méthode des petits pas.

68tjs:
Il y a ça :

digitalWrite(13,hLOW);

C'est quoi "hLOW" ?

Il y a (peut être) ça aussi :

digitalWrite(i,HIGH);

Je n'ai jamais compris pourquoi mais sur mon installation (PC Debian) cela ne fonctionne pas si je n'ajoute pas un espace entre la virgule et HIGH/LOW.

digitalWrite(i, HIGH);

C'est pour moi contraire aux règles du C mais bon si quelqu'un a une explication.

Pour le reste quand cela ne fonctionne pas comme souhaité je ne démords pas de la méthode des petits pas.

Bonsoir,
je recherche une alim 5v autour de moi, mais en attendant, j'ai procédè aux modif comme indique et toujours rien.

J'ai encore testé sur une seul sortie rien.

void setup()
{
 
 pinMode(11, OUTPUT);
 Serial.begin(9600);
}


void loop()

{ 
digitalWrite(11, HIGH);

}

Si le dernier programme ne fonctionne pas il y a un blème.

A tu testé en déconnectant tout ce qui est relié a la pin 11 ?
A tu testé TOUTES les sorties ?
En bref as tu vérifié ta carte, vierge de tout branchement externe ?

Il s'agit d'éliminer rapidement une éventuelle destruction du matériel par une erreur de manip involontaire et de repartir sur une base saine.

Coom on te l'a dir, règle un problème à la fois.

D'un coté tu connectes une LED sur chacune des sorties de ta carte arduino et tu vérifies qu'elles sont fonctionnelles.
De l'autre tu testes ta carte relais en appliquant la tension requise sur les entrées une à une pour vérifier que les relais s'enclenchent bien.
Ensuite tu testes ton code sur la carte arduino avec les LED.

Et seulement après tu ajoutes les relais.

D'un coté tu connectes une LED sur chacune des sorties de ta carte arduino et tu vérifies qu'elles sont fonctionnelles.

C'est une bonne solution en absence de multimètre, mais je pense que vu ses connaissances il est préférable de détailler un peu :

  1. toujours mettre une résistance en série avec les LEds sinon plouf plus de led ni de carte.

  2. les étages de sorties sont complémentaires : double contrôle à faire.
    A) Led au 0V : Led activée avec un digitalWrite (x, HIGH)
    teste que le transistor du bas n'est pas en court-circuit et que le transistor du haut se commande.
    B) Led au +V : Led activée avec un digitalWrite (x, LOW)
    teste que le transistor du haut n'est pas en court-circuit et que le transistor du bas se commande.

Bien évidement le sens de la LED doit être inversé entre A et B.
Et bien évidement avant de dire que rien ne fonctionne il faut vérifier que la Led n'est pas branchée à l'envers.
Cas A : commencer par relier directement au 5V avant de connecter sur la pin à tester.
Cas B : commencer par relier directement au 0V avant de connecter sur la pin à tester.

Ces tests ne sont pas redondants car il y a deux manières de tuer une sortie avec un courant trop fort :

  1. faire fondre le transistor qui se met en court-circuit
  2. le transistor résiste mais c'est le bonding qui fond et crée un circuit ouvert --> cela arrive plus souvent qu'on ne le pense.
    Au passage c'est annexe mais c'est l'origine de la limitation du courant à 200 mA sur Vcc et Gnd.

Pour commencer, mettre sur chaque sortie prévue pour un relais, une LED + résistance de limitation et tester les sorties comme indiqué par 68tjs.

Soit :
+5V, LED , R, sortie arduino. Ca s'allume avec LOW
sortie arduino, LED, R, GND. Ca s'allume avec HIGH

L'anode toujours vers le coté positif.
Concernant le repérage des LED : Electronique - Théorie - Led

Si le soft fonctionne avec les LED, mettre les relais mais avec alim positive rien que pour les relais. Il faudra relier la masse de cette alim à la masse d'arduino.

Bon dépannage.

Gerard68:
Pour commencer, mettre sur chaque sortie prévue pour un relais, une LED + résistance de limitation et tester les sorties comme indiqué par 68tjs.

Soit :
+5V, LED , R, sortie arduino. Ca s'allume avec LOW
sortie arduino, LED, R, GND. Ca s'allume avec HIGH

L'anode toujours vers le coté positif.
Concernant le repérage des LED : Electronique - Théorie - Led

Si le soft fonctionne avec les LED, mettre les relais mais avec alim positive rien que pour les relais. Il faudra relier la masse de cette alim à la masse d'arduino.

Bon dépannage.

Merci pour les info, je vai faire le test.

Bonjour tous le monde.
Je viens enfin de tester avec une alim 5V. Les relais fonctionnent correctement. Sauf que j'ai encore un problème, maintenant, la sortie s’allume sur un 'LOW' et s’éteint sur un 'HIGH'. Bizarre!

hello
la grande patte de ta led est l'anode, elle est à raccorder à la sortie de la platine arduino via une résistance de 270 ohms.
la patte courte de la led est à raccorder a GND

la sortie s'allume sur un 'LOW' et s'éteint sur un 'HIGH'. Bizarre!

Non normal.
Tout dépend comment la diode est connectée.

Si la diode est connectée entre le Vcc et la sortie pin le courant ne pourra passer que si le transistor de sortie DU BAS est en court-circuit : c'est à dire la sortie à l'état logique "0"

Si la diode est connectée entre la sortie pin et le 0V le courant ne pourra passer que si le transistor de sortie DU HAUT est en court-circuit : c'est à dire la sortie à l'état logique "1".