21 agosto 2014

Controlando motor de passo bipolar com o módulo Easydriver

Controle motores de passo de uma maneira muito simples com o Módulo Motor de Passo Easydriver, um módulo feito para controlar motores de passo bipolares de 4, 6 ou 8 fios. Funcionou perfeitamente para controlar um motor de 12 v que eu havia retirado de uma impressora antiga, e estava esquecido na gaveta. :-)

Módulo motor de passo Easydriver
 
Controlado pelo CI A3967, o módulo não funciona apenas com 12 volts : a tensão de entrada pode ser de 7 à 30 volts. A comunicação com o microcontrolador é feita por meio de apenas 3 pinos : um para o controle de passo, outro para a direção e o terceiro vai ligado ao GND.

A tensão do nível de sinal também é ajustável, podendo ser tanto 3.3v como 5v, bastando para isso fechar o contato SJ2 no lado esquerdo da placa. Isso permite que o módulo seja usado tanto em projetos que utilizem o Arduino Uno ou Mega (nível de sinal de 5v), como o Arduino Due (nível de sinal de 3.3v).

Veja na imagem abaixo com o detalhe da pinagem que essa placa permite ainda o controle dos micropassos do motor (utilizando os pinos MS1 e MS2), possui uma saída de 5v para alimentar algum outro circuito/sensor, além do potenciômetro no lado esquerdo para controle da corrente fornecida ao motor.

Easydriver - Pnagem

No site oficial do desenvolvedor (http://www.schmalzhaus.com/EasyDriver/), você encontra  informações completas sobre todas as funcionalidades dessa placa.

Para testar o motor de impressora esquecido na gaveta, eu fiz a seguinte ligação :

Circuito Easydriver e motor de passo 12v Arduino

Antes de ligar o motor, eu precisava descobrir quais eram os pares das bobinas. No meu caso, o motor tinha 4 fios e simplesmente utilizei o multímetro e segui as instruções desse site, que explica o procedimento para motores bipolares, unipolares e híbridos.

O programa abaixo gira o motor por uma volta completa, e depois faz a mesma coisa no sentido inverso. Ajuste o programa para o número de passos do seu motor alterando a variável passos_motor no início do programa. 

Como utilizamos apenas dois pinos do Arduino para enviar ao módulo os valores dos passos e da direção, não precisamos carregar nenhuma biblioteca especial.

 1
 2
 3
 4
 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
// Programa : Controle de motor de passo com Easydriver
// Autor : Arduino e Cia

// Pinos conectados ao Step e Dir do Easydriver
int pino_passo = 5;
int pino_direcao = 4;

int direcao = 1;

// Quantidade de passos para uma volta completa
// Ajuste de acordo com o seu motor
int passos_motor = 360;

void setup() 
{
  // Define os pinos como saida
  pinMode(pino_passo, OUTPUT);
  pinMode(pino_direcao, OUTPUT);
}

void loop()
{
  // Define a direcao de rotacao
  direcao = 1;
  digitalWrite(pino_direcao, direcao);
  for (int p=0 ; p < passos_motor; p++)
  {
    digitalWrite(pino_passo, 1);
    delay(1);
    digitalWrite(pino_passo, 0);
    delay(1);
  }
  delay(1000);
  
    // Inverte a direcao de rotacao
  direcao = 0;
  digitalWrite(pino_direcao, direcao);
  for (int p=0 ; p < passos_motor; p++)
  {
    digitalWrite(pino_passo, 1);
    delay(1);
    digitalWrite(pino_passo, 0);
    delay(1);
  }
  delay(1000);
}


38 comentários:

  1. Bom dia!

    Como faço pra usar a Easy Driver em um motor de passo de 6 fios?

    ResponderExcluir
    Respostas
    1. Boa tarde Ricardo !

      Eu não tenho nenhum motor de 6 fios aqui para testar o código, mas creio que você possa usar as informações desse link para ligação do motor :

      http://www.schmalzhaus.com/EasyDriver/

      Procure pela questão Q5.1, lá tem o esquema de ligação.

      Abraço !

      Excluir
    2. Será necessário usar uma ponte H Ln298

      Excluir
    3. como utilizo a ponte h l 298 nesse driver?

      Excluir
    4. Abandona os dois fios comuns do Unipolar (6 fios) e utiliza os quatro restantes.
      Para encontrar as boninas basta ficar com os fios que derem maior resistência.
      Com unipolar (5 fios) vai ter que abrir para desfazer as ligações.

      Excluir
    5. Você pode ignorar os fios comuns no motor unipolar (6 fios) escolha os pares de fios que tem mais resistência.
      Nos motores unipolar de 5 fios você terá de abrir o motor desfazer as ligações dos fios comuns e pronto.

      Excluir
  2. Bom dia Amigo!

    Consegui colocar o motor pra rodar, mas como posso alterar a velocidade do motor de passo com sua programação?

    ResponderExcluir
    Respostas
    1. Boa tarde Ricardo,

      Eu ainda não testei, mas no site do desenvolvedor tem um exemplo com a biblioteca AccelStepper, com controle de velocidade (veja o exemplo 3 - Using a pre-built library - AccelStepper) :

      http://www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html

      Abraço !

      Excluir
  3. Bom dia! Para que possa direcionar o sentido de rotação do motor de passo, através de botões e até mesmo acrescentar mais motores como seria o esquema é como ficaria o código fonte...

    ResponderExcluir
    Respostas
    1. Boa noite Jorge,

      Tudo vai depender do seu projeto e do motor utilizado, mas você pode usar os exemplos que eu tenho no site, como esse, em que eu controlo o sentido de um motor de passo 28BYJ-48 com botôes :

      http://www.arduinoecia.com.br/2013/11/ligando-motor-de-passo-28byj-48-e.html

      Abraço !

      Excluir
  4. Qual o maior motor de passo bipolar posso usar com essa easydriver?

    ResponderExcluir
    Respostas
    1. Boa noite,

      Segundo informações do fabricante, o easydriver é capaz de fornecer até 750mA por bobina do motor.

      Abraço !

      Excluir
  5. Boa Noite
    Tem como eu controlar este motor de passo com um potenciometro, ou seja girando o potenciometro para direita o motor gira para direita e vice versa!!

    Abrs!!

    ResponderExcluir
    Respostas
    1. Boa noite,

      Por favor dê uma olhada neste artigo, onde eu faço esse controle com um potenciômetro e um servo. Você pode adaptar o programa para fazer a mesma coisa com o motor de passo:

      http://www.arduinoecia.com.br/2013/06/controlando-um-servo.html

      Abraço !

      Excluir
  6. Boa tarde! Estou fazendo um projeto utilizando arduino e Easydriver e gostaria de saber qual site ou software vocês utilizaram para ilustrar os circuitos de ligação dos componentes.
    Abraços !

    ResponderExcluir
    Respostas
    1. Bom dia Matheus,

      Usamos o Fritzing, disponível para download neste link: http://fritzing.org/download/

      Abraço!

      Excluir
  7. excelente tutorial. ahora mismo empiezo a programar una imagen.

    Sigue así , personas como tu es que se necesitan para progresar.

    ResponderExcluir
  8. Boa tarde Amigos, não estou conseguindo fazer a programação para um motor de 6 fil...
    alguém pode me Ajudar, por favor.

    ResponderExcluir
    Respostas
    1. bom dia amigo rafael, os motores de 6 fios normalmente são bipolares, no caso tem 2 bobinas com 3 fios cada, sendo 1 central e os outros dois as extremidades da bobina, com um multimetro na escala de continuidade você mede os fios aqueles de derem contuidade são da mesma bobina, entre eles o que der menor impedância e o central, ai e so você ligar os dois que deram maior contuidade e ignorar o central ai você terá uma ligação de 4 fios.
      de uma olhada nesse video: https://youtu.be/CH5FVfvjG-U
      espero ter ajudado

      Excluir
  9. Como o Ricardo mencionou acima vá até http://www.schmalzhaus.com/EasyDriver/

    Procure pela questão Q5.1, lá tem o esquema de ligação.

    Abraço !

    ResponderExcluir
  10. Boa Tarde. Eu estou tentando fazer um motor de passos rodar com este esquema; entretanto o meu motor de passos, possui 5 fios e sinceramente, não sei como fazê-lo rodar. Tente por este método, mas o IDE do arduino diz que não está carregando a placa. Gostaria de alguma ajuda. Agradeço.

    ResponderExcluir
    Respostas
    1. Boa noite,

      Esse driver só vai funcionar com motores de 4, 6 ou 8 fios.

      Abraço!

      Excluir
  11. Boa noite como faço para configurar os passos em passo completo meio passo um quarto de passo e oitavo, nos pinos ms1 e ms2 devo aterrar ou usar jamper mas onde eu ligo qual a tensão para esses pinos?

    ResponderExcluir
    Respostas
    1. Oi Rubens,

      Vc está usando o Arduino ? tente 3.3V, seguindo essa tabela:

      MS1/MS2
      0,0 full step
      1,0 half step
      0,1 1/4 step
      1,1 1/8 step

      Abraço!

      Excluir
  12. amigos pesquisei bastante e nao achei como faço para mudar a resolução dos passos ligo o ms1 e ms2 aonde

    ResponderExcluir
    Respostas
    1. Boa noite,

      Aplique tensão (3,3V) ou aterre os pinos, seguindo a tabela abaixo:

      MS1/MS2
      0,0 full step
      1,0 half step
      0,1 1/4 step
      1,1 1/8 step

      Abraço!

      Excluir
  13. Olá amigo, por gentileza, como ficaria o código para, por exemplo, usar um sensor de presença - sendo que, ao se passar na frente do sensor, o motor gire X graus ou usasse uma chave de fim de curso e após, o motor volte a sua posição original. Muito obrigado

    ResponderExcluir
  14. Bom, dia, como faço para utilizar um motor de passos de 5 fios com um easy driver v4.4?

    ResponderExcluir
  15. Meu motor é de 06 fios. Os fios Centrais são AMARELO e BRANCO. Eu preciso junta-los para que o motor gire corretamente. Mas em todos os tutorias ensina a não junta-los. Como posso fazer funcionar sem eles estarem juntos?

    ResponderExcluir
  16. Olá,

    Estou começando no mundo do arduino e gostaria de saber se posso usar o Easydriver para controlar uma CNC feita a partir de drivers de CD/DVD.

    Abs

    ResponderExcluir
  17. Olá amigo gostaria de saber como faria para usar controlar 2 motores o que eu deveria mudar no texto agradeço se poder me der dica

    ResponderExcluir
  18. Bom dia gostaria de controlar 2 motores com esse tópico o que devo modificar no texto de comando

    ResponderExcluir
  19. tenho 2 motores de para brisa de carro. como mexer usando o easydriver?

    ResponderExcluir
  20. Olá, meu motor tem 4 volts tem como usar esse driver?

    ResponderExcluir
    Respostas
    1. Boa noite,

      Infelizmente não. A alimentação do motor é de 7 à 30 V.

      Abraço!

      Excluir
  21. Ola bom dia eu estava msm procurando isso alias excelente explicação ,mas estou com um problema meu motor é de 8 fios como posso ligar ele neste esquema
    tenho o arduino e esta msm placa driver e o motor é um lema 23 5v 1A com os fios Amarelo e amarelo listrado ; vermelho e vermelho listrado ;laranja e laranja listrado ;preto e preto listrado
    Preciso muito de ajuda por favor se alguem poder me ajudar agradeço

    ResponderExcluir
  22. boa noite, gostaria de esclarecer uma dúvida. Nas linhas de programação 28 a 31, eu percebo que para cada passo dado, existe um tempo (delay) de parada, como se fosse uma sequência intermitente. Qual seria o motivo dessa intermitência, obrigado

    ResponderExcluir