Académique Documents
Professionnel Documents
Culture Documents
"es mejor", ¿verdad? Algunos incluso se les dice en las tiendas de electrónica que es mejor usar un
optoacoplador de este tipo. INCORRECTO. Esto solo funcionará con un optoacoplador de disparo aleatorio:
NO encender el zerocross es el principio de este atenuador.
Cambiar una carga de CA con un Arduino es bastante simple: un relé mecánico o un relé de estado sólido con
un Triac aislado ópticamente. (Yo digo Arduino, pero si usas un microcontrolador 8051 o PIC16F877A,
también hay cosas para ti aquí).
Se vuelve un poco más complicado si uno quiere atenuar una lámpara de CA con un arduino: simplemente
limitando la corriente a través de, por ejemplo. un transistor no es realmente posible debido a la gran potencia
que el transistor necesitará para disiparse, lo que genera mucho calor y tampoco es eficiente desde el punto de
vista del uso de energía.
Corte de fase
Una forma de hacerlo es a través del control de fase con un Triac: el Triac está completamente abierto, pero
solo durante una parte de la onda AC sinusal. Esto se llama corte de borde de ataque.
Uno podría permitir que un Arduino simplemente abra el Triac durante varios microsegundos, pero eso tiene
el problema de que es impredecible durante qué parte de la onda sinusal se abre el triac y, por lo tanto, el nivel
de atenuación es impredecible. Uno necesita un punto de referencia en la onda sinusal.
Para eso es necesario un detector de cruce por cero. Este es un circuito que le dice al Arduino (u otro
microcontrolador) cuando la onda sinusal pasa por cero y, por lo tanto, da un punto definido en esa onda
sinusal.
Al abrir el Triac después de una demora de varios microsegundos a partir del cruce por cero, se obtiene un
nivel predecible de atenuación.
Un circuito que puede hacer esto es fácil de construir: el cruce por cero se deriva directamente de las líneas
rectas de CA rectificadas, por supuesto a través de un optoacoplador, y da una señal cada vez que la onda pasa
por cero. Debido a que la onda sinusoidal primero pasa por una rectificación de doble fase, la señal de cruce
por cero se da independientemente de si la onda sinusal sube de cero o de abajo a cero. Esta señal puede
utilizarse para activar una interrupción en el Arduino.
Atenuación PWM
La atenuación de PWM, como en los LED, no se realiza con frecuencia con cargas de CA por varios motivos.
Aunque es posible. Compruebe este instructivo para ver cómo.
No hace falta decir que tiene que haber una separación galvánica entre el lado de Arduino de las cosas y
cualquier cosa conectada a la red eléctrica. Para aquellos que no entienden la "separación galvánica" significa
"sin conexiones metálicas", por lo tanto ---> optoacopladores. PERO, si no entiendes la "separación
galvánica", quizás no debas construir esto.
El circuito que se muestra aquí hace precisamente eso. La tensión de 220 voltios de la red se realiza a través
de dos resistencias de 30k a un puente rectificador que da una señal rectificada de doble fase a un
optoacoplador 4N25. El LED en este optoacoplador, por lo tanto, baja con una frecuencia de 100Hz y la señal
en el colector de alta frecuencia con una frecuencia de 100Hz, en línea con la onda sinusoidal en la red
eléctrica. La señal del 4N25 se alimenta a un pin de interrupción en el Arduino (u otro microprocesador). La
rutina de interrupción alimenta una señal de una longitud específica a uno de los pinos de E / S. La señal de
pin de E / S regresa a nuestro circuito y abre el LED y un MOC3021, que se dispara brevemente el Opto-
Tiristor. El LED es una serie con el MOC3021. Tenga en cuenta que en la operación de atenuación esa luz no
será muy visible porque dura muy poco. Si se utiliza el interruptor triac para uso continuo, el LED se
iluminará claramente.
Tenga en cuenta que las lámparas incandescentes son normales para la atenuación. También funcionó con una
lámpara halógena, pero acortará la vida útil de la lámpara halógena. No funcionará con ninguna lámpara cfl, a
menos que se especifique específicamente que son adecuados para un regulador de intensidad. Lo mismo
ocurre con las lámparas LED.
¡NO UN! Es posible que el LED que se usa, la señal de la dirección simplemente no la corte y usted puede
terminar con una lámpara que simplemente parpadea en el lugar de ser regulada sin problemas. Reemplazar el
LED con un puente de alambre curará eso. El LED no es realmente necesario. aumentar la resistencia de 220
ohmios a 470 luego
DETENER: Este circuito está conectado a un voltaje de 110-220. Esto no es seguro. Desenchúfelo antes de
acercarse incluso a la PCB. La placa de refrigeración del Triac está unida a la red eléctrica. No lo toques
mientras esté en funcionamiento. Póngalo en un recinto / contenedor adecuado.
ESPERE: Permítame agregar una advertencia más fuerte aquí: este circuito es seguro si está construido e
implementado solo por personas que saben lo que están haciendo. Si no tiene idea o si está dudando de lo que
está haciendo, es probable que esté MUERTO. NO TOQUE CUANDO ESTÉ CONECTADO A LA RED
Materiales
No hay paso
4N25 € 0.25 o H11AA1 o IL250, IL251, IL252, LTV814 (ver texto en el siguiente paso)
Resistor 10k € 0.10
puente rectificador 400 voltios € 0.30
Resistencia de 2x 30 k 1/2 vatio (las resistencias probablemente disiparán 400mW máximo cada 0,30 €
1 conector 0,20 €
Zenerdiode de 5.1 voltios (opcional)
Conductor de la lámpara
LED (Nota: puede reemplazar el LED con un puente de alambre ya que el LED a veces puede hacer que la
lámpara parpadee en lugar de regularse suavemente)
MOC3021 Si eligió otro tipo, asegúrese de que NO tenga detección de cruce por cero, no puedo enfatizar esto
lo suficiente, NO lo use, por ejemplo. un MOC3042
Resistor 220 Ohm € 0,10 (en realidad usé un 330 Ohm y funcionó bien)
Resistor 470 Ohm-1k (terminé usando un 560 Ohm y funcionó bien)
TRIAC TIC206 € 1,20 o BR136 € 0,50
1 conector 0,20 €
Otro
Pieza de PCB 6x3cm
cableado eléctrico
Encontrará dos imágenes para el PCB: mi primera, que dejo aquí para fines de documentación y una nueva
ligeramente modificada. La diferencia es que omití el zenerdiode ya que no es realmente necesario y le di al
LED su propia resistencia (1k): ya no está en serie con el optoacoplador, que ahora tiene una resistencia de
470 Ohm. Hice la PCB mediante transferencia directa de tóner y luego la grabé en un baño de ácido
clorhídrico / peróxido de hidrógeno. Hay muchos instructables que dicen cómo hacerlo. Puede utilizar el
diseño de impresión adjunto para hacer lo mismo. Rellenar la impresión es bastante sencillo. Usé pies IC para
los optoacopladores y el puente rectificador.
Descarga la impresión aquí.
Nota: Necesitas Fritzing para esto. Para la transferencia directa de tóner, el lado impreso del archivo pdf
impreso va directamente contra la capa de cobre para la transferencia. Una vez que se transfiere, mirarás la
tinta desde el otro lado y verás el texto normal nuevamente. Hice pequeñas alteraciones en el PCB: eliminé el
zenerdiode y el LED ya no está en serie con el optoacoplador.
Utilicé un TIC206. Eso puede entregar 4 amperios. Tenga en cuenta que las pistas de cobre de la PCB no
podrán soportar 4 amperios. Para cualquier carga seria, suelde un trozo de cable de instalación de cobre en las
pistas que van del TRIAC a los conectores y en la pista entre los dos conectores.
En caso de que no esté claro cuáles son las entradas: de arriba a abajo en la segunda imagen:
+ 5Volts
Señal de interrupción (va a D2 en arduino)
Señal triac (proveniente de D3 en Arduino)
Suelo
NOTA:
Si tiene un optoacoplador H11AA1 o IL 250, 251 o 252, no necesita el puente rectificador. Estos tienen dos
diodos antiparellel y por lo tanto pueden manejar CA. Es compatible con pin con el 4N25, simplemente
introdúzcalo y suelde 2 puentes entre R5 y + y R7 y -. El LTV814 no es compatible.
El circuito presentado es adecuado para cargas resistivas puras, como las lámparas incandescentes.
Si desea usarlo para cargas inductivas, entonces es necesario un circuito de amortiguación. La figura muestra
las modificaciones para su uso con cargas inductivas. Eso sí, esto no es algo que intenté, ya que solo quería
atenuar las lámparas, pero se basa en ejemplos y teorías disponibles en Internet. Tendrías que adaptar el PCB
proporcionado.
La figura superior muestra el circuito tal como está, para atenuar una lámpara. Es en toda su simplicidad solo
una resistencia para activar la puerta a través del diac en el optoacoplador. El valor de 1k puede cambiarse
como se explicó en el texto anterior.
La figura inferior da un circuito omnipresente para uso en cargas inductivas.
Hay otros circuitos de amortiguamiento, por ej. Una resistencia y un condensador en serie directamente sobre
la carga.
Si no le importa la teoría, pero solo desea el software, vaya al siguiente paso
La forma de usar un atenuador / atenuador de CA es bastante simple una vez que entienda lo básico:
En AC, la potencia suministrada a la lámpara está directamente relacionada con la superficie total de la onda
sinusal, la lámpara se puede regular permitiendo solo que una parte predecible de esa onda sinusal fluya a
través de la lámpara.
Como tal, necesitamos un punto de referencia en ese seno desde donde calculamos cuándo se debe encender
la lámpara.
El punto de referencia más fácil de usar es el llamado 'cruce por cero': el momento en que la luz pasa por cero.
Después de cada cruce por cero, hay una mitad completa de la onda sinusal disponible para enviar a través de
la lámpara.
Entonces, lo que el software debe hacer es detectar el zerocross y luego esperar un tiempo determinado en esa
sinuswave para encender el TRIAC.
en el mundo: 50 Hz en Europa y la mayor parte de Asia y África y 60 Hz en América (y partes del Caribe).
Hay 2 voltajes principales en el mundo: 110-120V y 220-240V pero no son importantes para las matemáticas
aquí
En el circuito, la detección de cero se realiza mediante el optoacoplador bifase y está disponible como la señal
X en la placa.
Hay básicamente 2 formas para que un microcontrolador detecte esa señal:
1-un 'sondeo' continuo del pasador de cruce por cero
2: usar una interrupción para indicar al programa que hubo un cruce por cero
La principal diferencia entre los dos es que en el 'sondeo' cada vez que la computadora pasa por su bucle
principal, necesita verificar el pin. Si su programa está ocupado haciendo muchas otras cosas, puede ser
demasiado tarde para verificar el pin de cruce cero, mientras que al usar una interrupción, no importa con qué
esté ocupado el programa. La interrupción es una especie de "tapping en el hombro" que dice "Oye mira,
surgió algo que debes atender AHORA".
Después de detectar el cruce por cero, el programa debe esperar un tiempo específico y luego encender el
TRIAC.
También aquí, esa espera se puede hacer de dos maneras diferentes.
1- emitiendo una orden de 'espera'
2-mediante el uso de una interrupción de temporizador
Nuevamente, ambos métodos tienen sus pro y sus contras. El comando 'esperar' ('retraso' en lenguaje
Arduino) literalmente deja que la computadora espere el tiempo requerido y no puede hacer nada más
mientras tanto. si la lámpara se está quemando a baja potencia al dejar que la computadora espere, digamos 9
ms, eso significa que a cada 10 ms se le pide a la computadora que espere 9 ms: ergo estará inactiva el 90%
del tiempo. Eso está bien si su controlador solo se usa para controlar la lámpara, pero si necesita hacer otras
cosas, queda poco tiempo.
Usando una interrupción de temporizador resuelve eso. Básicamente, lo que hace es que el programa le dice al
temporizador: "Oye, acabo de escuchar que tenemos un cruce por cero, tengo que hacer otra cosa, pero solo
esperas 4,5 ms y luego enciendes el Triac" Así que el programa continúa. de manera alegre y 4,5 ms (como
ejemplo) después de que se notificara que había un cruce de 0, el temporizador enciende el TRIAC.
Sondeo: (note que este es un ejemplo aproximado para ilustrar el sondeo, obviamente necesita alguna mejora)
void setup()
}
void loop()
state=digitalRead(AC_LOAD);
if (state=1) {
Impulsado por interrupción: Para usar una interrupción, primero debemos configurar eso.
En el Arduino que es como sigue:
void setup()
Lo que esto dice es que la interrupción está asociada a la interrupción 0, va a una función llamada
"zero_crosss_int" y reacciona a un flanco ascendente en el pin.
Lo que sucede aquí es que el programa primero calcula el tiempo de inactividad (= tiempo para esperar antes
de que se dispare el triac)
Luego espera esa cantidad de tiempo, posteriormente espera esa cantidad de tiempo y dispara el Triac. El
Triac se apagará nuevamente en el siguiente cruce por cero, pero ya vamos a escribir un punto bajo en el pin
TRIAC para evitar un encendido accidental en el próximo ciclo. Sin embargo, debemos esperar un poco para
saber con seguridad si el TRIAC está encendido, por lo que esperamos 10us. Ahora (10000-10) / 128 todavía
es 78, pero encontré que 75 funciona bien. Siéntase libre de usar 78 aunque.
Lo único que queda por hacer en el programa principal es establecer el nivel en el que queremos que la
lámpara se encienda:
void loop() {
dimming=i;
delay(10);
Lo que sucede aquí es un simple bucle que regula la lámpara en 128 pasos. He elegido no comenzar en 1 sino
en 5 porque a ese nivel podría haber algunos problemas de tiempo que podrían hacer que la lámpara parpadee.
El programa anterior es solo un ejemplo de cómo controlar la lámpara. Obviamente, desea agregar alguna otra
funcionalidad en lugar de simplemente hacer que una lámpara suba y baje de brillo.
Utilizando un temporizador:
Si desea que su programa sea eficiente en el tiempo, necesitará usar una interrupción para la detección de
cruce por cero y un temporizador para determinar el tiempo de espera.
Aproximadamente un programa se vería de la siguiente manera:
Inicializar
Configure las diversas constantes y variables que necesita e incluya las bibliotecas utilizadas (como la
biblioteca de TimerOne)
Preparar
Poner las patillas y las 2 interrupciones.
La interrupción de cruce de cero apunta a una función y también lo hace la interrupción del temporizador
Funcionalidad Cero-Cruz
Establecer un valor booleano que indica si se ha producido un cruce de cero
Función de temporizador
Si volvemos a regular el brillo en 128 pasos, entonces la función del temporizador está configurada para ser
llamada siempre que haya pasado el tiempo de un paso (por ejemplo, 75us) y luego verifica si el número de
pasos aprobados es igual al número de pasos establecido. Si ese es el caso, el triac está encendido
/*
Attach the Zero cross pin of the module to Arduino External Interrupt pin
digital pin 2 [INT0]=physical pin 4 and digital pin 3 [INT1]= physical pin 5)
---------------------------------------
0 | 0 | Leonardo
1 | 3 | Leonardo
7 | 4 | Leonardo
The Arduino Due has no standard interrupt pins as an iterrupt can be attached to
almosty any pin.
*/
void setup()
// 10ms=10000us
void loop() {
dimming=i;
delay(10);
Acerca del software: en teoría, en el bucle se podría permitir que la variable 'i' comience desde '0'. Sin
embargo, dado que la sincronización en la interrupción es un poco de una aproximación, usar '0' (totalmente
activado) podría arruinar la sincronización un poco. lo mismo ocurre con 128 (Full off), aunque eso parece ser
menos crítico. Si '5' o quizás '1' es el límite para su configuración, es cuestión de intentarlo, su rango puede ir
desde, por ejemplo, 2 a 126 en lugar de 0-128. Si alguien tiene una forma más precisa de configurar el tiempo
en la interrupción, me encantaría escucharlo.
Por supuesto no es necesario trabajar con interrupciones. También es posible seguir sondeando el pin de cruce
por cero para ir a 0.
Aunque el software funciona con una interrupción para determinar el momento de cruce de cero, aún no es tan
eficiente porque el tiempo (tiempo de inactividad) que debemos esperar después del cruce de cero antes de
que se dispare el triac se gasta literalmente "esperando" en el cruce de cero función de interrupción.
Sería más eficiente programar una interrupción del temporizador para que se dispare en el momento adecuado
para que, mientras tanto, el arduino pueda hacer otra cosa. Tal programa se puede encontrar en el paso 6
NOTA
Permítanme reiterar la declaración anterior: este programa es una demostración de cómo puede controlar el
atenuador. No es un programa eficiente, ya que pasa la mayor parte del tiempo esperando. Por lo tanto, NO es
el más adecuado para combinar con otras tareas del procesador. Si necesita un programa más eficiente, use un
temporizador en lugar de un retraso
Todavía no lo he probado, pero veo razones por las que no debería funcionar: por lo que puedo ver, no recibe
el número escrito en el puerto serie, pero recibe el valor ASCII de cada dígito que se escribe, por lo que 0 'se
verá como 48
int AC_pin = 3;//Pin to OptoTriac
byte dim = 0; //Initial brightness level from 0 to 255, change as you like!
void setup() {
Serial.begin(9600);
pinMode(AC_pin, OUTPUT);
void light() {
if (Serial.available()) {
dim = Serial.read();
if (dim < 1) {
digitalWrite(AC_pin, LOW);
digitalWrite(AC_pin, HIGH);
delayMicroseconds(34*(255-dim));
digitalWrite(AC_pin, HIGH);
delayMicroseconds(500);
digitalWrite(AC_pin, LOW);
}
void loop() {
Solo una nota: El software anterior no es mío. Creo que es mejor mantener la verificación del puerto serie
fuera de la interrupción. Además, el retraso de 500uS antes de que se apague el TRIAC es quizás un poco
largo.
El código siguiente utiliza la función del temporizador en lugar de un retraso y se ha confirmado que funciona
en el Leonardo también
/*AC Light Control
*/
#include <TimerOne.h> // Avaiable from http://www.arduino.cc/playground/Code/Timer1
volatile int i=0; // Variable to use as a counter volatile as it is in an interrupt
volatile boolean zero_cross=0; // Boolean to store a "switch" to tell us if we have crossed zero
int AC_pin = 11; // Output to Opto Triac
int dim = 0; // Dimming level (0-128) 0 = on, 128 = 0ff
int inc=1; // counting up or down, 1=up, -1=down
// To calculate freqStep divide the length of one full half-wave of the power
// cycle (in microseconds) by the number of brightness steps.
//
// (120 Hz=8333uS) / 128 brightness steps = 65 uS / brightness step
// (100Hz=10000uS) / 128 steps = 75uS/step
void zero_cross_detect() {
zero_cross = true; // set the boolean to true to tell our dimming function that a zero cross has
occured
i=0;
digitalWrite(AC_pin, LOW); // turn off TRIAC (and AC)
}
void loop() {
dim+=inc;
if((dim>=128) || (dim<=0))
inc*=-1;
delay(18);
}
Step 7: MQTT Your Dimmer
Es posible usar MQTT para controlar su atenuador, siempre que tenga una conexión WLAN. En este ejemplo
estoy usando un Arduino UNO con Ethernetshield.
El tema es "home / br / sb" con una carga útil de 0-100 para establecer el nivel de atenuación
String ip = "";
EthernetClient ethClient;
PubSubClient mqttClient;
long previousMillis;
void zero_cross_detect() {
i=0;
void dim_check() {
if(zero_cross == true) {
if(i>=dim1) {
else {
void setup() {
attachInterrupt(0, zero_cross_detect, RISING); // Attach an Interupt to Pin
2 (interupt 0) for Zero Cross Detection
Timer1.attachInterrupt(dim_check, freqStep);
pinMode(4, OUTPUT);
Serial.begin(9600);
Serial.println(F("dimmer"));
Serial.println();
if (Ethernet.begin(mac) == 0) {
for (;;);
Serial.println(Ethernet.localIP());
Serial.println();
ip = String (Ethernet.localIP()[0]);
ip = ip + ".";
ip = ip + String (Ethernet.localIP()[1]);
ip = ip + ".";
ip = ip + String (Ethernet.localIP()[2]);
ip = ip + ".";
ip = ip + String (Ethernet.localIP()[3]);
//Serial.println(ip);
mqttClient.setClient(ethClient);
mqttClient.setCallback(callback);
Serial.println();
previousMillis = millis();
mqttClient.publish("home/br/nb/ip", ip.c_str());
void loop() {
sendData();
previousMillis = millis();
mqttClient.loop();
Serial.print("dim1 = ");
Serial.println(dim1);
}
void sendData() {
char msgBuffer[20];
if (mqttClient.connect(CLIENT_ID)) {
mqttClient.subscribe("home/br/sb");
if (startsend) {
mqttClient.publish("home/br/nb/ip", ip.c_str());
startsend = LOW;
char msgBuffer[20];
Serial.print("strPayload = ");
Serial.print(topic);
Serial.print("] ");//MQTT_BROKER
Serial.print((char)payload[i]);
Serial.println();
Serial.println(payload[0]);
dim1=strPayload.toInt();
}
Paso 8: Software para establecer el nivel usando los botones arriba y abajo
Debajo de un código para establecer el nivel de luz con los botones arriba y abajo. Utiliza un temporizador
que comprueba el tiempo necesario para activar el TRIAC, en lugar de esperar en un bucle de retardo
/*
AC Light Control
*/
Serial.begin(9600);
void zero_cross_detect() {
digitalWrite(AC_pin, LOW);
// Then check if the counter 'i' has reached the dimming level
void dim_check() {
if(zero_cross == true) {
if(i>=dim) {
else {
void loop() {
digitalWrite(buton1, HIGH);
digitalWrite(buton2, HIGH);
if (digitalRead(buton1) == LOW)
if (dim<127)
if (dim>127)
dim=128;
if (digitalRead(buton2) == LOW)
if (dim>5)
{
dim = dim - pas;
if (dim<0)
dim=0;
dim2 = 255-2*dim;
if (dim2<0)
dim2 = 0;
Serial.print("dim=");
Serial.print(dim);
Serial.print(" dim2=");
Serial.print(dim2);
Serial.print(" dim1=");
Serial.print(2*dim);
Serial.print('\n');
delay (100);
}
// AC dimmer
/*
---------------------------------------
0 | 0 | Leonardo
1 | 3 | Leonardo
7 | 4 | Leonardo
The Arduino Due has no standard interrupt pins as an iterrupt can be attached to almosty any pin.
*/
#include <avr/io.h>
#include <avr/interrupt.h>
int dim=483;
void setup(){
// set up pins
// set up Timer1
TCCR1B=0x04; //start timer with divide by 256 input 16us tics 4=0b100 =CS12:1, CS11:0, CS10:0
table 16.5
dim--;
delay(15);
}
3 canales
Este circuito también se puede utilizar para un mezclador RGB, aunque necesita dos circuitos TRIAC
adicionales. Puede usar este circuito + PCB en modo doble, pero asegúrese de usar un opto-coupler de ciclo
aleatorio como el MOC3021. No utilice un optoacoplador de zerocross como el MOC3041.
Ahora hice un Ibble de 3 canales.
Por supuesto, el circuito de cruce por cero solo se necesita una vez.
Quizás esto todavía sea algo para la tradición (llámelo anticuado): luces de árbol de Navidad que funcionan
directamente con 220 (o 110) voltios. Cuelgue 3 cadenas de lámparas de diferentes colores en el árbol y
regúlelas con este circuito expandido con dos circuitos TRIAC
Frecuencia
Dependiendo de la frecuencia de la red (ya sea 50 o 60), los valores de pasos diferentes deben configurarse
manualmente. Sin embargo, es posible dejar que el software determine la frecuencia en una rutina de
configuración, por ejemplo. midiendo el tiempo entre dos cruces por cero o cuente el número de
zerocriossings dentro de un tiempo establecido.
Obviamente, uno puede usar la serie de microcontroladores 8051 también para controlar el atenuador.
Como ya no tengo un sistema de desarrollo 8051, no puedo probar ningún código, pero si desea desarrollarlo
para un 8051, el siguiente ejemplo puede ser de ayuda:
//
//Untested Code
int dimming;
int x;
int i;
/*===================================================*/
int dimtime=(75*dimming);
//delay_us(dimtime);
P0=0xFF; // sets entire PORT 0 high, can also use e.g. P0_1 =1 ;
delay_us(10); //propagationdelay
P0=0x00;
}
/*===================================================*/
void main()
/*------------------------
------------------------------------------------*/
while (1)
for(i=5;i<128;i++){
dimming=i;
,.,.,
Paso 15: Oscurecimiento: un poco de teoría
Solo como fondo de este instructable: hay varios tipos de atenuadores. Lo que se presenta aquí es un
regulador TRIAC de borde delantero (también conocido como "fase delantera") con control de fase (también
conocido como "corte de fase").
Dimmers de vanguardia
En este tipo, el atenuador en realidad corta partes del comienzo de la onda sinusoidal. Este es el tipo de
regulador más utilizado, ya que es adecuado para TRIACs. Después de todo, un Triac es fácil de encender y
se apagará solo una vez que haya un cruce por cero porque la corriente cae por debajo de la corriente de
retención de la puerta
Los atenuadores de borde de salida generalmente usan un MOSFET, ya que estos casi no requieren corriente
de control y son resistentes y confiables. También son relativamente baratos y están disponibles a niveles de
voltaje adecuados para el funcionamiento de la red. Otra opción es usar un IGBT (transistor bipolar de puerta
aislada), que combina las ventajas de MOSFET y el transistor bipolar. Estos son generalmente más caros que
los MOSFETs. Nuevamente, la forma de onda es ideal, y es obvio, a partir de la forma de onda real que se
muestra en la Figura 9, que existe una desviación significativa, especialmente a plena potencia. Esto se debe a
que parte del voltaje aplicado siempre se perderá debido a que la electrónica compleja requiere algo de voltaje
para funcionar.
La mayoría de los atenuadores de borde trasero tienen otra función útil, al menos cuando se usan con
lámparas incandescentes. El circuito está diseñado para proporcionar un 'arranque suave', aumentando la
tensión a la lámpara de forma relativamente lenta. Con las lámparas incandescentes, esto casi elimina el
'choque térmico', ese breve período de encendido en el que la lámpara consume aproximadamente 10 veces la
corriente de funcionamiento normal. El choque térmico es el responsable de la mayoría de los fallos iniciales
de la lámpara: es raro que alguna lámpara incandescente falle mientras está encendida. La falla es casi
siempre en el momento en que se enciende el interruptor. Al incluir la característica de arranque suave, la vida
útil de la lámpara aumenta.
Si ese valor es demasiado bajo, su optoacoplador se quemará, pero si es demasiado alto, la tensión a la que
todavía hay suficiente corriente que atraviesa el optoacoplador para mantener la conducción aumenta cada vez
más. Eso significa que si el valor de la resistencia es demasiado alto, la conmutación del optoacoplador
ocurrirá más arriba en el flanco ascendente y descendente de la onda sin, lo que dará como resultado una señal
de zerocross amplia, que comienza mucho antes del zerocross real hasta mucho después del zerocross.
Ergo: El valor de la resistencia debe ser lo más bajo posible. Sin embargo, en la práctica, encontré que 2x 33k
es un buen valor, lo que lleva a un pulso que comienza a 200uS antes del zerocross real. Eso es muy
aceptable. La corriente a través del 4N25 es de aproximadamente 3.33 mA. Seguramente podríamos subir eso
un poco, pero no es necesario. Con estos valores, el uso ocioso de este circuito es de aproximadamente 0,7
vatios.
Lo mismo ocurre con el circuito con el H11AA1. La ventaja del H11AA1 es que no se necesita un puente de
diodos, ya que tiene dos diodos antiparalelos. Lo mismo ocurre con la serie IL250 o la LTV814.
Uno puede alcanzar el mismo efecto con dos optoacopladores regulares como el 4N25, como muestra la
figura o con un optoacoplador dual.
También proporcioné un circuito en el que se puede regular el ancho del pulso de zerocross.
Como se dijo antes, el ancho de la señal de Zerocrossing determina cuán lejos antes de que se genere el
zerocrossing real de la interrupción. Idealmente, si sabe qué tan amplia es su señal de zerocross, podría
tenerlo en cuenta en el software. Supongamos que su señal es 600uS de ancho y supongamos que se trata de
un tiempo dividido en partes iguales. Entonces sabrá que su interrupción se genera unos 300uS antes del
Zerocrossing real. Puede esperar ese período después de cada interrupción para obtener un manejo más
preciso del zerocross