图七:电机驱动电路和光耦隔离电路图

2.4、舵机驱动

舵机驱动我们选择的是单片机的P2.6端口,在接到舵机之前我们也用了光耦来隔离数字电路和模拟电路,如图七所示。而舵机的连接电路也很简单,仅仅只有三根线:红线接5V电压,黑线接地,白线为信号控制线,接入单片机即可。舵机的内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。接口连接图如图八所示。

2.5、红外探测电路和金属传感器电路

红外探测采用的是GP2A25集成红外对管。其工作原理是当其检测到黑线,即发射管发射的信号被黑线吸收而不能接收时单片机的端口得到一个高电平,否则为低电平。金属传感器的原理和红外对管的原理相差无几。接口连接图如图八所示。

52单片机对智能小车的控制设计

图八:舵机、红外以及金属探测器接口电路

3、程序部分

我所设计的三个红外对管探测地面的算法是:首先中间检测到黑线,则车直行,这时当黑线偏离时,左右的红外对管都有可能检测到。到检测到就向相应方向转。这时黑线必将到达中间的红外对管下面,车又直行。以下(图九)为程序流程图。

52单片机对智能小车的控制设计

图九:程序流程图

程序有很多都是老师提供,只有红外巡线的程序是我自己编写,故我将此段程序写于附录之中。

4、调试部分

当电路板焊接好以后,首先是在不通电的情况下进行测试,看有无短路断路问题存在。还好,我此次焊接的电路板并没有这种问题。下一步就是通电测试了。主要是看单片机有没有起振,有没有开始工作,各管脚的电压值等等啊。还好,一切正常。第三步就是烧写程序以后的程序测试了。这也是耗费我最多时间的地方。在测试中,我先是发现自己的电路数字电路和模拟电路的相互干扰特别严重,舵机在工作的时候会很颤。于是我把电路分离开,重新测试。这时在测试的过程中我先后发现了其中一个直流电机存在问题,舵机也坏了。我又更换它们再次测试。

在整个测试过程中,我收获颇丰。以前没有调试过舵机,这次终于在自己的努力和老师的不吝赐教下学会了如何调试舵机。还有就是对整个电路系统的把握上也得到了很大的提高。