So far, we have shown how to control ON/OFF status of an AC powered appliance with IBM Watson IoT. That guide is important to use HTTP(S) POST request instead of using MQTT. HTTP POST and MQTT has difference of use-case. In this present article, we only restrict ourselves to discussions around ESP32 Arduino AC motor speed control module and circuit.
Using an AC appliance for switch ON and OFF quite easy by using an usual mechanical Relay or a Solid State Relay. But dimming action with AC appliances is not that easy – it demands knowing some theory.
If we use a transistor, that will get overheated. Another known way is using PWM dimming, like we used for DC motor speed control. PWM dimming not performed with AC load. Another way is phase cutting for which a TRIAC is used. We need a zero-crossing detector with a TRIAC to make the thing predictable. Another way is pulse skip modulation which is not good for most of the AC appliances.
So, mainly the method becomes using a TRIAC. But, selecting the TRIAC is not that easy. TDA1085 is a TRIAC which is designed to control the speed of motors like that of the washing machine. Optocoupler MCT2E, optoisolator MOC3021 and TRIAC BT136 have commonly used a combination. Also, you may read these kinds of guides to build the circuit :
Ready to use TRIAC BT136 based Arduino modules available these days which are cheaper than building from scratch own self. However, I do doubt the longevity of the appliances upon running through these basic circuits. Relays are quite production-grade when combined with an AC appliance.
Looking at various problems and complexities, I saw that best way to suggest a newbie is to use a servo motor to control a fan regulator. After a Google search I found that one person already deployed that idea on Instructables :