Guia completo do Motor de Passo 28BYJ-48 + Driver ULN2003

Nesse Guia completo do  Motor de Passo 28BYJ-48 + Driver ULN2003, você verá :

 

Introdução

Essa montagem, eu diria que é a mais simples para controle de um motor de passo (stepper motor).  Esse motorzinho tem uma redução interna que aumenta bem o torque, apesar do pequeno tamanho. O módulo de controle com o chip ULN2003 é bem pequeno também, o que pode facilitar a montagem do circuito.

As vantagens são a simplicidade na montagem , Sketch pode ser bem enxuto, o uso de tensão de 5V para alimentar o motor, etc.

A desvantagens são a rotação  baixa do motor (devido a redução na caixa de engrenagens) ,  o motor unipolar é menos eficiente do que o bipolar e o uso de quatro portas do Arduino. Alguns módulos de controle de motor de passo usam interfaces com duas portas apenas (por exemplo, com interface I2C).

Se você quiser saber mais sobre motores de passo, recomendo a leitura desse outro tutorial :

Tudo sobre DRIVER A4988 e Motor de Passo > Usando o Arduino

 

Informações sobre o Motor de Passo 28BYJ-48:

Esse é mais um motorzinho fabricado na China. Ele deve ser produzido em larga escala e por isso ele tem um preço bem acessível. Interessante , que ele  pode ser alimentado com 5V e consome baixa corrente, o que facilita a montagem. Esse motor é Unipolar pois possui 4 enrolamentos que chamamos de fases. Em uma das pontas das fases, todas estão conectadas juntas. Portanto, esse motor não pode ser usado em Drivers para motores Bipolares ( com duas fases somente).

Essas são as especificações  do Motor  28BYJ-48: 

Motor28BYJ48Kiatronics

A distância entre os dois suportes de parafusos é de 35 mm. O diâmetro do motor é de 28 mm e a profundidade é de 19 mm. O diâmetro do eixo é 5mm, e ele é chanfrado.

  • Tensão de operação : 5V CC
  • Número de fases : 4
  • Razão da variação de velocidade : 1/64  (mecanismo de redução)
  • Angulo do passo : 5,625 graus => 64 passos/volta (360/64=5,625)
  • Resistência CC : 50 ohms
  • Frequência : 100 Hz
  • Torque de tração: > 34,3 mN.m

OBS: a resistência medida nas bobinas  do motor foi de 23 ohms. Assim podemos deduzir o consumo estático de corrente em cada bobina :

I = V / R = 5V / 23 = 217 mA aproximamente ( a corrente medida foi um valor aproximado disso)

 

Esse é o diagrama do motor (desenhado por mim) :

Para entender o mecanismo de redução do motor, veja esse excelente video :

 

No Forum do Arduino encontrei um tópico onde desmontaram o motor, para entender como funciona a caixa de redução de engrenagens. Muito curioso !

Geared Stepper Motor

Como podem ver, a caixa tem várias engrenagens ( 31 dentes, 32 dentes, 26 dentes, 22 dentes, 11 dentes, 10 dentes, e mais duas com 9 dentes).

O pessoal fez alguns cálculos para determinar com maior precisão qual era a redução.

(31*32*26*22)/(11*10*9*9) = 283712/4455 = 25792/405 = 63,68395...

Na especificação do fabricante, ele aproximou o valor para 64.

Para calcular o número de passos do motor interno  para girar uma volta do eixo externo (com redução) :

(64 * 25792)/405 =  4075,7728395..

Isto é , são necessários aproximadamente 4075 passos  no motor de passo interno, para uma volta no eixo externo. Esse valor pode ter uma pequena variação devido às folgas nas engrenagens.

 

Informações sobre o Módulo Driver ULN2003:

O unico chip no módulo é o ULN2003. Esse chip  possui um conjunto de sete drivers de transistores Darlington que permitem o acionamento de cargas indutivas. Todas as saídas tem o coletor aberto e diodos de supressão (Clamp) . Os transistores suportam tensões de até 50V e correntes de até 500 mA. Todas as entradas IN1, IN2,IN3 e IN4 são compatíveis com sinais TTL e CMOS,  com limite de 5V. O pino comum tem que ser conectado na tensão de alimentação do motor. Nesse caso é conectado no 5V.

Datasheet ULN2003APG

Essa é disposição dos circuitos drivers no chip ULN2003APG:

Esse é o diagrama da placa de circuito do Módulo ULN2003APG :

Os quatro leds vermelhos (A,B,C e D) são usados para indicar o acionamento de cada um dos drivers (fases do motor). Mesmo que o diagrama mostre sete entradas, somente quatro podem ser usadas e somente essas tem pinos no conector.

Muita atenção ao conectar a alimentação nos pinos. 

O pino mais à esquerda (-) no módulo é o terra (veja foto abaixo). Esse terra tem que ser conectado ao terra da fonte e ao terra do Arduino. O pino (+) no caso do Motor 28BYJ-48, tem que ser conectado ao positivo de uma fonte de 5V (preferencialmente de 1 Ampére). Não recomendo que conecte no 5V do Arduino, pois poderá sobrecarregar o regulador de tensão do mesmo.

O jumper Power ON/OFF é usado para ligar ou desligar o motor.

Módulo ULN 2003 – foto Gustavo Murta

 

Motor de Passo – modos de operação:

Nesse tutorial o Motor de passo é Unipolar, isto é, ele possui quatro enrolamentos que chamamos de Fases.

Cada circuito driver do chip ULN2003A aciona uma das fases. E a ativação de cada driver é realizada pelas portas digitais do Arduino ( portas D08, D09, D10 e D11) .

  •  F1 (azul)       – D08
  •  F2 (rosa)       – D09
  •  F3 (amarelo)  – D10
  •  F4 (laranja)    – D11

Para um motor de Passo Unipolar, temos alguns modos de operação. O modo Passo completo com alto torque ( Full step), o modo Passo completo com baixo torque ( Wave Step),  o modo Meio Passo (half step) e Micro-passo (Micro stepping).

No caso do Micro passo, a corrente nos enrolamentos deve ser alterada. Como o nosso circuito não permite o controle da corrente, esse modo de operação não se aplica.

Para entender como as Fases são acionadas em cada caso, vejam essas cartas de tempo:

Obs: 0 (zero)  = enrolamento desativado e 1 = enrolamento ativo.

Nas linhas estão a sequência dos passos e nas colunas estão as Fases.

 

Passo completo com alto torque ( Full step):

Duas Fases são acionadas ao mesmo tempo.                                            

 

Passo completo com baixo torque ( Wave Step):

Somente uma Fase acionada de cada vez.                                         

                                                            

Meio Passo (half step):
Na sequência de oito passos, em alguns passos temos somente uma fase acionada e em outros passos, temos duas fases acionadas.

 

Referência : Stepper_Motors_2011.pdf

 

Montagem do Motor e do Driver com Arduino:

Esse é o diagrama da montagem do circuito com Arduino.

Obs: como já informei, recomendo que use uma fonte externa de 5V para alimentar o Driver + Motor de passo.

Esse é o diagrama eletrônico do mesmo circuito:

 

Modo de Passo completo com alto torque (Full Step):

No Modo de Passo completo com alto torque, para cada passo duas fases são ativadas simultaneamente. Esse modo é o mais usado, pois como o nome já diz, tem mais torque. O consumo de corrente é  mais alto, devido à ativação das duas fases.

Um dos motivos para a escolha desse Módulo driver ULN2003 é que ele possui quatro leds que permitem a indicação da ativação das fases do motor. Para fins didáticos, isso é muito útil.

Essa é a Carta de Tempo do Modo Passo completo com alto torque ( FullStep):

Veja que para cada passo, duas Fases  (Channel) são ativadas ao mesmo tempo.

Para melhor visualizar o avanço dos Leds piscando de acordo com a ativação das Fases, altere a variável atraso-fase para 500 milisegundos :

int atraso_fase = 500  ;

Fica visível  que dois Leds piscam ao tempo.

Verificando os valores dos Bytes das matrizes do programa : AHO e HOR , percebe-se que dois bits são ativados ao mesmo tempo. E é claro, uma sequência de bytes é inversa da outra.

Full_step.ino

Referências:
http://www.elecrow.com/wiki/index.php?title=ULN2003_Stepper_Motor_D…

 

Modo de Passo completo com baixo torque (Wave Step):

Como já foi dito, no modo Passo completo com baixo torque ( Wave step) somente uma fase é acionada de cada vez, portanto o torque do motor é menor do que nos outros modos. Esse modo é pouco usado exatamente por isso. O rendimento do motor é menor, mas tem-se como vantagem um menor consumo de corrente, já que somente uma fase é ativada em cada passo.

Para melhor visualizar o avanço dos Leds piscando de acordo com a ativação das Fases, altere a variável atraso-fase para 500 milisegundos :

int atraso_fase = 500  ;

Desse modo poderá perceber que os Leds piscam um de cada vez , confirmando a sequência da Carta de Tempo:

 

Importante ressaltar que nas matrizes do programa : AHO e HOR , estão carregados os bytes de ativação das fases, de acordo com a tabela anexada no tópico anterior. Uma sequência de bytes é inversa da outra.

wave_step.ino

 

Modo de Meio Passo (Half Step):

O Modo  Meio Passo é uma mesclagem dos outros dois modos, Full Step e Wave Step.

Esse modo é usado quando o movimento do motor precisa ser delicado e preciso e o torque não é importante.

O motor interno precisa de 64 passos para uma revolução (volta), no modo Half Step o número de passos dobra para 128 passos !

Por isso é chamado de Meio Passo. O efeito Meio passo é conseguido intercalando um passo (com duas fases do Motor ativadas simultaneamente) com outro  passo (ativando somente uma fase), obedecendo uma sequência própria para isso. Devido à essa alternância, o torque e o consumo de corrente variam de acordo com o passo. Com mais fases ativas, terá maior torque e maior consumo de corrente.

O interessante nesse modo é que as matrizes dos Bytes  AHO e HOR , tem oito valores e não somente quatro como nos outros modos. Analisando os Bytes, dá para perceber que as matrizes dos outros modos foram agrupadas.

Half_step.ino

 

Essa é a Carta de Tempo do Modo Meio Passo ( Half Step):

Em alguns passos, tem duas fases ativadas e em outros tem somente uma fase ativada .

 

Bibliotecas para Motor de passo:

Existem várias bibliotecas para o controle de motor de passo com o Arduino. As mais comuns são essas:

Exemplo de Skecth com a Biblioteca AccelStepper. Gire o potenciômetro, e o motor irá acompanhar o movimento do mesmo (Giro total de 180 graus do eixo do motor). Use um potenciômetro de 10 K ohms.

Diagrama do circuito :

 

AccelStepperPOT.ino

 

Aplicações interessantes para o Motor de Passo 28BYJ-48 + Driver ULN2003:

Esse motor de passo permite movimentos precisos e com baixa rotação. Essas são algumas aplicações interessantes voltadas para fotografia :

ARDUINO TIME-LAPSE PANORAMA CONTROLLER

 

Motion Control Rig for Time-Lapse Photography

 

Se tiver alguma dúvida,  deixe um comentário!

 

Faça sua avaliação.
Por favor, aguarde...
Gustavo Murta
Gustavo Murta
Técnico em eletrônica, formado em Curso superior de TPD, pós-graduado em Marketing. Trabalhou por muitos anos na IBM na área de manutenção de computadores de grande porte. Aposentou-se, podendo curtir o que mais gosta : estudar e ensinar Tecnologia. Hobbista em eletrônica desde 1976. Gosta muito de Fotografia e Observação de aves.