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.

https://dragaosemchama.com/frases-de-encanto-para-namorada/

 

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:

melhores frases para namoradahttps://dragaosemchama.com/namoro-casados/

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 *