Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
,siempre queda prendido el led rojo
si queda en float y deberia quedarse apagado si no detecta señal.Si si claro ,y viendo el programa entiendo que no se deberia haber prendido ya que si no detecta frec queda en float ,no?
no, deberia funcionar conectado todo.el circuito lo tengo conectado como antes, solo le cambie la resist de 100k por la de 5k5 que va del pinA5 al punto donde se une el zener con la de 200k estos dos ultimos los arme en la protoboard ,y cambie la señal que antes tomaba del zener del regulador y la conecte en la fase ,sera que tengo que desconectar todo y solo dejar la señal y el neutro ?
algo anda raro, ¿verificaste que el valor del osccal este correcto?, si no lo tiene grabado empieza a hacer cosas raras el pic.Si tal cual, antes salia del zener de 20v a la resist de 100k .Ahora de la fase de 220v a la resist de 200k como el esquema del post#299 .
SI con todo apagado queda encendido el led rojo tambien
#include <12F675.h>
#device adc=10
#FUSES NOWDT, INTRC_IO, NOCPD, NOPROTECT, NOMCLR, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#bit Led=0x85.1
long Freqcount(void)
{int cycles8, cycles;
long freq;
cycles8=0x00;
cycles=0x00;
set_timer1(0);
setup_timer_1(T1_External|T1_Div_By_1);
while (cycles!=0xFF)
{cycles8=0x00;
while (cycles8!=0xFF)
{delay_cycles(0x09);
cycles8++;}
delay_cycles(0x55);
cycles++;}
delay_cycles(0x8D);
setup_timer_1(T1_Disabled);
freq=get_timer1();
return(freq);}
void main(void)
{long VD;
setup_adc_ports(sAN0|VSS_VDD);
setup_adc(ADC_Clock_Div_2);
setup_timer_0(RTCC_Internal|RTCC_Div_1);
setup_comparator(NC_NC);
setup_vref(false);
set_tris_a(0x29);
set_adc_channel(0);
output_low(pin_a4);
output_high(pin_a2);
output_float(pin_a1);
while (true)
{
VD=freqcount();
if (VD>=40) output_toggle(pin_a1); else output_float(pin_a1);
delay_ms(200);
}
}
#include <12F675.h>
#device adc=10
#FUSES NOWDT, INTRC_IO, NOCPD, NOPROTECT, NOMCLR, NOPUT, NOBROWNOUT
#use delay(clock=4000000)
#bit Led=0x85.1
int RPM=false;
const int FMax=60; //frecuencia maxima de corte en Hz
const int FTyp=50; //frecuencia tipica de operacion en Hz
const int FMin=45; //frecuencia minima de corte en Hz
const long Vmax=536; //Voltaje maximo de operacion en escala de 0 a 1024
const long VMin=488; //Voltaje minimo de operacion en escala de 0 a 1024
const long T_Auto=500; // tiempo que mantiene el campo activo en milisegundos
const int OF=2; // segundos fuera de frecuencia
long Freqcount(void)
{int cycles8, cycles;
long freq;
cycles8=0x00;
cycles=0x00;
set_timer1(0);
setup_timer_1(T1_External|T1_Div_By_1);
while (cycles!=0xFF)
{cycles8=0x00;
while (cycles8!=0xFF)
{delay_cycles(0x09);
cycles8++;}
delay_cycles(0x55);
cycles++;}
delay_cycles(0x8D);
setup_timer_1(T1_Disabled);
freq=get_timer1();
return(freq);}
void Turn_On()
{long VW=0;
long TO=0;
output_low(pin_a1);
output_high(pin_a4);
while (VW<Vmin&&TO<=T_Auto)
{VW=Read_Adc();delay_ms(1);TO++;}
output_low(pin_a4);
if (VW>=Vmin)
{output_low(pin_a2);RPM=True;}
else
{output_high(pin_a1);output_high(pin_a2);}
}
void Turn_Off(void)
{output_high(pin_a1);
output_high(pin_a2);
RPM=false;}
void main(void)
{long VD;
int COF=0;
setup_adc_ports(sAN0|VSS_VDD);
setup_adc(ADC_Clock_Div_2);
setup_timer_0(RTCC_Internal|RTCC_Div_1);
setup_comparator(NC_NC);
setup_vref(false);
set_tris_a(0x29);
set_adc_channel(0);
output_low(pin_a4);
output_high(pin_a2);
output_high(pin_a1);
delay_ms(100); //este es el retardo de inicio al encender el pic en milisegundos
while (true)
{VD=freqcount();
if (VD<=FMin||VD>=FMax)
{if (RPM==True)
{if (led==1) output_low(pin_a1); else output_float(pin_a1);
COF++;
if (COF>=OF) {Turn_Off();COF=0;}
}
}
else
{COF=0;
if (RPM==False)
{if (VD>=FTyp-1&&VD<=FTyp+1)Turn_On();}
else
{VD=Read_Adc();
if (VD>=VMin&&VD<=VMax) output_low(pin_a1); else output_high(pin_a1);}
}
}
}