Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Vinicius Martins Da Silva

Problemas com um programa de controle de motores

Recommended Posts

Olá, sou completamente novo na área e essa e minha primeira programação completamente original, poderiam me afirmar se há erros muito graves, e o que eu poderia fazer para consertar, já que na simulação no Proteus sempre ocorrem problemas.

 

 

 //Definicoes de Sistema
#define B1       RA0_bit
#define B2       RA1_bit
#define B3       RA2_bit
#define B4       RA3_bit
#define B5       RA4_bit
#define B6       RA5_bit

#define MotorCarEsq  RB0_bit
#define MotorCarDir  RB1_bit

#define MotorEstEsq  RB2_bit
#define MotorEstDir  RB3_bit

#define PrimEntrPasso RC0_bit
#define SeguEntrPasso RC1_bit
#define TercEntrPasso RC2_bit
#define QuarEntrPasso RC3_bit

#define FimCurso1     RD0_bit
#define FimCurso2     RD1_bit
#define FimCurso3     RD2_bit
#define FimCurso4     RD3_bit

void motorcarrinho();
void motorestrutura();
void motorpasso();


 //Inicializacao dos Pinos
void main() {
     //PINOS A
     PORTA = 0;
     TRISA = 0b11111111;

     //PINOS B
     PORTB = 0;
     TRISB = 0b00000000;

     //PINOS C
     PORTC = 0;
     TRISB = 0b00000000;

     //PINOS D
     PORTD = 0;
     TRISD = 0b11110000;
     //A/D
     ADCON1 = 0;
      
      //Voids do programa
      while(1)
      {
      void motorcarrinho();
      void motorestrutura();
      void motorpasso();
      }
      


}

//Controle do motor do carrinho

void motorcarrinho()
  {
    if (B1 == 1 && FimCurso1 == 0)
    {
      MotorCarEsq = 1;
      MotorCarDir = 0;
      MotorEstEsq = 0;
      MotorEstDir = 0;
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    else
    {
         MotorCarEsq = 0;
    }
    if (B2 == 1 && FimCurso2 == 0)
    {
      MotorCarDir = 1;
      MotorCarEsq = 0;
      MotorEstEsq = 0;
      MotorEstDir = 0;
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    else
    {
         MotorCarDir = 0;
    }
  }
//Controle do motor da estrutura
void motorestrutura()
  {
    if (B3 == 1 && FimCurso3 == 0)
    {
      MotorCarDir = 0;
      MotorCarEsq = 0;
      MotorEstEsq = 1;
      MotorEstDir = 0;
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    else
    {
      MotorEstEsq = 0;
    }
    if (B4 == 1 && FimCurso4 == 0)
    {
      MotorCarDir = 0;
      MotorCarEsq = 0;
      MotorEstEsq = 0;
      MotorEstDir = 1;
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    else
    {
      MotorEstDir = 0;
    }
  }

adicionado 15 minutos depois

Só modificando, eu resolvi ainda colocar um motor de passo usando o clock interno do PIC, aliás estou utilizando o PIC 16f887a.

 //Definicoes de Sistema
#define B1       RA0_bit
#define B2       RA1_bit
#define B3       RA2_bit
#define B4       RA3_bit
#define B5       RA4_bit
#define B6       RA5_bit

#define MotorCarEsq  RB0_bit
#define MotorCarDir  RB1_bit

#define MotorEstEsq  RB2_bit
#define MotorEstDir  RB3_bit

#define PrimEntrPasso RC0_bit
#define SeguEntrPasso RC1_bit
#define TercEntrPasso RC2_bit
#define QuarEntrPasso RC3_bit

#define FimCurso1     RD0_bit
#define FimCurso2     RD1_bit
#define FimCurso3     RD2_bit
#define FimCurso4     RD3_bit

#define delay (clock = 4000000)


void motorcarrinho();
void motorestrutura();
void motorpasso();


 //Inicializacao dos Pinos
void main() {
     //PINOS A
     PORTA = 0;
     TRISA = 0b11111111;

     //PINOS B
     PORTB = 0;
     TRISB = 0b00000000;

     //PINOS C
     PORTC = 0;
     TRISB = 0b00000000;

     //PINOS D
     PORTD = 0;
     TRISD = 0b11110000;
     //A/D
     ADCON1 = 0;
      
      //Voids do programa
      while(1)
      {
      void motorcarrinho();
      void motorestrutura();
      void motorpasso();
      }

}

//Controle do motor do carrinho

void motorcarrinho()
  {
    if (B1 == 1 && FimCurso1 == 0)
    {
      MotorCarEsq = 1;
      MotorCarDir = 0;
      MotorEstEsq = 0;
      MotorEstDir = 0;
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    else
    {
         MotorCarEsq = 0;
    }
    if (B2 == 1 && FimCurso2 == 0)
    {
      MotorCarDir = 1;
      MotorCarEsq = 0;
      MotorEstEsq = 0;
      MotorEstDir = 0;
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    else
    {
         MotorCarDir = 0;
    }
  }
//Controle do motor da estrutura
void motorestrutura()
  {
    if (B3 == 1 && FimCurso3 == 0)
    {
      MotorCarDir = 0;
      MotorCarEsq = 0;
      MotorEstEsq = 1;
      MotorEstDir = 0;
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    else
    {
      MotorEstEsq = 0;
    }
    if (B4 == 1 && FimCurso4 == 0)
    {
      MotorCarDir = 0;
      MotorCarEsq = 0;
      MotorEstEsq = 0;
      MotorEstDir = 1;
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    else
    {
      MotorEstDir = 0;
    }
  }
void motorpasso()
  {
    if (B5 == 1)
    {
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 1;
      
      delay_ms (100);
      
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 1;
      QuarEntrPasso = 0;
      
      delay_ms (100);
      
      PrimEntrPasso = 0;
      SeguEntrPasso = 1;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
      
      delay_ms (100);
      
      PrimEntrPasso = 1;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
      
    }
    else
    {
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
    if (B6 == 1)
    {
      PrimEntrPasso = 1;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
      
      delay_ms (100);
      
      PrimEntrPasso = 0;
      SeguEntrPasso = 1;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
      
      delay_ms (100);
      
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 1;
      QuarEntrPasso = 0;
      
      delay_ms (100);
      
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 1;
      
    }
    else
    {
      PrimEntrPasso = 0;
      SeguEntrPasso = 0;
      TercEntrPasso = 0;
      QuarEntrPasso = 0;
    }
  }
    

Compartilhar este post


Link para o post
Compartilhar em outros sites
Bommu Perneta    319

Está funcionando no real, mas no Proteus não está?

 

Se for o caso você tem que ir atrás do datasheet e ir configurando cada porta para ser digital e não analogicas e coisa do tipo quando a porta pode ser configurada com mais de uma possibilidade(analogia ou digital)... Tem lá umas configurações que não to vendo no teu código além de TRIS e PORT... tem outras funções também... se não definir o proteus, ainda mas os mais recentes dão problema mesmo...

 

Se não está funcionando nos dois casos, só descreve o que está acontecendo... o que deveria ocorrer e não ocorre que erro estranho está tendo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×