Recents in Beach


Receba o meu conteúdo GRATUITAMENTE


Motor de passo com Arduino e o Driver A4988






Hoje vou mostrar um driver de motor de passo. Especialmente, neste vídeo, vamos tratar do Driver A4988, mas pretendo falar mais para frente do “irmãozinho mais atualizado” dele, que é o DRV8825. Através destes dois modelos, vocês vão começar a entrar no mundo da mecatrônica de verdade, da robótica real, onde você comanda com precisão e com força o motor de passo. Então, é nesse mundo que vocês vão começar a entrar agora. Eu vou começar a gravar vários vídeos mostrando a mecatrônica profissional. Quero mostrar o fuso de esfera, uma série de dispositivos, e depois vocês vão recombinar isso tudo para poder fazer a sua própria máquina CNC.
Driver A4988

DRV8825

















Mas, falando da montagem de hoje, é o motor de passo ligado no Driver A4988, utilizando somente dois pinos do Arduino Uno (Para aqueles que estão bravos comigo porque dizem que só gravo ESP... Hoje estou usando o Arduino Uno!). Coloquei uma fonte regulável só pra me fornecer a tensão para o motor DC.


 Então, é isso, a gente usa um componente eletrônico, como um capacitor eletrolítico de 220uF, nosso driver e o nema 17, que é o motor, o qual é muito utilizado, por exemplo, senão o mais utilizado em impressoras 3D. 





Datasheet

Arduino Uno


A4988


Deixo aqui o Datasheet do Arduino Uno e também do Datasheet do A4988. Este segundo tem a mesma pinagem do DRV8825. A diferença é que, na hora de encaixar ele na placa é preciso inverter a parte de cima, pois ambos têm potenciômetros, mas em lados distintos.
O Driver A4988 é muito legal, pois funciona tanto com 3v3 quanto com 5 volts. Dá pra usar também com ESP. Ele tem duas tensões. Uma que alimenta o microcontrolador interno dele e também a tensão que ele joga para o motor que vai até 35 volts por 2A de corrente máxima por fase ou corrente contínua por fase de 1A. A tensão de operação mínima costuma ser de 8 volts. Ele tem vários modos de passo, mas, hoje, vamos optar por fazer o modo “Completo”. Em breve, quero fazer um outro vídeo detalhando quais os outros recursos desse driver.

Quanto à pinagem A4988, ele tem a alimentação do motor, a alimentação lógica, as conexões de ligação das bobinas e depois tenho os modos de operação: Reset, Sleep, os quais não vamos aprofundar hoje, além do Step e Dir, que serão ligados no Arduino Uno.



Nema 17





Quem não tem o Nema 17 pode usar outro desde que seja Bipolar. Neste caso, o motor unipolar não funciona. Tem que ser o bipolar de quatro fios. O capacitor eletrolítico utilizado é um componente simples, passivo.






Montagem


No vídeo mostro para vocês o esquema da montagem no protoboard. Em caso de dúvida da pinagem é só olhar no datasheet do A4988. No meu caso, para não jogar 5 volts, eu liguei o arduino direto no meu computador.



Driver de Passo A4988


Esse componente, o A4988, ele tem um Trimpot, que é uma espécie de potenciômetro bem pequeno. 

Então, você precisa regular esse dispositivo. Como? Você tem que pegar a seguinte equação:

VRef = Lc x 8 x Rs

A VRef é a tensão de referência.

Veja na foto como medir a VRef:




Rs: valor correspondente aos resistores da placa. 
Veja abaixo:


Para facilitar, deixo aqui a calculadora que já vai calcular automaticamente a tensão de referência pra você.



Calculadora

 




Driver de Passo A4988

Quanto ao componente, temos o potenciômetro que poderá ser controlado apenas com uma chave Philips bem pequena. Existem ainda dois componentes SMD, que são resistores. Eles indicam R100, que é a nomenclatura, indicando que o valor dele é 0,1.
No vídeo coloco um exemplo, que está aqui abaixo:


  VRef = 0,598 

 Rs = 0,10 (nossa placa tem R100)


  Aplicando na fórmula:

  Limite da Corrente = 0,598 / (8 *  0,10)

  Limite da Corrente = 0,75A



Não temos uma precisão muito grande nesse valor de corrente, mas funciona para limitar a corrente em cima do motor. Por que eu tenho que fazer isso, afinal? Porque, muitas vezes, se você for utilizar um motor de menores proporções, sem limitação da corrente, você vai queimar esse equipamento.



Exemplo

No nosso exemplo do vídeo a gente faz um ciclo completo de 200 passos em uma direção e, em seguida, a gente faz dois ciclos completos de 400 passos. Lembrando que, cada passo é 1.8 grau, que são 200 passos, o suficiente para dar uma volta completa. Trabalhamos com o motor no Full Step Mode.
Na montagem, o Arduino Uno é ligado no driver A4988 que, por sua vez, está ligado no motor de passo, que já fica funcionando porque o nosso programa fica em Loop. Ele gera um loop de 200 passos para um lado e 400 passos para o outro. A fonte eu alimentei com 12 volts e ela mostra a corrente que está consumindo o circuito. Então, vocês podem ver que, com 12 volts, o driver está puxando em torno 200 miliampere. 



Código

Começamos definindo as constantes que utilizaremos para indicar os pinos STEP e DIR do driver. Em seguida na função SETUP, vamos configurá-los como pinos de saída.

// define números de pinos do driver no arduino
const int stepPin = 3;
const int dirPin = 4;

void setup () {
// Define os dois pinos como Saídas
pinMode (stepPin, OUTPUT);
pinMode (dirPin, OUTPUT);
}



Loop

Na função loop(), vamos fazer as chamadas para girar o motor. Primeiro uma sessão de 200 iterações para girar 1 ciclo completo em uma direção, depois 400 para girar 2 ciclos completos na direção contrária.

void loop() {
// permite que o motor se mova em uma direção particular
digitalWrite(dirPin, HIGH);

// faz 200 pulsos para fazer uma rotação de ciclo completo
for(int x = 0; x < 200; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000); //1 segundo de delay para inverter a direção



Abaixo vemos a continuação da função loop(), onde faremos 2 ciclos completos com o motor.

//Muda a direção da rotação
digitalWrite(dirPin,LOW);

// faz 400 pulsos para fazer duas rotações de ciclo completo
for(int x = 0; x < 400; x++) {
digitalWrite(stepPin,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin,LOW);
delayMicroseconds(500);
}
delay(1000); //1 segundo de delay para inverter a direção



Faça o download dos arquivos:





Postar um comentário

16 Comentários

  1. Boa noite!
    Eu estou iniciando neste universo do arduino, eu tenho um arduino mega 2560, da pra usar ele nesta aplicação citada acima?

    Desde já obrigado

    ResponderExcluir
  2. eu nao entendi a parte do conector do motor na protoboard, você descascou o conector original que vem no motor pra encaixar na protoboard ou você usou um adaptor?

    ResponderExcluir
  3. Boa noite. Gostaria de saber se é possipos utilizar o drive A4988 com um motor nema 17 com uma corrente de 1.5A por fase? Usando um cooler é possível ter um bom rendimento do drive e motor?

    ResponderExcluir
  4. porque vce usa capacitor?na minha montagem usei fonte de 12vlts e o capacitor estourou:)
    usei uma fonte de 9vlts dai rodou tranquilo porem o motor nema 17 nao esta com tanta força quando seguro o eixo dele

    ResponderExcluir
  5. Fernando, seu material é excelente. Didática de mestre! Parabéns!

    ResponderExcluir
  6. Nesta programação e ligação, o motor fica dando um "tec tec" e não gira, o que fazer?

    ResponderExcluir
    Respostas
    1. confere as fases do motor, se ele trava e nao gira as fases podem estar conectadas erradas

      Excluir
  7. Antes de mais nada, meus parabéns pelo trabalho!

    Estou com duvida no calculo do Vref para um motor Nema 17 modelo 17HS4401, de 1.8 A 0.53 N.m funcionar em 4 etapas (1/4) com driver A4988. A conta certa a se fazer é:
    Vref = Im x Rs x 8 => 1,8 x 0,1 x 8;
    Vref = 1,44

    ResponderExcluir
  8. Como eu posso adicionar 2 botões para controlar o sentido de rotação do motor

    ResponderExcluir
  9. legal, mas qnd vou fazer a regulagem do trimpot ele chega no max 0,30 não aumenta alem desse valor, por que sera?

    ResponderExcluir
  10. Este comentário foi removido pelo autor.

    ResponderExcluir
  11. Professor, adorei o seu vídeo mas não consi fazer meus motor funcionar de jeito nenhum. Pode me dar um auxilio?

    ResponderExcluir