Sensor de Tensão.

Olá pessoal,
Sou novo por aqui e esse forum ja me ajudou em muita coisa, gostaria primeiramente de agradecer a os usuarios de luz que estão de plantão ai sempre tentando ajudar os que ainda estão a procura dela(da luz), kkkk, brincadeira.
Bom...Estou fazendo um circuito que reconheça se tem tensão na tomada, é bem simples e só serve para me dizer se tem ou não tem tensão. Pra que? circuito triway, iria fazer um rele ligado ao pic ligar e desligar a luz, mas não queria tirar essa função do interruptor manual tambem. Acontece que funcionaria com os dois, o problema é que não consigo ver pelo pic quando a luz ta ligada, pois, se eu ligar o relé e desligar o interruptor, para o pic a luz vai ta ligada mas o interruptor deixa a mesma desligada. Espero que eu tenha conseguido me explicar, risos.
Achei na internet alguns circuitos e optei por um transformador sem trafo com ponte de diodos e zener, nele, tenho a saida de 5v quando o circuito está ligado e 3.2 quando ta desligado(Desce para zero muito devagar e mesmo com o resistor continua descendo devagar, então estipulei esse nivel de tensão(3.2) como sendo o de desligado, pois, vai funcionar instantaneamente sem eu precisar que o resistor consuma a carga do capacitor).
Fiz tudo certo, o circuito realmente entrega os 5v, até mais um pouco, 5.16, e mando isso para a entrada analogica do pic. Então o Pic vai ver, se tiver mais de 3.8 é pq a luz ta lgada, else, vcs ja sabem.
É só isso!.
Qual o problema?
O pic ta travando quando eu coloco a referencia analogica(o fio do transformador sem trafo).
Minha ligação ta ligando o positivo na entrada analogica e o negativo junto com o negativo da fonte que alimenta o pic no protoboard.
Talvez o erro esteja no codigo. Vcs podem analisar para mim?
Espero contar com a ajuda de vocês,
Obrigado!
Nectar.
Sou novo por aqui e esse forum ja me ajudou em muita coisa, gostaria primeiramente de agradecer a os usuarios de luz que estão de plantão ai sempre tentando ajudar os que ainda estão a procura dela(da luz), kkkk, brincadeira.
Bom...Estou fazendo um circuito que reconheça se tem tensão na tomada, é bem simples e só serve para me dizer se tem ou não tem tensão. Pra que? circuito triway, iria fazer um rele ligado ao pic ligar e desligar a luz, mas não queria tirar essa função do interruptor manual tambem. Acontece que funcionaria com os dois, o problema é que não consigo ver pelo pic quando a luz ta ligada, pois, se eu ligar o relé e desligar o interruptor, para o pic a luz vai ta ligada mas o interruptor deixa a mesma desligada. Espero que eu tenha conseguido me explicar, risos.
Achei na internet alguns circuitos e optei por um transformador sem trafo com ponte de diodos e zener, nele, tenho a saida de 5v quando o circuito está ligado e 3.2 quando ta desligado(Desce para zero muito devagar e mesmo com o resistor continua descendo devagar, então estipulei esse nivel de tensão(3.2) como sendo o de desligado, pois, vai funcionar instantaneamente sem eu precisar que o resistor consuma a carga do capacitor).
Fiz tudo certo, o circuito realmente entrega os 5v, até mais um pouco, 5.16, e mando isso para a entrada analogica do pic. Então o Pic vai ver, se tiver mais de 3.8 é pq a luz ta lgada, else, vcs ja sabem.
É só isso!.
Qual o problema?
O pic ta travando quando eu coloco a referencia analogica(o fio do transformador sem trafo).
Minha ligação ta ligando o positivo na entrada analogica e o negativo junto com o negativo da fonte que alimenta o pic no protoboard.
Talvez o erro esteja no codigo. Vcs podem analisar para mim?
- Código: Selecionar todos
void main()
{
Long Int tensao;
float temporario;
setup_adc_ports(AN0|VSS_VDD);
setup_adc(ADC_CLOCK_INTERNAL);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
delay_ms(2000);
while(true) {
output_high (pin_D1); //isso aqui é só para eu ver que ele ainda não travou
delay_ms(1000); //isso aqui é só para eu ver que ele ainda não travou
SET_ADC_CHANNEL(0);
delay_ms(10);
tensao = READ_ADC(7);
temporario = tensao * 0.0048828125;
if(temporario<=3.2)
{
output_low(PIN_D0);
delay_ms(2000);
}
if(temporario>3.2)
{
output_high (pin_D0);
delay_ms(2000);
}
output_low (pin_D1);
delay_ms(1000);
}
}
Espero contar com a ajuda de vocês,
Obrigado!
Nectar.