51单片机无线遥控小车设计Word文档下载推荐.docx
- 文档编号:16182838
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:33
- 大小:26.37KB
51单片机无线遥控小车设计Word文档下载推荐.docx
《51单片机无线遥控小车设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《51单片机无线遥控小车设计Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
智能车前
下端4组检测灯对黑线的反馈信号通过单片机控制伺服电机的转动。
前端的
两组红外检测灯对障碍物进行检测通过单片机P2口的低四位对遥控信号进行
检测。
小车的机械结构设计为了保证小车能够进行循迹同时避免外界光的干
扰我们将道路检测电路板放在小车底盘的前端红外避障模块放在小车的前
部无线接收模块放在小车的尾部单片机控制板放在小车的正上方保持小车
的平衡性小车的主动轮为前端两个从动轮为后面一个电池放在两个主动
轮之间这样的整体设计既可以保持重心尽量在一条竖直线上又方便电源的开
关使小车转弯时的转动惯量减小增强其稳定性。
1.2智能小车硬件模块
智能小车主要机构——从侧面观察各板的排列。
各个模块附图如下
红外避障模块
红外循迹模块
遥控发射端
无线遥控接收端
电路的设计包括三个模块红外避障模块红外循迹模块无线遥控模块
红外线二极管发射红外光如果机器人前面有障碍物红外线从物体反射
回来相当于机器人眼睛的红外检测接收器检测到反射回的红外光线
并发出信号来表明检测到从物体反射回红外线。
51单片机基于这个传感器的输
入控制伺服电机。
红外线IR接收/检测器有内置的光滤波器除了需要检测的980nm波
长的红外线外它几乎不允许其它光通过。
红外检测器还有一个电子滤波器
它只允许大约38.5kHz的电信号通过。
换句话说检测器只接收每秒闪烁
38,500次的红外光。
这就防止了普通光源象太阳光和室内光对IR的干涉。
太阳
光是直流干涉0Hz源而室内光依赖于所在区域的主电源闪烁频率接近100或120Hz。
由于120Hz在电子滤波器的38.5kHz通带频率之外它完全被
IR探测器忽略。
一组红外光电传感器包括有一个发射管和一个接收管。
当发射管照射到障
碍物时大部分红外光都会返回给接收管接收管输出为低电平反之当红
外发射管前方无障碍物时光线几乎没有被返回那么接收管就不会接收到足
够反射回来的光线接收管输出高电平。
输出的高低电平经IO口接入STC中
再通过程序的控制使得小车作出相应的动作。
元件清单:
(1)两个1938红外探测器
(2)两个EL-1L1红外LED
(3)四个470Ω电阻
(4)两个9013三极管
说明
因为STC的IO驱动能力较弱这里我们加入三极管
使其工作在开关状态来增强驱动能力。
本任务中用到
的是NPN型三极管9013当单片机的IO口输出高电平
时三极管导通IRLED可发出红外光反之当IO
口输出低电平时三极管截止IRLED不能发射红外
光。
2.1.3红外发射探测器应用
应用说明
让每个IRLED探测器组工作的关键是发送1毫秒频率为38.5kHz的红外信
号然后立刻将IR探测器的输出存储到一个变量中。
可以给P1_3输出的信号高
电平13微秒低电平为13微秒总周期为26微秒即频率约为38.5kHz。
当没有红外信号返回时探测器的输出状态为高。
当它探测到被物体反射
的38500Hz红外信号时它的输出为低。
因红外信号发送的持续时间为1毫秒
因此IR探测器的输出如果处于低其持续状态也不会超过1毫秒因此发送完
信号后必须立即将IR探测器的输出存储到变量中。
这些存储的值即可表示前方
是否有障碍物。
由此可以实现智能小车的红外避障功能。
电路测试程序如下#include<
uart.h>
voiddelay_nus(unsignedinti)//延时单片机为STC10F08XE{
i=i*10/12;
while(--i);
}
voidHardware_delay_1ms(void)
{
TMOD&
=0xF0;
TMOD|=0x01;
//T0--16位定时器器模TH0=0xFC;
TL0=0x18;
//64536
TF0=0;
//清除定时器溢出标志
TR0=1;
//启动定时器
while(TF0==0);
//等待计数完成
TR0=0;
//停止定时器
voiddelay_nms(intn)
intj;
for(j=n;
j>
0;
j--)
Hardware_delay_1ms();
intP3_5state(void)
return(P3&
0x20)?
1:
//返回P1_2的状态}
intmain(void)
intcounter;
intirDetectLeft;
uart_Init();
//串口初始化printf("
ProgramRunning!
\n"
);
while
(1)
for(counter=0;
counter<
38;
counter++){
P2_3=1;
//红外发射约38.5kHz的红外光delay_nus(13);
P2_3=0;
delay_nus(13);
irDetectLeft=P3_5state();
//将返回的状态给irDetectLeft
printf("
irDetectLeft=%d\n"
irDetectLeft);
delay_nms(100);
}说明
保持机器人与串口线的连接
在红外检测电路前放一个物体比如手或一张纸距离左侧IR组大
约2到3厘米
当放一个物体在IR组前时串口调试助手会显示“irDetecfLeft=0”
将物体移开时它会显示“irDetectLeft=1”
调整红外检测器的角度尽量使其与地面垂直
测试的结果如下图示
测试结果
2.1.4红外避障程序#include<
#defineLeftIRP1_2//左边红外接收连接到P1_2
#defineRightIRP3_5//右边红外接收连接到P3_5
#defineLeftLaunchP1_3//左边红外发射连接到P1_3
#defineRightLaunchP3_6//右边红外发射连接到P3_6
voiddelay_nus(unsignedinti){
//T0——16位定时器器模
TH0=0xFC;
voiddelay_nms(intn)//延时ms
voidIRLaunch(unsignedcharIR)
{intcounter;
if(IR=='
L'
)//左边发射
counter++)
LeftLaunch=1;
LeftLaunch=0;
R'
)//右边发射
RightLaunch=1;
RightLaunch=0;
voidForward(void)//向前行走子程序
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
voidLeft_Turn(void)//左转子程序
inti;
for(i=1;
i<
=23;
i++)
delay_nms(20);
voidRight_Turn(void)//右转子程序
P1_0=0;
voidBackward(void)//向后行走子程序
=65;
intirDetectLeft,irDetectRight;
IRLaunch('
//右边发射
irDetectRight=RightIR;
//右边接收IRLaunch('
//左边发射
irDetectLeft=LeftIR;
//左边接收
if((irDetectLeft==0)&
&
(irDetectRight==0))//同时接到红外线
Backward();
Left_Turn();
elseif(irDetectLeft==0)//只有左边接收到红外线
Right_Turn();
elseif(irDetectRight==0)//只有右边接收到红外线
else
Forward();
}2.2红外循迹模块
2.2.1循迹原理
接近反射式光电感应器件RPR220由一个红外线发射二极管和一个光电二极管组成可以发射并检测到反
射回的光线。
由于不同颜色的物体对光的反射率不同当RPR220对准黑色物体
时黑色对光线反射率低光电二极管接收到的反射光很少不能导通输出
高电平反之当RPR220对准白色物体时输出低电平。
故而可以利用RPR220
区分出黑色跑道与白色跑道边缘STC单片机可基于返回的信号控制伺服电机
从而控制小车的行进。
2.2.2循迹原理图
元件清单
1四个RPR220
2100Ω、2K、10K电阻各四个
3四个10K滑动变阻器
4LM339芯片
说明
安装时需要注意将焊有RPR220的电路板安装到小车的底部并将RPR220对
准地面增强反射光的强度同时可遮挡外界光
可将RPR220用纸壳或别的物体包起来防止外界光的干扰
将ENTER与单片机的数据输入口相连以将信息返回给单片机
接收管集电极输出接入比较器339正极比较器负极则为滑动变阻器的输
出将滑动变阻器的电位调节到合适的大小当正极高于负极时比较器
输出5V高电平否则为0V低电平。
比较器输出则接入STC单片机通过返回的信息判断小车是否处于跑道区域内并做出相应的反应。
2.2.3小车的循迹程序#include<
#defineLD1P1_2;
//左左检测灯
#defineLD2P1_3;
//中左检测灯
#defineRD1P3_5;
//中右检测灯
#defineRD2P3_6;
//右右检测灯
voiddelay_nus(unsignedinti)
}
delay_nus(1440);
P1_1=0;
P1_0=1;
delay_nus(1400);
}
voidLeft_Turn(void)//左转子程序
{
inti;
for(i=1;
=15;
P1_1=1;
delay_nus(1420);
voidRight_Turn(void)//右转子程序
delay_nus(1420);
voidBackward(void)//向后行走子程序
{inti;
intmain()
intL1,L2,R1,R2;
uart_Init();
printf("
while
(1)
L1=LD1;
L2=LD2;
R1=RD1;
R2=RD2;
if((L1==1)&
(R2==0))
//左灯检测到黑色右灯检测到白色左转
{Left_Turn();
elseif((L1==0)&
(R2==1))
//左灯检测到白色右灯检测到黑色右转
Right_Turn();
(L2==0)&
(R1==0)&
//四个灯都检测到白色后退
Backward();
elseif((L1==1)&
(L2==1)&
(R1==1)&
//四个灯都检测到黑色后退
else//前进
Forward();
2.2.4避障及循迹程序流程图将小红外避障模块和循迹模块结合起来通过软件编程可使智能小车实
现以下功能当红外检测器检测到障碍物时小车停止行进当小车前方没有
障碍物时小车按照指定的跑道轨迹行进。
以下是程序流程图
2.2.5外避障及循迹程序程序代码#include<
sbitLD1=P1^2;
sbitLD2=P1^3;
sbitRD1=P1^4;
sbitRD2=P1^5;
开始
串口初始化
while1
检测障碍
与道路
子程序sbitLeftIR=P3^5;
//左边红外接收连接到P3_5
sbitRightIR=P3^6;
//右边红外接收连接到P3_6
sbitLeftLaunch=P2^3;
//左边红外发射连接到P2_3
sbitRightLaunch=P2^4;
//右边红外发射连接到P2_4
voiddelay12us(void)//延时12us误差-0.064236111111us
unsignedchara,b;
for(b=9;
b>
b--)
for(a=2;
a>
a--);
voiddelay_nus(unsignedinti)//延时单片机为STC10F08XE
TF0=0;
intcounter;
if(IR=='
for(counter=0;
LeftLaunch=1;
delay12us();
LeftLaunch=0;
if(IR=='
)//右边发射
RightLaunch=1;
RightLaunch=0;
{P1_1=1;
voidRight_Tur
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 无线 遥控 小车 设计