基于单片机的机器人触觉导航.docx
- 文档编号:8433158
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:8
- 大小:45.91KB
基于单片机的机器人触觉导航.docx
《基于单片机的机器人触觉导航.docx》由会员分享,可在线阅读,更多相关《基于单片机的机器人触觉导航.docx(8页珍藏版)》请在冰豆网上搜索。
基于单片机的机器人触觉导航
一、设计题目和要求…………………………………………………..2
二、系统总体方案框图及分析说明…………………………………..2
三、系统具体设计……………………………………………………..3
3.1、硬件设计…………………………………………………...3
3.1.1、单片机的选取………………………………………3
3.1.2、机器人的组装………………………………………4
3.2、软件设计…………………………………………………...5
3.2.1、机器人伺服电机控制信号…………………………5
3.2.2、胡须传感器的原理…………………………………7
3.2.3、编程使机器人基于胡须导航………………………7
四、课程设计总结与心得体会………………………………………..12
五、参考资料…………………………………………………………..12
一、设计题目和要求:
设计一个带有触觉的机器人,从而使机器人在行走过程中可以通过触觉导航。
给机器人增加触觉传感器,其实就是使用C51接口来获取触觉信息。
每一个自动化系统,都是通过传感器获取外界信息的,通过接口传入计算机或者单片机,然后由计算机或者单片机根据反馈信息进行计算和决策,生成控制命令,然后通过输出接口去控制系统相应的执行机构,完成任务。
一样地,本设计通过在机器人前端安装一个类似胡须的触觉开关,C51捕捉胡须信号,判断障碍物,然后进行决策,发出控制命令,绕过障碍物,继续行走,最终的结果就是通过触觉给机器人自动导航。
二、系统总体方案框图及分析说明
机器人前进,在前进过程中,如果碰到右障碍,机器人会先后退,再左转90°;如果碰到左障碍,机器人会先后退,再右转90°;如果两根胡须都碰到障碍,机器人会先后退,再左转180°。
三、系统具体设计
(1),硬件设计
1、单片机的选取
本设计使用的是AT89S52,AT89S52是一种高性能,低功耗的8位单片机,内含8K字节ISP可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储器技术制造,兼容标准MCS51指令系统及其引脚结构。
在实际工程应用中,功能强大的AT89S52已成为许多高性价比的嵌入式控制应用系统的解决方案。
AT89S52不需要仿真机和编程机,只需要运用ISP电缆就可以对单片机的Flash反复擦写,因此使用方便,而且配置灵活,可拓展性强。
2、机器人的组装
A、为了方便单片机与电源、ISP下载电缆、串口线、以及各种传感器和电机的连接,因此需要制作一个电路板,并将单片机插在该电路板上。
B、安装机器人的两个伺服电机,即行走的两个轮子。
将两个伺服电机的控制线连接到C51单片机的两个控制接口上,电机原理图如图所示,保证P1_0引脚的控制输出用来控制右边的伺服电机,P1_1引脚的控制输出用来控制左边的伺服电机。
伺服电机与电路板底板的连线原理图
C、安装胡须。
用两颗螺钉(M3x22)依次穿过M3尼龙垫圈和13mm圆形立柱,穿过主板上的圆柱之后,拧进主板下面的支架中,但不拧紧。
然后把胡须金属丝的其中一个勾在尼龙垫圈之上,另一个勾在尼龙垫圈之下,调整位置使它们横向交叉但不接触。
搭建胡须电路图如图:
(2),软件设计
1、机器人伺服电机控制信号
电机转速为零的控制信号时序图
1.7ms的连续脉冲序列使电机逆时针全速旋转
1.3ms的连续脉冲序列使电机顺时针全速旋转
如图所示,高电平持续1.5ms,低电平持续20ms,然后不断重复地控制脉冲序列,该脉冲序列发给经过零点标定后的伺服电机,伺服电机不会旋转。
(如果电机旋转,说明需要标定)
可知,控制电机运转速度的是高电平持续的时间,当高电平持续1.3ms时,电机顺时针全速旋转,当高电平持续时间为1.7ms时,电机逆时针全速旋转。
2、胡须传感器的原理
由胡须电路示意图可知,右边胡须状态输入是通过P1口的第4个脚完成的,左边胡须状态输入是通过P2口的第3个脚完成的。
且每根胡须都是一个机械式的常接地的开关(胡须接地是因为板外围的镀金孔都连接到GND)。
连接到胡须的I/O管脚的电压是5V,当胡须被触动时,I/O短接到地,所以I/O管脚电压变为0V。
3、编程使机器人基于胡须导航
机器人向前走的过程中,碰到障碍物,机器人用它的一根或者两根胡须探测障碍物,一旦胡须探测到障碍物,就调用导航子函数使机器人倒退或旋转,然后再重新向前行走,直到遇到另一个障碍物。
下面的程序就是实现这一功能的
#include
#include
intP1_4state(void)
{
return(P1&0x10)?
1:
0;
}
intP2_3state(void)
{
return(P2&0x08)?
1:
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<=26,i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1300);
P1_0=0;
delay_nms(20);
}
}
voidRight_Turn(void)
{
inti
for(i=1;i<=26,i++)
{
P1_1=1;
delay_nus(1700);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
voidBackward(void)
{
inti
for(i=1;i<=26,i++)
{
P1_1=1;
delay_nus(1300);
P1_1=0;
P1_0=1;
delay_nus(1700);
P1_0=0;
delay_nms(20);
}
}
intmain(void)
{
uart_init();
printf("ProgramRunning!
\n");
while
(1)
{
if((P1_4state()==0)&&(P2_3state()==0))//两胡须同时碰到
{
Backward();//向后
Left_turn();//向左
Left_turn();//向左
}
elseif(P1_4state()==0)//右胡须碰到
{
Backward();//向后
Left_turn();//向左
}
elseif(P2_3state()==0)//左胡须碰到
{
Backward();//向后
Right_turn();//向右
}
else//胡须没碰到
Forward();//向前
}
}
四、课程设计总结与心得体会
学习单片机的意义:
与个人计算机相比,单片机虽然功能很小,但是实际生活中却应用广泛,比如空调温度控制,冰箱温度控制。
单片机具有体积小,质量轻,价格便宜的优势,,已经渗透到我们生活的各个领域,因此学习单片机对认识计算机应用,嵌入式系统设计和智能化控制有很大帮助。
五、参考资料:
《C51单片机应用与C语言程序设计》,秦志强,P63~P75
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 机器人 触觉 导航