Circuito detector de cruce por cero con moc

Perdona en el dibujo está mal, el H11AA1 tiene DIAC en lugar de un diodo por lo tanto está bien. Aunque creo que he encontrado el problema. El problema está en el código, que usando como DETECT el pin 6 no funciona ya que la funcion "atachinterrupt" solo funciona con los pines 2 y 3 en el ATMEGA328P-PU. Alguien podría ayudarme con el segundo problema del códgo (querer controlar un segundo TRIAC independiente del otro, es decir distinto valor de disparo)?
 
... ¿Delay 15?
¿Eso para qué sirve?
Si quemas 15ms en un semiciclo de 43...

Para empezar quita los delays

Me parece que estás usando el timer directamente, mira flexitimer o alguna librería que facilita esas cosas por si te interesa.

Pues para manejar dos o más triacs...

Interrupción paso por cero:
Lanzo en timer con el tiempo del primer triac
Vez=0

Interrupción timer:
Si vez ==0
Enciendo el primer triac
Lanzo el timer con la diferencia de tiempo hasta el segundo triac
Vez++


Si vez ==1
Enciendo el segundo triac
Lanzo el timer con la diferencia hasta el tercer triac
Vez++

Si vez ==3
Lo mismo con el tercer triac

Etc
 
los 15 ms de delay es para que la luz se mantenga un poco de tiempo hasta que vuelva a cambiar.
en el código que estoy utilizando se podría añadir la función para el segundo TRIAC?
Voy a revisar la libreria flexitimer porque usando el timer directamente no lo entiendo muy bien.

Gracias, un saludo.
 
No entiendo el delay.
Si activas en triac se queda activado hasta el próximo paso por cero.
No le veo ningún sentido.
Además en aplicaciones en las que los tiempos son críticos los delays lo matan y lo entierran todo.
Hacer un dimmer es bastante delicado, si además haces varios dimmers a la vez no pongas delays si quieres que funcionen.

Supongo que tu código se podrá adaptar.
 
No entiendo el delay.
Si activas en triac se queda activado hasta el próximo paso por cero.
No le veo ningún sentido.
Además en aplicaciones en las que los tiempos son críticos los delays lo matan y lo entierran todo.
Hacer un dimmer es bastante delicado, si además haces varios dimmers a la vez no pongas delays si quieres que funcionen.

Supongo que tu código se podrá adaptar.
Si, tienes razón que el delay no tiene sentido ahí.

Como puedo adaptar mi código para meter otro triac independiente, es decir que la tensión de salida de uno sea mayor/menor que la del otro? porque añadir otro que tenga la misma tensión a la salida si lo veo sencillo añadiendo en esta parte su "GATE"
Código:
ISR(TIMER1_COMPA_vect){ //comparator match
  digitalWrite(GATE1,HIGH);  //set TRIAC gate 1 to high
  digitalWrite(GATE2,HIGH);  //set TRIAC gate 2 to high
  TCNT1 = 65536-PULSE;      //trigger pulse width
}

ISR(TIMER1_OVF_vect){ //timer1 overflow
  digitalWrite(GATE1,LOW); //turn off TRIAC gate 1
  digitalWrite(GATE2,LOW); //turn off TRIAC gate 2
  TCCR1B = 0x00;          //disable timer stopd unintended triggers
}
y tampoco entiendo muy bien la forma de activarlo con esta parte:
Código:
i--;
OCR1A = i;     //set the compare register brightness desired.
if (i<65){i=483;}
 
Atrás
Arriba