segunda-feira, 19 de agosto de 2013

12º projeto: Controle de motor de passo pelo shield motor

    Há mais ou menos um mês fiz minha última postagem sobre shield ethernet, tal assunto que ainda quero muito estudar e irei. Demorei esse tempo para fazer uma nova postagem porque estava sem tempo - novamente: maldita engenharia -, hoje gostaria de aborda um shield que comprei algum tempo. que o motor shield da ladyAda.






    Esse shield como podemos ver pode controlar 2 servos, 4 motores VCc ou 2 motores de passo, inclusive o nosso experimento de hoje e controle de motor de passo. Esse mesmo shield você encontra 2 CI's L293D, que fazem a ponte H, e um registrador de deslocamento 74HC595, muito usado para converter dados seriais em saída paralela. Para controle o usuário deverá fazer o download da biblioteca AFMotor <Biblioteca AFMotor> , inclua essa biblioteca.

    Recomendo a todos um estudo sobre esse shield e sua biblioteca. Ela possui comandos próprios e fácil compreensão. Vamos agora ao estudo do projeto de hoje!

    Nesse projeto eu usei o motor de passo 08BJ-H007 da MINEBEA CO. LTD. A imagem embaixo mostra o datasheet desse motor de passo:
    
    Qualquer dúvida acesse o link do datasheet completo <datasheet steppermotor> .

Material:

    - Arduino
    - Stepper Motor
    - Shield Motor

Imagens:







Código:


 /*           Shield Motor LadyAda   
 controle de motor de passo pelo teclado. Desenvolvido por Felipe Amaral  
 Acesse: www.arduinoprog.blogspot.com.br   
 */  
 #include <AFMotor.h> //biblioteca do shield motor LadyAda  
 AF_Stepper motor(48,2); //motor com 48 passos/revolução no port M3 e M4  
 void setup(){  
  Serial.begin(9600); //comunicação serial  
  Serial.println("Teste motorShield");  
  motor.setSpeed(100); //100 rpm, velocidade de rotação   
 }  
  void loop(){  
   if(Serial.available()){ //teste de envio de dados  
    switch(Serial.read()){ //caso de envio  
     case('w'): //caso o botão W for apertado   
     motor.step(500 ,FORWARD, SINGLE); //o motor fará 500 revoluções - para frente - energizando um bobina de cada vez  
     Serial.println("500 ,FORWARD, SINGLE");  
     break;  
     case('q'): //caso o botão Q for apertado   
     motor.step(200, BACKWARD, DOUBLE); //o motor fará 200 revoluções - para trás - energizando as duas bobinas   
     Serial.println("200, BACKWARD, DOUBLE");  
     break;  
     case('e'): //caso o botão E for apertado   
     motor.step(600, FORWARD, INTERLEAVE); //o motor fará 600 revoluções - para frente - intercalando as bobinas  
     Serial.println("600, FORWARD, INTERLEAVE");  
     break;  
     case('r'): //caso o botão R for apertado   
     motor.step(500, BACKWARD, MICROSTEP); //o motor fará 500 revoluções - para trás - em micropassos  
     Serial.println("500, BACKWARD, MICROSTEP");  
     break;  
     default: //teste para acionamento de qualquer outro botão errado  
     Serial.println("Error! Selecione os botões ");  
    }  
   }  
  }  


Vídeo:





Nenhum comentário:

Postar um comentário