机器人设计教学文案.docx

上传人:scccc 文档编号:12723519 上传时间:2021-12-05 格式:DOCX 页数:10 大小:52.54KB
返回 下载 相关 举报
机器人设计教学文案.docx_第1页
第1页 / 共10页
机器人设计教学文案.docx_第2页
第2页 / 共10页
机器人设计教学文案.docx_第3页
第3页 / 共10页
机器人设计教学文案.docx_第4页
第4页 / 共10页
机器人设计教学文案.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《机器人设计教学文案.docx》由会员分享,可在线阅读,更多相关《机器人设计教学文案.docx(10页珍藏版)》请在三一文库上搜索。

1、智能控制与程序设计-宝贝车机器人课程报告班级:电信学院13306人员:王丽春同组人员:陈天、刘棒锦时间:2015.11.14指导教师:杨杰、汤博文地点:工业中心3021、课程目的、任务及要求1.1 课程目的 通过训练,了解一个完整的、可以运动的机器人应由那几部分组成。理解每一个机器 人都是根据特定要求而设计的,设计的第一步就是将使用要求分析清楚,确定设计时 需要考虑的参数,包括:机器人的运动路径、定位精度,重复定位精度、任务执行参 数等。 了解目前机器人的能量供给的各种形式,掌握控制部分和执行部分的供电方式。 理解机器人的运动系统的构成及其原理。 了解机器人探测周边环境的传感器有那些,掌握传感

2、器的信号如何传送给单片机的。 理解机器人是如何根据传感器的信息做出决策。 掌握机器人如何运动,并且了解机器人运动的其它方法。 理解机器人与用户交换信息的各种方法。 培养团队协作和独立工作能力。1.2 课程任务及要求 陈述清楚宝贝机器人如何实现运动。 掌握宝贝机器人的控制部分和运动部分的供电方式,并画出这两部分的电路示意图。 理清宝贝机器人的人机交互关系,陈述清楚宝贝机器人如何实现人机交互(通过串口 调试软件实现人机交互) 。 陈述清楚宝贝机器人有那些传感器,传感器的信息是如何传送到单片机的。 完成宝贝机器人的触觉导航,并陈述清楚其原理。 能在实验中迅速排除各种故障。 鼓励创新,在完成前八个任务

3、的前提下,尽量能做出新的开发,如果现有硬件条件不 满足,可以陈述清楚创新原理。二、课程准备2.1 实验设备硬件:PC机一台、AT89S52型单片机、机器人组件、ISP下载电缆、串口线、电池软件: Keil uVision4 IDE 集成开发环境、 progisp172 软件下载工具、串口调试软件2.2 机器人的组装和软件的安装及初步应用2.2.1 组装宝贝车机器人 “宝贝车”是由许多部件组成的一款机器人,在使用及编程控制其运动之前,首先 要进行组装,步骤如下:(1) 安装机器人底盘硬件 零件列表:宝贝车底盘、螺柱、盘头螺钉、 13/32 英寸的橡胶圈1. 将 13/32 英寸的橡胶套圈插到宝贝

4、车底盘中心的孔内,确保底盘中心孔的边缘嵌在 橡胶圈的凹槽中;2. 用 4 个螺钉将螺柱固定在底盘上。(2) 拆除伺服喉,将电机安装在底盘上 零件列表:宝贝车底盘(已部分组装好) 、连续旋转电机、螺钉 3/8 英寸 4-40、 螺母 4-401. 用螺钉和螺母将电机固定在底盘上, 为了最好性能, 需从里面将电机放入底盘。 由于底盘空间小,螺钉也小,所以螺丝起子不容易进去,螺钉的安装需要有一定的耐心;2. 用标签纸表示左右电机轮。(3) 安装电池盒和轮子零件列表:宝贝车底盘、平头螺钉 3/8英寸4-40、螺母4-40、带有插头的电池盒、开 口销、球状尾轮、橡皮圈、塑胶轮子1. 安装电池盒比较简单,

5、注意的就是在将电源线和伺服电机线穿过橡胶圈的孔时,由于两条线的接头比较大,可先将橡胶圈取出便于穿出,当线穿过之后再将橡胶圈安在底 盘的空上;2. 安装尾轮,用开口销作为轴,穿过底盘左侧、尾轮、底盘右侧的孔,将球状尾轮固定 在底盘上,并将开口销的一端弯曲;安装驱动轮,只要将两个轮子有凹槽的一面压在 输出轴上,并用螺钉固定即可,注意给轮子安橡胶圈时,为了便于安装将橡胶圈可裁 窄一些。(4) 安装教学底板零件列表:宝贝车机器人底盘、平头螺钉、带控制器的教学板2.2.2安装软件及其初步应用1.本次实验需要用到3款软件:Keil uVision4 IDE集成开发环境、PROGISP17下载软件、串口调试

6、软件。在软件安装好以后,应有串口的连接和ISP下载线的连接,以实现编程和交互Project New Project 在文Keil uVision4软件的使用:启动 Keil uVision4件名中输入“ 001”保存在想保存的位置选择AT89S52确定选择不加载“否”单击新建按钮,将编号的程序写入保存001.C在项目文件夹 在目标工程项目中,右键“ Source GroupT 单击 Add Files to Group Source Group1 Add 右键 Target1选择 Option for target Target1 ' 单击 output,选择 Create HEX F

7、i:确定 运行,没有错误即创建成功 文件名为001.hex,这个文件就是将来可以烧录到 C51单片 机中的可执行程序。PROGISP17下载软件的使用:串口调试软件的使用:打开串口调试终端,选择 COM后单击“打开串口”,在程序 运行时,在接收区就会看到单片机向 PC发出的信息。此软件用来显示单片机与计算机 的交互信息,在硬件上要有串行接口或 USB接 口来与单片机教学板的串口连接。二、课程任务3.1伺服电机的控制3.1.1单片机的输出测试单片机的输出测试是通过控制单灯闪烁实现的根据图1搭建LED电路:.)1VCCLEDR1470通过编程控制单灯闪烁、两灯同时闪烁和两灯交替闪烁,以及其闪烁的时

8、间,只要 让两个LED灯分别接到P1_0和P1_1,电路连接方式相同,通过对 P1_0和P1_1赋值, 并改变 delay_nms(time) 即可实现以上各种控制,例如两灯交替闪烁,间隔时间为 1s, 程序如下:#include<BoeBot.h> #include<uart.h> int main(void) uart_Init();printf("The LED conneced to P1_0 is blinking!n");while(1)P1_1=1;delay_nus(1500);P1_1=0;delay_nus(200);3.1.2

9、伺服电机的标定 在测试控制伺服电机转速的信号之前,一定要对伺服电机标定(调零) ,其程序如下: 对右轮标定#include<BoeBot.h>#include<uart.h>int main(void)uart_Init(); / 初始化串口 printf("The LED connected to P1_0 is blinking!n"); while(1)P1_0=1;/ P1_0输出高电平delay_nus(1500);/延时 1.5msP1_0=0;/ P1_0输出低电平delay_nms(20);/延时 20ms 此程序使左轮静止不动,如果

10、左轮缓慢动,应用起子对其调整,具体步骤:将教学 底板上的三位开关扳到 2,调整底盘下边伺服电机的调零螺钉,调整时要缓慢,直到标 定的轮子静止不动。对左轮标定#include<BoeBot.h>#include<uart.h>int main(void)uart_Init(); / 初始化串口 printf("The LED connected to P1_0 is blinking!n"); while(1)P1_1=1;/ P1_1输出高电平delay_nus(1500);/延时 1.5msP1_1=0;/ P1_1输出低电平delay_nms(2

11、0);/延时 20ms此程序使右轮静止不动,如果右轮缓慢转动,同样应用起子对其调整,具体步骤同 左轮的标定。遇到的问题及解决办法:分别标定两个伺服电机比较浪费时间, 可以将两个程序写在一起,同时对左右电机 进行标定,可节省时间。3.1.3对电机控制信号的测试控制电机的速度的是高电平持续时间,当高电平持续时间为1.3ms时,电机顺时针全速旋转,当高电平持续时间1.7ms时,电机逆时针全速旋转注意的问题:顺时针和逆时针是从所测试的轮子的外面轴向看过去的旋转方向。图2为电机转速为0的控制信号时序-HI I.Sms-HI1.5 ITE 20 FT1S 图2图3为1.3ms的控制脉冲序列使电机顺时针全速

12、旋转20 ms图3图4为1.7ms的控制脉冲序列使电机逆时针全速旋转Vdd(5V)Vss (D V)1J ms1.7 ms20 ms图4心得体会:电机转动方向及速度的调节可以通过改变delay_nus();括号中数值来实现调节。实际测试小车时,合理的速度及左右轮方向的配合可以使小车行走时更可 靠,这需要反复调试程序。3.2机器人巡航控制3.2.1基本巡航动作这个任务主要是改变机器人的前进方向,实现向前、向左、向右、向后、原地转、绕支 点转,并结合上一任务循环次数的控制来控制运动时间。机器人的转向问题无非是通过 控制机器人的两个轮子逆时针、顺时针旋转来实现。表1说明了机器人在标定电机后在不同脉冲

13、序列的情况下的运动形式。表1左轮右轮转向P1_1=1; delay_nus(1700);P1_l=0; delay_ nm s(20);左轮逆时针转P1_0=1; delay_nus(1300);P1_0=0; delay_ nm s(20);右轮顺时针前进(全速)P1_1=1; delay_nus(1300);P1_l=0; delay_ nm s(20);左轮顺时针转P1_0=1; delay_nus(1700);P1_0=0; delay_ nm s(20);右轮逆时针后退(全速)P1_1=1; delay_nus(1300);P1_l=0; delay_ nm s(20);左轮顺时针转

14、P1_0=1; delay_nus(1300);P1_0=0; delay nms(20);右轮顺时针双轮左转P1_1=1; delay_nus(1700);P1_l=0; delay_ nm s(20); 左轮逆时针转P1_0=1; delay_nus(1700);P1_0=0; delay nms(20);右轮逆时针双轮右转P1_1=1; delay_nus(1500);P1_l=0; delay_ nm s(20);左轮停止P1_0=1; delay_nus(1300);P1_0=0; delay_ nm s(20);右轮顺时针以左轮为支点左转P1_1=1; delay_nus(1700

15、);P1_l=0; delay_ nm s(20);左轮逆时针P1_0=1; delay_nus(1500);P1_0=0; delay_ nm s(20);右轮停止以右轮为支点右转注意:伺服电机的控制线连接在教学板的单片机上,通过给单片机控制器编程,使单片机的P1端口的第一引脚P1_1和第二引脚P1_1来发出伺服电机的控制信号,控制 信号通过控制线来控制左右伺服电机的转动,从而实现机器人以不同的速度及方向运动。函数控制机器人运行程序:#in clude<BoeBot.h>#in clude<uart.h>int mai n(void) int coun ter;uar

16、t_l ni t();prin tf("Program Running'n ”); for(co un ter=1;co un ter<=65;co un ter+) P1_1=1;delay_ nus(1700);P1_ 仁0;P1_0=1;delay_ nus(1300);P1_0=0; delay_ nm s(20); _for(co un ter=1;co un ter<=26;co un ter+) P1_1=1;delay_ nus(1300);P1_ 仁0;P1_0=1;delay_ nus(130°);P1_0=0; delay_ nm

17、s(20);-for(co un ter=1;co un ter<=26;co un ter+) P1_1=1;delay_ nus(1700);P1_ 仁0;P1_0=1;delay_ nus(170°);P1_0=0; delay_ nm s(20);-for(co un ter=1;co un ter<=65;co un ter+) P1_1=1;delay_ nus(1300);P1_ 仁0;P1_0=1;delay_ nus(170°);P1_0=0; delay_ nm s(20);-数组控制机器人运行程序:#i nclude<BoeBot.h

18、> #in clude<uart.h>int mai n(void)int coun ter;char Navigatio n10='F','L','F','F','R','B','L','B','B', int address=0;uart_I ni t();prin tf("program Runnin g!n");for(co un ter=1;co un ter<=65;co un ter+)P1_1

19、=1;delay_ nus(1700);P1_ 1=0;P1_0=1;delay_ nus(130°);P1_0=0; delay_ nm s(20);-for(co un ter=1;co un ter<=26;co un ter+)P1_1=1;delay_ nus(1300);P1_ 1=0;P1_0=1;delay_ nus(130°);P1_0=0; delay_ nm s(20); _for(co un ter=1;co un ter<=26;co un ter+3.3机器人触觉导航Qi P1_1=1;delay_ nu s(1700);P1_ 1=

20、0;P1_0=1;delay_ nus(170°);P1_0=0; delay_ nm s(20);-for(co un ter=1;co un ter<=65;co un ter+) P1_1=1;delay_ nu s(1300);P1_ 1=0;P1_0=1;delay_ nus(170°);P1_0=0; delay_ nm s(20);- while(Navigatio naddress!=Q) switch(Navigati on address) case'F':Forward();break; case'L':Left_

21、Tur n( );break; case'R':Right_Turn();break; case'B':Backward();break; address+;3.3.1连接触觉导航电路并测试零件列表:金属丝2根、平头M3X 22盘头螺钉2个、13mm圆形立柱2个、M3尼龙垫圈2个、3-pin公-公接头2个、220欧电阻2个、10k欧电阻2个安装步骤:1.拆掉连接主板到前支架的两颗螺钉;2. 螺钉依次穿过尼龙垫圈和圆形立柱;3. 把须状金属丝的其中一个勾在尼龙垫圈之上,另一个勾在尼龙垫圈之下,调整位置使他们横向交叉但又不接触;4. 拧紧螺钉到支架上。按照图5搭建电

22、路:aWr22011aVA-220 0LeftVt)=sler图5触须电路原理图电路原理:由原理图可知,每条胡须都是一个常开开关。连接到每个胡须电路的I/O 引脚监视着10k上拉电阻上的电压变化。当胡须没有被触动时,连接胡须的I/O管脚的电压是5V,当胡须被触动,I/O短接到地,所以I/O管脚的电压是0V。单片机可以读入 相应的数据,进行分析、处理、控制机器人运动。在进行胡须测试之前需将串口电缆连 接好,需用到调试终端以显示左右胡须状态,调用相关程序进行测试。3.3.2胡须导航,胡须测试程序:#in clude<BoeBot.h>#in clude<uart.h>int

23、 P1_4state(void)-return(P1 &0 x10)?1:0;int P2_3state(void)-return(P2&0x08)?1:0;int main( void)uart_I ni t();prin tf("WHISKER STARTES'n"); while(1)prin tf("right;%d”',P1_4state(); prin tf("left;%d'",P2_3state(); delay_ nm s(150);胡须避障程序:#in clude<BoeBot.

24、h>#in clude<uart.h>int P1_4state(void) return(P1 &0x10)?1:0;int P2_3state(void)-return(P2&0 x08)?1:0;int mai n(void)while(1) if(P1_4state()=0)&&(P2_3state()=0) Backward();Left_Turn();Left_turn(); - - else if(P1_4state()=0) _Backward();Left_Turn(); _else if(P2_3state()=0) _Ba

25、ckward();Right_Turn(); _elseForward();两个胡须状态有三种,需分情况讨论,需用到 if 语句。程序中应用的子程序( Ox 代表十六进制数):1. 获取P1_3的状态,即左胡须int P1_3state(void)return (P1&0x08)?1:0;2. 获取P1_2的状态,即右胡须int P1_2state(void)return (P2&0x04)?1:0;3. 向前子程序void Forward(void)4. 左转子程序void Left_Turn(void)5. 右转子程序void Right_Turn(void)6. 后退子程

26、序void Backward(void)7. 循迹左转void Left_Turnsmall(void)8. 循迹右转void Right_Turnsmall(void)9. 左拐 180 度void Left_Turn180(void)10. 右拐 180 度void Right_Turn180(void)11. 小幅度左拐void Left_Turn111(void)12. 小幅度右拐void Right_Turn111(void)13. 停车void Stop_car(void) 注:子程序中的左右转和后退可以设定一个变量,用来代表循环次数,然后只需在 主程序中更改变量的值即可实现左右转

27、角度的改变及后退距离的改变, 程序更容易 修改。说明:左胡须接引脚P1_3,右胡须接引脚P1_2,在机器人的运动过程中,当左右 胡须同时触到障碍物时,两个引脚输入全为0,此时通过调用相应函数 Backward();Left_Turn ();Left_Turn ();实现后退并转 180 度;当只有左胡须触到障碍物时, P1_4 输入为 0,此时调用函数 Backward();Right_Turn ();实现向后并向右转;当只有右 胡须触到障碍物时,P2_3输入为0,此时调用函数Backward(); Left_Turn ();实现 向后并向左转。 函数调用的过程中其实是通过连接在单片机引脚上的两个伺服电机控制 线,向伺服电机发送不同的脉冲序列,从而实现电机的不同运动。四、课程总结本学期智能控制与程序设计课程感觉收获颇多,我们 这次课程设计提供了一次理论与实践结合的机会,通过这 次课设我们学到的不光是单片机和 C 语言编程的应用,还 涉及到电路知识及机器人工程等知识,是一次很好的创新 性实习,既锻炼了动手能力又培养了创新能力和团队合作 精神,对我们将来开发单片机系统或从事机器人研究打下 了很好的基础。通过这次实习也让我们学习到了要善于发现问题,遇 到问题时,要从不同角度去思考,避免惯性思维。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1