Motor Speed Control

Brushed DC motor Control

Torque in a brushed DC motor is directly proportional to the driving current. To control the speed of a DC motor, its torque is modulated using SCR (Silicon-Controlled rectifier) or PWM (Pulse Width Modulation). SCR’s and other methods are rarely used in robots and the widely accepted technique for speed control is PWM (Pulse Width Modulation). Imagine PWM as switching on and off a switch at a very fast pace. The longer the switch is ON, the higher the voltage is sent to the receiver creating greater speeds. Image shows a graphical representation of PWM.



Controlling a motor involves controlling the speed and rotation (either clockwise or anticlockwise). For DC motors, direction control is achieved by an H-bridge which drives the motor in either direction. Of course there are other means, but we will settle with the best known method. A typical H-bridge consists of a minimum of four solid state or mechanical switches; the graphical representation of H-bridge resembles the letter “H” and hence the name “H-bridge”.

H Bridge

This simple circuit shown above can be used to drive the motor forwards, reverse, brake, or free-run by switching S1, S2, S3 and S4 on or off as per the below table.

S1 S2 S3 S4 Motor
1 0 0 1 Clockwise (Forwards)
0 1 1 0 Anti-clockwise (Reverse)
0 0 0 0 Free run
0 1 0 1 Brake
1 0 1 0 Brake

For small robots, you can either construct an H-bridge with a combination of PNP and NPN transistors, or purchase a package like L293x IC. There are different varieties of H-bridge packages available with additional components based on the requirement.

Servo Motor Control

Rotation of a servo motor is controlled by sending different pulses to the servo controller. A typical servo is controlled with three wires: Power, Ground and Control. A pulse is sent to the servo every 20 milliseconds and an active high-pulse 9 which is generally between 1 and 2 milliseconds) determines the angular position of the motor. In the graphical representation, the lower limit is shown as 0° and the upper limit is shown as 180°. Based on the manufacturer, the upper limit can be 90°, 120°, 135° etc. Irrespective of the design, the central position is almost always achieved by sending a high pulse width of 1.5ms.

Servo Motor Control

This unique design of a servo helps in controlling both the position and direction of the motor.

Stepper Motor Control

Stepper motor contains multiple electromagnets which rotates the motor shaft when energized. By sending desired pulses to these electromagnets, the direction and speed of a stepper motor can be controlled. In the image below, there are four electromagnets which control the rotor’s rotation. Activating each one of them in a desired fashion moves the rotor shaft to a particular position. The speed at which the pulses change determines the speed of the motor and the combination of powering the electromagnet decides the direction of the rotor.

Stepper Motor Control

Motor controllers can only send signals to control motor speed, but cannot assure that the motor is running at that exact same speed. In the next section, we will identify the different ways to check if motor is running at the speed expected.

Do you have anything to say?
Visit the Forum to discuss, learn and share anything related to robotics and electronics !!

rss feeds

Featured Videos


Recent Articles

Atmega8 Development Board

A great step-by-step tutorial on building your own Atmel AVR based Atmega8 development board. The board is ideal for beginners with detailed explanation and pictures More...

L293D Motor Driver

For robots to do work, you need to know how to control a motor. L293D is a cleverly packed IC which can control two DC motors in both directions: forwards and reverse. Here is a detailed explanation of building a board based on L293D ICMore...

Hobby Servo Tutorial

Servo Motor is a device which uses error-sensing feedback signals to determine and control the position of a motor shaft. The term "servomechanism" closely relates to servo motors..More...

Blinking LED Tutorial

This is similar to what we achieve in any "Hello World" program. However, it is not just limited to blinking LED but scratches the surface of AVR-GCC programming... More...

Kindly Donate

If this site has helped you, then kindly consider a Donation to say "Thank You!!". Donation might help us keep all this information available for free and also pay for the resources.

If that is difficult, then a simple "Hi" in the forum would still do good :)