Na semana passada iniciamos uma nova série aqui no fazedores, que abordou um assunto muito legal, cujo o tema é Motores. Bem, o nosso primeiro post falou sobre o Motor de Passo, que é um dispositivo muito importante para criação de alguns projetos, como Impressoras, Scanners, Robôs etc. Neste post, falamos sobre suas principais formas de funcionamento, suas estruturas, suas principais vantagens e desvantagens, entre outros.
Hoje vamos dar continuidade no primeiro post, e o mais legal é que vamos colocar a mão na massa! YOOHHOOO! Conforme prometemos no texto passado , hoje vamos mostrar um exemplo básico do funcionamento do Motor de Passo com Arduino. Então vamos lá, é hora de ver isso funcionando! Chega mais!
Drivers
Antes de começarmos a montar as ligações entre o Motor de Passo e a Arduino, primeiro precisamos entender qual é o papel de um Driver para o funcionamento deste dispositivo. Veja só:
Existem vários tipos de motores de passo, e cada um deles servem para atender um determinado projeto, porém nem todos eles possuem as mesmas características de funcionamento, como por exemplo o valor de tensão e corrente. Bem, é neste ponto que que nasce um grande problema! Imagine como você faria para interagir um Arduino com um motor de passo que possui tensão de 12V e corrente de 4A? É aqui que entram os Drivers e resolvem isto. Pois da mesma maneira que existem vários tipos desses motores, também existem vários tipos de drivers que servem para ajudar no funcionamento dos mesmos.
Para entender como os driver funcionam, vamos pensar como faríamos para ativar apenas uma bobina do motor. Para fazer isso basta pegarmos um transistor de potência ( ex: Transistor BD135) e montarmos um circuito que funcione como chave eletrônica, para acionar a bobina. Pronto, se você consegue visualizar este acionamento, você com certeza sabe como funcionam os drivers, pois eles trabalham como um conjunto de transitores que fazem este acionamento de várias bobinas de forma mais simples.
Em nosso exemplo vamos usar um motor pequeno que utiliza tensão de 5v, logo o driver que vamos utilizar é o ULN 2003. Ele possui 16 pinos, sendo 7 pinos para entrada de sinal, 7 pinos para saída, 1 pino de alimentação de 0 a 50v e 1 pino Terra. Vale lembrar que este drive, serve para funcionar apenas um motor. Se quiser utilizar um único driver para controlar 2 motores, será necessário usar o ULN 2803.
Aplicação Com Arduino
Já que agora conhecemos como funciona o driver de um motor de passo e já sabemos qual iremos usar. Chegou a hora de unir todos com a Arduino e botar a colocar tudo funcionando. A nossa interação entres estes dispositivos ficou bem fácil, veja o que nosso sketch faz:
Primeiro, importamos a biblioteca do motor de passo que já está disponível na IDE do Arduino. Em seguida criamos uma variável chamada de “stepsPerRevolution” para definir o numero de passo por volta. Na sequência inicializamos a biblioteca , colocando o numero de passos por volta e definindo as portas que serão usadas na Arduino. Em nosso Setup, apenas definimos a velocidade de acionamento das bobinas do motor. Por fim, dentro de nosso Loop, criamos duas estruturas de repetição, para que elas sirvam como temporizador para nosso motor, fazendo ele rodar em sentido horário e anti-horário.
Então vamos lá! Chegou a hora de colocar a mão na massa, pois agora vamos montar nosso circuito, colocar os códigos dentro da Arduino e ver nosso projeto funcionar. Mas antes disso veja os materiais que vamos precisar:
- Um Arduino (Uno R3 ou Compatível)
- Um motor de Passo Uniploar
- Um Módulo Controlador com Driver ULN 2003
- Jumpers Para conexões
- Um Cabo USB para carregar os códigos no Arduino
Diagrama de Conexões
Para fazer a ligação do circuito, veja esse esquemático criado pelo blog Arduino e Cia.
Código com Arduino
Com o circuito todo conectado e conferido, agora é hora de carregar os seguintes códigos em seu Arduino.
// Interação Arduino com Motor de Passo // Fazedores.com #include <Stepper.h> // Incluindo a biblioteca do Motor de Passo const int stepsPerRevolution = 65; // Numero de passo por volta Stepper myStepper(stepsPerRevolution, 8,9,10,11); // Faz a inicialização da Biblioteca usando as portas 8,9,10,11 // setup (executado apenas uma vez) void setup() { myStepper.setSpeed(300); // velocidade do motor definida em 300 } // laço principal (executado indefinidamente) void loop() { // Estrutura de repetição usada para limitar o tempo que o motor vai girar no sentido anti-horário for (int i = 0; i < 50; i++){ myStepper.step(stepsPerRevolution); // sentido anti-horario } // Estrutura de repetição usada para limitar o tempo que o motor vai girar no sentido horário for (int i = 0; i < 50; i++){ myStepper.step(-stepsPerRevolution); // sentido horario } }
Podemos ver que nosso sketch é simples. O que ele faz é movimentar o motor indefinidamente para o sentido horário e depois para o sentido anti-horário. Fizemos um video para mostrar o funcionamento disso, veja:
Movimentar o motor de passo em sentidos opostos, é apenas uma das N funções que esse dispositivo consegue fazer. Este foi um exemplo básico para que possamos entender como o motor funciona. Dentro da IDE do Arduino existem vários exemplos legais de outros códigos que podem ser usados. Veja qual o melhor se encaixa em seu projeto e vá em frente. Só não esqueça de nos contar qual foi, e se tiver alguma dúvida, é só perguntar em nosso fórum.
Olá, esse código, no meu caso, não fez o motor inverter o sentido da rotação.
o meu tb não…
É uma boa ideia alimentar o motor diretamente do arduino?
É melhor providenciar uma fonte de alimentação separada para o motor!
Então eu poderia alimentar o motor de passo com uma fonte externa e o Arduíno serviria apenas para controlar o motor? Estou querendo iniciar um projeto com arduíno para controlar os passos de um motor.
Otima serie! estou começando agora a estudar estes assuntos e estou achando otimo os posts!
é possivel comprar estes motores de paços em lojas de components eletronicos? Só os conseguia desmontando antigas impressoras, mas isto esta cada vez mais dificil pra mim.
Continuem com os posts! estão otimos!
Olá, só fazendo a consideração que a série ULN não é exatamente uma série de drivers para motor de passo, na verdade é um conjunto de transistores ligados em Darlington, obviamente é possível ligar um motor de passo ou outros tipos de motores com ele, mas não é essa a aplicação específica a qual se destina, já que várias características de um motor de passo não são possíveis de obter com um ULN, como direção, micropasso, proteção contra sobrecorrente, desligamento térmico e etc. Como mostra o datasheet: http://www.ti.com/lit/ds/symlink/uln2003a.pdf
O que o diferencia de um driver de fato, com a finalidade específica de controlar motores de passo, como é o caso do DRV8825 e outros da Allegro: http://www.ti.com/lit/ds/symlink/drv8825.pdf