28 agosto 2014

Controle de motor de passo com ponte H L298N

A maioria dos projetos que eu vejo utilizando o driver motor ponte H L298N  envolve o controle de motores DC. Faz sentido pois uma das grandes vantagens desse módulo é que ele suporta correntes de até 2A por canal. 

Mas com esse módulo também é possível controlarmos motores de passo. Vamos ver como isso funciona, mostrando antes as especificações e pinagem :

Ponte H L298N Arduino

Especificações ponte H L298N

  • Tensão de Operação: 6~35v
  • Chip: ST L298N (datasheet)
  • Controle de 2 motores DC ou 1 motor de passo
  • Corrente de Operação máxima: 2A por canal ou 4A máx
  • Tensão lógica: 5v
  • Corrente lógica: 0~36mA
  • Limites de Temperatura: -20 a +135°C
  • Potência Máxima: 25W
  • Dimensões: 43 x 43 x 27mm
  • Peso: 30g
Pinagem ponte H L298N

Pinagem

  • MOTOR A e MOTOR B são os conectores utilizados para ligação de 2 motores DC ou 1 motor de passo
  • ATIVA MA e ATIVA MB - Podem ser ligados aos pinos PWM do Arduino para controle de velocidade do motor
  • ATIVA 5V e 5v - Esta placa possui um regulador de tensão integrado. Quando o módulo é alimentado por fonte externa (6 à 35v) e um jumper está colocado no conector Ativa 5v, o pino 5v possui uma SAÍDA de +5v. Quando não há jumper no pino Ativa 5v, o pino 5v se comporta como ENTRADA, podendo ser utilizado , por exemplo, os 5v do Arduino para alimentação. Portanto, tome cuidado ao utilizar o pino 5v e evite danos ao módulo.
  • 6-35v e GND - Pinos alimentação externa
  • ENTRADA - Barramento com os pinos de IN1 a IN4. IN1 e IN2 controlam o Motor A, e IN3 e IN4 controlam o Motor B. No caso de motores de passo, os 4 pinos são utilizados

Eu testei esse módulo com um motor de passo bipolar, retirado de uma impressora (o mesmo que eu utilizei no post Controlando motor de passo bipolar com o módulo Easydriver). Como o motor é de 12 volts, utilizei uma fonte externa para alimentação. Repare que o pino GND do Arduino deve ser ligado ao GND da fonte externa :


Circuito Arduino Uno - Ponte H L298N


Com esse motor eu vou usar a sequência mostrada na tabela abaixo, que se refere ao motor que eu tenho. A bobina 1 está ligada aos fios amarelo e cinza, e a bobina 2 aos fios marrom e verde, e provavelmente são diferentes das cores dos fios do motor que você tiver aí. De qualquer forma, basta descobrir quais são os pares das bobinas.


Motor de passo - Sequencia de ativação 4 passos


Com base na tabela, vou acionando os pinos 8, 9, 10 e 11 do Arduino com pequenos intervalos, movimentando o motor. Como estamos acionando diretamente os pinos, não vamos utilizar bibliotecas nesse programa.

 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
47
48
49
50
// Programa : Ponte H L298N e motor de passo
// Autor : Arduino e Cia

// Conexoes modulo - Arduino
int IN1 = 8;
int IN2 = 9;
int IN3 = 10;
int IN4 = 11;

void setup()
{
  // Define os pinos como saida
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT);
}

int tempo = 10;

void loop()
{
  // Passo 1
  digitalWrite(IN1, 1);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 1);
  delay(tempo);  

  // Passo 2
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 1);
  digitalWrite(IN3, 0);
  digitalWrite(IN4, 1);
  delay(tempo);

  // Passo 3
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 1);
  digitalWrite(IN3, 1);
  digitalWrite(IN4, 0);
  delay(tempo);

  // Passo 4
  digitalWrite(IN1, 1);
  digitalWrite(IN2, 0);
  digitalWrite(IN3, 1);
  digitalWrite(IN4, 0);
  delay(tempo);
}

Adapte o programa ao seu projeto, ajustando a sequência de ativação, alterando o sentido de rotação e modificando o programa para que o motor se movimente em ângulos pré-determinados.

45 comentários:

  1. Oi amigo, obrigado pela postagem; Comprei uma placa dessa recentemente, portanto, gostaria de saber, por favor, como montar um circuito com botões de tal forma que, se for apertado um botão, o motor gira para um lado e, no outro botão, faça o contrário; se for possível, responda no meu email que é: meuviolino@hotmail.com
    Obrigado

    ResponderExcluir
  2. https://www.youtube.com/watch?v=xDaVolo0sXU

    PODERIAMOS AUTOMATIZAR ESSE PAINEL ROTATIVO?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Não vejo problemas em controlar um painel desses com Arduino, utilizando o controlador de motor adequado.

      Abraço !

      Excluir
  3. Parabens pelo post amigo , mais uma duvida porque o lado de da BOBINA 2 nunca e ligada

    ResponderExcluir
    Respostas
    1. Boa noite Wagner,

      Obrigado. A bobina 2 é acionada, estou usando a sequencia mostrada na tabela.

      Abraço !

      Excluir
  4. como mudar sentido da rotação do motor de passo pela progamação?

    ResponderExcluir
    Respostas
    1. Boa tarde Inacio,

      Tente inverter a sequência de energização das bobinas.

      Abraço !

      Abraço !

      Excluir
  5. Boa tarde! Eu estou tentando controlar o giro do motor através do módulo BT. Vc poeria me ajudar?
    email isac_kcps@hotmail.com

    ResponderExcluir
  6. Boa tarde! Eu gostaria de controlar o motor através de um módulo bluetooth. Vc tem algum exemplo aí? email isac_kcps@hotmail.com

    Grato.

    ResponderExcluir
  7. Boa tarde. Gostaria de controlar via bluetooth, vc teria um exemplo de progração.

    ResponderExcluir
    Respostas
    1. Boa tarde Isaque,

      Eu tenho alguns artigos sobre controle de portas usando bluetooth, um deles é com servo motor, mas você pode adaptar facilmente para o motor de passo :

      http://www.arduinoecia.com.br/2014/01/controlando-um-servo-motor-utilizando.html

      Abraço !

      Excluir
  8. Eu mudei este código. Inseri um trimpot de 100k para ajustar a velocidade dos pulsos via entrada analógica. Utilisei um motor de passo bipolar chinês modelo:23hs8414-03 da DR. Este motor é bem parrudo, mas percebi que na máquina chinesa o seu drive era um TB6560AHQ da toshiba. Porém o dissipador esquenta muito não se isso é normal. Alguém pode me ajudar? meu e-mail é saulotecn@yahoo.com.br

    ResponderExcluir
  9. Boa noite preciso de um sistema para controlar temperatura de no minimo 100° e no máximo 150° com um algum motorzinho para abrir e fechar o fluxo de ar (que hoje é controlado por uma pequena alavanca, para cima fica toda aberta e aumenta o fluxo de ar e consequentemente aquece, para baixo fecha e diminui a temperatura e são 3 locais para medir a temperatura com alavancas.

    ResponderExcluir
  10. É possível alimentar com 6V o motor shield e puxar a saída 5V para alimentar o arduino, um micro servo 9g e um módulo ultrasom?

    ResponderExcluir
    Respostas
    1. Boa tarde,

      Não testei nessa configuração, mas acredito que é possível sim, apenas se certifique de que a fonte tem potência suficiente para suportar tudo isso.

      Abraço!

      Excluir
  11. Boa tarde, saber me dizer se é possível usar a ponte H em um motor com 5 fios?

    ResponderExcluir
    Respostas
    1. Bom dia,

      Eu ainda não testei esse driver com um motor de 5 fios, mas parece que funciona. Dê uma olhada neste link, por favor: https://alselectro.wordpress.com/2014/04/25/stepper-motor-control-with-l298-arduino/

      Abraço!

      Excluir
  12. oi, gostaria de saber do que preciso para mandar para esses drivers o g-code corretamente para criar uma cnc. Pois vejo muitos tutoriais que utilizam Easydriver mas gosto de fazer tudo em casa e fazer o mais barato possível só q no Easydriver ele manda para o arduino 3 fios(dir,step e o enable) e com o L298 manda 4 como faria para configurar isso no arduino e receber o g-code e interpretar para os motores?

    ResponderExcluir
  13. Bom dia amigo. Segui o seu projeto e utilizo um motor de passo EM-101 de impressora Epson (LX810) o que percebi que olhando o seu esquema não foi utilizado os fios 2 e 5 do motor. É isso mesmo ou o seu motor é de 4 fios. No caso desse motor com 6 fios consigo colocá-lo em movimento com a controladora L298N? tentei fazer suprimindo os 2 fios e o motor até tenta girar, mas em determinado ponto pára. Será que é por falta de alimentação dos fios 2 e 5?
    Gostaria muito de usar esse motor com alimentação externa de 12V. Aguardo seu contato. Obrigado,
    Julio

    ResponderExcluir
    Respostas
    1. Boa noite Julio,

      Exato. É de 4 fios. Vou ver se arrumo algum esquema para motor de 6 fios.

      Abraço!

      Excluir
  14. Estou com uma duvida...

    No pino de (6-35V), se eu colocar um motor que tem essas especificações ..
    – Tensão Nominal: 12,00 V;
    – Tensão Operacional: 6V ~ 18V;
    Eu posso colocar uma fonte externa de 14,8V ?

    Obrigado

    ResponderExcluir
    Respostas
    1. Oi Matheus,

      Não recomendo a tensão da fonte é maior do que a suportada pelo motor.

      Abraço!

      Excluir
    2. na verdade ele trabalha com os 14,8 pq a tensao de trabalho vai ate 18v, qt maior a tensao maior o torque, porem, a velocidade tem q ser diminuida. torque alto mais velocidade = a motor queimado!!!

      Excluir
  15. Bom dia,

    Eu tenho um motor de passo que sua tensão é 2,6V/Phase e sua corrente é 3,1A/Phase a ponte H L298N supotaria rodar esse motor?

    Obrigado.

    ResponderExcluir
  16. Bom dia,

    Gostaria de saber se a ponte H L298N conseguria suporta um motor com com a tensão de 2,6V por Fase e uma corrente de 3,1A por fase?

    Obrigado.

    ResponderExcluir
    Respostas
    1. Bom dia André,

      A corrente máxima suportada é de 2A, segundo o fabricante.

      Abraço!

      Excluir
  17. meu motor de passo e 4 fios complementando minha pergunta.

    ResponderExcluir
  18. como faria para ligar três motores no arduino com este driver? e possível?

    ResponderExcluir
    Respostas
    1. Bom dia Daniel,

      Sinceramente nunca tentei, mas eu acho que você consegue ligar no máximo 2 motores. Tente o Arduino Motor Shield, que aceita até 4 motores DC:

      http://www.arduinoecia.com.br/2014/07/arduino-motor-shield-l293d.html

      Abraço!

      Excluir
  19. Assim como eu fui ajudado, também quero ajudar. Conheço uma programação muito simples p/ motor de passo utilizando a ponte H L298N:

    #include
    \\ declara quantidade de passos por volta e onde os pinos do motor estão ligados
    Stepper motor(200, 8 , 9 , 10 , 11 );

    void setup()
    {
    motor.setSpeed(70); \\ velocidade do motor
    }

    void loop ()
    {
    motor.step(600); \\ o motor gira horário 3 voltas
    delay(100);
    motor.step(-600); \\ o motor gira anti horário 3 voltas
    delay(1000);
    }

    ResponderExcluir
    Respostas
    1. Acho que o include do teu código falta o Stepper.h

      Excluir
  20. Boa dia, gostei do projeto, tambem tenho um motor de passo de uma impressora modelo C2164-60045, unipolar e gosta de saber se este meu mortor se encaixa nesse projeto.Obrigado pela atenção.

    ResponderExcluir
    Respostas
    1. Boa noite Vinícius, sim! Este programa roda qualquer motor de passo, talvez você precisará adequar o número de passos por volta porque o número de passos por volta está atrelado a precisão do motor mas, serve sim p/ seu motor.

      Excluir
  21. Amigo essa placa serve pra mim amplificar a voltagem de um servo normal,pra mim ligar um motor de vidro elétrico 12V ?

    ResponderExcluir
    Respostas
    1. Oi Italo,

      Amplificar creio que não. O que você consegue é controlar o motor.

      Abraço!

      Excluir
  22. bom dia amigo teria como voce nos auxiliar para ligação de um motor de passo nema 23 20kgf 8 fios em placa L298N com placa arduino unoR3 para montagem de um tcc em escola tecnica

    ResponderExcluir
  23. Ola, seria possível utiliza meio-passo ou micro-passo com o L298N ?

    ResponderExcluir
    Respostas
    1. Oi Rafael,

      Não achei nenhuma documentação sobre isso. creio que não seja possível.

      Abraço!

      Excluir
  24. Olá, comprei uma placa dessa recentemente e gostaria de saber, por favor, como montar um circuito com botões de tal forma que, se for apertado um botão, o motor gira para um lado e, no outro botão, faça o contrário. Se for possível, responda no meu email que é: ufop.felix@gmail.com
    Montei um circuito utilizando o Fritzing, mas nãop sei se está correto. Obrigado

    ResponderExcluir
  25. Olá, sabe se é possível substituir a ponte por uma ramps 1.4; é q a da minha impressora 3d queimou só a parte que esquenta a mesa, o resto ta tudo ótimo. Queria só reaproveitar a placa.. :\
    Obrigado!

    ResponderExcluir
  26. Olá. Tenho varios motores desses. Tenho o arduino e duas placas controladoras. Mas nao sei programar. Queria saber se vcs tem um código desses que utiliza um potenciometro pra regular a velocidade. Obrigado. Abraços

    ResponderExcluir
  27. Olá gostaria de saber se vcs tem um codigo pra um esquema parecido com esse o que muda é que precizo de um potenciometro pra regular a velocidade do motor de passo. Tenho o arduino a placa controladora e varios motores de passo. É possivel fazer isso? Obrigado abraços

    ResponderExcluir
    Respostas
    1. Alisson, tem um template pronto no arduino para controlar a velocidade do motor de passo com um potenciometo

      Excluir
  28. tenhho uma maquina que trabalha com um l298n e um l297 ,, ela esta perdendo medidas e esquentando o motor de passo , depois de algum tem´po de trabalho , já troquei os capacitores da maquina e os controladores de 5 e 15 volts , gostaria de saber seo l298n ou l297 pode estar interferindo diretamente na voltagem do meu motor de passo e fazendo ele sobre aquecer ? segue meu email caso alguem tenha a ideia willjonecanibal@hotmail.com

    ResponderExcluir