sábado, 1 de julho de 2017

Motor de passo Bipolar - no CCS



Olá pessoal que acompanha o blog, hoje temos mais uma postagem do senhor Renato Lôbo Rodrigues,e neste exemplo será demonstrado como acionar um motor de passo por fase.

lista de peças para montagem em bancada:


- matriz de contatos pequena
- pic12F675, microcontrolador da Microchip
- 2 resistor de 10k para pull-up dos botões
- 2 botões de pressão
- 1 capacitor de acoplamento 104
- cabinhos para ligações dos componentes
- fonte de 5V 2A.
- Uma ponte H L298
- Motor de passo pequeno de 1A por fase

O código fonte:


///////////////////////////////////////////////////////////////////////
//              Projeto: Motor de passo Bipolar                      //
//                 Nome: Renato Lôbo Rodrigues                       //
//                 Data: 28/06/17                                    //
//                Email: lobosoft@oi.com.br                          //
///////////////////////////////////////////////////////////////////////

#include <12F675.h>        // inclusão do pic em questão
#OCS 4 MHz                 // oscilador 4.000.000 herts
#use fast_io(A)            // O método rápido de fazer E/S

//Configura os fusiveis
#fuses NOWDT
#fuses PUT
#fuses NOBROWNOUT
#fuses NOMCLR
#fuses INTRC_IO
#fuses PROTECT
//=======================================================================
//Definições de variaveis globais
//=======================================================================

#bit pulso = 0x05.2        //define pino A2 para pulso do motor
#bit dir   = 0x05.3        //define pino A3 para direção de rotação


#bit A     = 0x05.0        // define pino A0 para motor terminal A
#bit B     = 0x05.1        // define pino A1 para motor terminal B
#bit C     = 0x05.4        // define pino A2 para motor terminal C
#bit D     = 0x05.5        // define pino A3 para motor terminal D

#byte tris_portA = 0x85    // direção dos pinos do portA

int8 i = 0;              // variável i(indice) do tipo inteiro 8 bits 

//=======================================================================

void motor()               //função para girar o motor de passo Bipolar
{
   if (i<1) i=4;           //se i é menor que 1 então i = 4
   if (i>4) i=1;           //se i é maior que 4 então 1 = 1
   switch(i)               
   {
      case 1:A=1;B=0;C=0;D=1; break;    //1001
      case 2:A=0;B=1;C=0;D=1; break;    //0101
      case 3:A=0;B=1;C=1;D=0; break;    //0110
      case 4:A=1;B=0;C=1;D=0; break;    //1010
   }
}

void main()//Rotina principal do programa
{
   tris_portA = 0b00001100; //pinos A2 e A3 como entrada e o restante como saida
   While(true)              //loop infinito
   {
      if(!pulso)                 //se pulso é verdadeiro
      {
         if(dir) i++; else i--;  //igual a um: roda num sentido senão no outro sentido
         motor();                //vai para função motor()
         delay_us(800);          //800 microsegundos / simulação: 80 milesegundos
      }
   }
}//Fim de programa

A simulação:

Vídeo com o protótipo funcionando:





Nenhum comentário :

Postar um comentário

olá,digite aqui seu comentário!