ImageVerifierCode 换一换
格式:DOCX , 页数:55 ,大小:142.21KB ,
资源ID:13667004      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-13667004.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(机器人创新实验指导书.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

机器人创新实验指导书.docx

1、机器人创新实验指导书 文档编制序号:KKIDT-LLE0828-LLETD298-POI08机器人创新实验指导书机器人创新实验(3)实验指导书机器人实验室实验一 熟悉机器人与C51单片机硬件软件一、实验目的1、掌握宝贝车机器人用C51教学板与计算机硬件连接和宝贝车基本结构;2、熟悉及掌握C51系列单片机Keil uVision IDE(集成开发环境)软件、ISP下载软件及串口调试终端的使用方法。二、实验设备及软件宝贝车机器人套件、ISP下载线、串行接口线、计算机、电源。Keil uVision2 IDE集成开发环境、下载软件、串口调试软件。三、实验内容和步骤单片机控制的宝贝车机器人是通过串并口

2、或USB接口通信交互,由硬件系统与软件系统相互结合组成的一个完整的智能控制系统。单片机必须与外围设备及软件组成一个完整的应用系统(如图)。1、熟悉宝贝车机器人的结构组成(如图):小车底板、车轮、教学板、伺服电机、电池盒。这是宝贝车机器人的硬件系统,它的微控制器(MCU)是由Atmel公司生产与51系列兼容的8位AT89S52单片机。图单片机应用系统图 图采用C51单片机的机器人2、教学板指方便单片机与电源、ISP下载线、串口线以及各种传感器和电机的连接制作的一个电路板(如图)。将宝贝车机器人与计算机硬件连接,并连接到电源。连接单片机教学板ISP接口到计算机,以便程序下载;连接单片机教学板串行接

3、口到计算机,以便调试和交互;连接机器人到电池或者是供电电源。USBasp C版通用编程器图 C51单片机教学板3、运用C语言编程,运用编译器编译生成可执行文件并下载到单片机,用串口调试软件查看单片机输出信息。建立用户文件夹,方便管理程序,拷入编译所需头文件(例如,将光盘“头文件”文件夹中的文件拷贝到C:Program FilesKeilC51INC文件夹里)。进入编程系统(Keil uVision2 IDE):1)新建项目工程(*.uv2):ProjectNew Project,命名,保存在新建立的用户文件夹内;选择单片机生产公司及类型:Atmel、AT89S52。2)新建C程序文件:File

4、New;编辑好程序,保存为*.c的文件。注意程序关键字的拼写、英文标点、字母的大小写等。3)添加C程序到项目工程:Source Group 1右键单击Add Files to Group Source。Source Group 1前面出现+号,单击它出现刚才添加的C程序文件名,单击此C文件,Keil会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。4)生成执行文件十六进制目标代码文件(*.hex):Target 1 右键单击Option for targetTarget 1Output选中“Create Hex Fi:”连接编译生成可执行文件*.hex

5、。编译要求没有错误产生,允许出现警告。进入下载系统():1)参数选择:勾选芯片擦除、编程FLASH、校验FLASH。单片机型号:AT89S52。2)单击“调入 Flash”按钮,找到要下载的 HEX 文件。3)单击“编程”区的“擦除”按钮,开始擦除芯片内部程序。芯片擦除成功后,点击“自动”按键,完成写、校验Flash。等待下载完毕后,固件下载完成。拔掉USBASP下载器ISP 接口排线。注意:要将ISP下载线连接计算机和机器人教学板,电源接好,开关拨到“1”档位置(PRO),给教学板通电,才能进行单片机程序下载。从执行文件下载到单片机的那个时刻开始,程序就开始运行。单片机向计算机发送信息。可利

6、用串口调试软件查看单片机输出信息,“Reset”按钮可让下载到单片机内的程序重新运行一次。使用串口调试助手之前,首先使用串口线将单片机的串口与计算机的USB口相连,然后通过计算机的设备管理器查看要使用的串口号,如图所示。记下该串口号,打开串口调试助手软件,选择正确的串口号,如图所示。4、做完实验断开电源,将开关拨到“0”档(OFF),系统在不使用时没有消耗电能,电池可以用得更久。拆卸串口线还原。四、实验程序1、程序。#includeint main(void)uart_Init(); /串口初始化printf(Hello,this is a message from your Robotn);

7、while(1);2、利用while循环与delay_nms( )函数(毫秒级的延时)编程:每秒发送一个信息(内容为英文自己定),通过串口显示在计算机上。delay_nms( )函数在头文件中有定义。即#include,编译时系统将根据头文件自动将延时函数插入到程序中。3、让竖线“|”在屏幕上顺时针或逆时针转动输出。 参考下面的程序代码: printf(|); delay_nms(500); printf(/); delay_nms(500); printf(-); delay_nms(500); printf(); delay_nms(500); printf(|); delay_nms(5

8、00);4、显示静态图形:* * * * * * * * * *五、实验报告要求1、按要求:每秒发送一个信息(内容为英文自己定),通过串口显示在计算机上,进行程序设计。2、程序调试心得。3、观察到的程序运行效果并加以分析。六、思考题1、什么是单片机2、MCS51、8051、C51、AT89S52之间是什么关系3、宝贝车机器人采用的AT89S52单片机的特点是什么4、#include头文件的作用是什么 5、程序中while(1);的作用是什么注:实验操作现场检查。实验二 C51接口与伺服电机控制一、实验目的1、理解和掌握C51单片机的输入输出接口的特性; 2、理解机器人伺服电机PWM调速原理,C

9、语言编程输出脉冲序列控制机器人轮子运动。二、实验设备及软件宝贝车机器人、ISP下载线、串行接口线、计算机、电源、螺丝刀、红色发光二极管2个和470电阻2个。Keil uVision2 IDE集成开发环境、下载软件、串口调试软件。三、实验内容和步骤1、用C51单片机的P1口的位输出高低电平控制LED发光二极管的闪烁。看教材附录C关于面包板及LED的介绍。面包板上共有18行插座,通过中间槽分为两列。每一行由5个插座组成,这5个插座在面包板上是电气相连的,如将两根导线分别插入五口插座行的任意两个插座中,它们都是电气相连的。“GND”对应于教学板的接地端,“Vcc”指校准的+5V电压。发光二极管(如图

10、)是单向导电的电子管,长脚为正极,短脚为负极,必须连接正确,否则不能正常工作。通过5mA左右即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管。给发光二极管串联一个电阻的目的是限制通过发光二极管的电流不要太大。图 LED零件图 图发光二极管与I/O脚P1_0的连接色环电阻为五色,用五条色环表示电阻的阻值大小。黑0 棕1 红2 橙3 黄4 绿5 蓝6 紫7 灰8 白9 金、银表示误差具体如下:第一条色环:阻值的第一位数字;第二条色环:阻值的第二位数字;第三条色环:阻值的第三位数字;第四条色环:阻值乘数的10的幂数;第五条色环:误差(常见是棕色,误差为1%)。由此,470电阻为黄紫黑黑棕。

11、搭建一个发光二极管闪烁的LED电路(如图)并编写程序。注意,在教学底板上搭建电路时要断开电源。修改程序让两个LED同时闪烁,并修改程序让两个LED交替亮或者灭,也可以改变延时函数参数n的值,改变LED闪烁频率。程序如下:#include#includeint main(void)uart_Init(); /初始化串口printf(The LED connected to P1_0 is blinking!n);while(1)P1_0=1; / P1_0 输出高电平delay_nms(500); /延时500msP1_0=0; / P1_0 输出低电平delay_nms(500); /延时50

12、0ms【拓展训练】实现4个或更多LED流水灯控制,对应流水灯从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。编程方法与两个LED闪烁类似,接入的LED二极管继续接在面包板左侧其他的端口位上。注意,程序控制各引脚输出高低电平要与所接的端口要一一对应起来。2、两伺服电机调零。在操作之前,先确认一下机器人两个伺服电机的电源控制线(如图)是否已经正确的连接到C51单片机教学板的两个专用电机控制接口上。P1_1引脚控制左边电机,P1_0引脚控制右边电机,在电路板上我们分别采用W、R、B来表示信号线、电源线和地,电机控制线颜色与教学板接口对应字母一致(白红黑对应WRB)。图伺服电机实物图 图 电压“占

13、空比”与平均电压关系电机调速应用PWM(脉宽调制)基本原理,通过控制固定电压的直流电源开关频率改变负载两端的电压。在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。如图,在脉冲作用下,当电机通电时,速度增加;电机断电时,速度逐渐减少。只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。高电平持续的时间控制电机转速,即脉冲宽度控制连续旋转电机速度和方向。将时间间隔为20ms,脉宽为的一系列脉冲称为零点标定信号,电机转速为零,机器人轮子静止不

14、动。如果电机没有进行零点标定,机器人轮子会转动,如图所示,用螺丝刀轻轻调节马达上的电位器,直到马达停止转动。如电机已经完成了零点调节,不会转动。但是损坏了或有缺陷的电机有时也不转动。继续检测:当高电平持续时间为时,电机顺时针全速旋转;当高电平持续时间为时,电机逆时针全速旋转;当高电平持续时间为之间时,电机顺时针旋转;当高电平持续时间为之间时,电机逆时针旋转。3、测试电机,改变脉冲宽度控制机器人运动速度和方向。如图,定义机器人的前、后、左、右四个方向。例程中使用printf函数是为了起提示作用,若觉得串口线影响机器人的运动,可以不用此函数。将程序下载到单片机,关闭机器人电源开关,断开ISP下载线

15、,将开关拨到“2”档(RUN),观察宝贝车运动情况。图 机器人及其前进方向的定义四、实验程序1、参考一个LED闪烁的程序(程序),编写程序让两个LED同时闪烁,并修改程序让两个LED交替闪烁,也可以改变延时函数参数n的值,改变LED闪烁频率。*编程实现4个或更多LED流水灯控制,对应流水灯从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。2、编程实现两伺服电机调零,可以分别调零,也可一起调零。实现右轮调零参考代码如下,注意编程的完整性。while(1)P1_0=1; /P1_0 输出高电平delay_nus(1500); /延时P1_0=0; /P1_0 输出低电平delay_nus(200

16、00); /延时20ms3、验证下列程序是否让宝贝车向前进3s,后退3s。并根据此程序按照实验报告要求编程。#include#includeint main(void)int counter;uart_Init();printf(Program Running!n);for(counter=1;counter=130;counter+)P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);for(counter=1;counter=130;counter+)P1_1=1;delay_nus(1300)

17、;P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);while(1);4、用LED 指示电机运动状态 在实际应用中,LED 往往起到状态提示作用,交通红绿灯就是一个典型的应用。你可以修改程序来模拟交通灯过程:假设A 灯为交通灯,B 灯为电机运行状态指示灯。模拟过程如下:A 灯闪烁,B 灯灭,电机停止运行;A 灯灭,B 灯亮,电机开始运行;B 灯闪烁,电机减速运行;B 灯灭,A 灯闪烁,电机停止运行;如此往复。五、实验报告要求1、实现两个LED交替闪烁的编程及电路原理图,观察到的运行效果并加以分析,程序调试心得。有兴趣的同学还可以完成4个或更多

18、LED流水灯控制,对应流水灯从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。要求编程及绘制电路原理图,观察到的运行效果并加以分析,程序调试心得。2、编程实现两伺服电机调零,可以分别调零,也可一起调零,观察到的运行效果并加以分析,程序调试心得。3、控制两个电机的delay_nus函数的参数n有不同的组合,各种组合的运动状况填写下表。P1_1P1_0描述运动状况17001300全速,P1_1电机逆时针,P1_0电机顺时针1300170017001700130013001500170015001300130015001700150015001500两个电机都静止六、思考题1、LED闪烁的工作原理

19、,即引脚输出高低电平信号,发光二极管会灭或者亮的原因是什么2、LED闪烁的实验中,逐渐减小延时函数参数n的值,还能看到LED闪烁吗为什么3、LED闪烁的实验中,分别将开关拨到“1”(PRO)与“2”(RUN),看实验现象有什么区别分析原因。4、将电机调零的程序下载到单片机,开关拨到 “2”,按“Reset”按钮,轮子仍转动,不能完全停下来,试分析有哪些原因造成的 5、编程给与P1_1连接的左轮发出脉宽为,与P1_0连接的右轮发出脉宽,观察到宝贝车后退,分析是什么原因引起的注:实验操作现场检查。实验三 C语言函数与机器人巡航控制一、实验目的1、掌握对单片机编程使机器人做基本的巡航动作:向前、向后

20、、左转、右转和原地旋转。通过测试机器人脉冲数与机器人运动距离的关系,实现机器人的精确动作。 2、掌握编写程序时机器人由突然启动或停止变为逐步加速或减速运动。3、写一些执行基本巡航动作的函数,每一个函数都能够被多次调用。4、将复杂巡航运动记录在数组中,编写程序执行这些巡航运动。二、实验设备及软件宝贝车机器人、ISP下载线、串行接口线、计算机、电源。Keil uVision2 IDE集成开发环境、下载软件、串口调试软件。三、实验内容和步骤1、验证程序,看机器人是否向前、左转、右转及向后走。如果宝贝车向前运动的过程轻微向左或右偏移,不是一条直线。结果就是左轮与右轮程序上是以全速行驶,实际输出有速度差

21、,要么左轮速度太慢,要么右轮速度太慢。让轮子加速不太实际,但是减小轮子的速度就可以解决问题。电机速度是脉冲宽度即程序中延时函数delay_nus的参数n决定的。n越接近1500,电机转速越慢。要重复试验得到一个比较准确的输出。将确定好的沿直线运动的参数更新到程序中相应的值。利用for循环控制电机的运行时间,由小车运动形式决定输出距离或角度。例程中for循环的循环次数为65,小车运行时间为,运行距离减半。for循环的循环次数为26,电机的运行时间决定小车旋转的角度。调整for循环的循环次数得到非常接近你想要的旋转角度。由于每个小车的情况不一样,在向左转与右转中for循环的循环次数增加或减少电机的

22、转角,使宝贝车旋转期望的角度,例如旋转90度。如果发现一个值使旋转超过90,而另一个使旋转小于90,尝试选择一个使其旋转更多的值,然后稍微减小电机速度。测试一下你的小车要循环多少次才能旋转90度。在转弯半径较大时,可以采用一个电机增速另一个电机减速的方法转弯。由于小车结构的影响,这种方法转弯较慢,转弯半径较大,效果受运动速度的影响大。在需要转弯半径较小时,可以采用一个电机转动,而另一个静止的方法。两个电机等速反向转动可以实现原地转弯。测试宝贝车速度。将宝贝车放在尺子旁边,确保轮子接触的地面与尺子的0厘米对齐在一条线上,按复位键重新运行程序,让宝贝车向前走1秒钟,测量从出发点到机器人停下来所接触

23、的地面距离,测量结果就是以厘米/s为单位的。可以参考下列程序。#include#includeint main(void)int counter;uart_Init();printf(Program Running!n);for(counter=0;counter130;counter+)/运行3 秒P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);while(1);2、将加速或减速与基本巡航动作结合起来,使机器人的每一个动作都能够匀加速或匀减速。参考教材程序及相似代码更改。3、教材程序、运行结果

24、与产生的效果是相同的,用函数调用简化运动程序。修改使机器人走一个正方形。4、验证程序是否走了一个矩形。使用数组或调用函数编写程序,使机器人按你的想法运动,实现较为复杂的运动。【拓展训练】编程使履带坦克机器人、相扑机器人、爬虫机器人巡航控制。四、实验程序1、验证程序。#include#includeint main(void)int counter;uart_Init();printf(Program Running!n);for(counter=1;counter=65;counter+)/向前P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(130

25、0);P1_0=0;delay_nms(20);for(counter=1;counter=26;counter+)/向左转P1_1=1;delay_nus(1300);P1_1=0;P1_0=1;delay_nus(1300);P1_0=0;delay_nms(20);for(counter=1;counter=26;counter+)/向右转P1_1=1;delay_nus(1700);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);for(counter=1;counter=65;counter+)/向后P1_1=1;delay_nu

26、s(1300);P1_1=0;P1_0=1;delay_nus(1700);P1_0=0;delay_nms(20);while(1);2、编程反复测试一下小车要循环多少次才能旋转精确的90度。3、编程测试宝贝车速度,测量结果就是以厘米/s为单位的。4、参考以下程序及相似代码,更改,使机器人的每一个动作都能够匀加速或匀减速。#include#includeint main(void)int pulseCount;uart_Init();printf(Program Running!n);for(pulseCount=10;pulseCount=200;pulseCount=pulseCount

27、+1)P1_1=1;delay_nus(1500+pulseCount);P1_1=0;P1_0=1;delay_nus(1500-pulseCount);P1_0=0;delay_nms(20);for(pulseCount=1;pulseCount=0;pulseCount=pulseCount-1)P1_1=1;delay_nus(1500+pulseCount);P1_1=0;P1_0=1;delay_nus(1500-pulseCount);P1_0=0;delay_nms(20);while(1);5、修改使机器人走一个正方形。#include #include void Move

28、(int counter,int PC1_pulseWide,int PC0_pulseWide)int i;for(i=1;i=counter;i+)P1_1=1;delay_nus(PC1_pulseWide);P1_1=0;P1_0=1;delay_nus(PC0_pulseWide);P1_0=0;delay_nms(20);int main(void)uart_Init();printf(Program Running!n);Move(65,1700,1300);Move(26,1300,1300);Move(26,1700,1700);Move(65,1300,1700);whil

29、e(1);6、使用数组或调用函数编写程序,使机器人按你的想法运动,实现较为复杂的运动。五、实验报告要求1、程序设计小车要循环多少次才能旋转精确的90度,观察到的运行效果并加以分析,程序调试心得。2、更改,使机器人的每一个动作都能够匀加速或匀减速。写出程序,观察到的运行效果并加以分析,程序调试心得。3、修改,使机器人走一个正方形。写出程序,观察到的运行效果并加以分析,程序调试心得。4、使用数组或调用函数编写程序,使机器人按你的想法运动,实现较为复杂的运动。写出程序,观察到的运行效果并加以分析,程序调试心得。六、思考题1、在程序中,向左转与右转的for循环的循环次数为26,这是什么意思程序运行效果是怎样的2、机器人完成各种巡航动作的过程中,每次启动和停止时,动作太快,几乎倾倒,为什么会这样呢采用什么方法可以解决这种问题3、让小车实现转弯的方法有哪些注:实验操作现场检查。实验四 C51接口与触觉导航一、实验目的1、接触型传感器作为输入反馈与C51单片机的编程实现。 2、编程使机器人基于胡须导航,条件判断语句的嵌套与机器人的人工智能决策的编程使机器人逃离进入墙

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2