29 de jul. de 2013

Projeto 12 - Motor de passo controlado por Arduino

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

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




5 comentários:

  1. Testei aqui também, sou iniciante no tema Arduino.
    Funcionou direitinho.
    Muito obrigado gente...

    ResponderExcluir
    Respostas
    1. Muito bom Paulinelly! Conhecimento nunca eh demais. Obrigado por comentar!! Ate mais.

      Excluir
  2. Muito bom e de fácil compreensão, vai me servi muito bem, obrigada!

    ResponderExcluir