The AC Dimmer is designed to control the alternating current voltage, which can transfer current up to 600V 16/24A. In most cases, Dimmer is used to turning the power ON/OFF for lamps or heating elements, it can also be used in fans, pumps, air cleaners, e.t.c.
Lately, Dimmer has become an often-used decision for smart home systems. For example, when you need to smoothly change the voltage power. The power is slowly turning ON or OFF.
The power part of the dimmer is isolated from the control part, to exclude the possibility of high current disruption to a microcontroller.
The logical level is tolerant to 5V and 3.3V, therefore it can be connected to the microcontroller with 5V and 3.3V level logic.
In Arduino, the dimmer is controlled with RBDdimmer.h library, which uses external interrupts and process time interrupts. It simplifies the code writing and gives more processing time for the main code. Which is why you can control multiple Dimmers from one microcontroller.
You can download RBDDimmer.h library and a few examples in «Documents» or on GitHub. We are constantly updating our library, so we recommend to check for the website updates or subscribe to our newsletter.
Dimmer is connected to Arduino controllers via two digital pins. First (Zero) to control the passing of Phase Null of AC, which is used to initiate the interrupt signal. Second (DIM/PSM) to control (dim) current.
Note that Zero requires a connection to designated microcontroller pins (which are different depending on the model of Uno, Nano, Leonardo, Mega), since it tied to microcontroller interrupts.
Dimming can be achieved by Pulse Skip Modulation:
Method 1 — One or more cycles (a sine wave signal) are transferred to the load while following one or several cycles are blocked.
Method 2 — Partial transferrence of each sine wave to the load.
Method 3 — Generation of modulated full sine signal of different frequency up to few hundred Hertz. This method requires specialized powerful AC generators with different modulation.
Methods 1 and 2 are the easiest to execute with the help of a Dimmer and program code: in both cases, there is a need of circuit that detects the zero crossing and can control a TRIAC.
Dimmer Library (RBDdimmer.h):https://github.com/RobotDynOfficial/RBDDimmer