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