Projeto
12 - Motor de passo controlado por
Arduino
Olá pessoal, já vimos como controlar um motor CC. Agora
vamos ver como funciona um motor de passo com Arduino. Neste projeto foi
utilizado um Shield para controle de motor com ULN2003. Projeto simples de ser
implementado. Os códigos serão todos comentados para melhor entendimento,
podendo ser retirados após a compreensão de cada linha. Bom trabalho !!!
Antes de começar, veja o vídeo do projeto pronto
Componentes
necessários
1 Protobord
1 Driver para motor com ULN2003
1 Motor de passo modelo 28BYJ-48
1 Motor de passo modelo 28BYJ-48
Fios jumper
Conectando
os componentes
Primeiro,
certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB.
Agora, o driver, o motor de passo e os fios e conecte-os como mostra
a imagem abaixo.
Para melhor entendimento, segue a inserção dos pinos Arduino/Driver:
- Pino 4 do Arduino no Pino IN1 do Driver
- Pino 5 do Arduino no Pino IN2 do Driver
- Pino 6 do Arduino no Pino IN3 do Driver
- Pino 7 do Arduino no Pino IN4 do Driver
Não
importa se você utiliza fios de cores diferentes ou furos diferentes na
protoboard, desde que os componentes e os fios estejam conectados na mesma
ordem da figura. Tenha cuidado ao inserir os componentes na protoboard. Caso
sua protoboard seja nova, a superfície dos furos ainda estará rígida. A não inserção
cuidadosa dos componentes pode resultar em danos. Certifique-se
de que todos os componentes estejam conectados corretamente. Quando você
estiver seguro de que tudo foi conectado corretamente, ligue seu Arduino e
conecte o cabo USB.
Agora vamos ao código
// Projeto 12 - Motor
de passo controlado por Arduino
// Declarando variáveis para os pinos
do motor
int motorPin1 = 4; // Azul
- Pino 1 do motor 28BYJ-48
int motorPin2 = 5; // Rosa
- Pino 2 do motor 28BYJ-48
int motorPin3 = 6; // Amarelo - Pino 3 do motor 28BYJ-48
int motorPin4 = 7; // Laranja - Pino 4 do motor 28BYJ-48 o pino
5 (Vermelho) é o pino de alimentação do motor de passo (VCC)
int velocMotor = 1200; // Variáveis para configurar a velocidade do
motor
int contagem = 0; // Variável usada como contador de passos
int passosPorRotacao = 512; // Número de passos por rontação completa
int vetorLigDesl[8] = {B01000, B01100,
B00100, B00110, B00010, B00011, B00001, B01001};
// Vetor que manipula os pinos do motor entre 0 e 1 (Desliga/Liga)
// Vetor que manipula os pinos do motor entre 0 e 1 (Desliga/Liga)
void setup() {
// Declara os pinos do motor como pinos de saída
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop(){
if(contagem < passosPorRotacao )
sentidoHorario(); // Função para
rotacionar em sentido horário
else if (contagem == passosPorRotacao * 2)
contagem = 0;
else
sentidoAntiHorario(); // Função
para rotacionar em sentido anti horário
contagem++;
}
/*Configurando os pinos para ULN2003.
o delay "motorSpeed"
determina o tempo para a velocidade do motor*/
void sentidoAntiHorario()
{
for(int i = 0; i < 18; i++)
{
setOutput(i);
delayMicroseconds(velocMotor);
}
}
void sentidoHorario()
{
for(int i = 17; i >= 0; i--)
{
setOutput(i);
delayMicroseconds(velocMotor);
}
}
void setOutput(int out) // Faz a manipulação de 0 e 1
{
digitalWrite(motorPin1, bitRead(vetorLigDesl[out], 0));
digitalWrite(motorPin2, bitRead(vetorLigDesl[out], 1));
digitalWrite(motorPin3, bitRead(vetorLigDesl[out], 2));
digitalWrite(motorPin4, bitRead(vetorLigDesl[out], 3));
}
Para certificar se o código está
correto pressione o botão Verify/Compile. Se
tudo estiver correto pressione o botão Upload para fazer o upload do código
para seu Arduino. Pronto, o motor irá rotacionar para o sentido horário e
depois para o sentido anti horário.
- Se você gostou do post,
por favor comente! Nos dê um
feedback, isto nos incentiva a continuar! :)
- Curta nossa fan page !
- Baixe o APP Faça Com Arduino e carregue para onde você for os projetos. É simples. É fácil !!
Gostei muito legal
ResponderExcluirObrigado Cristiano pelo comentário e volte sempre !!
ExcluirTestei aqui também, sou iniciante no tema Arduino.
ResponderExcluirFuncionou direitinho.
Muito obrigado gente...
Muito bom Paulinelly! Conhecimento nunca eh demais. Obrigado por comentar!! Ate mais.
ExcluirMuito bom e de fácil compreensão, vai me servi muito bem, obrigada!
ResponderExcluir