机器人控制实验要求

  • 格式:doc
  • 大小:3.13 MB
  • 文档页数:33

机器人控制实验要求 说明: 1、每个同学按照以下要求写实验报告。 2、只交电子稿,把每个实验的实验过程和总结部分补充完整。 3、每次实验以自己的学号姓名命名,例如:091824205王欢 4、电子文稿交到:ftp://192.168.40.14/郭海如/”本学期”/机器人控制/”自己班级”/对应的实验名称

实验一、系统认知实验 实验内容: keil软件的使用, 下载软件的使用 串口调试软件的使用 小车舵机调零 实验步骤:1、组装机器人小车。组装后如图

2、将程序下载到小车中。使用keil生成hex文件后再用程序下载软件导入到小车芯片中。 下载可执行文件到单片机 点击 ISP 下载软件图标,打开 ISP 下载软件窗口如图 1-18 所示,并将通信参数设置成 图中所示的参数。 第一个为接口类型选择窗口,该窗口的下拉列表中提供了许多接口类型:串口 COM1~ COM16、并口LPT1~LPT3以及 USB 接口等。教材使用并口 LPT1。 第二个为下载速度选择窗口,该窗口内容与接口类型紧密相连。不同的接口,该窗口就 提供不同内容的下载速度。若选择 LPT1,则提供了五种下载速度:TURBO模式、FAST模式、 NORMAL 模式、SLOW 模式和 TURBO SLOW 模式。在这五种模式下,程序下载速度依次减小。教 材中的例程使用的是第一个模式 TURBO 模式,下载速度最快。 第三个为单片机型号选择窗口。 每一款软件都提供了帮助文档。如 SL ISP 软件界面的右上角有个“问号”按钮,单击 它就弹出一系列的选项,这些选项就对该款软件做出了大致的解释,有助你快速掌握软件的 使用。 点击“Flash”,选择要下载的可执行 HEX 文件——HelloRoBot.Hex,选择后点击编程 开始下载。如果下载成功,则下面显示“完成次数:x 次”,否则显示“失败次数: x 次”。 如果芯片是第二次下载程序,请先选中“擦除”复选框。 3、小车程序开始运行后,用螺丝刀对电机进行调零。 实验结果:组装好了小车,把相应的程序通过软件形成可执行文件导入到小车中,并对小车的舵机进行了调零操作。

实验总结:通过这次实验,做到了下面几点: 1. C51 系列单片机 Keil uVision IDE(集成开发环境)软件和 ISP 下载软件的下载和安装; 2. 机器人用 C51 教学板与计算机或者笔记本的连接; 3. 如何在集成开发环境中创建目标工程文件,并添加和编辑 C 语言源程序 ; 4. C 语言程序的编译和下载 。 对系统有了一些认知 ,keil软件的使用,下载软件的使用,串口调试软件的使用,小车舵机调零等相关知识有了一定的了解。 实验二、用计算机控制机器人运动 实验内容: 单灯闪烁控制 机器人伺服电机控制 计数并控制循环次数 用计算机来控制机器人的运动

实验步骤:依次对单灯闪烁控制、机器人伺服电机控制、计数并控制循环次数、用计算机来控制机器人的运动进行验证。

实验电路图及程序: (1)单灯闪烁控制实验代码段: while(1) { P1_0=1; // P1_0 输出高电平 delay_nms(500); //延时500ms P1_0=0; // P1_0 输出低电平 delay_nms(500); //延时500ms }

(2)机器人伺服电机控制 控制程序代码段: while(1) { P1_0=1; //P1_0 输出高电平 delay_nus(1500); //延时 1.5ms P1_0=0; //P1_0 输出低电平 delay_nus(20000); //延时 20ms }

(3)技术并控制循环次数。 验证是否与 P1_1 连接的电机逆时针旋转 2.17 秒,然后与 P1_0 连接的电机旋转 4.34 秒 #include #include int main(void) { int Counter;

uart_Init(); printf("Program Running!\n");

for(Counter=1;Counter<=100;Counter++) { P1_1=1; delay_nus(1700); P1_1=0; delay_nms(20); } for(Counter=1;Counter<=200;Counter++) { P1_0=1; delay_nus(1700); P1_0=0; delay_nms(20); } while(1); }

(4)用你的计算机来控制机器人的运动。 z 输入、保存、下载并运行程序 ControlServoWithComputer.c z 验证是否机器人各个轮子的转动是不是同你期望的运动一样 #include #include int main(void) { int Counter; int PulseNumber,PulseDuration; uart_Init(); printf("Program Running!\n");

printf(“Please input pulse number:\n”); scanf(“%d”,&PulseNumber); printf(“Please input pulse duration:\n”); scanf(“%d”,&PulseDuration);

for(Counter=1;Counter<=PulseNumber;Counter++) { P1_1=1; delay_nus(PulseDuration); P1_1=0; delay_nms(20); } for(Counter=1;Counter<=PulseNumber;Counter++) { P1_0=1; delay_nus(PulseDuration); P1_0=0; delay_nms(20); } while(1); }

实验结果:对应程序验证运行的正确性。

实验总结:通过实验了解了用单片机 AT89S52 的输入/输出接口来连接、 测试和控制机器人伺服电机。并且理解和掌握用单片机输入/输出接口控制伺服电机方向、速度和运行时间的相关原理和编程技术。

实验三、机器人巡航控制 实验内容: 1、基本巡航动作 2、匀加速/减速运动 3、用数组建立复杂运动 实验步骤:编程对应的进行硬件的连接操作。 1.对单片机编程使机器人做一些基本巡航动作:向前,向后,左转,右转和原地旋转 2.编写程序使机器人由突然启动或停止变为逐步加速或减速运动 3.写一些执行基本巡航动作的函数,每一个函数都能够被多次调用 4.将复杂巡航运动记录在数组中,编写程序执行这些巡航运动

实验电路图及程序:(1)基本巡航动作。 下面的程序片段可以使其向后走: P1_1=1; delay_nus(1300); P1_1=0; P1_0=1; delay_nus(1700); P1_0=0; delay_nms(20);

下面的程序片段可以使你的机器人原地左转: P1_1=1; delay_nus(1300); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20);

下面的程序可以使你的机器人原地右转: P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1700); P1_0=0; delay_nms(20);

把上述命令组合到一个程序中让机器人向前走、左转、右转以及向后走。

(2)匀加速/减速运动。 匀加速运动程序: for(pulseCount=10;pulseCount<=200;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); } 上述 for 循环语句能使机器人的速度由停止到全速。

(3)用数组建立复杂运动。 用数组编程,是小车走的轨迹为一个矩形。 #include #include void Forward(void) { int i; for(i=1;i<=65;i++) { P1_1=1; delay_nus(1700); P1_1=0; P1_0=1; delay_nus(1300); P1_0=0; delay_nms(20); } } void Left_Turn(void) { int i; 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); } } void Right_Turn(void) {