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 !!!

COMPONENTES NECESSÁRIOS

1 Arduino Uno R3

1 Protoboard

1 Modulo para motor ULN2003

1 Motor de passo modelo 28BYJ-48

Fios jumpers

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.

 

SEGUE O ESQUEMA ABAIXO PARA MELHOR ENTENDIMENTO

Pinos do módulo para motor ULN2003     Pinos do Arduino
IN1                                                                              4
IN2                                                                              5
IN3                                                                              6
IN4                                                                              7

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
// Laranja - Pino 4 do motor 28BYJ-48 o pino 5 (Vermelho) é o pino de...
//alimentação do motor de passo (VCC)
int motorPin4 = 7;

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)

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.

fonte: facacomarduino.info