Moteur PAP + Driver TB6600 commandé par 2 boutons + variation de vitesse avec un Arduino
Description :
Ce projet consiste à réaliser le contrôle d’un moteur pas à pas (PAP) à l’aide d’un driver TB6600 piloté par une carte Arduino.
Le système permet de faire tourner le moteur dans les deux sens grâce à deux boutons poussoirs, et de régler la vitesse de rotation à l’aide d’un potentiomètre.
Prérequis :
- 1 x Carte Arduino Uno
- 1 × Moteur pas à pas 12V (ex. NEMA 17 ou NEMA 23)
- 1 × Driver TB6600
- 2 x Bouton
- 1 x Potentiomètre 10 KΩ
- 1 x Breadboard
Version IDE :
- Arduino IDE 2.3.5
Vidéo de démonstration :
Schéma de câblage :


Code :
Code Arduino :
unsigned long currentTime;
///////////Moteur 1//////////
#define stepPinM1 2
#define dirPinM1 3
#define enabledmotorM1 4
unsigned int vitesseminM1 = 200; //Vitesse min du moteur
unsigned int vitessemaxM1 = 8000; //Vitesse max du moteur
const int senshoraireM1 = 8; // le numéro de la broche du bouton senshoraire
const int sensantihoraireM1 = 9; // le numéro de la broche du bouton sensantihoraire
int motorspeedM1;
unsigned long previousTimeM1;
int EtatstepPinM1;
void setup() {
///////////Moteur 1//////////
pinMode(stepPinM1, OUTPUT);
pinMode(dirPinM1, OUTPUT);
pinMode(enabledmotorM1, OUTPUT);
pinMode(senshoraireM1, INPUT_PULLUP);
pinMode(sensantihoraireM1, INPUT_PULLUP);
digitalWrite(enabledmotorM1, HIGH);
}
void loop() {
currentTime = micros();
///////////Moteur 1//////////
int sensorReadingM1 = analogRead(A0);
motorspeedM1 = map(sensorReadingM1, 0, 1023, vitesseminM1, vitessemaxM1);
if (digitalRead(senshoraireM1) == LOW) {
digitalWrite(dirPinM1, LOW);
moteurM1();
}
else if (digitalRead(sensantihoraireM1) == LOW) {
digitalWrite(dirPinM1, HIGH);
moteurM1();
}
else {
digitalWrite(enabledmotorM1, HIGH);
}
}
void moteurM1() {
digitalWrite(enabledmotorM1, LOW);
if (currentTime - previousTimeM1 > motorspeedM1) {
previousTimeM1 = currentTime;
EtatstepPinM1 = !EtatstepPinM1;
digitalWrite(stepPinM1, EtatstepPinM1);
}
}
