Contrôle de moteur pas-à-pas par commande permettant de développer le couple maximal
Le programme ci-dessous permet de contrôler un moteur pas-à-pas 28BYJ-48 avec un contrôleur ULN2003 de la manière à ce qu'il développe tout son couple :
1
int IN1 = 8; // pin digital 8 relié à IN1
2
int IN2 = 9; // pin digital 9 à IN2
3
int IN3 = 10; // pin digital 10 à IN3
4
int IN4 = 11; // pin digital 11 à IN4
5
int temps = 20; // temps entre les pas, minimum 10 ms.
6
// Array bidimensionnel indiquant la séquence des pas7
int pas [4][4] ={
8
{1, 1, 0, 0},9
{0, 1, 1, 0},10
{0, 0, 1, 1},11
{1, 0, 0, 1}12
};
13
14
void setup(){
15
// tous les pins se configurent comme sorties16
pinMode(IN1, OUTPUT);
17
pinMode(IN2, OUTPUT);
18
pinMode(IN3, OUTPUT);
19
pinMode(IN4, OUTPUT);
20
}
21
22
void loop(){
23
// 512*4 = 2048 pas24
for (int i = 0; i < 512; i++){
25
// boucle repasse le array ligne à ligne26
for (int i = 0; i < 4; i++){
27
// valeurs qu'on va appliquer28
digitalWrite(IN1, pas[i][0]);
29
digitalWrite(IN2, pas[i][1]);
30
digitalWrite(IN3, pas[i][2]);
31
digitalWrite(IN4, pas[i][3]);
32
delay(temps);
33
}
34
}
35
// pause de 5 secondes36
digitalWrite(IN1, LOW);
37
digitalWrite(IN2, LOW);
38
digitalWrite(IN3, LOW);
39
digitalWrite(IN4, LOW);
40
delay(temps);
41
}
Dans ce cas, les bobines sont pilotées ainsi :