This article will help you to learn why DC motor can not be interfaced directly with microcontroller. How to interface face DC motor with Microcontroller. Components, Circuit diagram and program required for interfacing DC motor with microcontroller.
What are the problems of interfacing dc motor with microcontroller?
It is not possible to connect dc motor to a microcontroller directly. A microcontroller has a very low output current. On the other hand motor draws much higher current therefore connecting directly will not run the motor and destroying the microcontroller due to high currents.
Also the motor produces back emf (voltage) and voltage surges which can also damage the microcontroller. Therefore to save microcontroller from these damages, a driver or an intermediate IC is connected.
L293D Intermediate IC
L293D is a dual H bridge IC. It means two motors can be driven from one IC. The output current is as high as 600mA with peak current up to 1.2A which is a considerable current for electronic components. To protect the microcontroller form back emf of the motor, diodes are connected at the output of the IC which prevents any current flowing back. The IC has a wide range of motor voltage (Vss) from 4V to 24V which makes it a suitable option to drive dc motor from electronic ICs.
Components for interfacing DC motor with microcontroller
Following components are needed to interface DC motor with PIC microcontroller
- 5 V DC supply
- 12 V DC supply
- DC motor
- PIC microcontroller
- Connection diagram
- Logic state (for experiment purposes)
Connections (Circuit Diagram) for interfacing DC motor with microcontroller
The following figure shows the connection diagram to interface DC motor with microcontroller. DC motor can be connected to microcontroller through the IC L293D. It is a dual motor driver IC and it is usually driven by certain logic and output is motor. It is usually used in robotic applications. This IC can drive two motors. Both circuits are identical.
Output of the IC L293D is connected to the terminal of the DC motor. Inputs of the L293D are connected to microcontroller However for study purpose, logic states are connected to the input of the IC. Vss pin is given 5V to energize the IC.
Both ground pins GND, are connected to ground. Vs Pin is given 12 V which the required voltage to run dc motor. EN1 is the enable input pin for circuit 1 of the IC L293D. IN1 and IN2 are the inputs based on which the motor will rotate.
The LOGIC states and Program
It should be remembered that if motor will only rotate if one of its terminal is high (12V) and other is low (0V). If either both inputs are high or low, the motor will not rotate.
Following table shows the logic which should be given to the inputs of the L293D to control motor.
|Enable Pin EN||Input 1 (IN1)||Input 2 (IN2)||Output rotation|
|1||1||0||Clock wise rotation|
|1||0||1||Anti clockwise rotation|
It can be seen from above table that if Enable pin is zero (low), motor will not rotate irrespective of the inputs. If both inputs are zero motor will not rotate. if both inputs are high motor will also not rotate because same high voltage on both terminals of motor.
When input 1 is high (clockwise rotation)
When input 2is high (Anti clockwise rotation)
In this configuration, motor attains maximum speed of 500rpm and rotates with constant speed. To achieve variable speed, a PWM technique is used which is explained in article
Real time connections for interfacing DC motor with microcontroller
Following figure shows the connection of DC to microcontroller P18F2520 through L293D IC. The pins of microcontroller PORT C are connected to L293D. Rest of connections is already explained. The program is written in MIKRO C and loaded in microcontroller to run the motor.
|TRISC=0;||// make port C as output port|
|PORTC = 0b00000101;||// making enable and input 1 as high and rest low including input 2 to rotate motor in one direction|
|Delay_ms(5000);||// wait for 5 seconds|
|PORTC = 0b00000110;||// make input 1 as low and input 2 as high so the motor will rotate in opposite direction|
Modify the program according to your requirement. If you have any question fell free to ask in comments section. Like our page to get updates about new articles and posts.