Problème Relais 5v

Bonjour,

Je viens de faire un montage simple avec un relais pour pouvoir effectuer un petit feu d'artifice pour le jour de l'an, bref…
rele-220
J'ai effectué le même montage que l'image, mais au lieu du 230 j'ai mis une batterie de 12V et l'Arduino en 5v.
Quand j'allume, l'infla ce d'éclanche au démarrage de l'Arduino, je ne comprends pas pourquoi, si quelqu'un peut m'aider, je vous en remercie
(PS je suis bien brancher sur le NO du relais)

Il faudrait connaître avec exactitude le modèle de relais, mais il y a fort à parier que ce soit un module actif au niveau bas.
Setup :

pinmode(2, OUTPUT);
digitalWrite(2, HIGH);

Ensuite déclencher avec digitalWrite(2, LOW);

c'est un lot de 4 relais 5vdc hw-316 : Lien
J'ai remarqué que j'obtiens 0.5 Ampère lors de l'allumage de l'Arduino.
Pour le code, le voici :
il y a en tout 8 relais, mais le branchement est le même que celui de la photo plus haut dans le post

// C++ code
//
void setup()
{
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
// Début clignotement led verte + led rouge fixe
  digitalWrite(11, HIGH);
  delay(5000); // Wait for 5000 millisecond(s)
  digitalWrite(10, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(10, LOW);
  // Début Tir Artifice
  delay(2000); // Wait for 2000 millisecond(s)
  digitalWrite(2, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(2, LOW);
  delay(8000); // Wait for 8000 millisecond(s)
  digitalWrite(3, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(3, LOW);
  delay(5000); // Wait for 5000 millisecond(s)
  digitalWrite(4, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(4, LOW);
  delay(8000); // Wait for 8000 millisecond(s)
  digitalWrite(5, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(5, LOW);
  delay(5000); // Wait for 5000 millisecond(s)
  digitalWrite(6, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(6, LOW);
  delay(8000); // Wait for 8000 millisecond(s)
  digitalWrite(7, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(7, LOW);
  delay(5000); // Wait for 5000 millisecond(s)
  digitalWrite(8, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(8, LOW);
  delay(8000); // Wait for 8000 millisecond(s)
  digitalWrite(9, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(9, LOW);
  delay(3000); // Wait for 3000 millisecond(s)
  digitalWrite(10, HIGH);
}

void loop()
{
  delay(10); // Delay a little bit to improve simulation performance
}

Module relais 5V 1 à 8 relais pour Arduino , Raspberry .... low trigger carte

Low trigger, donc activable sur niveau LOW.
Après chaque pinMode() tu dois basculer la sortie à HIGH pour désactiver le relais :

  pinMode(11, OUTPUT);
  digitalWrite(11, HIGH);
  pinMode(10, OUTPUT);
  digitalWrite(10, HIGH);
  // etc.

Ensuite, je ne sais pas comment tu comptes activer tel ou tel relais, mais il faudra l'activer par :

digitalWrite(pin, LOW);
delay(x);  // délai suffisant pour faire exploser l'infla
digitalWrite(pin, HIGH);

Question de sécurité :

  1. Si le fil qui relie la sortie de la carte arduino à l'entrée commande du relai se trouve être débranché, l'infla s'active ou pas ?
  2. Si la carte arduino n'est plus alimentée alors que le relai l'est toujours, l'infla s'active ou pas ?

Ah d’accord je n’étais pas au courant pour ce type de relais, je vais refaire le code demain,pour voir ce que cela donne et je reviendrais vers vous, cependant cela va désactiver uniquement chaque relais indépendamment ?

Salut à toi,

Alors pour le 2 rien ne se déclenche et pour le 1 j’ai du mal à comprendre mais il se déclenche uniquement lors du démarrage de l’arduino

Ce code fonctionne chez moi

Le cas 1, c'est quand un fil n'est pas connecté ou qu'il se coupe ou se débranche.

Le cas du démarrage est différent.
Juste à la sortie du reset les E/S sont automatiquement positionnées en entrée haute impédance.

Ce qu'il faut voir c'est le comportement pendant le basculement en sortie qui passe par le niveau bas avant que le niveau soit logiciellement fixé haut.

Si tu regardes le schéma de principe sur la datasheet la partie pinMode et la partie digitalWrite sont indépendantes et peuvent être appelé dans n'importe quel ordre.

Dans le setup() tu fais actuellement :

pinMode(IN1, OUTPUT);
digitalWrite(IN1, HIGH);

Essaye de faire :

digitalWrite(IN1, HIGH);
pinMode(IN1, OUTPUT);

Éventuellement avec un petit délai entre les deux ordres.
Un delay() dans la loop() est à éviter (bloquant), dans le setup() ce n'est absolument pas gênant.
Quand le mode passera d'Entrée en Sortie, le niveau de la sortie aura déjà été positionné au niveau haut.

Je pense avoir trouvé le schéma électrique des modules HW316.
image

Quand IN1 est à 0 volt, un courant circule dans la diode électroluminescente (Del en français ou Led en angliche) de l'optocoupleur 817C.
Le phototransistor reçoit les photons sur sa base et conduit.
Q1 est passant et le relais est actionné.

Autre solution, revoir ton schéma.
On peut lutter contre un fonctionnement déplaisant (solution précédente), on peut aussi l'utiliser.
Il suffirait d'inverser la logique de commande en connectant l'inflamateur sur le contact NC.

Cela fonctionne, mais il y a un autre souci : si la tension d'alimentation des modules relais venait à être coupée les inflamateurs seraient tous commandés, question sécurité, c'est très mauvais.

heeuuuuu, c'est quoi l'infla ?

@biggil un inflammateurs pyrotechnique

Ah ok d’accord je comprends un peux mieux ce qui ce passe je vais regarder cela de plus près aujourd’hui

Bonjour

ajouter dans la ligne électrique de commande des inflammateur un interrupteur a clé de sécurité serait un plus.

@jfs59, j'ai rajouter un commutateur.
@68tjs c'est bon tout fonctionne a merveille la prochaine fois j'éviterais de prendre ce genre de relais, car je me demande si il y aurais pas plus de risque que le contact se colle a force de rester en high ?
Mais bon plus tard je ferais un système avec des mosfet qui sont beaucoup plus adapter pour ce type de montage :wink:

Bonjour,

Il n'y a aucun problème avec ces relais.
Dans ton premier programme, on constatais bien que le relais était commandé puisqu'il y avait des delay() après la mise de la pin en sortie.
Il suffisait d'appliquer la solution de @hbachetti donnée au post #2 puis au post #4

Cela pourrait arriver, par échauffement thermique, si les relais sont enfermés dans un boîtier fermé. Éviter autant que possible de les alimenter trop longtemps.

+1. Le contact NF est à bannir dans un cas comme celui-ci.
De même, si tu appuies sur le bouton RESET, tous les relais décollent et les contacts NF conduisent, idem pendant le téléversement.

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