Gracias tauro0221, siguiendo tus consejos he retomado el proyecto asumiendo que es necesario controlar el disparo del triac cuando la tensión de red pasa por cero.
He localizado un dimmer que tiene en cuenta esto, al menos eso creo.
Dimmer PCB
Tras realizar un montaje de prueba para probar el dispositivo y compilar el código de ejemplo que ofrece la propia página, veo que el pin de salida en vez de generar un pulso PWM con un ciclo variable, genera un pulso fijo con una frecuencia de 100Hz.
Pensaba que la regulación se realizaba con un pulso PWM, y se me desmonta toda mi teoría.
¿Podriais explicarme por qué ocurre esto?
Me surgen tres dudas que no consigo aclarar.
¿Si el pulso es fijo, como regula el dimmer?
En el código aparece la instrucción "zerocross 5" que no comprendo para que sirve.
En las instrucciones del código, indica que la entrada del pulso Zero Cross tiene que ir en Arduino Uno al pin D2 sin poderse cambiar, ¿Tiene algo que ver con los Timmer?
Os dejo el código por si me podéis ayudar a comprender como funciona.
Gracias por vuestra ayuda
/**************
* RobotDyn
* Dimmer Library
* **************
*
* The following sketch is meant to to define dimming value through potentiometer,
* The potentiometer values are changing in range from 0 to 1023
* potentiometer values are converted through the map function to values from 0 to 100% and saved in dimmer.setPower(outVal);
* Serial.begin is used to display dimming values
*
*
* ---------------------- OUTPUT & INPUT Pin table ---------------------
* +---------------+-------------------------+-------------------------+
* | Board | INPUT Pin | OUTPUT Pin |
* | | Zero-Cross | |
* +---------------+-------------------------+-------------------------+
* | Lenardo | D7 (NOT CHANGABLE) | D0-D6, D8-D13 |
* +---------------+-------------------------+-------------------------+
* | Mega | D2 (NOT CHANGABLE) | D0-D1, D3-D70 |
* +---------------+-------------------------+-------------------------+
* | Uno | D2 (NOT CHANGABLE) | D0-D1, D3-D20 |
* +---------------+-------------------------+-------------------------+
* | ESP8266 | D1(IO5), D2(IO4), | D0(IO16), D1(IO5), |
* | | D5(IO14), D6(IO12), | D2(IO4), D5(IO14), |
* | | D7(IO13), D8(IO15), | D6(IO12), D7(IO13), |
* | | | D8(IO15) |
* +---------------+-------------------------+-------------------------+
* | ESP32 | 4(GPI36), 6(GPI34), | 8(GPO32), 9(GP033), |
* | | 5(GPI39), 7(GPI35), | 10(GPIO25), 11(GPIO26), |
* | | 8(GPO32), 9(GP033), | 12(GPIO27), 13(GPIO14), |
* | | 10(GPI025), 11(GPIO26), | 14(GPIO12), 16(GPIO13), |
* | | 12(GPIO27), 13(GPIO14), | 23(GPIO15), 24(GPIO2), |
* | | 14(GPIO12), 16(GPIO13), | 25(GPIO0), 26(GPIO4), |
* | | 21(GPIO7), 23(GPIO15), | 27(GPIO16), 28(GPIO17), |
* | | 24(GPIO2), 25(GPIO0), | 29(GPIO5), 30(GPIO18), |
* | | 26(GPIO4), 27(GPIO16), | 31(GPIO19), 33(GPIO21), |
* | | 28(GPIO17), 29(GPIO5), | 34(GPIO3), 35(GPIO1), |
* | | 30(GPIO18), 31(GPIO19), | 36(GPIO22), 37(GPIO23), |
* | | 33(GPIO21), 35(GPIO1), | |
* | | 36(GPIO22), 37(GPIO23), | |
* +---------------+-------------------------+-------------------------+
* | Arduino M0 | D7 (NOT CHANGABLE) | D0-D6, D8-D13 |
* | Arduino Zero | | |
* +---------------+-------------------------+-------------------------+
* | Arduino Due | D0-D53 | D0-D53 |
* +---------------+-------------------------+-------------------------+
* | STM32 | PA0-PA15,PB0-PB15 | PA0-PA15,PB0-PB15 |
* | Black Pill | PC13-PC15 | PC13-PC15 |
* | BluePill | | |
* | Etc... | | |
* +---------------+-------------------------+-------------------------+
*/
#include <RBDdimmer.h>//
//#define USE_SERIAL SerialUSB //Serial for boards whith USB serial port
#define USE_SERIAL Serial
#define outputPin 13
#define zerocross 5 // for boards with CHANGEBLE input pins
//dimmerLamp dimmer(outputPin, zerocross); //initialase port for dimmer for ESP8266, ESP32, Arduino due boards
dimmerLamp dimmer(outputPin); //initialase port for dimmer for MEGA, Leonardo, UNO, Arduino M0, Arduino Zero
int outVal = 0;
void setup() {
USE_SERIAL.begin(9600);
dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
}
void loop()
{
outVal = map(analogRead(0), 1, 1024, 100, 0); // analogRead(analog_pin), min_analog, max_analog, 100%, 0%);
USE_SERIAL.println(outVal);
dimmer.setPower(outVal); // name.setPower(0%-100%)
}