Você está na página 1de 4

21/10/2016

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

Você também pode gostar