基本功能包括:
为了使移动小车能自动避障转弯,就必须在小车上加装测距系统,为了能及时获取距障碍物的距离和方向信息;制作了三方向(前、左、右)超声波测距系统,就是为小车提供一个有效的运动距离信息。 在超声波测距中,通常因温度和时间检测的误差,使得测距的精度降低,为此,可以在小车上增加温度补偿功能。 本次制作完成的,只是三个超声波测距延时,没有安装到小车上,后续将陆续实现更多的功能。。。
拓展功能包括: <span]拓展功能包括: <span]超声波模块介绍 超声波模块原理图
相关超声波测距参考程序 //超声波声明
char flags=0;
//超声波距离有效
char flag1s=0;
//计算时间
uint time=0;
//计算距离
ULint L_=0; //温度值
int Temp=0; //定义 超声波 管脚
sbit RX_csb=P1^2; //对照实物修改
sbit TX_csb=P1^1; //对照实物修改 //初始化 超声波模块
void Init_ultrasonic_wave()
{
TX_csb=0; //关发射模式
TH0=0; //定时器0
TL0=0;
EX0=1; IT0=1; //外部中断
EA=1; //总中断开启
} //超声波启动
void StartModule()
{
TX_csb=1; //启动模块
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_(); //延时
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
TX_csb=0; //关闭模块
} //做计算,得到有效距离
void Conut()
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
L_=(time*1.67)/100; IF(L_>300||flags==1)
{
flags=0;
flag1s=0; //无效
L_=0;
}
else if(L_<=500)
{
flag1s=1; //有效
}
}
制作完成的三向测距实物
有相关探讨问题,可以留言
|