Compter avec arduino

compter les tours d'un moteur

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

Alors voila j'ai petit projet, mais je manque de connaissance en la matière donc je viens chercher de l'aide.

Alors je souhaite commander deux moteur pas à pas de façon automatique. Actuellement je les commande manuellement via a un variateur de vitesse.

J'ai essayé de les commander directement avec l'arduino UNO et le shield Moteur R3 Mais sa fonctionne pas correctement.

Donc j'ai décidé de prendre le problème à l'envers. Je vais automatisé la partie manuelle.

Donc à l'aide d'un moteur pas à pas d'imprimante accouplé sur le variateur de vitesse (au niveau du potentiomètre) je commanderais l'accélération des moteurs (déjà testé sa fonctionne parfaitement).

A l'aide de relais je viendrais fermer les circuits Enable (Sans cette info les moteurs ne tourne pas) et DIR (pour le sens).

Mais j'ai également besoin de savoir le nombres de tours que les moteurs vont faire (les deux tournerons ensemble et à la même vitesse ). Donc j'avais dans l'idée d'utilisé un capteur ILS, mais c'est là que le problème se corse…

J'ai fait une simulation en remplaçant le capteur ILS par un BP voici le programme:

 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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <Stepper.h>

const int stepsPerRevolution = 48; 



Stepper myStepper(stepsPerRevolution, 12,13);     


const int pwmA = 3;
const int pwmB = 11;
const int dirA = 12;
const int dirB = 13;
const int buttonPin = 2;     

int buttonPushCounter = 0;   
int buttonState = 0;         
int lastButtonState = 0;

void setup() {


  Serial.begin(9600);

pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);

digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
}


void loop() {
 pinMode(buttonPin, INPUT);

  buttonState = digitalRead(buttonPin);


  if (buttonState != lastButtonState) {

    if (buttonState == HIGH) {

      buttonPushCounter++;


      Serial.println("APPUI"); 
      Serial.print("nombre d'appuis:  ");
      Serial.println(buttonPushCounter, DEC); 
    }
    else {

      Serial.println("PAS D'APPUI");
    }


    lastButtonState = buttonState;
  }

  if (buttonPushCounter % 2 == 0) { 
   myStepper.setSpeed(50);
myStepper.step(100);

  } 
  else { 

myStepper.setSpeed(120);
myStepper.step(-100);
  }

}

Des fois sa fonctionne des fois non … je sais pas pourquoi … Parfois les appuis son bien vue mais le moteur tourne toujours dans le même sens …

Donc si quelqu'un pouvais m'orienté (sans forcement me donné la solution directement que je cherche un peu :) ) sa serais avec plaisir :)

Édité par Coyote

+0 -0
Auteur du sujet

c'est pas la que je voulais en venir.

Je me suis mal exprimé.

Enfaite dans le programme la logique sa serais plus ceci:

Mise en marche des moteurs (via un relais, donc avec une fonction digitalWrite ) A partir de la je doit commencer a compté le nombre de tour des moteurs (c'est le système variateur + driver qui se charge de les faire tourner et non l'arduino). A se même moment j'augmente la vitesse via mon moteur pas a pas d'imprimante (qui lui est couplé mécaniquement au variateur il remplace l'action humaine). Arriver a X tour (des moteur non piloté par l'arduino , le programme devras faire l'inverse réduire la vitesse (donc avec le moteur d'imprimante toujours) puis Stopper les moteurs en ouvrant leur circuit de commande.

Donc je voulais savoir si il était possible de le faire a l'aide d'un capteur ILS (mise en action très simple du coup).

A l'heure actuel je suis capable de mettre en marche le système d'augmenté la vitesse de la réduire avec l'arduino mais je suis imcapable de savoir combien de tours a fait le système, je souhaite juste introduire cette variable.

+0 -0
Auteur du sujet

Dans l'idée l'ILS ferme un contact a chaque fois comme une bouton donc au bout de X fermeture on fait une action Y.

Quand tu parle d'encodeur, tu parle des encodeurs optique avec les disques dentelé ? sa pourrais fonctionner sur mon système ? (tu voudrais un schéma pour que mes explications sois plus lisible et compréhensible ?)

+0 -0
Auteur du sujet

Module QEI ? Les encodeurs magnétiques ? je viens de regarder a quoi sa ressemble avec ton exemple jamais vue se genre de petite chose.

Je suppose que tu utilise un aimant également ? C'est une genre D'ILS plus perfectionné ?

+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