Detección de cruce por cero

Estoy haciendo un circuito que controla una carga para TRIAC, con cero detección. Cada vez que probaba el circuito, independientemente de lo que estaba enviando desde el microcontrolador, TRIAC siempre enviaba toda la corriente a la carga.

Circuito

Cuando miré un osciloscopio para la detección de cero, me di cuenta de que solo detecta cero una vez en una onda completa (no dos). Investigué el componente que estaba usando y noté que el 4N35 solo tiene un LED, así que como no estaba rectificando mi onda antes, solo estaba detectando la parte positiva de la onda.

No encuentro ningún circuito integrado que tenga dos LEDs en mi ciudad, así que decidí cambiar el software. Esta es la función que he estado usando cuando detecta la interrupción:

 int dimtime = (65*dimming);    // For 60Hz => 65    
  usleep(dimtime);    // Wait for start TRIAC
  digitalWrite(AC_LOAD1, HIGH);   // Start TRIAC
  usleep(8.33);       // Delay TRIAC
  digitalWrite(AC_LOAD1, LOW);    // Turn off

Este 65 vino de: 1 onda completa de 60Hz = 1/60 = 16.6ms Alcanzará el punto cero en: (60Hz) -> 8.3ms (1/2 ciclo) 8,3ms = 8300us (8300us - 8.33us) / 128 = 65 (aprox.) (y 128 fue la cantidad de pasos que dividí)

En mi país tengo 220V y 60Hz para AC.

Mi pregunta es: ¿cómo puedo cambiar mi código para controlar TRIAC detectando cero solo en el lado positivo de la onda? ¿Es posible?

Con este código por ahora, cuando envío 128, simplemente deja pasar la onda por completo, y cuando digo 2, por ejemplo, la onda de salida sale todo "mal", sin seguir la onda de CA.

si mcu admite la detección de flanco ascendente y descendente, no se necesitan modificaciones adicionales. en subida detectaría la primera media fase, en bajada, la 2ª.
si no es posible la detección de ambos bordes, inicie un temporizador en el primer zcd, mientras se desborda a 8,3 ms, se producirá el zcd del software de la segunda mitad de la fase

Respuestas (3)

No hay necesidad de software complicado.

esquemático

simular este circuito : esquema creado con CircuitLab

Figura 1. Reemplazar D2 con un puente rectificador encenderá el optoaislador en semiciclos de red tanto positivos como negativos.

Su valor de 59k para la resistencia limitadora de corriente, R5, parece sospechosamente bajo. Debe verificar sus cálculos para esto y la potencia nominal. La mayoría de las resistencias de película metálica o de carbono solo están clasificadas para 200 V aproximadamente. Su red eléctrica de 220 V alcanzará su punto máximo en 220 2   V por lo que es habitual utilizar dos resistencias en serie para compensar el valor requerido.


esquemático

simular este circuito

Figura 2. Se podría montar un segundo 4N35 sobre el existente. Tenga en cuenta que los terminales LED requieren un cruce.

Sí, esta es totalmente la mejor solución... Pero lo creas o no, este circuito ya está en PCB (no sé cómo, funcionó por primera vez en protoboard, pero cuando pasé a PCB, ya no funcionó) Así que eso es ¿Por qué estoy intentando la forma "más fácil" posible de arreglar esto?
Ver la actualización.
¡Esta es una gran idea! ¡Gracias! Primero probaré el software uno, pero si no funcionó, este es el mejor. ¡Muchas gracias!

Los triacs no se pueden apagar a través de la puerta. Puede apagar la corriente de la compuerta, pero el Triac solo se apagará solo cuando la corriente de retención a través de los terminales MT1-MT2 pase el (actual) cruce por cero.

Lo que tienes que hacer en tu rutina de interrupción es:

--- Ahora estamos en el cruce por cero de negativo a positivo

  1. Espera el tiempo del ángulo
  2. Encienda la corriente de la puerta
  3. Espere 100 µs para que el Triac pueda reaccionar a la corriente de la puerta.
  4. Apague la corriente de la puerta
  5. Espere el tiempo de ángulo de 8,33 ms-100 µs

--- Ahora estamos en el cruce por cero de positivo a negativo

  1. Espera el tiempo del ángulo
  2. Encienda la corriente de la puerta
  3. Espere 100 µs para que el Triac pueda reaccionar a la corriente de la puerta.
  4. Apague la corriente de la puerta
  5. Interrupción final.
@Janka Hay Triacs de apagado de puerta, han existido durante mucho tiempo.
¿ Triacs de puerta-apagado ? ¿Cuáles? Tiristores de puerta-apagado, seguro.

En primer lugar, no hay nada conceptualmente incorrecto con el circuito que ha diseñado a pesar de que solo emite señales durante el semiciclo positivo (sin embargo, hay muchos problemas prácticos con él).

El borde de ataque de su señal MCU está cerca del cruce por cero (x voltios después) en el semiciclo positivo y el borde posterior está cerca del cruce por cero (x voltios antes) para el semiciclo negativo.

Puede configurar una interrupción que le permita responder a la transición 0-1 o la transición 1-0 en su MCU.

El mayor problema con su diseño son las corrientes de funcionamiento muy bajas que ha elegido configurar, lo que hace que el diseño no sea ideal.

Considere que para su diseño, Q1 necesita hundir 500 uA (más alguna corriente desconocida para bajar la señal de MCU, que ignoraré), y eso requerirá aproximadamente 5 uA de corriente base en el Hfe mínimo de 100. La corriente CE para el 4N35 es por lo tanto alrededor de 6 uA. Con esta corriente baja, el CTR del 4N35 es muy bajo y probablemente solo del orden de 0,1, por lo que se requieren alrededor de 60 uA de corriente LED. Esto significará que el voltaje de entrada de CA será de aproximadamente 4,5 V. Este podría ser un nivel de voltaje aceptable para la detección, pero será muy sensible a la temperatura y se corromperá durante el tiempo que se tarde en cargar el C4 con estas corrientes increíblemente bajas.

Lo desafiaría a revisar su diseño nuevamente e intentar predecir el voltaje de activación requerido en la línea de CA en un rango de temperatura de solo 0-30 °C y con un rango de características BC547 y 4N35. No será una buena foto.

Prefiero un esquema como este basado en un FET de modo de agotamiento para detectar cruces por cero de manera confiable:

esquemático

simular este circuito : esquema creado con CircuitLab

Con este tipo de detección, obtiene el mismo nivel de disparo para los semiciclos positivo y negativo, y el disparo siempre ocurre justo después del cruce por cero. Entonces solo necesita detectar un solo borde si usa la detección de interrupción.