Compter avec arduino

compter les tours d'un moteur

a marqué ce sujet comme résolu.

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 :)

+0 -0

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.

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 ?)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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