# Phase Cut to Control Speed of AC Induction Motor with Arduino

simulate this circuit – Schematic created using CircuitLab

So I'm trying to speed controlling a single phase AC Induction Motor(For Fan). And I am trying to use phase cutting to control it. So I use arduino to detect zero cross of AC Wave, and then cut the wave with triac, also I am adding a snubber circuit. But I can't reach 90% of the speed, and when I try to set the speed to 50% the motor goes humming.

What is the cause that I can't reach 90% of the speed and why the motor goes humming when 50%? Also, is there another available option to control single phase AC induction motor using arduino? I already try to search about VSD/VFD but after some google searching it won't work with a single phase(only 3-phase motor).

For the diagram, all ground in schematic is arduino ground, and voltage source is from the same source.

int AC_LOAD = 3;    // Output to Opto Triac pin
int dimming = 128;  // Dimming level (0-128)  0 = ON, 128 = OFF

void setup()
{
attachInterrupt(0, zero_crosss_int, RISING);  // Choose the zero cross interrupt # from the table above
}

//the interrupt function must take no parameters and return nothing
void zero_crosss_int()  //function to be fired at the zero crossing to dim the light
{
// Firing angle calculation : 1 full 50Hz wave =1/50=20ms
// Every zerocrossing thus: (50Hz)-> 10ms (1/2 Cycle)
// For 60Hz => 8.33ms (10.000/120)
// 10ms=10000us
// (10000us - 10us) / 128 = 75 (Approx) For 60Hz =>65

int dimtime = (75*dimming);    // For 60Hz =>65
delayMicroseconds(dimtime);    // Wait till firing the TRIAC
digitalWrite(AC_LOAD, HIGH);   // Fire the TRIAC
delayMicroseconds(10);         // triac On propogation delay (for 60Hz use 8.33)
digitalWrite(AC_LOAD, LOW);    // No longer trigger the TRIAC (the next zero crossing will swith it off) TRIAC
}

void loop()  {
i = 90;
dimming=i;
delay(10);
}


I got this code from http://www.alfadex.com/2014/02/dimming-230v-ac-with-arduino-2/ and I just modify the loop so I can get a constant speed. I give i = 90, so I can get approximately 70% of the speed( 90 / 128 ). Thanks!

• Post a schematic of your circuit. Edit your question. On toolbar, you will see a pencil and circuit components. Click on it and enter your circuit. It's fairly easy. Or add your circuit as an image. Someone should be able to help you from that. May 9, 2017 at 1:00
• I already added the schematic, I created it from taking many sources and don't know if it's good. May 9, 2017 at 1:51
• How are you detecting the speed? If this is part of your circuit, please show it. It would be wise to include your code as well, in case there is an error there.
– user133493
May 9, 2017 at 2:06
• There's the code, I am detecting the speed with a tachometer. May 9, 2017 at 11:00
• So I'm trying to use it with led lamp, if my i in arduino is around 30-50, my lamp start humming, and then from that point to 128 both my lamp and my voltage source start humming worryingly. Is it because I'm using LED Lamp? or there's something wrong with the schematic? May 9, 2017 at 14:26