# Detector de cruce por cero con pic 16F877A para X10



## reyes33d88 (Abr 10, 2012)

Que tal amigos, reciban un cordial saludo, necesito hacer un detector de cruce por cero para un sistema X10, es para mi tesis, no tengo mucha experiencia programando pics, he leido que se puede lograr con una resistencia de 5M conectada al RB0, y con una interrupcion, pero no se como hacer esto, alguno de ustedes puede ayudarme?, muchas gracias, saludos!!!


----------



## kuropatula (Abr 10, 2012)

Hola! 
Hay muchas formas de hacerlo, la que decís vos es muy buena.
Con la resistencia, mas los diodos que están dentro del PIC, haces que la onda senoidal se transforme en una cuadrada. Ahí con el PIC y la interrupción, detectas cada flanco de subida y de bajada los cuales se corresponden con el momento del cruce por cero.

Si no me equivoco, cada vez que salte la interrupción, vas a tener que cambiar el bit que hace que la interrupción se ejecute en el flanco de subida por el de bajada y así sucesivamente.

Saludos!


----------



## ivankr (Abr 10, 2012)

Hola, primero te recomiendo que aprendas "C" para programar los pics, es lo mejor. Yo me bajé el libro de Kernighan y Ritchie, "El lenguaje de programación C" y después me bajé un manual en pdf del programa que usé que es el pic C compiler. Buscá ejemplos de programas en la web para ir viendo en conjunto como se arman. 
  Yo hice un proyecto similar para la facu, y el cruce por cero lo podés hacer en varios de los pines del puerto B con una resistencia de varios mega directo a la red. Mi programa censaba en todo momento el estado del pin y así sabía cuando se producía el cruce por cero. Cualquier cosa chiflá y veo en que puedo ayudarte. Saludos!


----------



## reyes33d88 (Abr 10, 2012)

Entiendo el concepto, pero no se como hacerle, pudieras dejarnos el link del libro que mencionan?, saludos!!


----------



## automatica (Jun 18, 2012)

reyes33d88 dijo:


> Que tal amigos, reciban un cordial saludo, necesito hacer un detector de cruce por cero para un sistema X10, es para mi tesis, no tengo mucha experiencia programando pics, he leido que se puede lograr con una resistencia de 5M conectada al RB0, y con una interrupcion, pero no se como hacer esto, alguno de ustedes puede ayudarme?, muchas gracias, saludos!!!



Esta es una parte de mi soft que realiza lo que necesitás, edité algunas partes ya que es un soft comercial con copyright.
Espero te sirva la subrutina de atención de la interrupción, esta en Mikrobasic pro y es para un PIC12F675 o 629
slds...


""""""
sub procedure interrupt
* if (intcon.intf)=1 then*
*option_reg.INTEDG = not (option_reg.intedg)*
                 xxxxx=xxxxxx
                 intcon.t0ie=1
*intcon.intf=0* 
                end if
             if (intcon.t0if)=1 then
                 if xxxxxx=1 then
                       xxxxx=1
                       delay_us (xxxxx)
                       xxxxx=0
                       intcon.t0if=0
                 else
                      xxxxx=0
                      intcon.t0if=0
                 end if
              end if
        end sub

""""""


----------



## reyes33d88 (Sep 27, 2012)

Hice este codigo, pero no se si está bien, que me dicen de el?
#include "16F877A.H"
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) 
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)

void ISR() 
{ 
setup_timer_2(T2_DIV_BY_1, 41, 1);
} 
void main() 
{ 
int16 duty_PWM1;
set_tris_b(0x01); 
duty_PWM1 = 0x0053;///PWM AL 50%
setup_ccp1 (CCP_PWM);
set_pwm1_duty(duty_PWM1);
ext_int_edge(H_TO_L); // 
enable_interrupts(INT_EXT); 
enable_interrupts(GLOBAL); 
while (true) 
{ 

} 
}


----------



## josb86 (Sep 27, 2012)

hola mira


http://www.sc.ehu.es/sbweb/electronica/elec_basica/tema7/Paginas/Pagina9.htm







"Con esto se detecta el paso por cero. Además de aislar el circuito de la red.Resumiendo: Este circuito es un detector de paso por cero y además está aislado de la red.  
"


----------



## reyes33d88 (Sep 28, 2012)

Muchas gracias amigo, voy a checarlo


----------



## sjuan (Sep 29, 2012)

talvez, pero te equivocaste en la señal de salida, si la rectificas con los diodos y luego la pasas al opto, vas a tener una señal de continua, y que cae hasta un cierto valor, que no es necesariamente cero, depende de la resistencia que pongas como pull up y de las resistencia del fototransistor, o eso creo. saludos.


----------



## reyes33d88 (Sep 29, 2012)

Entonces, al opto se mete la señal sin rectificar?


----------



## Fogonazo (Sep 29, 2012)

reyes33d88 dijo:


> Entonces, al opto se mete la señal sin rectificar?



Se le aplica la señal rectificada (Onda completa) pero *sin filtrar*.
El LED del opto recibe pulsos de CC.

​


----------

