Android Controlling DC Motors using the AndroiDAQ Module Part 2

Now that you have a basic understanding of how a DC motor works, we will now learn about motor controllers and why it is necessary to use these when interfacing a DC motor with a micro-controller. A motor controller can be thought of as a way to manually or automatically start or stop a motor, a way for selecting forward or reverse rotation, a way of selecting and regulating the speed of the motor, or for more advanced operations, a way for regulating or limiting the torque of the motor and also a way for protecting against overloads and faults. 

First we will concentrate on starting and stopping the motor. When a DC motor is first turned on, by applying DC power to the armature, the electromagnetism of the armature builds up until its full magnetic field strength is reached. Initially this causes a fairly large amount of current to be drawn from the DC power source as the magnetic field builds. The current drawn subsides as the magnetic field reaches its full strength or reaches what is called steady state. Current can be thought of as the flow of electricity in the armature. The large initial current draw is one reason why a motor controller is necessary when operating a DC motor via a micro-controller, especially when one considers that the commutator’s job is to switch the armatures connection many times a second. A micro-controller is usually limited as to how much current a pin can supply, so it is necessary to use a motor controller to prevent damage to the micro-controller by this heavy current draw. 

You also know that if one switches the connections of the DC power source to the motor that the motor will change directions of rotation. When the direction of the motor is changed, the current draw of the motor will also increase to overcome the inertia or momentum of the motor’s rotation. This current draw subsides as the motor rotation reverses and when the motor speed becomes constant in the opposite direction. Again, a micro-controller is usually limited as to how much current a pin can supply, so it is necessary to use a motor controller when changing the rotation direction of the motor to prevent damage to the micro-controller. 

The third use of a motor controller is to control the motor’s speed. The motor’s speed can be controlled by applying more or less voltage to the motor’s power terminals. For example, if one connects a 6-volt battery to a DC motor, the motor’s speed will be slower then if a 9-volt battery were connected to the same motor. Voltage can be thought of as the force of current flowing through the armature, so more flow can be thought of as more electromagnetic force and vice verse, so greater the voltage applied to the motor, the faster the armature will turn. This voltage speed variability is very useful in DC motors to control the speed of your robot as it drives around. Micro-controllers are usually devices that have high and low outputs, meaning a voltage level of zero volts, or low, or a voltage level of 5-volts or high. These two voltage conditions do not provide a great deal of speed variability for DC motors, so a motor controller is necessary for variable speed control. 

The forth or advanced operations of a DC motor controller provide ways to regulate the torque or pull of the motor and also ways to protect the motor from overload or motor operation faults. These advanced details will be looked at further as we dwell into the circuitry of the motor controller. 

In this article you learned the basics of a DC motor theory and how to build a simple DC motor. You also learned the basic functions and reasons why we use a motor controller to protect your AndroiDAQ micro-controller. In the next parts of this series, you will learn the basics in designing a motor controller circuit and how to interface two DC motors to your AndroiDAQ module.

We invite you to read more about the AndroiDAQ data acquisition module for Android, LabVIEW, JAVA, and Python: About the AndroiDAQ module.


AndroiDAQ with xBee WiFi module