Contrôler un vérin ARDUINO

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

Je suis débutant en électronique/programation et j'ai entamé un tuto sur le sujet pour réaliser mon projet mais faute de temps je n'est pas pu le finir à temps, donc je viens à vous pour avoir de l'aider.

Je souhaite contrôler un vérin de 20cm de courses en 12V d'environ 60W avec une carte arduino uno, sachant que l'alimentation viens d'un transformateur 220V > 12V, voici l'organisation général: - A 17H00 le vérin ce déploie à faible vitesse et par à coup - A 05H00 le vérin ce rétracte à vitesse normal sans à coup Il fonctionnera 7j/7

J'aimerais savoir quelle type de variateur utiliser pour mon projet ?

Merci

+0 -0

Un vérin comment ? Il a pas de mécanisme de commande déjà intégré ?

Apres pour l'heure il faudra rajouter un composant pour gerer l'heure (une RTC) ou le faire avec millis() en la remettant a zeros de temps en temps (car millis() ne va que jusqu’à 50 jours)

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0
Auteur du sujet

Bonjour,

Appartement non il n'y a pas de système de contrôle, il est du type électrique, visse sans fin/moteur 12V 5 ampère Après quelques recherches je crois savoir quel montage faire,

Image utilisateur

  • J'utilise quatre transistors MOS canal N connecté un à un aux sorties d'une carte arduino uno (deux en PWM afin de faire varier la vitesse dans un sens comme dans l'autre)
  • Un pont en H pour faire fonctionner le vérin 12V dans les deux sens
  • quatre diode de roue libre pour les transistors,(je ne sais pas vraiment comment les placer sur le schéma)
  • La carte et l’alimentions sont connecter à la même terre, arduino est alimenter un 12V

Que pensez vous de ce montage ?

Merci de votre aide, désolé du retard de ma réponse.

Édité par fooxxe

+0 -0
Auteur du sujet

Si le montage est bon c'est déjà une bonne chose, mais je n'arrive pas à trouver un tuto sur la programmation de transistor MOS, vous avez pas une idée ?

regz: tant que je ne suis pas sur de mon coup je ne monte rien, mieux être être prudent =)

+0 -0

Le MOS c'est un transistor commandé en tension. T'applique une tension grille-source pour le rendre passant ou bloquant.

Par contre, dans ton montage, tu ne parviendra pas à commander les high MOS (les MOS du haut du pont en H, entre Vcc et le verin) si ce sont des MOS canal N.

+0 -0
Auteur du sujet

Bonjour,

Ce que je veux faire c'est: - Les deux MOS du haut régule la tension donc la vitesse du vérin - Les deux du bas sont en simple interrupteur pour faire fonctionner le vérin dans les deux sens

Je ne comprend pas pourquoi les deux MOS du haut ne peuvent pas être en canal N ?

Merci de votre réponse

+0 -0

Pour savoir comment commander le pont en H, il suffit de lire Wikipedia: http://fr.wikipedia.org/wiki/Pont_en_H

Pour le probleme des NMOS high side, en soit, c'est pas gênant, mais pour les rendre passant, il faut appliquer une tension grille source Vgs positive. si tu as une FCEM de 6V sur ton moteur, la source de ton transistor High side est déjà à 6V, en imaginant que ta Vgs à saturation soit de 4V, il faudrait que la sortie de l'arduino soit de 10V, et l'arduino ne fonctionne qu'en 0/5V.

+0 -0
Auteur du sujet

il faut juste avoir un transistor avec une Vgs plus faible comme ça le problème est réglé

Par contre pour la variation de vitesse je suis obligé d'utiliser un potentiomètre et utiliser une entré analogique de la carte arduino ?

Merci

+0 -0

Le Vgs d'un NMOS sera toujours positif, or, même avec un Vgs nul, il faut que la tension de sortie de l'arduino dépasse la FCEM du vérin, et il est rare que la tension de commande dépasse la tension de puissance (et ce n'est pas le cas ici, ta puissance étant en 12V).

+0 -0
Auteur du sujet

Je reviens vers vous pour une petite précision, je pense utiliser deux drivers de MOS , mais je ne sais pas vraiment comment les gérer aux niveau du code, (pour la variation de vitesse et l'ouverture/fermeture des MOS) ?

Vous avez une idée ?

Merci

Édité par fooxxe

+0 -0

La vitesse d'ouverture et de fermeture de MOS, c'est toujours "le plus vite possible", le MOS chauffe et perd de l'énergie pendant ses transitions, il faut qu'elles soient les plus courtes possibles.

La vraie question, c'est comment faire varier le rapport cyclique de la PWM qui contrôle les MOS. Et là tout est expliqué dans le tuto d'eskimon, en lien ci-avant.

+0 -0
Auteur du sujet

Bonjour,

J'ai lu la partie qui concerne la PWM cependant il me reste un assez gros problème:

J'ai fait un schéma du montage avec - Deux driver IR2104 - 4 mos canal N BUZ11 - des diode de roue libre - des condensateur anti-parasite

http://www.hostingpics.net/viewer.php?id=542946img1481.jpg => schéma

Mon problème c'est que je ne voie pas quel forme les signaux doivent être envoyer Pour que mon moteur tourne à 50% de ses capacités. ça fait deux jours que je cherche et n’embrouille l'esprit sans résultat, je ne sais pas s'il faut relier les deux sortie IN et les deux autres SD du driver ou les géré indépendamment ?

Je ne demande pas une réponse toute faite mais un petit coup de pouce =) Je vous remercie pour votre aide.

Édité par fooxxe

+0 -0
Auteur du sujet

J'ai trouvé la solution pour la PWM, merci à vous

cependant j'ai un petit doute sur le code:

Quand la fonction IF va être vrai, cela va activer la commande PWM mais quand, le programme va la revérifier et quel sera fausse ce sera donc "ELSE" qui sera exécuté, ce que j'ai peur c'est que le vérin n'aura pas le temps de faire ça cours, du coup j'ai deux solution:

  • Mettre qu'une fonction IF sans ELSE donc le vérin restera en mode PWM (faut qu'il soit équipé d'une "fin de cours" ou d'un potentiomètre)

  • Installer deux capteurs, type "bouton poussoir" et une fonction IF qui active la broche SD et cela coupera la PWM

Je ne sais pas trop ce qui est le plus simple, et le moins risqué ?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <Wire.h>
#include <RTClib.h>

const int IN_gauche = 3;
const int IN_droite = 5;
const int sd = 6;

int etat_verin;

RTC_DS1307 RTC;

void setup() 
{
  Serial.begin(57600);
  Wire.begin();
  RTC.begin();

  etat_verin = LOW; // le verin est relacher  

  pinMode(IN_gauche, OUTPUT); // les drivers sont en sortie
  pinMode(IN_droite, OUTPUT);
  pinMode(sd, OUTPUT);

  analogWrite(sd, 255); 
}

void loop() 
{
  DateTime now = RTC.now();

  if (now.hour() == 05 && now.minute() < 01 && etat_verin == LOW) // fonction verin relaché
 {
   analogWrite(IN_gauche, 191); 
   analogWrite(IN_droite, 64); 

   etat_verin = HIGH; // pour etat poussé
 } 

 else
 {
   analogWrite(sd, 255);
 }

  if (now.hour() == 17 && now.minute() < 01 && etat_verin == HIGH) // fonction verin poussé
  {    
    analogWrite(IN_gauche, 64);
    analogWrite(IN_droite, 191);

    etat_verin = LOW; // pour etat laché   
  }

  else
  {
   analogWrite(sd, 255);
  } 
}
+0 -0
Auteur du sujet

Donc par exemple une condition IF comme j'ai fait ( pour l'heure) avec une boucle WHILE dedans, => tant que le capteur de fin de cours n'est pas activé on continu la PWM) ?

PS Vu que le code est mal fait, je vais le refaire en incluant deux capteur de fin de cours (enfin le mieux ça serait que le vérin intègre déjà ces capteurs, ça serait plus sur)

Merci pour ta réponse

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte