1、移动机器人基础培训,第一节 微控制器(MCU)基础,任务1,让LED按照规定的时序闪亮,完成任务的步骤,明确任务 分析任务 构思解决方案 安装硬件 编写程序 下载、运行、测试 总结与讨论,一、明确任务,LED,Light Emitting Diode 发光二极管 A 阳极 (比较长的那根管脚) K 阴极 (比较短的那根管脚) 下面的电路可以使LED发光,A,K,470欧姆,5伏,470,5V,接地 电势零点,二、分析任务,本任务要求LED按照如下的时序图闪亮 实际上是要求Va按照如下的时序变化,470,Va,三、构思解决方案,解决方案,Micro Control Unit 微控制器 Input
2、-Output Port 输入输出端口 MCU能按顺序执行命令(程序)让I/O口按照规定的时序输出电压。,470,接地 Vss,I/O口,电源,MCU,开关,程序,让指定的I/O口输出5V电压 延时1秒 让I/O口输出0V电压 延时1秒 让I/O口输出5V电压 延时2秒 让I/O口输出0V 结束,四、安装硬件,教学底板,Basic Stamp 2 MCU,电池盒,电池,Pin 1: SOUT 在编程或者调试(DEBUG)时传送串口数据,Pin 2: SIN 在编程时接收串口数据,Pin 3: ATN 连接到串口DTR(数据终端准备)信号线 通知可以给Stamps编程了,Pin 4: VSS 信
3、号地 (0V).,P0,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12,P13,P14,P15,Pin 21: VDD 整定的5V输入脚,Pin 22: RES 复位脚- 低电平复位,Pin 23: VSS 电源地 (0V),Pin 24: VIN 直流电源输入(5.5-15V),Basic Stamp 2 MCU,教学底板,面包板,电机连接插座,5V 稳压器,外接电源插口,串行接口,三位开关,复位开关,电源指示灯,I/O插座,电源和接地插座,安装硬件 1、把Basic Stamp 2 插入教学底板上的24脚插座上,注意BS2上的白色标志点与插座上的缺口相对应。,
4、白色标志点,缺口,安装硬件 2、确认教学底板上的电源开关处在关闭位置(0),连接电源。,电源开关,安装硬件 3、安装LED电路。 (1)LED阴极连接到电源和接地插座上的Vss插孔; (2)LED阳极连接到面包板; (3)找出一只470电阻,电阻上的色环为黄-紫-棕; (4)电阻的一端接到与LED阳极相通的面包板插孔,另一端连接到I/O插头上的P15插孔。,470,P15,Vss,安装硬件 4、连接计算机,串口线一端连接到教学底板上的串行接口,另一端连接到PC机上的COM口插座。,安装硬件 5、检查 、测试硬件连接。 (1)检查电源连接。打开教学底板上的电源开关(1),电源指示灯应点亮。 (2
5、)检查与PC机之间的通讯。,打开Basic Stamp 编辑器 第一次打开编辑器时,编辑器会询问几个问题,只需点击按钮 使用菜单选项RunIdentify 或者直接点击按钮,口连接确认框应当如下图所示: 如果四个栏目中有任何一个的显示内容与上图不同,都说明连接有问题,需要检查连接。,五、编写程序,编写PBasic程序,让第15号I/O口输出5V电压 延时1秒 让第15号I/O口输出0V电压 延时1秒 让第15号I/O口输出5V电压 延时2秒 让第15号I/O口输出0V 结束,HIGH 15 PAUSE 1000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 2000 LOW
6、15 END,把程序键入到编辑器,添加必要的说明语句, $STAMP BS2 $PBASIC 2.5 HIGH 15 PAUSE 1000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 2000 LOW 15 END,保存到你自己的文件夹,文件名:Task1.bs2 文件夹:,六、下载运行测试,下载运行,脱机运行,关闭教学底板的电源 断开串口线 重新打开教学底板电源、按一下复位键 观察LED的亮灭,检查是否完成预定任务。 关闭教学底板的电源(任何一个试验完成后),电源开关,复位开关,七、总结与讨论,完成工程任务的顺序,明确任务 分析任务 构思解决方案 安装硬件 编写程序 下载
7、、运行、测试 总结与讨论,讨论,在上述过程中,PC机和BASIC Stamp软件的作用是什么? A)控制MCU执行程序,按照时序输出5V或0V电压。 B)提供一个编写程序的平台,并把程序翻译成MCU能执行的代码下载给MCU,由MCU独立运行。,X,编译环境,讨论,什么是程序?,让第15号I/O口输出5V电压 延时1秒 让第15号I/O口输出0V电压 延时1秒 让第15号I/O口输出5V电压 延时2秒 让第15号I/O口输出0V 结束,程序是一系列按照一定顺序执行的命令。,讨论,什么是PBasic程序? 用PBasic语言书写的程序。 怎么看懂和编写PBasic程序? 记住常用语句和语法; 使用
8、帮助。, $STAMP BS2 $PBASIC 2.5 HIGH 15 PAUSE 1000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 2000 LOW 15 END,帮助按钮,Syntax: PAUSE Duration Function Pause the program (do nothing) for the specified Duration. Duration is a variable/constant/expression* (0 - 65535) that specifies the duration of the pause. The unit of
9、 time for Duration is one millisecond.,Explanation PAUSE delays the execution of the next program instruction for the specified number of milliseconds. For example: Flash: LOW 0 PAUSE 100 HIGH 0 PAUSE 100 GOTO Flash This code causes pin 0 to go low for 100 ms, then high for 100 ms.,任务2,让LED按照规定的时序循环
10、闪亮,重复10次,明确任务 分析任务 这个任务与任务1类似,可以在任务1的基础上通过修改程序完成。 构思解决方案 硬件与任务1相同 编写程序,重复执行下列命令10次: 让第15号I/O口输出5V电压 延时1秒 让第15号I/O口输出0V电压 延时1秒 让第15号I/O口输出5V电压 延时2秒 让第15号I/O口输出0V 延时1秒 让第15号I/O口输出5V 延时3秒 让第15号I/O口输出0V 延时1秒 结束,设置重复次数为10; 当重复次数大于0时重复执行下列命令: 让第15号I/O口输出5V电压 延时1秒 让第15号I/O口输出0V电压 延时1秒 让第15号I/O口输出5V电压 延时2秒
11、让第15号I/O口输出0V 延时1秒 让第15号I/O口输出5V 延时3秒 让第15号I/O口输出0V 延时1秒 重复次数减少1次 结束,RepeatNum=10; DO WHILE (RepeatNum0) HIGH 15 PAUSE 1000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 2000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 3000 LOW 15 PAUSE 1000 RepeatNum= RepeatNum-1 LOOP END,RepeatNum=10; DO WHILE (RepeatNum0) HIGH 15 PAUSE 10
12、00 LOW 15 PAUSE 1000 HIGH 15 PAUSE 2000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 3000 LOW 15 PAUSE 1000 RepeatNum= RepeatNum-1 LOOP END,变量 Variable,一个变量是程序中一个保存数据的地方,对应MCU中一个存储数据的地方,由编辑器负责安排; 每个变量都有自己的名字,我们要在程序的前面声明这个变量,也就是告诉编辑器我们的程序要使用这样一个变量;,变量的类型,每个变量都在MCU中占用一个存储数据的空间,空间的大小是用bit(比特)或者byte(字节)为单位的。 1 byte=
13、8 bit。 Basic Stamp 2 内共有32个字节的存储空间,其中只有28个字节可以供我们的程序使用。为了节约存储空间,我们要根据变量的取值范围告诉编译器这个变量需要多大的空间,即声明变量的类型。 PBASIC语言把变量分为以下4种基本类型: Bit 可以用来存储0或者1 占用1bit Nib 可以用来存储0到15 占用4bit Byte可以用来存储0到255 占用8bit Word 可以用来存储0-65535 占用16bit 声明变量的语法:变量名 VAR 变量类型 RepeatNum VAR Nib, $STAMP BS2 $PBASIC 2.5 RepeatNum VAR Nib
14、 RepeatNum=10; DO WHILE (RepeatNum0) HIGH 15 PAUSE 1000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 2000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 3000 LOW 15 PAUSE 1000 RepeatNum= RepeatNum-1 LOOP END,键入程序 保存到task2.bs2 下载运行 测试结果,改进方案,控制循环的其他方法, $STAMP BS2 $PBASIC 2.5 RepeatNum VAR Nib FOR RepeatNum=1 TO 10 HIGH 15 PAUSE
15、 1000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 2000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 3000 LOW 15 PAUSE 1000 NEXT END,改进方案,简化程序的方法,FOR i=1 TO 3 HIGH 15 PAUSE i*1000 LOW 15 PAUSE 1000 NEXT, $STAMP BS2 $PBASIC 2.5 RepeatNum VAR Nib FOR RepeatNum=1 TO 10 HIGH 15 PAUSE 1000 LOW 15 PAUSE 1000 HIGH 15 PAUSE 2000 LOW
16、 15 PAUSE 1000 HIGH 15 PAUSE 3000 LOW 15 PAUSE 1000 NEXT END,改进方案,简化程序的方法, $STAMP BS2 $PBASIC 2.5 RepeatNum VAR Nib i VAR Nib FOR RepeatNum=1 TO 10 FOR i=1 TO 3 HIGH 15 PAUSE i*1000 LOW 15 PAUSE 1000 NEXT NEXT END,改进方案,添加注释, Task2 by Fei Yuenong $STAMP BS2 $PBASIC 2.5 RepeatNum VAR Nib Number of rep
17、eat i VAR Nib FOR RepeatNum=1 TO 10 FOR i=1 TO 3 HIGH 15 Make P15 output 5V PAUSE i*1000 Wait for i second(s) LOW 15 PAUSE 1000 NEXT NEXT END,改进方案,添加常数, Task2 by Fei Yuenong $STAMP BS2 $PBASIC 2.5 TimeUnit CON 1000 RepeatNum VAR Nib Number of repeat i VAR Nib FOR RepeatNum=1 TO 10 FOR i=1 TO 3 HIGH
18、15 Make P15 output 5V PAUSE i* TimeUnit Wait for i TimeUnit(s) LOW 15 PAUSE TimeUnit NEXT NEXT END,调试方法,通过调试终端了解程序的运行状态 DEBUG, Task2 by Fei Yuenong $STAMP BS2 $PBASIC 2.5 TimeUnit CON 1000 RepeatNum VAR Nib Number of repeat i VAR Nib FOR RepeatNum=1 TO 10 DEBUG “RepeatNum=“,DEC RepeatNum, CR FOR i=1
19、 TO 3 HIGH 15 Make P15 output 5V PAUSE i* TimeUnit Wait for i TimeUnit(s) LOW 15 PAUSE TimeUnit NEXT NEXT END,练习,让程序在完成第n次重复的时候在调试终端上显示“Repeat n completed.”,下课前将实验设备整理好,关闭计算机 断开串口线 断开教学底板的电源线 机器人套件的各个零部件放入实验箱 已经安装好的部分可以不拆开,移动机器人基础培训,第二节 电机控制和机器人组装,任务3,设计制作一个双轮独立驱动的机器人,具备以下功能: 直线前进一个给定的距离 直线后退一个给定的距离
20、 原地向右转90度 原地向左转90度,明确任务,双轮独立驱动的机器人 结构特点 运动方式,分析任务,机器人套件提供了必要的机械结构件、电动机和MCU,本任务可以分解为以下三个子任务: 1)控制电动机的速度和方向 2)组装机器人 3)调试机器人,子任务1 控制电动机的速度和方向,任务分析,伺服电动机Parallax Servo,伺服电动机Parallax Servo的内部结构 电动机 减速箱 驱动器 控制器,控制信号的作用:,1.3 ms的控制脉冲序列使电机顺时针全速旋转,转速约为60RPM,1.5 ms的控制脉冲序列使电机转速为零,可用调零电位器调零,1.7ms的控制脉冲序列使电机逆时针全速旋
21、转,转速约为60RPM,子任务1 “控制电机的速度和方向” 转化为让MCU输出一串具有给定宽度的脉冲。 PULSOUT Pin, Duration Pin is a variable/constant/expression (0 - 15) that specifies the I/O pin to use. Duration is a variable/constant/expression (0 - 65535) that specifies the duration of the pulse. The unit of time for Duration is 2 s.,教学底板的右上角提
22、供了伺服电动机的接口,试验验证,目的:验证上述电动机的控制方法 试验方法: 编写一个试验程序让接在P12上的电动机连续顺时针全速转动(ServoP12CW.bs2) 编写一个试验程序让接在P13上的电动机连续逆时针全速转动(ServoP13CCW.bs2) 编写一个试验程序让接在P12上的电动机转速为零(ServoP12Center.bs2),调节调零电位器,观察其对零点的影响,并最终调好零点(使1.5ms脉冲对应的转速为零) 改变前两个程序的参数,观察电机的速度变化,试验步骤: 编写并保存程序 DO LOOP 把一个电动机连接到教学底板上的伺服电机插座 (X5-12或13),注意电机连接线的
23、颜色与插座上标出的颜色一致 把教学底板上的电源开关拨到3的位置 下载运行程序,观察并记录电机的转动情况 改变程序的脉冲时间参数,观察并记录电机的转动情况 需要调零时,用专用的十字螺丝刀调节电动机的调零电位器,观察电机的转动情况,试验验证,试验记录: 试验结论,子任务2 组装机器人,第1步 安装机器人底盘硬件 将下表中所列零件收集到一起; 然后按照下边的装配步骤进行装配,第2步 拆除伺服电机上的十字角喉,断开BASIC Stamp微控制器和伺服电机的电源。 取出电池盒中的所有电池。 把伺服电机从你的教学底板断开。 拆除步骤 用螺丝起子去掉连接伺服电机上十字角喉和电机输出轴之间的螺钉。 将十字角喉
24、从电机输出轴上取下来。 将螺钉保存好,后面的步骤还会用到。,第3步 将伺服电机安装到底盘上,第4步 安装电池盒,第5步 安装轮子,第6步 把教学底板安装到底盘上,子任务3 调试机器人,设计制作一个双轮独立驱动的机器人,具备以下功能: 直线前进一个给定的距离 直线后退一个给定的距离 原地向右转90度 原地向左转90度,分析任务,确定速度与脉冲参数之间的关系 控制运行的时间,实验测定车轮转速,实验目的:测定车轮转速与脉冲参数之间的关系 实验方法:让电机以不同的参数运行一段时间,测量并记录车轮转过的圈数,计算转速。 实验步骤: 重新调零,此次调零后不再调零 编写程序TestServoSpeed,让左
25、右电机各转动6秒钟 实验电路 实验程序 实验程序说明 分别记录左右轮的转动圈数,填写实验记录 实验总结:用图表说明脉冲参数与车轮转速的关系,$STAMP BS2 $PBASIC 2.5 counter VAR Word pulseWidth VAR Word pulseWidthComp VAR Word DO DEBUG “Enter pulse width: “ DEBUGIN DEC pulseWidth pulseWidthComp=1500-pulseWidth FOR counter=1 TO 244 PULSOUT 12, pulseWidth PULSOUT 13, pulse
26、WidthComp PAUSE 20 NEXT LOOP,实验测定前进后退速度,实验目的:确定前进后退的距离与(时间)循环次数之间的关系。 实验方法:在给定脉冲参数和循环次数的条件下,测量前进或后退的距离。 实验步骤: 编写程序让机器人前行 ?秒钟(循环次数=?) 调整脉冲参数,保证直线运动 测量并记录运动距离 改变循环次数,再次测量记录运动距离 验证:设置循环参数,让机器人前行30cm再后退30cm 实验总结:用表格和曲线汇总实验的结果,如何消除拨动开关带来的干扰?,FREQOUT 4, 1000, 3000 在P4口输出一个3000Hz的方波,持续1000ms,实验确定原地转动的角度和参数
27、的关系,第一阶段作业要求,电机测试报告 评分标准:测试目的、原理、方法、步骤描述清楚、有条理,测试数据翔实,测试结果表述清楚。 机器人装配说明书 评分标准:装配关系正确、装配顺序合理、能正确运用文字说明和装配示意图表达装配关系和装配顺序。 提交时间 提交地点:科技楼P102,机器人固定路径行走比赛,A,B,C,比赛场地 180mm 280mm 380mm 480mm,行走路线:由A点出发,前进至B点,再前进至C点,再由C点后退至A点。 路径积分: 路径积分=B点位置分+C点位置分+A点位置分 各点的位置分数为机器人到达该点时双轮与地面接触点共同落入的圆圈的分数。行走方向错误不得分。 行走时间:
28、从机器人蜂鸣结束开始计时至到达A点。,比赛分组:此赛分11组,每组3人,随机抽签组成。1-4组在1号场地、5-8组在2号场地、9-11组在3号场地。 比赛规则:每组派一个机器人参加,有三次机会,取最好成绩。 比赛成绩(按小组给分): 路径积分(30%) 比赛计时 (30%) 小组工作记录(40%) 个人成绩:在小组得分的基础上,根据组员互评的结果调整。,工作记录,时间 事件 参加人员 具体内容或结果 时间 事件 参加人员 具体内容或结果 。,比赛过程: 2:00pm 公布比赛方法和要求 2:10pm 分组 2:20pm 小组讨论会(分析任务、制定方案、分工、明确每个人的具体工作目标) 2:40pm 小组工作、场地开放 3:40pm 开始比赛 4:20pm 小组总结会,整理工作记录、互评/自评 4:45pm 提交工作记录和互评/自评表,