Go Down

Topic: Contrôler une électrovanne avec arduino. (Read 460 times) previous topic - next topic

wurst

Bonjour,

Je cherche à contrôler une électrovanne avec arduino.
j'ai acheter ce produit, ce n'est pas un solénoïde classique car il y a 3 fil :
https://www.amazon.fr/dp/B00XQMX2UO/ref=pe_386181_37038081_TE_3p_dp_1

les branchements pour ouvrir ou fermer la vanne :
http://is.alicdn.com/img/pb/036/115/778/778115036_787.jpg

la vanne fonctionne très bien quand switch les connections à la main.

J'ai tenté d'automatiser tout ça avec arduino mais ça bug.
J'ai réaliser (bidouiller :) ) un montage à base de deux mosfets actionnés chacun par un pin du arduino.
Pin2 était sensé ouvrir et pin3 fermé la vanne.
Mais ça fait n'importe quoi, les messages pin2 et 3 ne vont que vers un mosfet.

J'ai tenté de brancher à un motorshield en servomoteur mais ça ne fonctionne pas. Je ne sais pas si le moteur de la vanne est un servomoteur classique.

Si quelqu'un a une solution pour contrôler ce genre de vanne ça m'aiderait beaucoup :)

Tristan


Jambe

Bonsoir,

C'est quoi ton code qui marche pas? Avec le schéma elec.

J-M-L

En gros il faut faire un interrupteur à bascule entre les pins ON et OFF
+1 avec jambe - donnez nous des détails sur ce que vous avez essayé
Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums
Pas de messages privés SVP

wurst

#3
May 07, 2017, 01:38 pm Last Edit: May 07, 2017, 01:49 pm by wurst
En gros, j'ai reproduit ce montage deux fois :
https://cdn.instructables.com/FF9/EWMG/I4CMQETS/FF9EWMGI4CMQETS.LARGE.jpg


le premier relié au pin 2 pour faire passer le courant vers le fil rouge, pour ouvrir. Et le deuxième schéma relié au pin3 pour faire passer le courant vers le fil bleu, pour fermé.

les deux mosfet reliés à la même source d'énergie.

Le problème vient peut être du faite que le ground du moteur est relié à la fois au centre des deux mosfets ?

J'ai utilisé un code très simple, un code de type blink :
Code: [Select]
const int ledPin =  2; 
const int ledPin2 =  3;

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(ledPin, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(ledPin, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  digitalWrite(ledPin2, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(ledPin2, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}


ce qu'il s'est passé alors avec mon montage c'est que le mosfet relié au fil rouge (ouverture), recevait là la fois la séquence  avec 1000 en delay et celle avec 500ms.



Jambe

ce qu'il s'est passé alors avec mon montage c'est que le mosfet relié au fil rouge (ouverture), recevait là la fois la séquence  avec 1000 en delay et celle avec 500ms.
C'est pas clair, il n'apparait pas dans le code un delay à 500ms.

Faudrait donner une photo/schéma de ton montage propre, pas une idée de ce qui à été fait ailleurs

Le problème vient peut être du faite que le ground du moteur est relié à la fois au centre des deux mosfets ?


Qu'est ce que tu appelles Ground du moteur?

wurst

Oui le code est pas le même en effet :
Code: [Select]

void loop() {
  digitalWrite(ledPin, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(ledPin, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  digitalWrite(ledPin2, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(500);                       // wait for a second
  digitalWrite(ledPin2, LOW);    // turn the LED off by making the voltage LOW
  delay(500);                       // wait for a second
}

Quote
Qu'est ce que tu appelles Ground du moteur?
le fil branché au pole négatif, le fil jaune.

En fait je travaille sur une installation artistique que je présente ce mercredi à Rennes. Donc je vais manquer de temps pour travailler sur cette électrovanne. je reviendrai sur ce topic dans une semaine du coup.
je pensai trouver une solution rapide mais je vais donc garder pour l'instant la solution alternative que j'avais trouvé et qui fonctionne (plus ou moins car la force du servo n'est pas optimal) : Sur mon installation j'ai une vanne simple à boule fixée à un servomoteur.

Je mets le liens vers mon projet artistique : https://www.facebook.com/Tristan.MNZ/

Merci pour vos réponse et à très bientôt,

Tristan

TIFFUS

ta video est super tant du point artistique , que realisation.....
pour savoir si c'est tes mosfet qui merde  essai sans arduino
applique leur le niveau logique comme si c'etait la sorti de ton arduino
car ton schema est pas complet ou mal detailler
je pense pas que c'est la partie arduino qui deconne
tient nous au courant
 mets nous le schema ou photo de ce qu'il y a apres ton arduino

wurst

Merci beaucoup Tiffus.
Je m'y remet bientôt et je détaillerai mieux ce que j'ai essayé.


wurst

Bonjour,

Ma présentation de l'installation s'est bien passée :)
Je me remet sur l'électrovanne.

Je vais recommencer à zéro je pense. j'étais trop dans la bidouille et je ne maîtrise pas assez bien les mosfets.

Déjà, à votre avis est ce qu'elle a le même système de fonctionnement qu'un servomoteur classique ?

Je dispose d'un shield : https://playground.arduino.cc/Main/AdafruitMotorShield
Est ce qu'un branchement est possible sur celui ci ?

Je dispose aussi d'une carte relai (x8, 10A 250V/AC), et de mosfets.

Quelle piste me recommandez vous pour contrôler l'électrovanne ?

Bonne journée,

T.


Jambe

#9
May 17, 2017, 03:55 pm Last Edit: May 17, 2017, 03:58 pm by Jambe
Bonjour,

Avec un relais c'est assez simple, tu disposes de 3 connections:

-Un contact NC
-Un contact NO
-Un commun.

Il faut aussi déterminer l'état le plus "courant" de la vanne: Ouverte ou Fermée.

Il faut connecter le +12V sur la borne Commun.
Le vert/bleu sur le NC
Le rouge sur le NO

Dans cette config, relais au repos la vanne sera Fermée, relais excité la vanne sera ouverte.
Si toutefois, la vanne doit resté plus souvent ouverte que fermée, il est préférable d'inverser le câblage pour garder le relais le plus possible au repos.

Cette solution à aussi l'avantage d'utiliser une seule sortie de la carte qui en état LOW/HIGH correspond à vanne ouverte/fermée

Déjà, à votre avis est ce qu'elle a le même système de fonctionnement qu'un servomoteur classique ?
Non, un servo classique attend un ordre de position sur un seul fil, avec un signal carré à 50Hz.
Cette vanne reçois 2 ordres différents sur 2 fils différents


wurst

Merci pour ta réponse Jambe.

En fait, je n'ai pas bien expliqué l'objectif, je souhaite moduler le flux d'eau. Parfois la vanne doit rester au 3/4 ouverte, à d'autre moment seulement à 1/4 ouverte, entièrement ouverte, etc.
Je ne souhaite pas que la vanne soit simplement en on/off.
T'as solution ne ne permet pas cela n'est ce pas ?

Jambe

#11
May 17, 2017, 07:26 pm Last Edit: May 17, 2017, 07:28 pm by Jambe
D'où l'intérêt de communiquer toutes les infos dès le début, ça évite la perte de temps.

C'est possible avec 2 relais ou 2 mosfet. J'essaie de te produire un schéma elec dans la soirée

Par contre, la partie régulation promet d'être légèrement compliquée, sans retour d'info de la position de la vanne

wurst

Désolé pour le manque d'info.  :(
Oui la position ne sera pas très précise. Après, si le moteur répond de manière stable, le temps d'ouverture définira la position. Enfin c'est ce que j'espère.
L'électrovanne a un capteur qui comprend quand la vanne est entièrement fermée et entièrement ouverte. On entend alors un petit clique si l'on tente de continuer à fermer ou ouvrir.

Jambe

#13
May 17, 2017, 09:29 pm Last Edit: May 17, 2017, 09:30 pm by Jambe
Voici l'idée avec des mosfets, c'est des canaux P.

Le schéma montre 2 moteurs, il faut interpréter comme l'un étant le fil d'ouverture et le second le fil de fermeture.

Diode de roue libre pour protéger le transistor, et résistance de rappel pour decharger la grille du transistor et éviter les commutations "aléatoires"


wurst

Merci beaucoup, je regarde tout ça dès demain.

ça n'a à priori aucune importance mais j'ai omis de parler de max msp pour ne pas compliquer le sujet.
Je vais contrôler le arduino avec max msp. Je contrôle déjà un servomoteur avec max msp et ça fonctionne plutôt bien.
Donc la position sera définie en fonction du temps d'ouverture (et de fermeture) géré par max msp.

Go Up