Ir ao conteúdo
  • Cadastre-se

gbarrosp7

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Reputação

0
  1. Estou fazendo um projeto para controlar um motor cc por pwm, que será programado em um MC HCS08, e para medir a rotação usarei um encoder. A velocidade desejada será setada através de potenciômetro e um botão. Estou tendo dificuldades para trabalhar com o encoder, segue o código que fiz: #include <hidef.h> /* for EnableInterrupts macro */ #include "derivative.h" /* include peripheral declarations */ char FlagIrq=1; int voltas=0; int passo =0; int rpm=0; void interrupt isr_irq(void); void Delay(long); void main(void) { PTAPE = 0xFF; // Liga resistores Pull ups da porta A PTBPE = 0xFF; // Liga resistores Pull ups da porta B SOPT1_COPE=0; // Desabilita módulo COP (WDT) IRQSC_IRQPE=1; //Liga o pino PTA5 como interrupção IRQSC_IRQPDD=0; //Mantém o resistor Pull up no pino IRQ IRQSC_IRQMOD=0; //Seleciona IRQ por borda de descida IRQSC_IRQIE=1; //Habilita parcialmente a interrupção IRQ _asm CLI; //Habilita globalmente as interrupções PTBDD_PTBDD6 = 1; // Configura PTB6 como saída (LED1) PTBDD_PTBDD7 = 1; // Configura PTB7 como saída (LED2) for(;;) // Início do loop eterno { if(!FlagIrq) { passo ++; } voltas = passo/20; Delay(10000); // atraso aproximado 1 segundo rpm = voltas/60; if (rpm >=300) { PTBD_PTBD6 = 1; // Desliga o LED1 PTBD_PTBD7 = 0; // Liga o LED2 } else { PTBD_PTBD6 = 0; // Liga o LED1 PTBD_PTBD7 = 1; // Desliga o LED } } // Fim do loop eterno } void Delay(long t) { while (t--) continue; } void interrupt isr_irq(void) { IRQSC_IRQACK=1; // Limpa flag do IRQ FlagIrq = !FlagIrq; } A ideia é : o disco do encoder tem 20 furos, então a cada 20 pulsos será contada uma volta, após 1s quando dividir o numero de voltas por 60 eu teria o valor em rpm, mas não está funcionando. Componentes usados : https://www.eletrogate.com/sensor-de-velocidade-encoder https://produto.mercadolivre.com.br/MLB-960364033-roda-pneu-motor-dc-3-a-6v-com-reducao-robotica-arduino-_JM

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...