AC dimmer

The module is designed for controlling brightness of dimmable AC bulbs, e.g. incandescent or dimmable AC LED bulbs, or other small AC appliances such as AC fans/motors, heaters and the like. While the UART and I2C protocol is already simple, the PWM input is even simpler: the module accepts PWM signals from an Arduino/Microcontroller and the AC power applied to the load is automatically adjusted to be proportional to the duty cycle of the input PWM signal. This mimicking the way DC loads are dimmed using direct PWM signals. These simple microcontroller interfaces makes the module extremely easy to use even without external libraries.


  • Digital control of AC power by Phase Control
  • Control up to 500-watt load with surge currents of up to 4A.
  • Supports 3.3V and 5V operation
  • Easy to use interfaces: UART, I2C or PWM
  • Two selectable I2C address
  • Optically isolated DC control circuit
  • AC frequency/period reading from UART or I2C mode
  • Properly rate terminals for AC input and AC load
  • Compatible with any controller with any of the 3 interfaces (Arduino, Raspberry Pi)

  • Real time lighting brightness adjustment
  • Automatic ambient light compensation
  • PID / AI control of AC loads
  • Smart greenhouse and smart buildings


  • Real time lighting brightness adjustment
  • Automatic ambient light compensation
  • PID / AI control of AC loads
  • Smart greenhouse and smart buildings


The module has a 12 pin 2.54mm pitched user interface header with the following functions.

Pin LabelFunction/Operation/Remarks
5VPower to digital circuitry. Voltage = 3.3V-5V. Maximum current consumption is 100mA. Recommended power supply rating >=200mA
GNDGround pin. Connect to ground of the host microcontroller.
RXDUART receive pin. Connect to the transmit pin of the host microcontroller.
TXDUART transmit pin. Connect to the receive pin of the host microcontroller.
RSTReset pin. Internally pulled up, active low input.
IO0PWM input pin. Disabled by default. Use pin IO1 to enable.
IO1Enable pin for PWM. Normally high. Pull down to enable PWM and disable UART/I2C via host GPIO or connect to IO2 to keep PWM mode enabled. When left unconnected, UART and I2C are enabled and PWM is disabled.
IO2Connect to IO1 to enable PWM. Do not connect if PWM mode is not used.
IO3I2C address selection pin. Internally Pulled up. Not connected = I2C slave address is 0x35. Pulled low = I2C slave address is 0x34.
IO4I2C SDA pin.
IO5I2C SCL pin.
Figure 2. AC Dimmer Top View 


This product works on high voltage AC power with exposed conductors on the AC side of the circuit board that may potentially be fatal when used improperly. Consult a professional if you are unsure of the usage and handling of the module. As a general use, do not use this product if you do not know what you are doing.

Should you decide to use this module, observe the following precautions:

  • Do not touch any part of the module when AC power is applied. Remove AC power before working on the module.
  • All conductors (component pins, solder pads, heatsink, terminal screws etc.) on the AC side of the board both on the top side and bottom side should be treated as high voltage contact points. Do not touch any part of this unless absolutely certain that AC power has been removed. As precaution, do not touch ANY conduction on the PCB while AC power is connected
  • If your application does not have a protective, non-conductive enclosure, insulate the whole board including both top and bottom sides of the PCB.
  • Do not use module on conductive surfaces such as aluminum table or metal casing.
  • Do not use the module in damp or wet environments unless absolutely sure of waterproof protective enclosure

PWM Control Mode

PWM mode is enabled by connecting IO1 pin to ground or to pin IO2. A micro jumper or female-female jumper may be used. Once enabled, the UART and I2C ports should not be used.

AC power is proportional (non-linear) to the duty cycle of the PWM signal. A 100% duty cycle or a solid HIGH applied to IO1 results in 100% power (brightness) while a 0% duty cycle or a solid LOW signal on IO1 turns off the power to the load. Any duty cycle in between controls the AC power between minimum and maximum.

 If the application is sensitive to sudden fluctuations in AC power, then user must therefore ensure that the PWM duty cycle changes at a minimum time interval of 500ms. When the application allows for some degree of flickering (for bulbs), then the minimum time interval between duty cycle changes may go down to 5ms.