最近在研究智能小车,简单研究了一下单片机简单控制直流电机正反转,一开始想着用单片机直接控制,结果失败了。
原因是:虽然I/O口输出的电压也是5V,但输出的电流太小,以致输出功率太小,不足以驱动电机工作。因此,想要电机工作,需要驱动芯片,这里我选择了L293D,插拔式芯片,如图:
引脚图:
注意:引脚4,5,12,13都是互相连通的,所以只需要一个引脚接地即可。
真值表:
想控制电机正反转,我们这里只用到了两个输入端。
与单片机的连接过程:
单片机 | L293D |
P1^0 | 引脚1,EN使能端 |
P1^1 | 引脚2,1A,信号的输入端1 |
P1^2 | 引脚7,2A,信号的输入端2 |
单片机的地端 | 引脚4,5,接地 |
单片机电源 | 引脚8,16接电源VCC |
引脚3,6为信号的输出端,分别接在直流电机的两侧,不需要和单片机相连 | |
代码如下:
#include <reg51.h>
sbit EN = P1^0; // 电机输入输出1,2
sbit IN1 = P1^1; // 输入1
sbit IN2 = P1^2; // 输入2
sbit key1=P3^5;
sbit key2=P3^4;
void delay();
void main()
{
EN=1;
IN1=0;
IN2=0;
while(1)
{
if(key1==0)
{
delay();
{
if(key1==0)
{
IN1=1;
IN2=0;
}
while(key1==0);
}
}
if(key2==0)
{
delay();
{
if(key2==0)
{
IN1=0;
IN2=1;
}
while(key2==0);
}
}
}
}
void delay()
{
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<100;j++);
}
}
效果展示这里就不展示了,因为传不了视频,这个是为了手机通过WIFI模块控制直流正反转做铺垫的。期待学习能一直坚持下去。
我把我的硬件电路给大家看看吧:
然后我也在protues上进行了仿真,就用上面的代码,效果是一样的,要注意的是仿真图中的引脚布局和实物L293D的引脚分布不一样,需要大家注意一下。