Motor de Passo Arduino Bipolar – Controlando Motores via Driver A4988

O Motor de Passo Arduino é um excelente produto para o controle de posição, possuindo ajustes finos e precisos através de seu exclusivo sistema de bobinas e sem escovas...

O Motor de Passo Arduino é um excelente produto para o controle de posição, possuindo ajustes finos e precisos através de seu exclusivo sistema de bobinas e sem escovas que divide uma rotação completa em várias etapas iguais.

Motor de Passo Arduino

Motor de Passo Arduino

Por seus ajustes precisos de posição, estes motores são amplamente utilizados em impressoras de mesa, impressoras 3D, dispositivos de fresa CNC e qualquer outro produto que necessite de ajustes finos de posição.

Um dos modelos mais utilizados de motor de passo para quem está iniciando e deseja aprender mais sobre a programação do mesmo é o Motor de Passo 28BYJ-48, que normalmente é comercializado em conjunto com o seu módulo ULN2003 e que juntos proporcionam a fácil instalação e utilização.

Mass hoje, nosso objetivo é nos aprofundar um pouco mais neste universo de Motores de Passo Arduino e trabalhar com modelos mais robustos e mais potentes, é o caso do Motor de Passo Nema, por exemplo.

 

Motor de Passo Arduino

Os Motores de Passo Arduino são motores de corrente contínua que giram em partes precisas que chamamos de “passos”, o que os tornam extremamente úteis em equipamentos como Impressoras 3D e Máquinas CNC.

Motor de passo aplicado em Impressora 3D

Motor de passo aplicado em Impressora 3D

Ao contrário dos Motores DC, normalmente visualizados em diversos projetos, que basta a simples alimentação para seu funcionamento, os motores de passo são controlados via pulso e necessitam de um Drive Controlador para sua aplicação.

 

Motor de Passo e Servo Motor são a mesma coisa?

Por mais que haja certas semelhanças entre os motores, a única coisa que os mesmos possuem em comum é a necessidade de controle digital, no mais, ambos são extremamente diferentes.

Motor de Passo x Servo Motor

Motor de Passo x Servo Motor

O Servo motor não necessita de drive para funcionar e pode ser ligado diretamente em uma porta digital, possui alimentação de 5V e pode posicionar-se em ângulos precisos, identificando sua posição de acordo com o ângulo.

O Motor de Passo, por sua vez, como já dito anteriormente, necessita de Drive para controle e sua alimentação geralmente gira em torno de 12V e por mais que possua movimentos precisos, não consegue identificar sua própria posição, sendo necessários em projetos como Impressora 3D, estar associado a chaves fim de curso para identificar seu ponto 0.

 

Os motores de passo utilizam uma espécie de engrenagem dentada e eletroímãs para girar o eixo do motor um “passo” de cada vez, uma vez que cada pulso enviado para a bobina atrai os dentes mais próximos e aciona o motor de passo.

Motor de Passo Arduino – Bobinas e Rotor

Motor de Passo Arduino – Bobinas e Rotor

No centro do motor de passo podemos observar um objeto semelhante a uma engrenagem que está diretamente associado aos dentes de posição da bobina, esta peça chamamos de rotor, elemento magnetizado que está rodeado por diversas bobinas que atuam como eletroímãs.

Ao controlarmos as bobinas através dos Drives de Controle, podemos mover o nosso motor em etapas discretas e assim gerarmos os devidos movimentos, que chegam em ângulos de até 1.8°.

Bobina Superior Magnetizada

Bobina Superior Magnetizada

Na figura acima, podemos observar a ilustração de um motor de passo onde a bobina do topo está energizada e o eixo magnético é atraído e fixado pela mesma, desta maneira, a magnetização dos polos impede o movimento do motor e estabiliza sua posição.

Por sua vez, se removermos a energia da bobina superior e aplica-la à bobina ao lado, o eixo será atraído por esta outra bobina, assim como podemos ver na figura abaixo:

Bobina Lateral Direita Magnetizada

Bobina Lateral Direita Magnetizada

O movimento que o rotor faz movimentando-se de uma bobina para outra é chamada de passo e por mais que em nosso exemplo, o passo dado seja de 90º, lembramos que este exemplo é apenas uma ilustração do funcionamento das bobinas.

Nos exemplos onde acionamos cada bobina isoladamente vimos que o Rotor sofre um completo, mas o que acontece quando acionamos duas bobinas ao mesmo tempo? Esta questão nos traz um novo conceito do motor de passo, o meio passo, veja:

Duas Bobinas Magnetizadas - Microstep

Duas Bobinas Magnetizadas – Microstep

O maio passo é literalmente um passo que fica no meio do caminho, entre as duas bobinas, isto possibilita o movimento mais suave e preciso em nossos projetos e como vimos que um passo pode medir aproximadamente 1.8º, meio passo seria equivalente proporcionalmente a 0.9º.

É a maneira como pulsamos as bobinas do Motor de Passo Arduino que definimos o comportamento que o mesmo irá tomar, por exemplo, a sequência de pulsos determina a direção do motor, a frequência determina a velocidade e o número de pulsos determina quanto o motor irá girar.

Exemplo de funcionamento das bobinas

Exemplo de funcionamento das bobinas

Atualmente, existem motores de passo de 4, 5, 6 e 8 fios e isto é um dos fatores que continuamente causam pânico a quem desejar iniciar os trabalhas com este tipo de motor que possui tantas diversidades.

Os motores de passo de 8 fios são pouco encontrados no mercado e normalmente vemos para venda os modelos de 4 e 6 fios, normalmente diferenciados através da nomenclatura Bipolar e Unipolar.

 

Motor de Passo Bipolar – 4 Fios

Os Motores de Passo Bipolar possuem uma ligação simplificada constituída de bobinas sem derivação central, utilizando todo o enrolamento da bobina para aumentar a eficiência, é o modelo de motor de passo que já vimos anteriormente em nossos exemplos.

Motor de Passo Bipolar de 4 Fios

Motor de Passo Bipolar de 4 Fios

Da maneira exposta acima, é difícil compreendermos por qual motivo o motor seria de 4 fios, uma vez que os conectores da bobina geram um total de 8 conectores, mas isto acontece devido à ligação especial destas bobinas, da forma que podemos ver abaixo.

Esquema de Ligação das Bobinas do Motor Bipolar

Esquema de Ligação das Bobinas do Motor Bipolar

Desta forma, requerem também de um controlador mais complexo para operar, uma vez que as bobinas devem se energizar de forma que a corrente flua na direção oposta a cada dois passos, invertendo a polaridade.

 

Motor de Passo Unipolar – 5, 6 e 8 Fios

Os Motores de Passo Unipolares possuem uma derivação entre bobinas que trazem ao seu corpo um total de três conexões, não apenas duas como vimos no modelo bipolar, para entender melhor, observe a figura abaixo:

Motor de Passo Unipolar de 6 Fios

Motor de Passo Unipolar de 6 Fios

Assim como no exposto anterior do esquema de ligação dos motores bipolares, os terminais do motor unipolar também possuem em esquema específico de ligação, o que irá definir se este terá como saída 5, 6 ou 8 fios.

No motor Unipolar, apenas metade de cada bobina é utilizada por vez, uma vez que na maioria das configurações uma tensão positiva é aplicada ao conector central e deixada lá e uma tensão negativa é aplicada em um dos lados da bobina para atrair o eixo do rotor.

O sistema de funcionamento é semelhante ao motor bipolar, para gerarmos movimento precisamos intercalar a alimentação entre as bobinas e para fazermos um meio passo, basta alimentar duas bobinas, porém para inverter a direção de rotação não é necessário inverter a polaridade, basta inverter o lado da bobina e consequentemente inverterá os polos magnéticos, veja:

Sentidos de Rotação do Motor Unipolar

Sentidos de Rotação do Motor Unipolar

Como podemos ver, no sentido horário as bobinas da direita são acionadas e atraem um dos polos magnéticos do nosso imã fictício, enquanto que no sentido anti-horário, a bobina da esquerda é acionada e o outro polo do imã é direcionado pela bobina.

Os motores de passo Unipolares são relativamente mais fáceis de controlar, pois não há necessidade de inverter a polaridade da corrente para mudar a direção, basta alterar o sistema de acionamento das bobinas.

No entanto, como o motor usa apenas metade dos enrolamentos da bobina, eles não são tão eficientes em alguns casos, uma vez que metade da fiação é essencialmente desperdiçada.

 

Utilizando o Motor de Passo com Arduino

Diante dos expostos acima, podemos ver que o sistema de funcionamento não é nada simplificado e os projetos que envolvem este tipo de motor também devem ser bastante pensados, principalmente pelas diferenças que existem entre cada modelo.

Dentro os principais detalhes que devem ser observados aos utilizarmos o motor de passo temos a quantia de fios / conexões necessárias para sua utilização. Normalmente o Motor de Passo é encaminhado com os fios em seus respectivos locais de uso, porém também é possível encontrarmos modelos que não acompanham os fios, ou que não possui a descrição dos fios.

Nos casos em que não sabemos quais são os fios que formam os pares das bobinas e não sabemos quais os terminais dos motores possuem bobinas associadas, precisamos fazer o teste de resistência dos mesmos para descobrirmos. Para realizarmos este procedimento, a primeira coisa que precisamos é identificar os pinos do nosso Motor:

Pinos para ligação do Motor

Pinos para ligação do Motor

Neste passo, na falta de um datasheet, vamos procurar os pinos que possuem valores de resistência, ou seja, que constituem uma bobina, então vamos utilizar uma das pontas de prova do multímetro no pino 1 e após deslocar a outra ponta nos demais pinos, nos motores de passo bipolar, por exemplo, o pino 1 terá correspondência com o pino 3 e o pino 2 será NC (Não Conectado), assim como o pino 4 estará conectado ao pino 6 e o pino 5 será NC também.

O procedimento para descobrirmos as bobinas correspondentes quando não tivermos acesso aos pinos será o mesmo, porém os faremos diretamente através dos fios, sem problema algum. Nos motores de 6 fios, normalmente os pinos NC estarão associados aos pinos NC e a resistência em relação ao pino 1 será a metade em relação ao pino 3.

Um pouco mais sobre este procedimento de leitura e algumas informações adicionais sobre os motores de passo, você pode conferir no vídeo prático da teoria apresentada acima e apresentado pelo engenheiro do Canal WR Kits, veja:

 

Driver Motor de Passo A4988

Existe uma quantia extremamente grande de módulos compatíveis com Motor de Passo Arduino Bipolar de 4 fios, porém para a realização dos testes neste artigo, iremos utilizar o Driver Motor de Passo A4988, um driver amplamente utilizados em diversos Shields e módulos para impressora 3D.

O Drive Motor de Passo A4988 possui a capacidade de controlar Motores de Passo de até 35V e aproximadamente 2A, o que lhe torna extremamente útil nas aplicações com motores bipolar de corrente de até 2A por canal, como os do tipo NEMA 17. O Driver A4988 possui um total de 16 pinos, veja o pinout deste controlador:

Pinout Driver Motor de Passo A4988

Pinout Driver Motor de Passo A4988

Para entendermos um pouco melhor o seu funcionamento, vamos explorar um pouco mais os seus pinos. Assim como a grande maioria dos drivers, o modelo A4988 possui duas conexões para fonte de alimentação, uma para a fonte externa que irá alimentar o Motor de Passo e que é representada pelos pinos VMOT e GND e uma para a alimentação do módulo e que será ligada diretamente do Arduino, representada pelos pinos VDD e GND.

Pinos para Alimentação do Driver A4988

Pinos para Alimentação do Driver A4988

Através do Chip A4988, o Driver possui um conversor integrado de fácil operação que reduz o número de pinos de controle de dados para apenas 2, um para o controle das etapas e outro para o controle da direção de rotação, sendo eles:

– STEP: Controla os passos do motor. Cada pulso HIGH enviado para este pino orienta o motor quanto ao seu número de resoluções. Quanto mais rápidos os pulsos, mais rápido o motor irá girar.

– DIR: Controla a direção de giro do motor. Ao estabelecermos o pino em HIGH, aciona-se o motor no sentido horário e ao estabelecermos o pino em LOW, acionamos o motor no sentido anti-horário.

Através dos pinos MS1, MS2 e MS3 é possível configurar através do módulo, cinco resoluções diferentes, o passo completo, o meio passo, o quarto passo, o oitavo passo e o décimo sexto passo, fatores que irão depender do motor e da configuração do Driver.

Pinos para configuração e controle de dados do Driver A4988

Pinos para configuração e controle de dados do Driver A4988

A configuração de resolução do motor de passo através do driver é feita através do estado de cada um dos respectivos pinos citados anteriormente, ao fixarmos cada um deles ou em HIGH, ou em LOW, definimos a resolução.

Tabela de Resolução do Driver A4988

Tabela de Resolução do Driver A4988

Como podemos ver, no estado original, o produto é configurado com todos os pinos em LOW, ou seja, se não alterarmos o estado do pino, o motor de passo irá funcionar no modo Passo Completo.

Por se tratar de um driver para controle de motor de passo bipolar, o A4988 possui 4 terminais de saída para controle das bobinas, os pinos 1A, 1B, 2A e 2B, que suportam qualquer motor de passo com tensões entre 8 e 35V e que fornece até 2A cada.

Conexão dos Pares de Bobina no A4988

Conexão dos Pares de Bobina no A4988

Lembrando que o método para verificação dos pares de bobina já foram demonstrados anteriormente, então caso necessário, lembre-se de realizar a medição dos pinos para identificar os pares das respectivas bobinas.

Por último, mas não menos importante, vamos falar de um assunto muito importante na utilização do Driver Motor de Passo A4988 que é a utilização do dissipador de calor. Devido à potência elevada de funcionamento, o circuito integrado A4988 pode sofrer aquecimentos além dos permitidos e causar danos irreversíveis ao módulo.

Mesmo que seja especificado uma corrente de 2A por bobina, o A4988 pode fornecer aproximadamente 1A apenas por bobina sem superaquecer, ou seja, se necessária a utilização de correntes superiores a 1A, é imprescindível a instalação de um dissipador de calor, como vemos abaixo:

Driver Motor de Passo A4988 com Dissipador de Calor

Driver Motor de Passo A4988 com Dissipador de Calor

Como o Driver Motor de Passo A4988 é encaminhado com um dissipador já incluso, é recomendado que independentemente da corrente, seja realizada a instalação do Dissipador de Calor junto ao módulo para evitar qualquer dano.

 

Esquema de Ligação

O esquema de ligação do Projeto de controle do Motor de Passo Arduino com o Driver A4988 é extremamente simples como podemos ver na imagem abaixo, Na imagem não associamos o componente a uma Protoboard, porém lembramos que o mesmo pode estar junto de uma Protoboard para utilização com jumper, assim como é possível realizar a solda diretamente em seus terminais.

Iniciamos a ligação conectando os pinos VDD e GND do Driver aos respectivos pinos 5V e GND do Arduino, já os pinos de controle do motor DIR e STEP vão conectados os pinos 2 e 3 do Arduino.

O motor de passo será conectado aos pinos 1A, 1B, 2A e 2B, compatível com a maior parte dos motores bipolares de 4 pinos, o único elemento que pode ser incompatível seria possíveis correntes superiores ao limite do mesmo.

Esquema de Ligação do Motor de Passa Bipolar com A4988

Esquema de Ligação do Motor de Passa Bipolar com A4988

Além disto, outros fatores que vale se destacar é a conexão dos pinos RST com o pino SLP para manter o driver habilitado e deixe todos os pinos de configuração microstep desconectados. Com todos estes detalhes em ordem, basta apenas conectar a fonte externa de alimentação para o motor de acordo com a imagem do esquema acima.

 

Código de Funcionamento

O código de funcionamento assim como o esquema de ligação acima é desenvolvido com a finalidade de controlar apenas um motor de passo bipolar e para facilitar a programação e a compreensão do código, utilizamos a biblioteca AccelStepper.

Biblioteca AccelStepper: Download AQUI.

Através desta biblioteca conseguiremos executar de forma simplificada, comandos como aceleração e desaceleração, assim como múltiplos passos simultâneos independentes em cada stepper.

Veja abaixo, um código exemplo que acelera o motor de passo em uma direção e depois desacelera até parar, mudando a direção de rotação assim que completar uma volta completa, entrando em um loop ao final disto.

Na primeira parte do código, incluímos a biblioteca (que já deve estar na pasta libraries do Arduino), associamos os pinos DIR e STEP do A4988 aos respectivos pinos 2 e 3 do Arduino, definimos InterfaceMotor como 1 e criamos uma instância da biblioteca chamada Stepper.

Na função void setup (), primeiro definimos a velocidade máxima para 1000 e em seguida definimos o fator de aceleração em 50 que irá nesta proporção, acionar a aceleração e desaceleração do motor de passo Arduino.

Para finalizar este passo da nossa programação, definimos a velocidade regular do motor de passo em 200 e o número de passos que será movido também em 200, uma vez que o NEMA 17, aqui utilizado se move 200 passos por evolução.

Por fim, a função void loop (), utiliza-se de uma função if que condiciona os seus comandos internos aos valores presentes na função moveTo, a qual declaramos anteriormente. Assim que distanceToGo chegar em 0, o código irá alterar o sentido de giro para sua direção oposta, alterando os valores de moveTo para valores negativos.

Para finalizar e garantir que estes comandos ocorram todos, antes de reiniciar o loop, incluímos uma função run(), que impede reiniciar o código antes do tempo.

Como podemos ver, o código é simples e totalmente fácil de se compreender, é possível que algumas mudanças tenham que ser feitar ao escolhermos outros modelos de motor de passo, mas com os passos acima, todas estas alterações ficaram bastante claras.

 

Conclusão

Os projetos com motores de passo normalmente estão associados a grandes aplicações como impressoras 3D e diversos modelos de CNC, o que nos faz crer que o seu controle e funcionamento é muito complexo, porém hoje vimos que não é bem assim.

O Motor de Passo Arduino é um projeto que causa dúvidas devido aos seus diversos modelos de motores e drivers disponíveis atualmente, mas fundamentalmente, temos uma divisão bem clara entre os tipos de motores: Bipolares e Unipolares.

Um modelo de motor de passo unipolar amplamente utilizado e que é indicado para quem está iniciando neste ramo de controle de motores é o Motor de Passo 28BYJ-48, verifique um pouco mais deste projeto através do seguinte link:

Motor de Passo 28BYJ-48 com Driver ULN2003

Este artigo nos traz tudo o que precisamos saber para desenvolvermos um projeto com Motor de Passo Arduino através do Driver controlador A4988, um dos modelos mais utilizados em Shields para impressoras 3D e Módulos Ramps.

Deixe seu comentário, me de sugestões e colabore com meus projetos, espero que este artigo tenha lhe sido útil e lhes espero nas próximas publicações.

Categorias
Arduino

Mecânico de Manutenção com Experiência em Sistemas Embarcados, Automação e Desenvolvimento de Projetos; Graduado nos Cursos de Matemática - URI e Física - UFFS.
3 Número de Comentários
  • Raimundo
    12 setembro 2021 at 21:18
    Deixe seu Comentário

    Eu estive lendo o assunto e vi o vídeo quero dizer que gostei das explicações se for possível colocar mais assuntos de como ligar o motor de passo

    • Matheus Gebert Straub
      15 setembro 2021 at 14:30
      Deixe seu Comentário

      Olá Raimundo! Fico feliz que o contudo tenha lhe sido útil, assim que possível providenciarei algo novo neste assunto.

  • Nelson Fróes
    26 outubro 2024 at 02:36
    Deixe seu Comentário

    Gostei do vídeo e programa do motor de passo…um dos poucos que copiei e funcionou na primeira vez.
    Meus parabéns.
    Obrigado.

  • Deixe seu Comentário

    *

    *

    Sobre nós

    Hoje a Usinainfo é um dos maiores ecommerces de Ferramentas, Peças para Eletrônica, Componentes Eletrônicos, Sensores e Arduino do Brasil, contando com uma grande diversidade de produtos na linha de eletrônica.

    Sugestões

    Artigos Relacionados