The AC Dimmer is designed to control the alternating current voltage, which can transfer current up to 300V (8A) (TRIAC BTA16 for 600V/16A but we don't recommend up power to this level). In most cases, Dimmer is used to turning 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 the smart home systems. For example, when you need to smoothly change the light brightness. The lamp is slowly turning ON or OFF, creating a comfortable atmosphere. Dimmer works most effective with filament lamps. It’s less stable with low brightness LED lamps, but with moderate and high brightness it will perform a solid job. Note that luminescent lamps (gas discharge lamps) do not support dimming.
Power part of 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 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 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:
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.
Power | up to 300V (8A) |
AC frequency | 50/60 Hz |
TRIAC | BTA16 — 600B |
Isolation | Optocoupler |
Logic level | 3.3V/5V |
Zero point | Logic level |
Modulation (DIM/PWM) | logic level ON/OFF TRIAC |
Signal current | >10mA |
Environment: |
|
ROHS3 | Compliant |
Power | 600V - 16A |
AC frequency | 50/60 Hz |
TRIAC | BTA16 - 600B |
Isolation | Optocoupler |
Logic level | 3.3V/5V |
Zero point | Logic level |
Modulation (PWM with trigger) | logic level ON/OFF TRIAC |
Signal current | >10mA |
Environment: |
|
Operating humidity | Dry environment only |
ROHS3 | Compliant |
Libraries for Leonardo, Mega, UNO, ESP8266, ESP32, Arduino M0, Arduino Zero, Arduino Due |
![]() |