Sigo un tutorial para crear este dimmer módulo. Después de probarlo con una lámpara, todo funcionó bien. Luego intenté avanzar, haciendo dos módulos de atenuación para controlar dos lámparas.
Estoy haciendo todas las pruebas en mi casa, es decir, la misma rejilla eléctrica es compartida por todos los enchufes de pared y, por lo tanto, los atenuadores y las lámparas funcionan en ello.
Entonces, el problema: si conecto una lámpara a la vez con la alimentación, todo funciona bien. Pero entonces, si conecto ambas lámparas al mismo tiempo, las cosas empiezan a ponerse raras. Una lámpara se enciende y apaga a una frecuencia alta y la otra no funciona.
Estoy usando todo esto con un dispositivo móvil Android, a través de un módulo Bluetooh.
Y mis preguntas:
a) ¿Si existe algún problema para usar dos reguladores de luz en la misma red eléctrica (creo que el circuito pierde la sincronización con la red cuando ambas lámparas están enchufadas)?
b) ¿Puede un Arduino controlar dos dimmers a la vez (código abajo, que estoy usando)?
Gracias,
int result;
int AC_LOAD = 4;
int AC_LOAD2 = 5;
int dimming = 125;
int dimming2 = 125;
char incomingByte;
String numberReceivedInStringFormat = "";
int numberReceivedInIntFormat = 10;
int lastValidNumber = 10;
boolean notUsed = false;
void setup() {
Serial.begin(9600);
pinMode(AC_LOAD, OUTPUT);
pinMode(AC_LOAD2, OUTPUT);
attachInterrupt(0, zero_crosss_int, RISING);
attachInterrupt(1, zero_crosss_int2, RISING);
}
void zero_crosss_int() {
int dimtime = (65 * dimming);
delayMicroseconds(dimtime);
digitalWrite(AC_LOAD, HIGH);
delayMicroseconds(8.33);
digitalWrite(AC_LOAD, LOW);/
}
void zero_crosss_int2() {
int dimtime = (65 * dimming2);
delayMicroseconds(dimtime);
digitalWrite(AC_LOAD2, HIGH);
delayMicroseconds(8.33);
digitalWrite(AC_LOAD2, LOW);
}
void loop() {
while (Serial.available() > 0) {
incomingByte = (char) Serial.read();
numberReceivedInStringFormat += incomingByte;
if (Serial.available() == 0) {
numberReceivedInIntFormat = numberReceivedInStringFormat.toInt();
}
}
numberReceivedInStringFormat = "";
if (numberReceivedInIntFormat < 10 || numberReceivedInIntFormat > 99) {
numberReceivedInIntFormat = lastValidNumber;
} else {
lastValidNumber = numberReceivedInIntFormat;
}
result = (int) (((-115 * numberReceivedInIntFormat) + 12275) / 89);
dimming = result;
dimming2 = result;
if (notUsed) {
delay(30);
}
}