用单片机I/0口控制电机的运转实验

智能车的车轮是由电机驱动的,电机正转时智能车前进,反转时后退;两个电机配合智能车可以完成前进、后退、左右转弯等动作。下面介绍电机控制电路,以及单片机如何实现对该电路的控制。
下图(a)是简化的控制电机的电桥电路,本电路用单片机的两条口线P3.5和P2.4同时控制,下图(b)是该电路的等效图,4个三极管的作用相当于4个开关,电机连接在电桥的中央,我们来分析电路的控制原理。
如下图(a)所示,当单片机P3.5输出高电平,同时P2.4输出低电平时,三极管Q2和Q3导通,Q1和Q4截止,下图(b)是这时的等效图。下图(a)中的粗线标出了电流途径,从电机右端流向左端,电机正转:
如下图(a)所示,当单片机P3.5输出低电平,同时P2.4输出高电平时,三极管Q1和Q4导通,Q2和Q3截止,下图(b)是这时的等效图。下图(a)中的粗线标出了电流途径,从电机左端流向右端,电机反转:
当P3.5和P2.4同时为高电平或低电平时,4个三极管都不能导通,这时电机中没有电流,不转动。
下面的程序使电机正转10秒钟,反转10秒钟:
#includereg52.h
sbit drive1=P3J;//电桥电路左端的控制变量
drive1定义为P3.5口
sbit drive2=P2^4://电桥电路右端的控制变量drive2定义为P2.4口
//主程序
void main(void)
{
unsignedchari;
for(;;){
For(i=0;i20;1++)delay();//执行20次,延时10秒
//delay()是延时0.5秒的程序,
drivel=1;drive2=0;//电机正转
for(i=0:i20;i++)delay()://执行20次,延时10秒
drivel=0;drive2=1;//电机反转,}
可以使用脉宽调制(PWM)的方法来控制电机转动的速率,例如要使电机正转,可以使drive1为高电平(P3.5=1),而drive2输出不同占空比的方波,来控制电机以不同的速率运转。STCl2C54lO单片机有4个I/0口可以用作PWM输出,P3.5和P2.4就是其中两个。
评论