Go Down

Topic: How to controll A.C. 230V fan speed with arduino..?? (Read 8098 times) previous topic - next topic


Nov 13, 2012, 03:13 am Last Edit: Nov 13, 2012, 03:15 am by Joy Reason: 1
I would like to use arduino to control the household fan speed which runs on 230V A.C.  ...

How will I control the fan speed from the PWM outputs of the arduino board..??

What components should I use to fire a triac for the regulation..??


What type of motor does the fan have ?
If its a single phase induction motor which many fans are , you cant easily vary the speed.


Nov 13, 2012, 03:59 am Last Edit: Nov 13, 2012, 06:18 am by Joy Reason: 1
Yes its a single PHASE ceiling fan...

After some search I found that some people use MOC3011 with an optocupler..

here is a circuit which I found..


Lot inexpensive possible solutions on ebay.

Google forum search: Use Google Advanced Search and use Http://forum.arduino.cc/index in the "site or domain:" box.


those are ready to use modules..

I know about them..

But I would like to control it with arduino for other reasons..... You can say a kind of home automation..


I've never made a motor speed control, but I've made light dimmers (not with the Arduino), and from your schematic, the concept looks basically the same...

You can't use PWM, but it's something like PWM synchronized to the 50/60Hz line frequency.  You only need a modified top part of the schematic (including both opto-isolators) and the Arduino would replace the CD4xx parts, etc.

It works like this - You detect a point along the "phase" of the AC signal (usually near the zero-crossing).  That's the full-wave rectifier, the FET B2, and an opto-isolator, with the current-limited AC driving the opto input.

The opto-isolators keep the high voltage away from you and the low-voltage control circuitry (i.e the Arduino).  If you are building your own power supply, you can use the isolated transformer secondary to get the timing/phase and eliminate one of the opto-isolators.

That isolated detected phase/timing signal goes to an Arduino input.

An Arduino output drives the other opto-isolator, which drives the TRIAC (A1).   

After being triggered by the phase/timing signal, there is a delay (i.e. 0-10mS @ 50Hz).  Then a short pulse into the output opto-isolator (IC1) "fires" the TRIAC somewhere along the AC half-cycle.  (The pulse has to be "short" because it cannot extend into the next AC half-cycle).

Once triggered,  TRIACs always stay-on 'till the current falls to zero (the next AC zero-crossing).

Other thoughts:

The actual zero-crossing is difficult to detect, and the peak is difficult too...   So it's generally best to find a point somewhere in the middle (around 45 degrees).  With a microcontroller, it's easy to compensate since you know the line frequency.

Also with a microcontroller, you don't need full-wave rectification.   When you find one zero-crossing point (or trigger point) there is another one 180 degrees later (10 mS later at 50Hz).

You'll probably have to experiment with the timing/delay to get it to work right near zero-speed and near full-speed.


Nov 14, 2012, 02:57 am Last Edit: Nov 14, 2012, 03:05 am by Joy Reason: 1
What if I do this..??

I found another circuit where they are doing it in this way..

Another similar circuit here

Runaway Pancake

What if I do this..??

That circuit is for on/off
I found another circuit where they are doing it in this way..

Another similar circuit here

That's for "random fire".  OK1 is your zero-cross detector.  OK2 is the triac driver, but for your motor (Inductive load!) you need to add a snubber across the power triac and a snubber on the triac driver output, too.  See "page 5 of 9" >>>>>  http://www.jameco.com/Jameco/Products/ProdDS/277835FSC.pdf

"Hello, I must be going..."
"You gotta fight -- for your right -- to party!"
Don't react - Read.
"Who is like unto the beast? who is able to make war with him?"


I was wondering whether this project came off the ground.. I have a similar demand, I want to control a house /kitchen fan (with inductive loads) with a triac kind of dimmer setup. I am looking for a heads up whether this would work on such ac electromotors.. If they perform steady etc.



Did you find a solution to this?

I have a ceiling fan which is being controlled by arduino and 5V relay.
What changes do i need to do to control the speed of 220V fan.


Apr 13, 2014, 05:13 pm Last Edit: Apr 13, 2014, 05:17 pm by mart256 Reason: 1

those are ready to use modules..

I know about them..

But I would like to control it with arduino for other reasons..... You can say a kind of home automation..

Hello Joy, in this link you can find information about the hardware and the software to do phase control (in this example this is used to dimm an AC bulb with TRIAC, but may work for a fan too). http://www.instructables.com/id/Arduino-controlled-light-dimmer-The-circuit/?lang=es

Anyway, you should research a little bit about zero crossing detection and ac phase control.

Driving a resistive load (a bulb) is a little bit different from driving an inductive load (a motor). For resistive load the firing angle of the TRIAC may change between 0 and 180°, but for inductive load it changes between 90° and 180°.


hi i want to ask i made the arduino triac control i made same dia and same code on instructable but 1 thing i am facing is my moc3021 receiving pulse to turn it on and also gate pulses are present at triac and also A1 and A2 of triac have 220v ac but my load is not turning on i m unable to do it the series of load and 220v ac is correct my 4n25 is working fine but why my lamp is not turning on i made whole system on bread board please tell me  :smiley-fat:


how to control single phase ac fan using arduino,
any body have circuit diagram and sample code pls post if u have.

Go Up