Fork me on GitHub

05/09/12

Projeto 4: Step Motor (Motor de Passo)

Acionamento de Motor de Passo
(Step Motor)

Este código foi escrito para o microcontrolador PIC16F628A em C para o compilador MikroC PRO PIC que pode ser baixado neste blog. O motor de passo utilizado deve ser do tipo unipolar com 5 ou 6 fios. O sinal para o motor sai da PORTB e deve ser utilizado um transistor de potência (TIP122) na saída. Na PORTB temos duas chaves, uma em PORTB.7 que gira o motor em um sentido e a outra em PORTB.6 que gira o motor em outro sentido. Veja o esquema abaixo:

Esquema:


DOWNLOAD:
Firmware - stepmotor.hex;
Código-Fonte - stepmotor.asm;


CÓDIGO-FONTE:

unsigned char motor;
int Out[4] = {0xFC,0xF6,0xF3,0xF9};
void main() {
TRISB=0b11110000;
motor=0;
    while(1){
    if(PORTB.F7==1 && PORTB.F6==0){
        motor++;
        if(motor==4){
         motor=0;
         }
        PORTB=Out[motor];
      }
      else if(PORTB.F7==0 && PORTB.F6==1){
           motor--;
           if(motor==255){
            motor=3;
            }
            PORTB=Out[motor];
      }
      else{
         PORTB=0;
         }
delay_ms(100);
  }
 }



TIPOS DE MOTOR DE PASSO

TIPOS DE LIGAÇÕES

5 comentários:

  1. Olá, não entendi o: if(motor==255){
    motor=3; E se fosse para duas voltas, como seria o código ? Me desculpe se estou sobrando.

    ResponderExcluir
    Respostas
    1. caso 'motor' seja igual a 0, ao decrementá-lo, seu valor será 255.

      Excluir
    2. Valeu Tiago, estou tentando criar um código para ele girar apenas 02 voltas e por enquanto estou tentando entender seu código que está enxuto e muito bom. Esse valor 255 é valor máximo do binário ? estava pensando que para atingir o 255 teria que incrementar... Valeu.

      Excluir
  2. Ola amigo, como faço para que, quando clicado o botão o motor gire 360 graus e pare ? Obrigado

    ResponderExcluir
  3. Alguém tem um codigo usando timer0 no CCS para o controle de motor de passo unipolar

    ResponderExcluir

Postagens Relacionadas!!