Manual

do

Maker

.

com

Como utilizar o EasyDriver para controlar motor de passo

Como utilizar o EasyDriver para controlar motor de passo

Controlar um motor de passo é bastante simples, já escrevi alguns artigos a respeito, como esse, que é um modo mais direto,  mas exige um bocado de jumpers ou solda. Atualmente tenho preferido utilizar drivers porque é muito prático, principalmente para prototipagem e procurando por um controlador, acabei encontrando o EasyDriver que, apesar do nome, não é tão "Easy" assim se for utilizar todos seus recursos. O básico sim, bastante direto, então começaremos por esse modo, porque estou trabalhando em um longo e interessante artigo  e uma das etapas é justamente controlar alguns motores. Aí entra a questão; Como utilizar o EasyDriver adequadamente?

Como utilizar o EasyDriver?

Primeira coisa a fazer, identificar o pinout. Na imagem de destaque está claro.

Em detalhes, da esquerda para a direita:

LED 5V

LED informativo da alimentação 5V.

Nível lógico

Por padrão, 5V. Se você quiser trabalhar com nível lógico 3V3 nos pinos, faça a solda nesse ponto para habilitar o divisor de tensão.

Motor de passo

B1 e B2 são as respectivas bobinas do motor de passo.

Power OUT e jumping ao lado

Se desejar sair com 5v usando até 50mA, utilize esses pinos. Para tal, você deverá soldar o jumping ao lado direito dele. Se mantê-lo aberto, você pode utilizá-lo como entrada de tensão para alimentar o circuito.

PFD

Nas especificações técnicas parece um bocado complicado, mas não precisaremos utilizá-lo, por sorte.

Reset

Reset.

Sleep

Você pode deixar o EasyDriver dormindo até que seja  necessárioe certamente será. Quando você coloca o EasyDriver em sleep, nem a controladora e nem o motor de passo esquentam. No projeto atual que estou desenvolvendo, fiz justamente isso, acompanhe os próximos artigos.

Enable

Inicialmente, esse pino está no nível lógico baixo. Se colocar em HIGH, desabilitará todas as saídas de frenagem do motor. Por padrão não será necessário fazer wiring nesse pino, mas adiante eu descrevo sua utiização.

Micro passo 1 e 2

Esses pinos controlam o modo micro passo. As configurações possíveis para esses pinos são full step (0,0), half step (1,0), 1/4 step (0,1), and 1/8 step (1,1 : default):

 

Micro Step 1Micro Step 2Resolução
LOWLOWPasso completo
HIGHLOWMeio passo
LOWHIGH1/4 de passo
HIGHHIGH1/8 de passo (padrão)

Power IN

Você deve entrar com uma tensão mínima de 7V e máxima de 30V. O driver trabalha fornecendo correntes entre 150mA e 750mA, então não use uma fonte ordinária,ainda mais se precisar de torque.

GND, passo e direção

O GND deverá ser comum à controladora. Um pino para controlar os passos e o outro para controlar a direção. Mostrarei  detalhes mais adiante.

Detalhes e cuidados

O controle de corrente é ajustável entre 150mA e 750mA por fase. Eu vou utilizar o EasyDriver com um motor de passo 12V e vou utilizar uma fonte chaveada 12V@30A, porque é a que tenho mais próximo.

Identificar as bobinas do motor

Para identificar as bobinas do motor bipolar, use um multímetro e procure a resistência mais baixa para identifcar um par. Os dois fios restantes só poderão ser o outro par.

Wiring

No modo de operação básica, os fios GND, passo e direção (do canto inferior direito) devem ser conectados. Os pares de cada bobina devem ser ligados em qualquer ordem, mas ambos os pares devem ser ligados com a mesma lógica. Meu motor tem os fios vermelho, verde, amarelo e azul. Eu conectei azul com amarelo e vermelho com verde.

Alimentação (externa)MotorArduinoEasyDriver
pino 7direção
pino 8passo
bobina 1 fio 1B1 1
bobina 1 fio 2B1 2
bobina 2 fio 1B1 1
bobina 2 fio 2B2 2
GNDGND ao lado do passo
7V até 30VPower IN, pino da esquerda
negativoPower IN, pino da direita

código de operação básica

No modo básico, tudo o que você precisa fazer é definir os pinos para direção e passo. No caso dos passos é bastante simples de entender, bastando selecionar o número de passos desejado para o loop.

A direção é selecionada pelo estado do respectivo pino, sendo 0 ou 1. O número de passos do motor de estou utilizando é 200 por volta, dando algo em tornode 1.8 graus por passo. Um código básico de exemplo para um teste inicial, fazendo o motor girar em ambas as direções, seria:

int pin_direction = 7;
int pin_step      = 8;
int direction     = 0;
int steps         = 1600;

void setup(){
    pinMode(pin_direction,OUTPUT);
    pinMode(pin_step,OUTPUT);
}

void loop(){
    direction = direction > 0 ? 0 : 1;
    digitalWrite(pin_direction,direction);
    for (int i=0;i<steps;i++){
        digitalWrite(pin_step,HIGH);
        delay(5);
        digitalWrite(pin_step,LOW);
    }
    delay(1000);
}

Código de operação com controle de micro step

Não tem nada de mais nesse código, apenas adicionaremos  2 outros jumpers no wiring e conforme a tabela supracitada, faremos o controle de todas as maneiras disponíveis para ver como o motor reage a cada configuração. Ao código, devemos adicionar  os controles de MS1 e MS2. Utilizei os pinos 4 e 5 para MS1 e MS2, respectivamente.

int pin_direction = 7;
int pin_step      = 8;
int pin_ms1       = 4;
int pin_ms2       = 5;
int direction     = 0;
int steps         = 1600;

int microSteps[4][2] = {
                       {LOW,LOW},
                       {HIGH,LOW},
                       {LOW,HIGH},
                       {HIGH,HIGH}
};

void setup(){
    pinMode(pin_direction,OUTPUT);
    pinMode(pin_step,OUTPUT);
    pinMode(pin_ms1,OUTPUT);
    pinMode(pin_ms2,OUTPUT);
}

void loop(){
  for (int j=0;j<4;j++){
      digitalWrite(pin_ms1,microSteps[j][0]);
      digitalWrite(pin_ms2,microSteps[j][1]);
      
      direction = direction > 0 ? 0 : 1;
      digitalWrite(pin_direction,direction);
      for (int i=0;i<steps;i++){
          digitalWrite(pin_step,HIGH);
          delay(5);
          digitalWrite(pin_step,LOW);
      }
      delay(1000);
  }
}

Motor de passo esquentando

Mais acima citei a utilização do pino Enablepara frenagem do motor de passo. isso significa que quando o estiver utilizando em uma CNC, provavelmente querará que o motor não se desloque enquanto aguarda em uma posição. O comportamento padrão do EasyDriver é mantê-lo travado em sua posição e quando nesse estado, é comum o motor aquecer bastante, podendo chegar aos 70 graus ou mais, dependendo do controle de corrente. E é por isso que o EasyDriver é um dos melhores drivers para controle de motores de passo, já que ele fornece o controle de corrente do motor, e assim você consegue diminuir a temperatura dos componentes em operação.

Você pode pensar: "O motor de passo da impressora não esquenta". Verdade, e isso se dá ao fato de que  a impressora possui um encoder para fazer o alinhamento da cabeça de impressão, portanto o motor retorna ao seu ponto de descanso e encerra sua tarefa, já que sua memória de posicionamento se baseia no encoder. Para trabalhar desse modo, basta modificar o comportamento do EasyDriver através do pino Enable. Na configuração, utilizei o pino 3 do Arduino no pino Enable do EasyDriver, daí  compilei o seguinte sketch:

 

int pin_direction = 7;
int pin_step      = 8;
int pin_ms1       = 4;
int pin_ms2       = 5;
int pin_enable    = 3;
int direction     = 0;
int steps         = 1600;

int microSteps[4][2] = {
                       {LOW,LOW},
                       {HIGH,LOW},
                       {LOW,HIGH},
                       {HIGH,HIGH}
};

void setup(){
    pinMode(pin_direction,OUTPUT);
    pinMode(pin_step,OUTPUT);
    pinMode(pin_ms1,OUTPUT);
    pinMode(pin_ms2,OUTPUT);
    pinMode(pin_enable,OUTPUT);

    digitalWrite(pin_enable,LOW);
}

void loop(){
  for (int j=0;j<4;j++){
      digitalWrite(pin_ms1,microSteps[j][0]);
      digitalWrite(pin_ms2,microSteps[j][1]);
      
      direction = direction > 0 ? 0 : 1;
      digitalWrite(pin_direction,direction);
      for (int i=0;i<steps;i++){
          digitalWrite(pin_step,HIGH);
          delay(5);
          digitalWrite(pin_step,LOW);
      }
      digitalWrite(pin_enable,HIGH);
      delay(1000);
      digitalWrite(pin_enable,LOW);
  }
}

Torque do motor

Se você precisar  de torque, deverá aumentar  a corrente. Faça-o gradativamente e veja o ponto ideal para evitar superaquecimento do motor, ainda mais se estiver utilizando-o no modo de frenagem do eixo.

Outro modo de controlar um motor de passo bipolar

E se quiser utilizar algo mais simples, sugiro esse outro  artigo relacionado a esse motor de passo, utilizando uma ponte H L293D.

Motor de passo unipolar

Se você tem um desses motores de passo baratinhos unipolar, o artigo relacionado a ele pode ser encontrado nesse link, onde faço uma introdução.

No artigo sobre o robô seguidor de linha, utilizei esse motor unipolar para movimentar a polia. O robô foi todo feito com palitos de sorvete, por isso acredito que seja no mínimo uma leitura interessante.

Onde comprar

Esse módulo adquiri com um parceiro de longa data, Fulltronic, através desse link. A lista de produtos dele é sempre bem atrativa.

Video demonstrativo dos controles do motor de passo bipolar

Esse video  não tem absolutamente nada,  apenas a demonstração do funcionamento do motor com 1 passo, 1/2 passo, 1/4 de passo e 1/8 de passo utilizando  todos os recursos descritos anteriormente. Testei ele com modo de frenagem e 150mA  e ele esquenta de maneira assustadora. Para o video, utilizei o modo livre, que praticamente não chegou a ficar morno. Alías, se eu não soubesse que o motor é gelado, não  teria percebido que  ele esquentou um pouco.

https://youtu.be/4X8QM1kZ2qQ

 

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.