vffgaston:
Ni siquiera solamente con dos triacs ...
Tendrás que detectar el paso por cero de la señal de corriente alterna, poner un contador a "0" en ese momento, y después disparar los triacs cuando corresponda cada uno con su timer (¿o eso era con los tiristores?; no me acuerdo si el triac había que dispararlo con un pulso o mantener la puerta a "1" durante todo el tiempo que está encendido, de todas formas, desde el punto de vista del programa tienes que hacer lo que te digo).
¿Sabes detectar el paso por "0"?
Saludos.
Si, la puerta del triac la disparas tras pasar un tiempo que tu establezcas (en mi caso lo determinas con dimming), que lo tengo puesto con un delay que es lo que no consigo cambiar por un timer. Y despues desactivo la puerta cuando pasa un segundo ( pero el triac no deja de conducir hasta que vuelve a pasar por cero la señal de corriente alterna)
Y el paso por cero lo tengo con un attachinterrupt.
un saludo.
int AC_LOAD = 8;
int dimming;
void setup()
{
pinMode(AC_LOAD, OUTPUT);
attachInterrupt(0, zero_crosss_int, RISING);
}
void zero_crosss_int()
{
digitalWrite(AC_LOAD, LOW);
unsigned long encender=micros();
int dimtime = (90*dimming);
delayMicroseconds(dimtime);
digitalWrite(AC_LOAD, HIGH);
unsigned long apagar = micros();
if(micros() - apagar > 1)
{
digitalWrite(AC_LOAD, LOW);
apagar = micros();
}
}
void loop() {
dimming=i; //desde 3 (máximo) hasta 100 (mínimo)
}