Framework Arduino II: Aula 19 Motores de Passo

Imagem meramente ilustrativa

Introdução

    Um elemento importante em projetos que envolvem motores e exigem precisão são os motores de passo. Diferente dos motores comuns que operam de forma contínua, um motor de passo gira em incrementos regulares chamados de passos.

    Por essa razão são utilizados em projetos que exigem precisão e sincronismo no deslocamento angular, no posicionamento ou na velocidade, como em impressoras. Hoje veremos como utiliza-los com o Arduino.

Recapitulando

    Antes de avançarmos precisamos lembrar o que vimos na primeira aula de motores: que eles geralmente são dispositivos formados por duas partes: um eixo giratório chamado de rotor e uma partes externa estática chamada de estator. No rotor geralmente temos uma bobina, isto é, um fio condutor enrolado que ao ser energizado forma um campo magnético.

    Os polos desse campo magnético se atraem e se repelem alternadamente em relação a outro campo magnético exterior formados por imãs ou bobinas no estator. Essa atração e repulsa mantem o movimento giratório no rotor enquanto o mesmo é energizado.


Rotor na posição 1
O campo magnético do rotor cria polos


Rotor na posição 2
que sofrem atração e repulsão c/ o estator


Rotor na posição 3
com a inversão da corrente os polos invertem


Rotor na posição 1
dando continuidade ao giro

Ilustrando o funcionamento de um motor Fonte: Wikipedia

    Agora que você lembrou do básico podemos avançar.

Os motores de passo

    No motor de passo a rotação acontece por pulsos digitais e diferente de outros motores ele necessitará de um circuito eletrônico controlador para gerenciar a operação. Geralmente a velocidade é controlada pela frequência desses pulsos.

Elementos do controlador
Elementos do controlador

    Existem basicamente três tipos de motor de passo:

  • De Relutância Variável
  • De Imã Permanente
  • Hibridos

    Nos de Relutância Variável o rotor não possui magnetização, mas é composto por dentes de material que é atraído pelo campo magnético das bobinas do estator quando elas são energizadas. Quanto mais polos o estator possui, maior é o número de passos necessários para completar uma volta. Sua construção permite que o rotor gire livremente quando desligado 

    Os de imã permanente possuem imãs no rotor ao invés de dentes e isso impede que o motor gire livremente quando está desligado. Em compensação possuem um torque maior quando comparados com os de Relutância Variável. 

    Geralmente possuem uma carcaça retangular e por serem mais baratos são os mais encontrados em periféricos de computador.

    Os híbridos utilizam dentes e imãs no rotor e apresentam os maiores torques e precisão entre os três tipos, sendo mais sofisticados e também os mais caros.

    Outra divisão utilizada no estudo de motores de passo bifásicos diz respeito a forma da montagem da bobina. Assim temos os motores UNIPOLARES que trabalham com uma polaridade de tensão e corrente e os BIPOLARES que trabalham com duas polaridades, havendo portanto a inversão do fluxo da corrente.

Os Drives do motor de passo

    Como mencionamos anteriormente, precisamos de um circuito controlador para acionar o motor de passo e no caso do Arduino o controlador ainda se faz necessário para fornecer as correntes exigidas pelo motor.

    Chamamos esses circuitos de drivers e muitas vezes são vendidos juntamente na aquisição dos motores para garantir a compatibilidade quanto a polaridade do motor e ao número de cabos para sua conexão.

Driver ULN2003 Arduino e Motor de Passo 28BYJ-48
Driver ULN2003 Arduino e Motor de Passo 28BYJ-48

    Entre os drivers mais conhecidos temos os seguintes módulos:

  • Para motores unipolares: ULN2003 e ULN2003 P6
  • Para motores bipolares: A4988 e DRV8825 

    Também temos módulos como o TB6600 que atende ambas as polaridades. Para a nossa simulação usaremos o Wokwi que possui o A4988 no catálogo de componentes.

Orientação sobre a pinagem do Driver A4988
Orientação sobre a pinagem do Driver A4988

    Os Drivers geralmente possuem um trimpot (potenciômetro) para ajustar a máxima corrente suportada para alimentação do motor. Lembrando que muitos motores de passo trabalham com 12 volts por isso a necessidade de uma fonte de alimentação externa.

    Correntes elevadas e ajustes que exigem maior processamento do CI do driver provocam aquecimento, por isso muitos drivers são acompanhados de dissipadores de calor para ser fixado com pasta térmica sobre o chip.

Driver A4988 com dissipador de calor
Driver A4988 com dissipador de calor


Parâmetros do motor passo

    Além das especificações tradicionais de tensão e corrente geralmente abordadas em componentes eletrônicos, para escolha de um motor de passo levamos em consideração também o ângulo do passo que determina quantos passos o motor dará por rotação. Exemplo: 

    Supondo um ângulo de passo de 1,8º para completar 360º o motor daria 200 passos, pois 360 dividido por 1,8 o resultado é 200.

    Os motores de imã permanente geralmente possuem um ângulo de passo entre 7,5 e 15º o que se reflete de 48 a 24 passos por rotação, respectivamente. Os Motores híbridos trabalham com ângulos de 0,9 a 3,6º variando de 400 a 100 passos por rotação.

    Outro parâmetro importante é a resolução, isto é, a precisão de um motor, além é claro do seu torque que comentamos na aula passada.

Montagem

    Para ganhar tempo usarei uma montagem pronta que o estudante poderá salvar uma copia no seu perfil do Wokwi. Nela usaremos o driver A4988 e um motor de passo bipolar com quatro cabos de conexão.

    Como existem algumas diferenças entre o simulador e o mundo real é importante compreender como é a pinagem no Wokwi dos componentes e como se comportam. Os pinos digitais com um valor padrão de Low (0) são puxados para baixo e os pinos com um valor padrão de High (1) são puxados para cima. Os pinos sem valor padrão são flutuantes.

Localização dos Pinos do A4988 no Wokwi
Localização dos Pinos do A4988 no Wokwi

Pinagem do A4988 no Wokwi
Pinagem do A4988 no Wokwi

Pinagem do motor de passo bipolar do Wokwi
Pinagem do motor de passo bipolar do Wokwi

Simulação no Wokwi com motor de passo e driver A4988
Simulação no Wokwi com motor de passo e driver A4988


    Link: https://wokwi.com/projects/415170587310902273

    Repare que o pino VMOT do driver não é utilizado na simulação do Wokwi. A ligação com um VCC externo é apenas para representar a ligação com uma fonte para alimentar o motor. No mundo real esse motor teria provavelmente quatro cabos geralmente dispostos como na pinagem abaixo:

Pinagem de um motor bipolar Nema 23 de quatro fios
Pinagem de um motor bipolar Nema 23 de quatro fios

Sketch

    Nas primeiras três linhas desse Sketch estamos definindo os pinos do Arduino correspondentes aos pinos do driver para controle do sentido(psentido) e para enviar os pulsos para o passo (ppasso). Temos também uma variável que informa o número de passos que o motor dá por rotação, isto é, por volta. Nesse exemplo coloquei 200, mas deve-se ajustar de acordo com o ângulo de passo do motor usado.

    A função setup() apenas inicia o monitor serial e configura os pinos citados como saída. Em seguida eu criei uma função passo() para diminuir as linhas de código. É importante que o aluno compreenda que para um passo é preciso um comando de HIGH e outro de LOW para o pino de passo do driver, com um pequeno intervalo.

    A função loop() executa instruções para o motor dar uma volta completa no sentido horário, depois no sentido anti-horário e repete isso depois para meia volta. O que controla o sentido é a mudança de estado do pino de sentido da rotação de HIGH (horário) para LOW (anti-horário).

    A volta completa ou a meia volta depende do número de passos que o motor der, isto é, depende de quantas vezes a função passo()  é executada. 

  1. #define psentido 4
  2. #define ppasso 5
  3. #define passos_por_rotacao 200

  4. void setup() {
  5.   Serial.begin(9600);
  6.   pinMode(ppasso, OUTPUT);
  7.   pinMode(psentido, OUTPUT);
  8. }
  9. void passo() {
  10.     digitalWrite(ppasso, HIGH);
  11.     delayMicroseconds(1000);
  12.     digitalWrite(ppasso, LOW);
  13.     delayMicroseconds(1000);
  14. }
  15. void loop() {
  16.   Serial.println("dando 1 volta completa no Sentido horário");
  17.   digitalWrite(psentido, HIGH);
  18.   for (int i = 0; i < passos_por_rotacao; i++) {
  19.     passo();
  20.   }
  21.   delay(3000);
  22.   Serial.println("dando 1 volta completa no Sentido anti-horário");
  23.   digitalWrite(psentido, LOW);
  24.   for (int i = 0; i < passos_por_rotacao; i++) {
  25.     passo();
  26.   }
  27.   delay(3000);
  28.   Serial.println("dando 1/2 volta completa no Sentido horário");
  29.   digitalWrite(psentido, HIGH);
  30.   for (int i = 0; i < passos_por_rotacao/2; i++) {
  31.     passo();
  32.   }
  33.   delay(3000);
  34.   Serial.println("dando 1/2 volta completa no Sentido anti-horário");
  35.   digitalWrite(psentido, LOW);
  36.   for (int i = 0; i < passos_por_rotacao/2; i++) {
  37.     passo();
  38.   }
  39.   delay(3000);
  40. }

       Nesse exemplo não estou utilizando alteração na frequência, portanto não estou fazendo alteração da velocidade do motor. Estou mostrando apenas alteração no sentido e no número de passos, mas voltaremos nesse assunto posteriormente para falar um pouco mais sobre motor de passo.

Próxima Aula                                                                                                                        Aula Anterior

Referências


BLOG ELETROGATRE. Tudo Sobre DRIVER A4988 e Motor de Passo. Disponível em <https://blog.eletrogate.com/driver-a4988-motor-de-passo-usando-o-arduino/> Acesso em 21 nov 2024.

BLOG DA ROBÓTICA. Como acionar motor de passo com Driver ULN2003 e Arduino. Disponível em <https://www.blogdarobotica.com/2022/06/30/como-acionar-motor-de-passo-com-driver-uln2003-e-arduino/> Acesso em 21 nov 2024.

MAKER HERO. Controlando um motor de passo com Arduino. Disponível em <https://www.makerhero.com/blog/controlando-um-motor-de-passo-5v-com-arduino/> Acesso em 21 nov 2024.

MÓDULO ELETRÔNICA. Controlando um Motor de Passo com o Arduino. Disponível em <https://blog.moduloeletronica.com.br/controlando-um-motor-de-passo-com-o-arduino/> Acesso em 21 nov 2024.

MOTOR ELÉTRICO. In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia Foundation, 2024. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Motor_el%C3%A9trico&oldid=67998771>. Acesso em: 21 nov. 2024.

ROBO CORE. Controlando motores: Motor de passo. Disponível em <https://www.robocore.net/tutoriais/controlando-motor-de-passo> Acesso em 21 nov 2024.

USINA INFO. Motor de Passo Arduino Bipolar – Controlando Motores via Driver. Disponível em <https://www.usinainfo.com.br/blog/motor-de-passo-arduino-bipolar-controlando-motores-via-driver-a4988/> Acesso em 21 nov 2024.

WOKWI. Referência do wokwi-a4988. Disponível em <https://docs.wokwi.com/pt-BR/parts/wokwi-a4988> Acesso em 21 nov 2024.

WOKWI. Referência do wokwi-stepper-motor. Disponível em <https://docs.wokwi.com/pt-BR/parts/wokwi-stepper-motor> Acesso em 21 nov 2024.