ArduinoeCia:ControledemotordepassobipolarcomodriverA4988
ControledemotordepassobipolarcomodriverA4988
Controle motores de passo bipolares com o Driver Motor de Passo A4988, utilizando apenas dois pinos para
controle e com a possibilidade de movimentar os motores por meio de "micropassos", mtodo utilizado em
aplicaesqueexigemumposicionamentoexatodomotor.
Este mdulo controlado pelo chip Allegro A4988 (datasheet), e pode ser alimentado com tenses entre 3 e
5.5V.Para o motor, permite alimentao externa de 8 35V. Um potencimetro na placa permite a regulagem
dacorrentedesada.
O controle bsico de um motor de passo feito por meio de dois pinos do microcontrolador, ligados aos
pinosSTEP(passo)eDIR(direo)domdulo,mostradosabaixo:
Uma das grandes vantagens desse mdulo a possibilidade de utilizar micropassos, funo configurvel por
meio dos pinos MS1, MS2 e MS3. Acionando esses pinos conforme sequncia mostrada na tabela, podemos
selecionarosmodosfullstep,halfstep,quarterstep(1/4),eightstep(1/8)esixteenthstep(1/16).
http://www.arduinoecia.com.br/2015/03/controlemotordepassobipolardriverA4988.html
1/4
21/10/2016
ArduinoeCia:ControledemotordepassobipolarcomodriverA4988
Autilizaodomodomicropassoreduzotorquedomotor,emmdia,30%emcomparaocomomodode
passocompleto(fullstep).
ControlandodriverA4988comArduino
Vamos conectar o driver A4988 ao Arduino Uno e utilizar um programa que, controlado pelos caracteres
(nmeros)enviadosatravsdoserialmonitor,moveomotornosentidohorrio,antihorrio,oupraomotor.
AlmdospinosSTEPeDIR,vamosutilizartambmopinoENABLE,paradesligarassadasdomotorquando
o programa receber o comando de parada. Tambm deve ser colocado um jumper entre os
pinosSLEEPeRESETdomdulo:
Atenoparaaligaodaalimentaoexternadomotor,naqualeuutilizeiumcapacitoreletrolticode100F.
Segundoofabricante,aplacamuitosensvelpicosdetenso,ealtamenterecomendvelautilizaode
umcapacitorentreospinosVMOTeGND.
Carregue o programa abaixo no Arduino, que utiliza a biblioteca AccelStepper, disponvel neste link.
DescompacteoarquivoecoloqueapastaAccelStepperdentrodapastaLibrariesdaIDEdoArduino.
1
2
3
4
//Programa:DrivermotordepassoA4988
//Autor:ArduinoeCia
#include<AccelStepper.h>
http://www.arduinoecia.com.br/2015/03/controlemotordepassobipolardriverA4988.html
2/4
21/10/2016
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
ArduinoeCia:ControledemotordepassobipolarcomodriverA4988
intvelocidade_motor=100;
intaceleracao_motor=100;
intsentido_horario=0;
intsentido_antihorario=0;
intnumero=0;
//DefinicaopinoENABLE
intpino_enable=10;
//DefinicaopinosSTEPeDIR
AccelSteppermotor1(1,7,4);
voidsetup()
{
Serial.begin(9600);
pinMode(pino_enable,OUTPUT);
//Configuracoesiniciaismotordepasso
motor1.setMaxSpeed(velocidade_motor);
motor1.setSpeed(velocidade_motor);
motor1.setAcceleration(aceleracao_motor);
Serial.println("Digite1,2ou3ecliqueemENVIAR...");
}
voidloop()
{
//Aguardaoscaracteresnoserialmonitor
if(Serial.available()>0)
{
numero=Serial.read();
{
if(numero=='1')
{
Serial.println("Numero1recebidoGirandomotorsentidohorario.");
digitalWrite(pino_enable,LOW);
sentido_horario=1;
sentido_antihorario=0;
}
if(numero=='2')
{
Serial.println("Numero2recebidoGirandomotorsentidoantihorario.");
digitalWrite(pino_enable,LOW);
sentido_horario=0;
sentido_antihorario=1;
}
if(numero=='3')
{
Serial.println("Numero3recebidoParandomotor...");
sentido_horario=0;
sentido_antihorario=0;
motor1.moveTo(0);
digitalWrite(pino_enable,HIGH);
}
}
}
//Moveomotornosentidohorario
if(sentido_horario==1)
{
motor1.moveTo(10000);
}
//Moveomotornosentidoantihorario
http://www.arduinoecia.com.br/2015/03/controlemotordepassobipolardriverA4988.html
3/4
21/10/2016
70
71
72
73
74
75
76
ArduinoeCia:ControledemotordepassobipolarcomodriverA4988
if(sentido_antihorario==1)
{
motor1.moveTo(10000);
}
//Comandoparaacionaromotornosentidoespecificado
motor1.run();
}
Esseprogramautilizaoserialmonitorparacontrolarosentidoderotaodomotordepasso:
Envie1paraacionaromotordepassonosentidohorrio
Envie2paraacionaromotordepassonosentidoantihorrio
Envie3parapararomotor,oquecolocaopinoEnableemnvelalto,desligandoassadasdomotor
Noserialmonitor,utilizeapartesuperiordajanelaparaenviaroscomandosdecontroledomotor,eacompanhe
naparteinferiorarespostaaoscomandos:
http://www.arduinoecia.com.br/2015/03/controlemotordepassobipolardriverA4988.html
4/4