bonjour je veux commander un moteur triphasé avec un encodeur le moteur doit être en marche jusqu'au l'encodeur" compteur " indique une valeur bien précise le moteur s'arrête
any help !!
Bonjour @nada74
Message déplacé vers le Forum Francophone, il était dans la partie anglophone
le 'mode d'emploi' du Forum Arduino Francophe est ici :
https://forum.arduino.cc/t/les-bonnes-pratiques-du-forum-francophone/861014
Bonjour nada74
C'est quoi comme valeur, un nombre de tours?
Cordialement
jpbbricole
oui quand l'encodeur atteint un nombre de tour bien precie le moteur s'arrete
Bonjour nada74
Plutôt que d'un encodeur, il te faudrait un compteur de tours de ce genre

Avec un capteur optique, ou avec un aimant sur le mobile et un détecteur à effet de Hall comme le KY-03.

A+
Cordialement
jpbbricole
l'encodeur que j'utilise est celui la
je veux utiliser un moteur triphase en ON et OFF
le cylce est comme suit : le moteur etant en marche l'encodeur aussi
lorsque l'encodeur atteint le nombre 659 par exemple le moteur stop.
Bonjour nada74
Ce type d'encodeur a, en général, plusieurs centaines de "tics" par tour, c'est possible de l'utiliser pour compter les tours d'un moteur, en utilisant une bibliothèque comme Encoder.h.
Si tu n'as pas besoin de connaître le sens de rotation, un seule entrée avec interruption doit suffire.
Les entrées A et B de l'encodeur doivent âtre initialisées:
pinMode(piA, INPUT_PULLUP);
pinMode(piB, INPUT_PULLUP);
A quelle vitesse tourne ton moteur?
PS: Si 74 c'est la Haute-Savoie, j'habite en face ![]()
Cordialement
jpbbricole
j'ai arrivé a faire tourner l'encodeur dans les deux sens et il marche parfaitement mais
mon probleme est comme faire pour faire tourner le mouteur et le stopper quand l'encodeur dans une certaine valeur
Bonsoir nada74
Je n'ai jamais pratiqué, mais j'ai recherché arduino three-phase motor, c'est
peut-être intéressent.
Cordialement.
jpbbricole
Soyons clairs.
Tu veux compter les tours ou les pas?
Combien de pas par tour pour cet encodeur?
ca cest le code juste j'ai programmer l'encodeur et j'ai convertir la valeur du pulse en une valeur en metre selon le diametre de l'encodeur
je veux que lorsque la valeur affichee est 5 metre par exemple l'encodeur s'arrete et une autre action sera faite par exemple un moteur pas à pas va etre tourner
volatile long temp, counter = 0;
float diametre = 50*pow(10,-3);
float P=diametre*3.14;
void setup() {
Serial.begin (9600);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
attachInterrupt(0, ai0, RISING);
attachInterrupt(1, ai1, RISING);
}
void loop() {
float valeur=counter*(P/100) ;
if( counter != temp ){
Serial.println (counter);
Serial.println(valeur);
temp = counter;
}}
void ai0() {
if(digitalRead(3)==LOW|counter <=0) {
counter++;
}else{
counter--;
}
}
void ai1() {
if(digitalRead(2)==LOW) {
counter--;
}else{
counter++;
}
}
Quelques remarques
s'écrit
float diametre = 50e-3;
| opérateur OU binaire entre 2 valeurs numériques
|| opérateur OU logique entre 2 booléens
Il faudrait écrire
if(digitalRead(3)==LOW || counter <=0)
Et le moteur tu le commandes avec quoi?
j'ai pas compris
j'ai un moteur pas à pas avec son driver
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.
