J'ai un souci avec 2 Relais qui commandent 2 Pompes en 12V

Bonjour à tous,
Je me suis vu offrir pour noël un kit de démarrage Arduino (je ne connaissais pas du tout et j'ai vu les applications incroyable que l'on peux avoir.)
Jusqu'à il y a 2 semaines je m'amusais comme un petit fou.
J'ai voulu sortir des sentiers battu et essayer de crée mon propre code, c'est là ou sa se complique...

Je souhaite faire une Table à Marée semi automatisé.
Une table à marée est tout simplement un bac nous versons de l'eau à l'intérieur et ensuite avec une vanne, nous venons la vider pour éviter que les plants et les semis pourrissent à cause de l'eau stagnante.
L'idée est , qu'au lieu de faire des aller et retour avec des arrosoirs, c'est d'avoir une cuve de d'eau de pluie à l'extérieur de la serre et avec 2 pompes transvaser de l'un à l'autre.
Trêve de Jardinage, voici la partie Arduino :slightly_smiling_face:

Mon idée étant la suivante ,

  1. quand j'appui sur un bouton "A" le relais de la pompe "A" immergé dans la cuve d'eau rempli la table à marrée.
  2. un interrupteur flotteur indique le niveau max et, une fois atteint, il éteint la pompe.
  3. quand j'appui sur le bouton "B" le relais de la pompe "B" immergé dans la table à marrée vide l'eau et la renvoi dans la cuve à eau.
  4. un bouton "C" me permets d'arrêter les relais des 2 pompes.

Jusque là, tout va bien.
J'ai fais mes essais sur la petite tablette blanche de prototypage et cela fonctionnait.

voici le code

int relaisR = 12; //Relais de la Pompe de remplissage de la table
int boutonA = 7; // Interrupteur sur le boitier pour le remplissage
int interflotB = 8; //Interrupteur Flotteur Niveau haut
int relaisV = 13; // Relais de la pompe de vidange de la table
int boutonB = 5;// Interrupteur sur le boitier pour la vidange
int boutonC = 2;// interrupteur STOP général
int leds = 0;

void setup() 
{
  pinMode(relaisR, OUTPUT);
  pinMode(boutonA, INPUT_PULLUP);  
  pinMode(interflotB, INPUT_PULLUP);  
  pinMode(relaisV, OUTPUT);
  pinMode(boutonB, INPUT_PULLUP);  
  pinMode(boutonC, INPUT_PULLUP); 
}

void loop() 
{
  if (digitalRead(boutonA) == LOW ) // quand on appui sur le bouton de remplissage, la pompe ce mets en marche et elle rempli la table à marrée
  {
    digitalWrite(relaisR, HIGH);
   // delay (5000);
  }
  
  if (digitalRead(interflotB) == LOW) // quand le niveau atteint l'interrupteur flotteur, la pompe de remplissage s'éteint
  {
   digitalWrite(relaisR, LOW);
  }
  
  if (digitalRead(boutonB) == LOW) // quand on appui sur le bouton de vidange la pompe de vidange ce mets en marche et elle vide la table à marée 
  {
    digitalWrite(relaisV, HIGH);
   // delay (5000);
  }
  
  if (digitalRead(boutonC) == LOW)  // si l'on appui sur le bouton tout s'arrete
  { 
    digitalWrite(relaisR, LOW);
    digitalWrite(relaisV, LOW);
  }
}

maintenant le "hardware"

J'utilise une UNO R3
Les relais sont des SRD-5VDC-SL-C monté sur leurs petites carte électronique identique à cela : ici
Les pompe fonctionne en 12V et font 17W chacune.
Le tout branché sur un transfo libérant une tension de 5V et de 12V sur des bornes séparées.

Voici mon problème quand je mets sous tension les relais (donc quand je branche le transfo) et bien tout déconne
j'appuie sur le bouton A pour allumé la pompe, elle ne tien pas s'arrete quasiment quand je lâche le bouton.
Quand j'appui sur le bouton B la pompe reste allumé beaucoup plus longtemps, mais s'eteint de façon random également.
et une des 2 pompes s'est lancé sans que j'appuie sur aucun bouton.

Voilà ce que j'ai fait :

  • j'ai poncé tout les sujets de ce forum comprenant le terme "relais" et je me suis mis à essayer plein de chose.
  1. Mettre une diode de roue libre , jusqu'au moment ou je me rends compte que le relais avais sa propre diode , sur la mienne en l'occurence : la mention "M4" est apposée sur la diode.
    2)Rassembler les masses, (5V et 12V) , rien y fait.
  2. séparer les masses et passer toutes les masses 5V par usb via l'ordinateur, le problème persiste toujours quand je banche les relais.
  3. un sujet parlait même de champs magnétique qui pourrais mettre le bazar dans tout sa. Et me voilà entrain de recouvrir tout les éléments de papier d'aluminium.

Rendu à se moment, je me disais qu'il était temps que je fasse un post pour expliquer mon problème et voir si cela est déjà arrivé à l'un d'entre vous ?

Petit précision, quand je branche l'arduino en direct et sans branché le transfo, tout fonctionne parfaitement. Une led présente sur chaque relais et le fameux "clac" du relais me fait dire que ce n'est pas le code mais peut etre le hardware qui déconne.
j'ai surement fait qq chose de mal mais quoi ? et bien je sèche.

Merci d'avoir pris le temps de lire jusqu'ici et merci à tout ceux qui on la patience (et le courage) de me répondre.

Je débute et je suis peut etre passé au dessus de quelque chose d'élémentaire.

Merci à tous

J'ai omis de mettre le schéma electrique :face_with_hand_over_mouth:

Oui...Tu dis dans ton code que la pompe s'active dés que tu presses le bouton,et qu'elle s'arréte dés que tu relaches...

C'est ce que tu veux faire peut etre?
Si non,il faut que tu incrémente un "compteur":Une pression et la pompe s'active,deux et elle s'arréte,et la variable revient a 0.

Bonne continuation et bienvenu(e) sur ce forum!

Ça sent les perturbations électromagnétiques qui font planter ta carte. @hbachetti à fait un tuto quelque part sur ce sujet.

2eme point: les entrées de tes boutons se retrouve "en l'air" quand tu n'appuie pas dessus, ce qui favorise les comportements plus qu'aléatoire. Il faudrait que tu jettes un oeil sur les résistance de tirage, les fameuses "INPUT_PULLUP"

Salut Flix09,
Merci pour ta réponse,
Effectivement si j'appui sur A, la pompe se mets en marche et si je lâche le bouton A la pompe s'arrête.

Sauf que j'ai 2 cas qui ce présente à moi (et sans mise à jour de la carte entre les 2 cas) :

  • La première , comme elle est decrite juste au dessus quand les relais sont branchés en 12V.
  • La seconde, sans que les relais ne soient reliées au 12V et que je suis en direct USB pour alimenter la carte. Dans ce cas, je donne une implusion sur le bouton A (sans rester appuyer dessus) et le voyant led du relais reste allumé , jusqu'au moment ou j'actionne manuellement l'interrupteur flotteur . à cet instant , le relais fait "clac" et la led s'eteint...

Bizarre non ?
Es ce que le 12V viendrai perturber la carte ? et comment ?

Pas nécessairement, une bascule de l'état de la pompe suffit avec l'opérateur !

if(appui sur bouton)
MarchePompe = !Marchepompe

Probablement a cause des perturbations electromagnétiques comme dit @Jambe .

Et voici le tuto:

https://riton-duino.blogspot.com/search/label/Alimentation

Je viens de voir vos réponses.
La carte est autant sensibles aux perturbations électromagnétique ?

Je vais essayer éloigner le plus possible de transfo de la carte et des relais.
Elle est espacée actuellement d'une 12aine de centimètres.

Merci beaucoup, je vais lire sa attentivement

Hmm...Je ne suis pas sur qu'éloigner la carte résoudra le probléme... :wink:

Es ce qu'éloigné le tranfo serait plus efficace ?

En le lisant, il est vrai que je n'ai pas mis de diode de roue libre en parallèle des moteurs de la pompe.
Puis je utiliser des diodes type 1N4148 pour des moteurs 12V ? (pas de risque de les faire exploser ?

C'est un tort.

Oui, sans problème.

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