Framework Arduino II: Aula 20 Motores de Passo Parte II

Imagem meramente ilustrativa


Recapitulando

   Na aula passada vimos o básico dos motores de passo, mas uma série de detalhes ficaram de fora porque se fossam abordadas naquele momento, tornariam o texto muito longo. Hoje vamos comentar um pouco mais sobre os passos.

Modo de controle dos passos

    Você deve ter reparado que alguns pinos do driver A4988 mostrado na aula passada não foram utilizados. Eram os pinos ENABLE, MS1, MS2 e MS3. 

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

    O enable ativa ou desativa o drive, sendo que o padrão LOW mantem ativado. Os demais pinos configuram o chamado modo de controle de passo. Para simplificar, esse modo nos diz como as bobinas do motor são ativadas. Podemos ter os seguintes modos de controle de passo:

  • Full Step ou passo completo
  • Half Step ou meio passo
  • Quarter Step ou um quarto de passo
  • 1/8 de passo
  • 1/16 de passo

    De cima para baixo nesta lista temos que o ângulo do passo fica menor. Quanto menor fica o passo, aumentamos a resolução, isto é, a precisão do movimento. Por outro lado, tende a diminuir o torque, mas já encontrei em fóruns pela Web profissionais que contestaram isso. É bom verificar.

    Para o driver A4988 temos as seguintes combinações de pinos para os diferentes modos de controle de passo:

Combinação de entradas para os diferentes modos de passo no A4988
Combinação de entradas para os diferentes modos de passo no A4988

    Os modos assinalados com * não são simulados pelo Wokwi.

Montagem

    Vou utilizar a mesma montagem da aula passada, mas implementarei o uso dos pinos de micropasso para mostrar o full e half step. Também colocamos um botão que ao ser pressionado aumenta o número de voltas dadas.

Simulação no Wokwi usando o controle de passo
Simulação no Wokwi usando o controle de passo


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

xxxx

Sketch

    No início desse Sketch temos a definição dos pinos que serão utilizado para as cinco funções no driver, isto é, a direção, o passo e os três controles de passo. Temos também um pino para o botão e depois a declaração das variáveis envolvidas. 

    Repare que, diferente da aula passada, a passos_por_rotacao agora é uma variável porque seu valor muda de acordo com o controle de passo. Também acrescentei uma variável para o número de voltas que serão dadas.

    Na função setup novamente iniciei o monitor serial e configurei os pinos do driver como saída e o do botão como entrada. 

    A função passos() criada na aula passada foi modificada para que os delays pudessem ser alterados por um parâmetro como o número de voltas, assim podemos usar isso para alterar a velocidade de rotação. 

    Repare que no modo full step a velocidade é mais impactada que no half step. Talvez seja apenas uma particularidade do simulador. O resto do código está bem parecido com o exemplo da outra aula

  1. #define psentido 4
  2. #define ppasso 5
  3. #define pms3 6
  4. #define pms2 7
  5. #define pms1 8
  6. #define botao 9
  7. int passos_por_rotacao;
  8. int voltas=1;

  9. void setup() {
  10.   Serial.begin(9600);
  11.   pinMode(ppasso, OUTPUT);
  12.   pinMode(pms1, OUTPUT);
  13.   pinMode(pms2, OUTPUT);
  14.   pinMode(pms3, OUTPUT);
  15.   pinMode(botao, INPUT);
  16. }
  17. void passo (int frequencia) {
  18.     int tempo;
  19.     if (frequencia==1){
  20.       tempo=1000;
  21.     }
  22.     else if(frequencia==2){
  23.       tempo=500;
  24.     }
  25.     else{
  26.       tempo=333;
  27.     }
  28.     digitalWrite(ppasso, LOW);
  29.     delayMicroseconds(tempo);
  30.     digitalWrite(ppasso, HIGH);
  31.     delayMicroseconds(tempo);
  32. }
  33. void loop() {
  34.   delay(100);
  35.   if (digitalRead(botao)==HIGH){
  36.     if(voltas==3){
  37.       voltas=1;
  38.     }
  39.     else{
  40.       voltas++;
  41.     }
  42.   }
  43.   Serial.print(voltas);
  44.   Serial.println(" volta(s) completa(s) no Sentido horário com full-step");
  45.   passos_por_rotacao=200;
  46.   digitalWrite(psentido, HIGH);
  47.   digitalWrite(pms1, LOW);
  48.   digitalWrite(pms2, LOW);
  49.   digitalWrite(pms3, LOW);
  50.   for (int i = 0; i < passos_por_rotacao*voltas; i++) {
  51.     passo(voltas);
  52.   }
  53.   delay(3000);
  54.   Serial.print(voltas);
  55.   Serial.println(" volta(s) completa(s) no Sentido anti-horário com half-step");
  56.   passos_por_rotacao=400;
  57.   digitalWrite(psentido, LOW);
  58.   digitalWrite(pms1, HIGH);
  59.   digitalWrite(pms2, LOW);
  60.   digitalWrite(pms3, LOW);
  61.   for (int i = 0; i < passos_por_rotacao*voltas; i++) {
  62.     passo(voltas);
  63.   }
  64.   delay(3000);  
  65. }

       Hoje vimos os modos de controle de passo que conferem ao motor mais precisão. Na aula que vem comentarei sobre o uso de bibliotecas com 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.