top of page
Crescer (fundo transparente)_Negativo_pn
Você sabia que a Crescer ensina, fornece e faz soluções de automação e IoT com Arduino e ESP32?

Fale com um especialista

2.png
3.png
1.png

Como utilizar motor de passo com ESP32

Atualizado: 6 de mar.

Os motores de passo são muito úteis em projetos de automação, sendo empregados em máquinas CNC, impressoras 3D, equipamentos médicos, sistemas de posicionamento e outras aplicações que demandam controle preciso do movimento. No entanto, o controle e acionamento dos motores de passo é mais complexo em comparação aos motores de corrente contínua.


Para facilitar a aplicação dos motores de passo, podemos utilizar duas ferramentas. A primeira é o driver TB6600, projetado para controlar e fornecer energia a motores de passo bipolares. A segunda é a biblioteca ESP-FlexyStepper, que possibilita o controle da velocidade, rotação, aceleração e outras características dos motores.


Neste blog, vamos explorar como controlar motores de passo utilizando o driver TB6600 e o ESP32 com a biblioteca ESP-FlexyStepper.



Sumário



1. Como funciona um motor de passo


O motor de passo que utilizaremos neste blog é o motor de passo bipolar NEMA 16. Trata-se de um tipo comum de motor de passo empregado em diversas aplicações. O NEMA 16 é bipolar, indicando que possui dois enrolamentos (bobinas). Em sua maioria, o rotor (parte giratória) desse motor é constituído por ímãs permanentes. Na figura a seguir, apresentamos um exemplo ilustrativo desse motor de passo.



Os motores de passo operam transformando pulsos elétricos em movimento angular. Cada pulso elétrico aplicado às bobinas do motor de passo resulta em um passo angular, o posicionamento das bobinas pode ser visto na figura a seguir. As bobinas estão fixadas no estator do motor de passo (a parte estacionária). Quando uma dessas bobinas é acionada, o rotor se alinha com ela, executando assim um passo. A rotação é controlada pela sequência específica de acionamento das bobinas.



O motor de passo possui 4 fios, dois para cada bobina. Quando utilizamos o motor de passo é muito importante identificar cada uma das suas bobinas, pois caso sejam ligadas de maneira errada o motor de passo não irá funcionar. Para realizar a identificação das bobinas de um motor de passo podemos utilizar um multímetro na escala de continuidade ou resistência.


Ao medir uma bobina do motor de passo, é esperado obter no multímetro uma resistência próxima de zero. Se não se tratar de uma bobina, o valor ideal seria de circuito aberto. Na figura a seguir, temos um exemplo em que estamos medindo dois fios que não pertencem à mesma bobina.



Na figura a seguir, estamos medindo dois fios que compõem uma bobina do motor de passo. Agora podemos afirmar que, para este motor de passo específico, os fios azul e amarelo correspondem a uma bobina, enquanto os fios verde e laranja pertencem à outra.



Também é possível identificar as bobinas sem o uso de um multímetro. Ao girarmos manualmente o eixo do motor de passo, ele gera tensão nos terminais. Com esse conhecimento, se curto-circuitarmos uma bobina, torna-se mais difícil mover o rotor do motor de passo manualmente. Por outro lado, se curto-circuitarmos dois fios que não pertencem a uma bobina, o rotor girará facilmente. Isso está ilustrado na figura a seguir.




2. Como utilizar o driver TB660


O driver TB660 foi concebido para acionar um motor de passo bipolar de 4 fios e incorpora Proteções contra sobretensão, sobrecorrente e curto-circuito. Pode ser ajustado para operar em oito configurações distintas de corrente e oferece a flexibilidade de escolher entre cinco tipos de passo, conforme indicado na figura abaixo:



As definições de passo e corrente podem ser personalizadas utilizando os interruptores localizados na parte superior do controlador, conforme representado na figura a seguir. A disposição dos interruptores é explicada na tabela impressa no próprio controlador, onde os três primeiros interruptores controlam o tipo de passo, enquanto nos restantes é dedicada à configuração da corrente.



Os pinos Vcc e GND são para a alimentação do controlador, com tensão nominal entre 9 e 42V. Não é necessário que esta tensão seja idêntica à dos motores, pelo contrário, é aconselhável utilizar um valor superior ao nominal do motor.


A conexão do motor deve ser feita nos pinos A+, A-, B+, e B-, sendo crucial identificar corretamente cada bobina. Uma bobina deve ser ligada aos pinos A, e a outra aos pinos B.


Os pinos de controle, sinal (signal), são utilizados pelo microcontrolador para controlar o motor. Os pinos negativos, ENA-, DIR- e PUL-, podem ser conectados diretamente ao GND, enquanto os positivos devem ser ligados ao microcontrolador. Alternativamente, os pinos positivos podem ser conectados a 3,3V (no caso do ESP32), e os negativos podem ser ligados nos pinos do ESP32.


ENA é utilizado para habilitar o motor. Quando esse par de contatos está desligado, as bobinas são energizadas, possibilitando seu movimento. Se um nível alto é aplicado (ligando ENA), as bobinas são desativadas.


DIR controla a direção de rotação do motor. Ligá-lo faz o motor girar em uma direção, enquanto desligando-o faz girar no sentido oposto. PUL é utilizado para aplicar pulsos que movimentam o motor. Cada borda de descida aplicada faz o motor dar um passo no sentido definido por DIR. A frequência dos pulsos aplicados neste pino determina a velocidade de rotação do motor, sendo que uma frequência maior resulta em uma velocidade mais elevada.


A imagem abaixo ilustra as conexões do circuito básico para o controle do motor:



3. Como funciona a biblioteca ESP-FlexyStepper


A biblioteca ESP-FlexyStepper foi desenvolvida para possibilitar que um ESP32 controle facilmente um ou mais motores de passo utilizando o driver TB6600, ou similar. Com ela, é possível gerenciar a velocidade, o sentido de rotação e o deslocamento angular dos motores de passo. Além disso, ela permite que o motor realize aceleração e desaceleração durante o percurso até o seu destino, bem como oferece outras funcionalidades.


Para utilizá-la primeiro é necessário realizar a instalação da IDE do Arduino. Para isso primeiro, abra a IDE do Arduino, vá em Ferramentas depois Gerenciar Bibliotecas. Como mostrado na figura a seguir.



Na janela que irá abrir pesquise por ESP-FlexyStepper. Depois clique em instalar , como mostrado na figura a seguir:



Agora, com a biblioteca instalada, podemos começar a estudar como utilizá-la. Como ponto de partida, vamos explorar o exemplo básico fornecido. Para acessá-lo, siga o caminho: Arquivo > Exemplos > ESP-FlexyStepper > Example1_BasicStepper.


Vamos analisar os principais pontos do código para compreender como funcionam suas funções básicas. Primeiramente, é necessário incluir a biblioteca, definir os pinos do ESP32 para cada função e criar um objeto da classe ESP_FlexyStepper para cada motor de passo. Neste caso, o nome do objeto será "stepper", conforme mostrado a seguir.


#include <ESP_FlexyStepper.h>

// IO pin assignments
const int MOTOR_STEP_PIN = 3;
const int MOTOR_DIRECTION_PIN = 4;

// create the stepper motor object
ESP_FlexyStepper stepper;

Dentro do setup vamos dizer para o objeto os pinos que estão sendo utilizados para controlá-lo, através das variáveis declaradas anteriormente.


void setup() 
{
 Serial.begin(115200);
 stepper.connectToPins(MOTOR_STEP_PIN, MOTOR_DIRECTION_PIN);
}

Este exemplo foi desenvolvido para um motor de passo com um ângulo de passo de 1,8 graus, o que equivale a 200 passos por revolução, sendo este o tipo mais comum de motor de passo. O programa faz o motor dar uma volta em cada sentido, aguardando 1 segundo entre cada movimento. Em seguida, aumenta a velocidade e faz o motor dar 10 voltas. Com essa compreensão, agora podemos analisar o código.


Inicialmente, o programa define a velocidade e a aceleração a serem utilizadas no movimento. A velocidade é expressa em passos por segundo, e a aceleração em passos por segundo ao quadrado. Isso é realizado por meio das seguintes funções:


 stepper.setSpeedInStepsPerSecond(100);
 stepper.setAccelerationInStepsPerSecondPerSecond(100);

Em seguida, movemos o motor 200 pulsos no sentido positivo, equivalente a uma volta, e 200 pulsos no sentido negativo. A função utilizada realiza o movimento relativo do motor de passo, ou seja, informamos a ela quantos passos o motor deve realizar a partir da sua posição atual.


stepper.moveRelativeInSteps(200);
delay(1000);
stepper.moveRelativeInSteps(-200);
delay(1000);

Em seguida, ocorre a alteração novamente da velocidade e aceleração do motor de passo, agora definidas como 800, e realizamos uma rotação positiva de 10 voltas. Para isso, instruímos o motor a girar 2000 passos.


stepper.setSpeedInStepsPerSecond(800);
stepper.setAccelerationInStepsPerSecondPerSecond(800);
stepper.moveRelativeInSteps(200 * 10);

Neste blog, exploramos uma visão geral de como um motor de passo funciona, conhecemos o driver TB6600 e a biblioteca ESP-FlexyStepper. Demonstramos o quão fácil é controlar um motor de passo com essas ferramentas, e há ainda muito mais para ser explorado a partir deste conteúdo. Se você deseja aprofundar seus conhecimentos sobre motores de passo, recomendamos assistir ao vídeo sugerido a seguir.



Posts recentes

Ver tudo
ícone do whatsapp

Fale com um
especialista:

bottom of page