第三节 主控电路
本模块主要是对采集信号进行分析,用单片机控制电机速度,起停。以及再检测到障碍报警等作用。其电路图如图3.5。绽萬璉轆娛閬蛏鬮绾瀧。
图3.5主控电路
13
第四章 软件设计
在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统中占重要地位。对于本系统,软件更为重要。在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。为了完成上述任务,在进行软件设计时,通常把过程分为若干个部分,每一部分叫做一个模块。骁顾燁鶚巯瀆蕪領鲡赙。 根据总体设计的思想及本系统实现的功能,在设计中完成以下功能。 1、循迹模块主程序:由是否遇到黑线,测到光源,测到挡板产生信号的操作,信号返回到单片机,再通过单片机来实现相应的功能。瑣钋濺暧惲锟缟馭篩凉。 2、电机驱动模块主程序:主要用来控制两个直流减速电机,实现前进、后退、前左转、前右转、后左转、后右转、停止等功能。鎦诗涇艳损楼紲鯗餳類。 第一节 小车运行主程序流程图
启动 避障 循迹 N 是否检测到障碍 是否检测到黑线 Y N Y 停止 图4.1主程序框图
14
第二节 电机驱动程序
void goahead() { s1=1; s2=0; s3=1; s4=0; }
void goback() { s1=0; s2=1; s3=0; s4=1; }
void turnleft() { s3=1; s4=0; }
void turnright() { s1=1; s2=0; } void stop {
1 5
en1=0; en2=0; }
第三节 循迹模块
当小车循迹时,偏离循迹曲线时,偏离曲线调整子程序如图4.2所示:
图4.2循迹子程序
循迹程序
void xunji() {
if ((left_red)=1)&(right_red=1)) { en1=1; en2=1; goahead();
16
delay(150); en1=0; en2=0; delay(50); }
else if((left_red=0)&(right_red=1)) { en1=0; en2=1; p0_0=!p0_0; turnleft(); delay(150); en1=1; en2=0; delay(50); }
else if((left_red=1)&(right_red=0)) { en1=1; en2=0; P0_1=!p0_1; turnright(); delay(150); en1=0; en2=1; delay(50); } else
17