Circuito detector de cruce por cero con moc

#1
Saludos, estoy realizando un proyecto en donde se regula la cantidad de voltaje que le llega a un motor de ac para variar su velocidad, para ello se conectara a 110 v 60 Hz y el control se realizará mediante un triac disparado en un cierto ángulo, accionado por un arduino. El caso es que no se como obtener una señal cuando haya un cruce por cero mediante un moc 4n32.
 
Última edición:
#2
Un moc es una cosa y el 4n32 es otra.

Imagino que quieres detectar el cruce por cero con el 4n32.

1.-Puedes usar un pequeño transformador para detecar el cruce por cero.
2.-Puedes usar el 4n32 /4n25 etc.. también.

Te adjunto un circuito con el 4n25(no darlington con el que propones) el cual utilizo para realizar el dimming de unas lamparas.

*Se ven 2 resistencias en paralelo,son de 1/2 watt cada 1 para poder disipar.Es la desventaja de ese circuito.

*El circuito no tiene red snuber porque solo uso carga resitiva,en tu caso será necesario,consta de agregar una red RC.

*No omitas el diodo D1 que protege al LED del opto.

Saludos!
 

Adjuntos

#4
Ese circuito da un flanco de subida en un paso por cero y uno de bajada en el siguiente.
Si quieres un pulso por paso por cero usa un puente rectificador
 
#8
que tal,


Pues aprovecho que esta al día este tema, tengo que hacer un detector de cruce por cero, no me gustaría solo copiar el cto que esta aquí y entregarlo sino que me encantaría saber como funciona y sentirme parte del diseño, ya lo simule y todo bien me sale precisamente la misma onda en la imagen que puso Fogonazo, solo que como que los cálculos no me dan....
:confused:

según lo que vi en esta pagina el calculo para saber la corriente es la sig Formula aunque la verdad no se porque lo divide entre 16 :unsure:





PERO SEGUN YO SERIA ALGO ASI

VR= VP - (VD1+VD2+VD3)

I= VR / R




si estoy mal con toda confianza corriganme,

otra cosita.....
el transistor comenzará a conducir cuando el nivel de Tension se acerque a cero asi que no precisamente se disparara cuando sea cero esto lo podria mejorar agregando una histeresis ????


De Ante mano Gracias Saludos Cordiales (y)


PD: SI la manera de preguntar mi duda no es la correcta les pido que me lo hagan saber y con gusto hare lo posible por mejorar.....
 
#10
La salida del optoacoplador no será senoidal ni por asomo.
El transistor conduce siempre menos en el paso por cero, por eso la salida es siempre "0" lógico menos en el paso por cero que es "1" lógico.
La idea es que el transistor se sature siempre que V no sea 0
 
#11
Gracias Digito si es casi similar solo que se agrega una resistencia me gustaría saber como se hace el analisis del cto porque simulado antes de la entrada al LED del Optoacoplador me da como 2volts y ayer que medi ese mismo nodo con un multimetro(Tester) me daba 1.2volts me paso un pequeño accidente con el diodo porque cheque con el osciloscopio la salida del puente rectificador y la referencia de la sonda lo puse al lado negativo del puente y PUUUUF!!! se le salio el humo al diodo, aun estoy averiguando porque jeje


El transistor conduce siempre menos en el paso por cero, por eso la salida es siempre "0" lógico menos en el paso por cero que es "1" lógico.

Gracias Scooter por la pronta respuesta:
Ok, ahora ya lo veo el transistor mientras este saturado entregara un 0 porque se cierra el circuito y se drena la corriente obviamente limitada por la resistencia y cuando esta en corte tengo los 5volts cierto?? Muchas Gracias

Sobre el análisis alguna idea de porque me da esa tensión?
en si quiero saber porque aunque le meti los 110v de la linea no se trono el Opto...

se que despues del primer Diodo voy a tener solo medio ciclo pero aun asi es una tension muy grande, es por la resistencia ? funciona como un divisor ? cómo es que se analiza?, segun yo debo tomar el valor pico de la onda pero no se si debo tomar el valor promedio...

En verdad estoy confundido :confused:

Gracias Saludos Cordiales!
 
#12
jeje pues creo que si era como pensaba lo simule y lo probé y los cálculos si me dan, Gracias!

ahora lo que quiero ver es de que manera ademas de poner resistencias en paralelo puedo reducir el desperdicio de tanta potencia.
Saludos Cordiales,
 

Fogonazo

Exorcista & Moderador eventual
#13
jeje pues creo que si era como pensaba lo simule y lo probé y los cálculos si me dan, Gracias!

ahora lo que quiero ver es de que manera ademas de poner resistencias en paralelo puedo reducir el desperdicio de tanta potencia.
Saludos Cordiales,
OJO al piojo, se pueden evitar las resistencias colocando un capacitor de unos 100/150 nF, si bien esta configuración disipa una potencia mínima "NO" sirve para esta función, ya que el capacitor agrega un error por desfasaje en la detección del cruce por 0
 
#15
Saludos, estoy realizando un proyecto en donde se regula la cantidad de voltaje que le llega a un motor de ac para variar su velocidad, para ello se conectara a 110 v 60 Hz y el control se realizará mediante un triac disparado en un cierto ángulo, accionado por un arduino. El caso es que no se como obtener una señal cuando haya un cruce por cero mediante un moc 4n32.

Saludos,

No se que necesidad de diseño tengas en integrar el optoacoplador al circuito que deseas, si estuviera en tu lugar dejaria el optoacoplador solo para la etapa de salida y no en la entrada del cruce por cero, eso lo logras con un Amp. O. como comparador, la referencia de LM339 es un comparador por naturaleza, de hecho en su datasheet proponen circuitos comparadores e incluso directamente detector de cruce por cero.

Este circuito adopta tu necesidad como lo has descrito:
http://www.onsemi.com/pub_link/Collateral/AND8011-D.PDF

Como lo puedes notar hay una referencia especial de diodo (MUR160), si no consigues comercialmente ese semiconductor puedes optar con uno de caracteristicas similares, no es critica la elección de ese diodo, pero indudablemente si es necesario que sea de "INMEDIATO TIEMPO DE RECUPERACIÓN", es decir, un tiempo de recuperación no mayor a 75 nanosegundos en sus peores condiciones. Otras referencias que podrian servir aunque con diferente encapsulado son: MUR1510, 1515, 1520, 1540, 1560, MURF1560, SUR81520, SUR81560.

Ahora bien, si piensas utilizar un dispositivo programable, como un microcontrolador, DSP, DSPic, Tarjeta de adquisición de datos, o bien una tarjeta de desarrollo, entonces si es recomendado el detector de cruce por cero aislado, el circuito propuesto por el usuario "digito" es una excelente alternativa para conseguir el objetivo, particularmente lo utilizo con frecuencia sin tener problemas, claro que yo a dicho circuito le añado en la salida un circuito integrado schmitt-trigger invertido (inversor) recomendablemente de tecnologia cmos, el IC 74HC14 cumple con esos parametros, la razón es que ademas de invertir la señal en la salida del optoacoplador (especificamente un OPTO-TRANSISTOR), tambien le dara niveles logicos validos en todo momento al dispositivo de control y como ventaga adicional tambien lo protegera.

En esta imagen observaras la señal de entrada senoidal (verde), la señal de salida del optotransistor NPN (amarillo)y la señal de salida del schmitt-trigger (azul).



Como veras, la señal de salida es opuesta y con niveles logicos apropiados para un dispositivo de programación.

Espero haberles colaborado.

Saludos.

 
Última edición:
#16
Muchas Gracias De verdad aprecio tu respuesta tan elaborada y notablemente fundamentada.

No se que necesidad de diseño tengas en integrar el optoacoplador al circuito que deseas
Mi necesidad es simplemente entregar un circuito que detecte el cruce por cero de la señal a donde lo conecte, en mi caso 120Vac / 60Hz y que en la salida me entregue niveles TTL cada vez que cruce por cero, decidí tomar el estado alto por eso la resistencia Pull - up, esa es realmente mi necesidad pero me gustaria ir mas alla de lo que pide el profesor y entender y tal vez diseñar algo mejor.

El optoacoplador lo elegí simplemente por comodidad y por que a mi parecer es el circuito mas simple y entendible ya que mis conocimientos sobre Opamp´s son realmente básicos o bien, nulos (n) (Lo se, tengo que mejorar y pronto me daré ese tiempo)
a mi entender si quisiera utilizar un Opamp requiero de un -Transformador- para reducir el nivel de Tensión en la entrada no inversora, y aquí viene una pregunta ¿el transformador puede desfasar la señal? si es así estaría sincronizando el detector cruce por cero pero respecto a la señal desfasada saliente del transformador, y si en un futuro quisiera detectar el cruce por cero para poder controlar el disparo de un puente de Tiristores por ejemplo, ¿no estaría entonces disparando con un error de desfazamiento?

Por eso opte por solo utilizar un optoacoplador con una resistencia en serie para que en esta se caiga la tension sobrante, el problema como te imaginarás es que la resistencia se calienta y para mi es un desperdicio innecesario de energía,
yo a dicho circuito le añado en la salida un circuito integrado schmitt-trigger invertido (inversor) recomendablemente de tecnologia cmos, el IC 74HC14
como lo mencionas, lo más probable es que la señal de salida del detector lo utilice para ingresarla a un dispositivo programable(micro) por lo que la idea de agregar un dispositivo con niveles lógicos estandarizados me agrada, desconozco la ventaja de utilizar CMOS a TTL, para mi el TTL es mejor y mas sencillo(enseguida comienzo a investigar sobre la diferencia TTL a CMOS) aunque creo que también se podría agregar un capacitor para lograr como lo muestras en la gráfica un cierto ciclo de servicio del pulso de salida.

En verdad agradezco tu respuesta e interés
Saludos Cordiales!!!
 
#17
saludos chicos he leido y visto sus comentarios y circuitos y tengo un problema similar, quiero adoptar el opto como comparador, quiero decir que me mande la señal al pic cuando en una entrada de 220v ac este en 0 no logro o un voltaje menor para que me mande señal al pic como 0 no se si me puedan ayudar se los agradezco
 
#19
Buenos días.

Les escribo porque tengo dos problemas para el control de disparo de un TRIAC.
Adjunto la imagen donde encontramos un detector de cero y 2 triacs.
Tras hacer pruebas (fisicamente) detecta el paso por cero, pero no me activa la salida del triac. Lo he revisado varias veces y no consigo ver el error.
Los TRIACS estan conectados de manera que las A1 estarían con la R1(J6) o R2(J16) y la A2 con F(J2)
(El H11AA1 entre A y K no es un diodo, es un DIAC)
¿ Alguien podría ayudarme?


. imagen TRIAC.PNG
La segunda duda es: como podría controlar el segundo triac en este código de manera que sea independiente al otro TRIAC?
Código:
// AC Control V1.1
//
// This Arduino sketch is for use with the heater
// control circuit board which includes a zero
// crossing detect function and an opto-isolated TRIAC.
//
// AC Phase control is accomplished using the internal
// hardware timer1 in the Arduino
//
// Timing Sequence
// * timer is set up but disabled
// * zero crossing detected on pin 2
// * timer starts counting from zero
// * comparator set to "delay to on" value
// * counter reaches comparator value
// * comparator ISR turns on TRIAC gate
// * counter set to overflow - pulse width
// * counter reaches overflow
// * overflow ISR turns off TRIAC gate
// * TRIAC stops conducting at next zero cross


// The hardware timer runs at 16MHz. Using a
// divide by 256 on the counter each count is
// 16 microseconds.  1/2 wave of a 60Hz AC signal
// is about 520 counts (8,333 microseconds).


#include <avr/io.h>
#include <avr/interrupt.h>

#define DETECT 6  //zero cross detect
#define GATE 7    //TRIAC gate
#define PULSE 4   //trigger pulse width (counts)
int i=483;

void setup(){

  // set up pins
  pinMode(DETECT, INPUT);     //zero cross detect
  digitalWrite(DETECT, HIGH); //enable pull-up resistor
  pinMode(GATE, OUTPUT);      //TRIAC gate control

  // set up Timer1
  //(see ATMEGA 328 data sheet pg 134 for more details)
  OCR1A = 100;      //initialize the comparator
  TIMSK1 = 0x03;    //enable comparator A and overflow interrupts
  TCCR1A = 0x00;    //timer control registers set for
  TCCR1B = 0x00;    //normal operation, timer disabled


  // set up zero crossing interrupt
  attachInterrupt(0,zeroCrossingInterrupt, RISING); 
    //IRQ0 is pin 2. Call zeroCrossingInterrupt
    //on rising signal

}

//Interrupt Service Routines

void zeroCrossingInterrupt(){ //zero cross detect 
  TCCR1B=0x04; //start timer with divide by 256 input
  TCNT1 = 0;   //reset timer - count from zero
}

ISR(TIMER1_COMPA_vect){ //comparator match
  digitalWrite(GATE,HIGH);  //set TRIAC gate to high
  TCNT1 = 65536-PULSE;      //trigger pulse width
}

ISR(TIMER1_OVF_vect){ //timer1 overflow
  digitalWrite(GATE,LOW); //turn off TRIAC gate
  TCCR1B = 0x00;          //disable timer stopd unintended triggers
}

void loop(){ // sample code to exercise the circuit

i--;
OCR1A = i;     //set the compare register brightness desired.
if (i<65){i=483;}                   
delay(15);                           

}
Muchas gracias,
Un saludo.
 
Última edición:
#20
Ese detector de paso por cero se quemó en el primer semicicloque le entró al revés.
Y si no se quemó es que tiene un led mágico o algo así...
Puedes usar un PC814 que lleva dos diodos en antiparalelo y dará pulsos en cada semiciclo.
 
Arriba