Hola a todos. Estoy tratando de hacer un limitador de rpm, usando un pic, pero se me complico. Aca les mando el programita.
#include <12f675.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=8000000)
unsigned int command;
#define sw1 PIN_A0 //señal de bobina//
#define sw2 PIN_A2 //señal de corte al rele o 555//
main() {
long n=0;
long u=0;
long res=0;
long rpm=0;
int pote=0;
long limite=0;
setup_port_a( ALL_ANALOG );
setup_adc( ADC_CLOCK_INTERNAL );
set_adc_channel(1); // potenciometro en el pin_A1
pote=Read_ADC();
limite=pote*10;
while (1) { //conteo de rpm
n=0;
u=0;
while (input(sw1));
while (!input(sw1));
while (input(sw1)) {
u=u+1;
delay_us(6);
}
while (!input(sw1)) {
n=n+1;
delay_us(6);
}
res=n+u;
rpm=6000000/res;
if (rpm>limite)output_high(sw2);
if (rpm<limite)output_low(sw2);
}
}
Mi error en primer lugar es no haber estudiado, y con respecto al programa es que no se si cuento bien las rpm y como esta seteado la entrada analogica.
Disculpen mi ignorancia y muchas gracias.
#include <12f675.h>
#fuses XT,NOWDT,NOPROTECT
#use delay(clock=8000000)
unsigned int command;
#define sw1 PIN_A0 //señal de bobina//
#define sw2 PIN_A2 //señal de corte al rele o 555//
main() {
long n=0;
long u=0;
long res=0;
long rpm=0;
int pote=0;
long limite=0;
setup_port_a( ALL_ANALOG );
setup_adc( ADC_CLOCK_INTERNAL );
set_adc_channel(1); // potenciometro en el pin_A1
pote=Read_ADC();
limite=pote*10;
while (1) { //conteo de rpm
n=0;
u=0;
while (input(sw1));
while (!input(sw1));
while (input(sw1)) {
u=u+1;
delay_us(6);
}
while (!input(sw1)) {
n=n+1;
delay_us(6);
}
res=n+u;
rpm=6000000/res;
if (rpm>limite)output_high(sw2);
if (rpm<limite)output_low(sw2);
}
}
Mi error en primer lugar es no haber estudiado, y con respecto al programa es que no se si cuento bien las rpm y como esta seteado la entrada analogica.
Disculpen mi ignorancia y muchas gracias.