Controlando Motor de Passo 5 fios com Arduino e ULN2003

Quando você olha para uma pilha de eletrônicos velhos, como antigas impressoras, scanners, multifuncionais, dentre outros, e pensa que aquilo é uma pilha de lixo. Mas e se não for uma pilha de lixo? E sim uma caverna que precisa ser explorada para se encontrar o verdadeiro tesouro? É possível encontrar vários motores em impressoras, inclusive o famoso motor de passo. Agora vamos aprender como usá-los.

Um dia, explorando uma dessas cavernas, encontrei um motor de passo (stepper motor), de 5 fios, de uma antiga impressora, como o da imagem abaixo.

DSC01871

 

E pensei “como irei utilizá-lo?”. Foi então que Robson Couto, El fueda de los eletrônicos, me deu a ideia de utilizar o driver ULN2003AN, que também encontrei em um impressora antiga.

Com muita pesquisa e paciência, consegui utilizar o antigo motor de passo, com ULN2003AN e Arduino. Agora vou compartilhar o conhecimento que adquiri com isto.

Primeiro falarei um pouco sobre como funciona o motor de passo. Este motor consiste em várias bobinas, que são ligadas e desligadas quando uma tensão é aplicada nos seus terminais, fazendo com que um imã seja puxado. Quando este imã é puxado, o eixo irá girar. Como demonstra a animação abaixo, quando as bobinas são ligadas e puxam o imã. Podemos ver o seus 4 estados: Step 1 – 1100, Step 2 – 0110, Step 3 – 0011 e Step 4 – 1001.

 

steps

(Imagem retirada: Talkingelectronics – STEPPER MOTOR CONTROLLER)

 

Motores de passos com 5 fios simplesmente tem um fio conectado a todos os rolamentos dentro do motor, representado na figura abaixo como common (COM), e os outros como entradas de bobinas, representado na figura abaixo como live.

5,6,8,wires-Identification

(Imagem retirada: Talkingelectronics – STEPPER MOTOR CONTROLLER)

 

Mas e agora, como vamos saber quem são os lives e quem é common? Pois o motor é antigo e simplesmente não vem com manual junto. Utilizando a dedução, você poderia pensar, através da imagem do motor, como eu pensei, que o fio azul é o common pois é diferente dos outros 4 cinzas. Meus amigos, eu errei e feio, não era ele. Então vou ensinar dois métodos para descobrir quem é a entrada common, para você não errar como eu.

1°  Método

O método mais seguro precisa do multímetro, para medir a resistência das bobinas. Já que o common está conectado a todas as bobinas, ele vai ter uma resistência menor do que uma das bobinas. Para realizar a medição, conectei um dos fios do multímetro em uma das entradas da bobina e fiquei mudando a entrada do fio até achar uma leitura menor. A primeira leitura foi 7.3 ohms, depois continuei até que cheguei no ultimo fio que deu uma resistência menor de 5.1 ohms. Como mostram as figuras abaixo:

DSC01875

 

DSC01874

 

2°  Método

Não é o método mais seguro, pois você poderá danificar a estrutura do motor, então tenha cuidado a utilizar este método, como um amigo meu fala, engenharia reversa. Vamos abrir o motor e procurar no olho qual é o common. Como você pode notar na imagem abaixo. Podemos ver que tem uma trilha que está conectada em dois fios enquanto as outras só tem uma trilha.

imagem

 

Você também poderá utilizar o método da tentativa para descobrir, utilizando a montagem sem conhecer as devidas entradas, efetuando as trocas das entradas até o motor funcionar normalmente. Pode ser mais arriscado do que o método anterior, se você não conhece o funcionamento do motor.

Pronto! Já achamos o fio common, agora vamos fazer as conexões do motor, do drive ULN2003AN e Arduino.

Para realizar a montagem, utilizei a imagem abaixo para me orientar:

montagem

Observando as entradas 8 e 9, nota-se que temos uma fonte conectada entre estas duas entradas, uma fonte de +5 V. Essa fonte é uma fonte externa. Não é +5 V que o próprio arduino oferece. Não é recomendado utilizá-la, pois poderá danificar seu Arduino. Você poderá usar uma fonte de +5 V e +12 V, utilizei as duas e funcionaram corretamente.

A seguir, outra imagem que vocês poderão utilizar para se orientar na realização da montagem. O motor não é o  mesmo, mas é só para você ter uma melhor noção da montagem, pois sabendo onde é a entrada common você poderá saber as outras:

StepperMotor_bb

 

 

Veja uma imagem de como ficou minha montagem:

DSC01890

 

Agora, vamos a parte do código do arduino. Você vai pensar que o código é algo grande, difícil de entender e muito complicado, mas não é assim. Os códigos que vamos usar são exemplos da IDE do arduino , File > Examples > Stepper . Dentro desse caminho, como demonstra a imagem abaixo, temos 4 códigos exemplos: MotorKnob, stepper_oneRevolution, stepper_oneStepAtATime e stepper_speedControl.

Captura de tela inteira 30122014 103631.bmp

 

/* 
 Exemplo disponível na biblioteca Stepper.h, criado por Tom Igoe
 Traduzido por Dragão sem chama em Janeiro de 2015
 www.dragaosemchama.com.br
  */

#include <Stepper.h>             //Inclusão da biblioteca

const int passosPorVolta = 200;  // Numero de passos por volta, geralmente é dado no próprio motor
                                 // As vezes é fornecido o angulo de passo, divida 360 por esse numero para saber o numero
                                 // de passos por volta
                                     
// Declaração de um motor de passo nos pinos 8 a 11:
Stepper myStepper(passosPorVolta, 8,9,10,11);            

void setup() {
  // Velocidade do motor em pwm:
  myStepper.setSpeed(60);
  // Inialização da serial para debug:
  Serial.begin(9600);
}

void loop() {
  // Uma volta no sentido horário:
  Serial.println("horario");
  myStepper.step(passosPorVolta);
  delay(500);
  
   // Uma volta no sentido anti-horário:
  Serial.println("anti-horario");
  myStepper.step(-passosPorVolta);
  delay(500); 
}

 

Agora vamos ver os vídeos de cada ação do motor de passo para os devidos códigos:

MotorKnob:

 

stepper_oneRevolution:

 

stepper_oneStepAtATime:

stepper_speedControl:

 

E, com pouco de criatividade, o Mario poderá até entrar na brincadeira:

 

 

Referências:

Wikipedia – ULN2003A;

Talkingelectronics – STEPPER MOTOR CONTROLLER;

Stepper Motor Controlling Using ULN2003;

Stepper Motor 5V 4-Phase 5-Wire & ULN2003 Driver Board for Arduino;

Wikipedia – Stepper Motor;

Fritzing.

Márcio Albuquerque

Estudante de Engenharia de Computação - UFC Conhecimentos: Em Programação Android, Arduino, C/C++, Blender, Raspberry Pi entre outros. Amante de fotografia e livros; Mais sobre mim: http://lattes.cnpq.br/2965285710576270

5 thoughts to “Controlando Motor de Passo 5 fios com Arduino e ULN2003”

  1. parabéns amigos , adoramos esses coisas , mas ainda sou leigo no assunto , tenho muita criatividade , estou montando um projeto para escola gigantesco , comprei um motor de passo 17 , gostaria apenas de ligá-lo em uma bateria ou fonte eu acho , para que ele rodasse para um lado , apertasse um botão ele parasse e rodasse do outro lado , poderia me dar uma luz , quanto a o que tenho que comprar ou montar . obrigado e parabéns de novo pelo site . um dia eu chego nesse nível rsrsr.

    1. Olá Marco
      Infelizmente o motor de passo não pode ser apenas conectado a uma fonte, pois é um pouco mais complexo. Você tem Arduino? A forma mais fácil de controlar um motor de passo que posso imaginar é como o Márcio mostra no post acima.
      Talvez um motor DC (desses de carrinho mesmo) seja mais adequado ao seu projeto.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *