DC Motor Starter Using Arduino Uno Board

A. Samiuddhin is B.Tech in electrical and electronics engineering. His interests include LED lighting, power electronics, microcontrollers and Arduino programming


Motor starter reduces the load, torque and current surge of a motor during startup. On starting, the motor takes more than five times the normal running current. This overheats the motor’s armature winding and creates a sudden voltage dip in the power supply, which can be avoided by using a motor starter. There are many types of motor starters. Here we describe an electronic DC motor starter using Arduino Uno board. This circuit controls both soft-start and soft-stop timings through pulse-width modulation (PWM).

Circuit and working

Circuit diagram of the DC motor soft-starter is shown in Fig. 1. In addition to Arduino Uno board (Board1), it uses PIC817 optocoupler (IC1), p-channel IRF9530 MOSFET (T1), 1N4007 rectifier diode (D1), 12V DC motor (M1) for testing, bi-colour LED (LED1) and a few other components.

Circuit diagram of DC motor starter using Arduino Uno

Fig. 1: Circuit diagram of DC motor starter using Arduino Uno

Arduino Uno board is an important part of the circuit that generates PWM signals. Pushbuttons (S1 and S2) are used to soft-start and soft-stop the motor. The bi-colour LED indicates whether the motor is in soft-start or soft-stop mode.


When the circuit is switched on, the motor is at rest and LED1 off. When push button S1 is pressed momentarily, the voltage across the motor increases gradually and attains maximum voltage after the predetermined soft-start timing. So the motor first starts at a slow speed. In this state, LED1 emits green light. After the soft-start time, i.e., in running condition, LED1 emits orange light, indicating that the motor is running at the rated speed.


If pushbutton S2 is pressed momentarily while the motor is running at the rated speed, the voltage across the motor decreases gradually and becomes zero after the soft-stop time. So the motor speed also decreases gradually and it finally stops after the soft-stop time. In this state, LED1 emits red colour. After the soft-stop time, LED1 doesn’t glow, indicating that the motor is at rest.

Arduino Uno is programmed such that if switch S1 or S2 is pressed more than once before the timing ends, it executes only once. This prevents the motor from restarting suddenly.
The circuit is isolated by an optocoupler (IC1) so that any disturbance in the motor power supply doesn’t affect the Arduino Uno board. The freewheeling diode (D1) gives additional protection over induced voltage when the motor is turned off.

The circuit’s operation is controlled using the software program loaded into the internal memory of Arduino Uno board. The program (softs.ino) is written in Arduino programming language sketch. Arduino IDE is used to compile and upload the program to the Arduino board.

parts list

Construction and testing

A PCB layout of the DC motor soft-starter is shown in Fig. 2 and its components layout in Fig. 3. After assembling the circuit on a PCB, connect CON2 to Arduino Uno board through external male-to-male jumper wires. After uploading the code to Board1, enclose the assembled PCB along with Board1 in a suitable plastic box.
The circuit works off the 5V USB power supply used for Arduino Uno board. Regulated 12V power supply is used to operate the DC motor.

PCB layout of the DC motor soft-starter

Fig. 2: PCB layout of the DC motor starter using Arduino Uno

Fig. 3: Components layout for the PCB

Download PCB and component layout PDFs: click here

Further application

The circuit can be converted into an AC motor soft-starter by using thyristors in place of MOSFET T1. It can be used along with device control projects. Additional protection and closed-loop control can be included, if required. Different timings and PWM values can be set for both soft-start and soft-stop.

Download source code


We are accepting articles written by you. Hurry up!

Your Name (required)

Your Email (required)

Subject (required)

Your Message