51单片机智能小车红外循迹程序源代码、电路原理图和电路器件表.pdf
51单片机智能小车红外循迹程序源代码、电路原理图和电路器件表--第1页
51单片机智能小车红外循迹
程序源代码、电路原理图、电路器件表
1
51单片机智能小车红外循迹程序源代码、电路原理图和电路器件表--第1页
51单片机智能小车红外循迹程序源代码、电路原理图和电路器件表--第2页
智能小车循迹实验除了智能小车本身外,还需要用到红外循迹模
块。智能小车红外循迹运动原理如下:红外线有反射特性,对不同颜
色物体反射量不一样。对白色物体,红外线反射量会多一点,红外收
发管电压输出会高一点;对黑色物体,红外线反射减少,红外收发管
电压输出也低。红外收发管输出电压信号输入到LM393与电位器电压
输出进行比较(电压大小可以通过调节电位器来调整)。这样,只要
将电位器调节到合适范围,就可以使红外收发管对着白色物体时
LM393输出0(低电平),对应发光二极管亮;红外收发管对着黑色
物体时LM324输出1(高电平),对应发光二极管灭。单片机根据LM393
输出电平状态(高电平或低电平),可判断智能小车是否沿着黑色轨
迹运动,如果智能小车沿着黑色轨迹运动,红外收发管接收白色(地
板)反光,LM393输出0(低电平);如果智能小车跑偏了,红外收
发管接收黑色(轨迹线)反光,LM393输出1(高电平)。单片机根
据这一信号判断智能小车运动状态,及时对智能小车前进方向作出调
整。
下面我们看下红外循迹相关的代码(完整的智能小车红外循迹实
验代码在本文后段有提供),如下:
while(1)
{//探测到黑线为1,没有探测到黑线为0
if((HW_LEFT_WAI==0)(HW_LEFT_NEI==0)(HW_RIGHT_NEI==0)(HW_RIGHT_WAI==0))
//如果左外,左内,右内,右外循迹传感器都没有感应到黑线
{pwmval_left_init=5;//左电机占空比调节,调节值在0到20之间
pwmval_right_init=5;//右电机占空比调节,调节值在0到20之间
CAR_FORWARD();}//智能小车前进
1
51单片机智能小车红外循迹程序源代码、电路原理图和电路器件表--第2页
51单片机智能小车红外循迹程序源代码、电路原理图和电路器件表--第3页
elseif((HW_LEFT_WAI==1)(HW_LEFT_NEI==1)(HW_RIGHT_NEI==0)(HW_RIGHT_WAI==0))
//如果左外,左内循迹传感器都感应到黑线;右内,右外循迹传感器没有感应到黑线
{pwmval_left_init=6;//左电机占空比调节,调节值在0到20之间
pwmval_right_init=6;//右电机占空比调节,调节值在0到20之间
CAR_LEFT();}//智能小车左转
elseif((HW_LEFT_WAI==1)(HW_LEFT_NEI==0)(HW_RIGHT_NEI==0)(HW_RIGHT_WAI==0))
//如果左外循迹传感器都感应到黑线;左内,右内,右外循迹传感器没有感应到黑线
{pwmval_left_init=6;//左电机占空比调节,调节值在0到20之间
pwmval_right_init=6;//右电机占空比调节,调节值在0到20之间
CAR_LEFT();}//智能小车左转
elseif((HW_LEFT_WAI==