图3.3.1 L9110引脚图
图3.3.2 电机驱动电路
3.4信号检测模块
小车循迹原理是小车在画有黑线的白纸 “路面”上行驶,由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”—黑线。笔者在该模块中利用了简单、应用也比较普遍的检测方法——红外探测法。
红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫发射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,则小车上的接收管接收不到信号,再通过LM393作比较器来采集高低电平,从而实现信号的检测。避障亦是此原理。电路图如图3.4。
市面上有很多红外传感器,在这里我选用94型光电对管。
...
图3.4循迹原理图
3.5主控电路
本模块主要是对采集信号进行分析,同时给出PWM波控制电机速度,起停。以及再检测到障碍报警等作用。其电路图如图3.5。
图3.5 主控电路
...
第四章 软件设计
4.1主程序框图:
启动 避障 循迹 N 是否检测到障碍是否检测到 是否检测到停止线 N Y Y 停止
4.1 主程序图
4.2电机驱动程序 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() { en1=0; en2=0; }
4.3循迹模块 循迹框图:
...
开始 前进 扫描I/O口,是否检测到黑线 N Y 左转 左边 右边 右转
图4.3 循迹框图
循迹程序:
#include
0x49,0x41,0x1F,0x01,0x19};//0,1,2,3,4,5,6,7,8,9//定义数码管显示数据 static unsigned int RecvData; //定义接收红外数据变量 static unsigned char CountData; //定义红外个数计数变量 static unsigned char AddData; //定义自增变量 static unsigned int LedFlash; //定义闪动频率计数变量 unsigned char HeardData; //定义接收到数据的高位变量 bit RunFlag=0; //定义运行标志位 bit EnableLight=0; //定义指示灯使能位 /***********完成基本数据变量定义**************/
...