创新与方案机器人创新实验指导书Word文档格式.docx

上传人:b****5 文档编号:16314802 上传时间:2022-11-22 格式:DOCX 页数:62 大小:5.29MB
下载 相关 举报
创新与方案机器人创新实验指导书Word文档格式.docx_第1页
第1页 / 共62页
创新与方案机器人创新实验指导书Word文档格式.docx_第2页
第2页 / 共62页
创新与方案机器人创新实验指导书Word文档格式.docx_第3页
第3页 / 共62页
创新与方案机器人创新实验指导书Word文档格式.docx_第4页
第4页 / 共62页
创新与方案机器人创新实验指导书Word文档格式.docx_第5页
第5页 / 共62页
点击查看更多>>
下载资源
资源描述

创新与方案机器人创新实验指导书Word文档格式.docx

《创新与方案机器人创新实验指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《创新与方案机器人创新实验指导书Word文档格式.docx(62页珍藏版)》请在冰豆网上搜索。

创新与方案机器人创新实验指导书Word文档格式.docx

1)新建项目工程(*.uv2):

Project→NewProject,命名,保存在新建立的用户文件夹内;

选择单片机生产公司及类型:

Atmel、AT89S52。

2)新建C程序文件:

File→New;

编辑好程序,保存为*.c的文件。

注意程序关键字的拼写、英文标点、字母的大小写等。

3)添加C程序到项目工程:

SourceGroup1右键单击→AddFilestoGroupSource。

SourceGroup1前面出现+号,单击它出现刚才添加的C程序文件名,单击此C文件,Keil会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。

4)生成执行文件十六进制目标代码文件(*.hex):

Target1右键单击→Optionfortarget‘Target1’→Output→选中“CreateHexFi:

”→连接编译生成可执行文件*.hex。

编译要求没有错误产生,允许出现警告。

③进入下载系统(PROGISP1.72):

1)参数选择:

勾选芯片擦除、编程FLASH、校验FLASH。

单片机型号:

AT89S52。

2)单击“调入Flash”按钮,找到要下载的HEX文件。

3)单击“编程”区的“擦除”按钮,开始擦除芯片内部程序。

芯片擦除成功后,点击“自动”按键,完成写、校验Flash。

等待下载完毕后,固件下载完成。

拔掉USBASP下载器ISP接口排线。

注意:

要将ISP下载线连接计算机和机器人教学板,电源接好,开关拨到“1”档位置(PRO),给教学板通电,才能进行单片机程序下载。

④从执行文件下载到单片机的那个时刻开始,程序就开始运行。

单片机向计算机发送信息。

可利用串口调试软件查看单片机输出信息,“Reset”按钮可让下载到单片机内的程序重新运行一次。

使用串口调试助手之前,首先使用串口线将单片机的串口与计算机的USB口相连,然后通过计算机的设备管理器查看要使用的串口号,如图所示。

记下该串口号,打开串口调试助手软件,选择正确的串口号,如图所示。

4、做完实验断开电源,将开关拨到“0”档(OFF),系统在不使用时没有消耗电能,电池可以用得更久。

拆卸串口线还原。

四、实验程序

1、程序HelloRoBot.c。

#include<

uart.h>

intmain(void)

{

uart_Init();

//串口初始化

printf("

Hello,thisisamessagefromyourRobot\n"

);

while

(1);

}

2、利用while循环与delay_nms()函数(毫秒级的延时)编程:

每秒发送一个信息(内容为英文自己定),通过串口显示在计算机上。

delay_nms()函数在BoeBot.h头文件中有定义。

即#include<

Boebot.h>

,编译时系统将根据头文件自动将延时函数插入到程序中。

3、让竖线“|”在屏幕上顺时针或逆时针转动输出。

参考下面的程序代码:

printf("

|"

delay_nms(500);

/"

-"

\"

4、显示静态图形:

*

**

***

****

五、实验报告要求

1、按要求:

每秒发送一个信息(内容为英文自己定),通过串口显示在计算机上,进行程序设计。

2、程序调试心得。

3、观察到的程序运行效果并加以分析。

六、思考题

1、什么是单片机?

2、MCS51、8051、C51、AT89S52之间是什么关系?

3、宝贝车机器人采用的AT89S52单片机的特点是什么?

4、#include<

头文件的作用是什么?

5、程序HelloRoBot.c中while

(1);

的作用是什么?

注:

实验操作现场检查。

实验二C51接口与伺服电机控制

1、理解和掌握C51单片机的输入\输出接口的特性;

2、理解机器人伺服电机PWM调速原理,C语言编程输出脉冲序列控制机器人轮子运动。

宝贝车机器人、ISP下载线、串行接口线、计算机、电源、螺丝刀、红色发光二极管2个和470Ω电阻2个。

1、用C51单片机的P1口的位输出高低电平控制LED发光二极管的闪烁。

看教材附录C关于面包板及LED的介绍。

面包板上共有18行插座,通过中间槽分为两列。

每一行由5个插座组成,这5个插座在面包板上是电气相连的,如将两根导线分别插入五口插座行的任意两个插座中,它们都是电气相连的。

“GND”对应于教学板的接地端,“Vcc”指校准的+5V电压。

发光二极管(如图2.1)是单向导电的电子管,长脚为正极,短脚为负极,必须连接正确,否则不能正常工作。

通过5mA左右即可发光,电流越大,其亮度越强,但若电流过大,会烧毁二极管。

给发光二极管串联一个电阻的目的是限制通过发光二极管的电流不要太大。

图2.1LED零件图图2.2发光二极管与I/O脚P1_0的连接

色环电阻为五色,用五条色环表示电阻的阻值大小。

黑0棕1红2橙3黄4绿5蓝6紫7灰8白9金、银表示误差

具体如下:

●第一条色环:

阻值的第一位数字;

●第二条色环:

阻值的第二位数字;

●第三条色环:

阻值的第三位数字;

●第四条色环:

阻值乘数的10的幂数;

●第五条色环:

误差(常见是棕色,误差为1%)。

由此,470Ω电阻为黄紫黑黑棕。

搭建一个发光二极管闪烁的LED电路(如图2.2)并编写程序HighLowLed.c。

注意,在教学底板上搭建电路时要断开电源。

修改程序让两个LED同时闪烁,并修改程序让两个LED交替亮或者灭,也可以改变延时函数参数n的值,改变LED闪烁频率。

HighLowLed.c程序如下:

BoeBot.h>

//初始化串口

TheLEDconnectedtoP1_0isblinking!

\n"

while

(1)

P1_0=1;

//P1_0输出高电平

delay_nms(500);

//延时500ms

P1_0=0;

//P1_0输出低电平

【拓展训练】实现4个或更多LED流水灯控制,对应流水灯从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。

编程方法与两个LED闪烁类似,接入的LED二极管继续接在面包板左侧其他的端口位上。

注意,程序控制各引脚输出高低电平要与所接的端口要一一对应起来。

2、两伺服电机调零。

在操作之前,先确认一下机器人两个伺服电机的电源控制线(如图2.3)是否已经正确的连接到C51单片机教学板的两个专用电机控制接口上。

P1_1引脚控制左边电机,P1_0引脚控制右边电机,在电路板上我们分别采用W、R、B来表示信号线、电源线和地,电机控制线颜色与教学板接口对应字母一致(白红黑对应WRB)。

图2.3伺服电机实物图图2.4电压“占空比”与平均电压关系

电机调速应用PWM(脉宽调制)基本原理,通过控制固定电压的直流电源开关频率改变负载两端的电压。

在PWM驱动控制的调整系统中,按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。

通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。

如图2.4,在脉冲作用下,当电机通电时,速度增加;

电机断电时,速度逐渐减少。

只要按一定规律,改变通、断电的时间,即可让电机转速得到控制。

高电平持续的时间控制电机转速,即脉冲宽度控制连续旋转电机速度和方向。

将时间间隔为20ms,脉宽为1.5ms的一系列脉冲称为零点标定信号,电机转速为零,机器人轮子静止不动。

如果电机没有进行零点标定,机器人轮子会转动,如图2.5所示,用螺丝刀轻轻调节马达上的电位器,直到马达停止转动。

如电机已经完成了零点调节,不会转动。

但是损坏了或有缺陷的电机有时也不转动。

继续检测:

●当高电平持续时间为1.3ms时,电机顺时针全速旋转;

●当高电平持续时间为1.7ms时,电机逆时针全速旋转;

●当高电平持续时间为1.3ms~1.5ms之间时,电机顺时针旋转;

●当高电平持续时间为1.5ms~1.7ms之间时,电机逆时针旋转。

图2.5.1经过孔把螺丝刀插入电位器图2.5.2轻轻地旋转螺丝刀调节电位器

3、测试电机,改变脉冲宽度控制机器人运动速度和方向。

如图2.6,定义机器人的前、后、左、右四个方向。

例程中使用printf函数是为了起提示作用,若觉得串口线影响机器人的运动,可以不用此函数。

将程序下载到单片机,关闭机器人电源开关,断开ISP下载线,将开关拨到“2”档(RUN),观察宝贝车运动情况。

图2.6机器人及其前进方向的定义

1、参考一个LED闪烁的程序(程序HighLowLed.c),编写程序让两个LED同时闪烁,并修改程序让两个LED交替闪烁,也可以改变延时函数参数n的值,改变LED闪烁频率。

*编程实现4个或更多LED流水灯控制,对应流水灯从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。

2、编程实现两伺服电机调零,可以分别调零,也可一起调零。

实现右轮调零参考代码如下,注意编程的完整性。

//P1_0输出高电平

delay_nus(1500);

//延时1.5ms

//P1_0输出低电平

delay_nus(20000);

//延时20ms

3、验证下列程序BothServosThreeSeconds.c是否让宝贝车向前进3s,后退3s。

并根据此程序按照实验报告要求编程。

intcounter;

ProgramRunning!

for(counter=1;

counter<

=130;

counter++)

P1_1=1;

delay_nus(1700);

P1_1=0;

delay_nus(1300);

delay_nms(20);

4、用LED指示电机运动状态

在实际应用中,LED往往起到状态提示作用,交通红绿灯就是一个典型的应用。

你可以修改程序来模拟交通灯过程:

假设A灯为交通灯,B灯为电机运行状态指示灯。

模拟过程如下:

A灯闪烁,B灯灭,电机停止运行;

A灯灭,B灯亮,电机开始运行;

B灯闪烁,电机减速运行;

B灯灭,A灯闪烁,电机停止运行;

如此往复。

1、实现两个LED交替闪烁的编程及电路原理图,观察到的运行效果并加以分析,程序调试心得。

有兴趣的同学还可以完成4个或更多LED流水灯控制,对应流水灯从全灭到一个一个亮或者对应流水灯从全亮到一个一个灭。

要求编程及绘制电路原理图,观察到的运行效果并加以分析,程序调试心得。

2、编程实现两伺服电机调零,可以分别调零,也可一起调零,观察到的运行效果并加以分析,程序调试心得。

3、控制两个电机的delay_nus函数的参数n有不同的组合,各种组合的运动状况填写下表。

P1_1

P1_0

描述

运动状况

1700

1300

全速,P1_1电机逆时针,P1_0电机顺时针

1500

两个电机都静止

1、LED闪烁的工作原理,即引脚输出高低电平信号,发光二极管会灭或者亮的原因是什么?

2、LED闪烁的实验中,逐渐减小延时函数参数n的值,还能看到LED闪烁吗?

为什么?

3、LED闪烁的实验中,分别将开关拨到“1”(PRO)与“2”(RUN),看实验现象有什么区别?

分析原因。

4、将电机调零的程序下载到单片机,开关拨到“2”,按“Reset”按钮,轮子仍转动,不能完全停下来,试分析有哪些原因造成的?

5、编程给与P1_1连接的左轮发出脉宽为1.7ms,与P1_0连接的右轮发出脉宽1.3ms,观察到宝贝车后退,分析是什么原因引起的?

实验三C语言函数与机器人巡航控制

1、掌握对单片机编程使机器人做基本的巡航动作:

向前、向后、左转、右转和原地旋转。

通过测试机器人脉冲数与机器人运动距离的关系,实现机器人的精确动作。

2、掌握编写程序时机器人由突然启动或停止变为逐步加速或减速运动。

3、写一些执行基本巡航动作的函数,每一个函数都能够被多次调用。

4、将复杂巡航运动记录在数组中,编写程序执行这些巡航运动。

宝贝车机器人、ISP下载线、串行接口线、计算机、电源。

1、验证程序ForwardLeftRightBackward.c,看机器人是否向前、左转、右转及向后走。

如果宝贝车向前运动的过程轻微向左或右偏移,不是一条直线。

结果就是左轮与右轮程序上是以全速行驶,实际输出有速度差,要么左轮速度太慢,要么右轮速度太慢。

让轮子加速不太实际,但是减小轮子的速度就可以解决问题。

电机速度是脉冲宽度即程序中延时函数delay_nus的参数n决定的。

n越接近1500,电机转速越慢。

要重复试验得到一个比较准确的输出。

将确定好的沿直线运动的参数更新到程序ForwardLeftRightBackward.c中相应的值。

利用for循环控制电机的运行时间,由小车运动形式决定输出距离或角度。

例程中for循环的循环次数为65,小车运行时间为1.5s,运行距离减半。

for循环的循环次数为26,电机的运行时间决定小车旋转的角度。

调整for循环的循环次数得到非常接近你想要的旋转角度。

由于每个小车的情况不一样,在向左转与右转中for循环的循环次数增加或减少电机的转角,使宝贝车旋转期望的角度,例如旋转90度。

如果发现一个值使旋转超过90°

,而另一个使旋转小于90°

,尝试选择一个使其旋转更多的值,然后稍微减小电机速度。

测试一下你的小车要循环多少次才能旋转90度。

在转弯半径较大时,可以采用一个电机增速另一个电机减速的方法转弯。

由于小车结构的影响,这种方法转弯较慢,转弯半径较大,效果受运动速度的影响大。

在需要转弯半径较小时,可以采用一个电机转动,而另一个静止的方法。

两个电机等速反向转动可以实现原地转弯。

测试宝贝车速度。

将宝贝车放在尺子旁边,确保轮子接触的地面与尺子的0厘米对齐在一条线上,按复位键重新运行程序,让宝贝车向前走1秒钟,测量从出发点到机器人停下来所接触的地面距离,测量结果就是以厘米/s为单位的。

可以参考下列程序。

for(counter=0;

130;

counter++)//运行3秒

2、将加速或减速与基本巡航动作结合起来,使机器人的每一个动作都能够匀加速或匀减速。

参考教材程序StartAndStopWithRamping.c及相似代码更改ForwardLeftRightBackward.c。

3、教材程序MovementsWithFuntions.c、MovementsWithOneFuntion.c运行结果与ForwardLeftRightBackward.c产生的效果是相同的,用函数调用简化运动程序。

修改MovementsWithOneFuntion.c使机器人走一个正方形。

4、验证程序NavigationWithSwitch.c是否走了一个矩形。

使用数组或调用函数编写程序,使机器人按你的想法运动,实现较为复杂的运动。

【拓展训练】编程使履带坦克机器人、相扑机器人、爬虫机器人巡航控制。

1、验证程序ForwardLeftRightBackward.c。

=65;

counter++)//向前

=26;

counter++)//向左转

counter++)//向右转

counter++)//向后

2、编程反复测试一下小车要循环多少次才能旋转精确的90度。

3、编程测试宝贝车速度,测量结果就是以厘米/s为单位的。

4、参考以下程序StartAndStopWithRamping.c及相似代码,更改ForwardLeftRightBackward.c,使机器人的每一个动作都能够匀加速或匀减速。

intpulseCount;

for(pulseCount=10;

pulseCount<

=200;

pulseCount=pulseCount+1)

delay_nus(1500+pulseCount);

delay_nus(1500-pulseCount);

for(pulseCount=1;

=75;

pulseCount++)

for(pulseCount=200;

pulseCount>

=0;

pulseCount=pulseCount-1)

5、修改MovementsWithOneFuntion.c使机器人走一个正方形。

#include<

voidMove(intcounter,intPC1_pulseWide,intPC0_pulseWide)

inti;

for(i=1;

i<

=counter;

i++)

dela

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

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1