• 沒有找到結果。

目 录 第 1 章

N/A
N/A
Protected

Academic year: 2022

Share "目 录 第 1 章"

Copied!
137
0
0

加載中.... (立即查看全文)

全文

(1)

第 1 章 让你的智能机器人动起来 ...1

1.1 欢迎进入 AS-UII 的世界 ... 1

1.2 AS-UII 的内部结构... 1

1.3 AS-UII 的控制按键部分... 2

1.4 AS-UII 的充电... 3

1.4.1 开机充电... 3

1.4.2 关机充电... 3

1.4.3 更换电池... 3

1.5 AS-UII 的连接和检测... 4

1.5.1 AS-UII 的连接 ... 4

1.5.2 AS-UII 的检测 ... 4

1.6 对 AS-UII 进行编程 ... 5

第 2 章 AS-UII 的系统结构...10

2.1 AS-UII 的身体结构... 10

2.1.1 控制部分... 10

2.1.2 传感器部分... 10

2.1.3 执行部分... 12

2.1.4 AS-UII 的能源 ... 13

2.2 AS-UII 的传动机构... 13

2.2.1 齿轮传动机构... 13

2.2.2 AS-UII 的齿轮箱 ... 14

2.3 AS-UII 的动力与驱动... 15

2.3.1 AS-UII 的动力 ... 15

2.3.2 AS-UII 中的直流电机 ... 15

2.3.3 AS-UII 的驱动方式 ... 16

第 3 章 传感器、微处理器与驱动器 ...18

3.1. 智能机器人的三大要素 ... 18

3.2. 能力风暴的传感器及其处理电路 ... 19

3.2.1. 碰撞传感器... 19

3.2.2. 红外传感器... 23

3.2.3. 光敏传感器... 26

3.2.4. 麦克风... 28

3.2.5. 光电编码器... 29

3.2.6. 其他传感器... 32

3.3. 能力风暴的计算机硬件 ... 34

3.3.1. 微控制器... 34

3.3.2. 外部存储器... 37

3.3.3. 电源与复位电路... 38

3.3.4. 通信... 39

3.4. 驱动器 ... 40

(2)

3.5. 硬件扩展总线 ASBUS... 42

3.5.1. 扩展 2 个光敏传感器... 42

3.5.2. 扩展红外接收传感器... 43

3.5.3. 扩展 8 个数字输出口... 44

第 4 章 能力风暴编程 ...45

4.1 第一个 VJC 程序,Hello robot! ... 45

4.2 让机器人动起来 ... 46

4.2.1 在 VJC1.5 开发版窗口中编写流程图 ... 46

4.2.2 保存源代码程序... 47

4.2.3 程序下载... 47

4.2.4 运行程序... 47

4.2.5 走出规则轨迹... 47

4.3 让机器人感知环境信息 ... 48

4.3.1 编写流程图... 48

4.3.2 保存程序... 49

4.3.3 程序下载... 49

4.3.4 运行程序... 49

4.4 JC 程序的基本程序结构... 49

4.4.1 一个机器人“台球”程序... 50

4.4.2 红外和光敏的使用... 51

4.5 JC 程序的高级编程... 52

4.5.1 第一个多进程程序... 53

4.5.2 添加一个新进程... 54

第 5 章 单片机及嵌入式系统的课程教学 ...57

5.1 单片机教学 ... 57

5.2 定时器/计数器 ... 58

5.3 I/O 端口 ... 60

5.4 串行口通讯 ... 63

5.5 A/D 转换 ... 64

第 6 章 基于视频技术的野外探险机器人 ...68

6.1 AS 无线摄像机... 68

6.2 视频捕捉卡 ... 69

6.3 野外探险机器人的系统结构 ... 70

6.4 野外探险机器人的程序实现 ... 70

6.4.1 上位机程序模块... 70

6.4.2 AS-UII 的 JC 程序 ... 71

第 7 章 数字 PID 及其算法 ...76

7.1 控制方法介绍 ... 76

7.1.1 程序和顺序控制... 76

7.1.2 比例积分微分控制(简称 PID 控制) ... 76

(3)

7.1.5 模糊控制... 76

7.2 PID 算法的数字化实现... 77

7.3 AS-UII 的 PID 算法的程序设计... 78

7.3.1 AS-UII 电机的软件驱动特性 ... 78

7.3.2 AS-UII 走直线的开环特性 ... 80

7.3.3 AS-UII 的闭环特性 ... 81

7.3.4 结论... 85

第 8 章 AS-UII 的无线控制实现...87

8.1 机器人平台 ... 87

8.2 计算机与 AS-UII 的无线通信 ... 87

8.2.1 无线通信模块... 87

8.2.2 使用方法... 88

8.3 AS-UII 的无线控制计算机程序实现 ... 90

第 9 章 机器人的行为控制 ...93

第 10 章 群体机器人 ...96

10.1 多智能体介绍 ... 96

10.2 多智能体(Multi-Agent System)之间的通信作用 ... 96

10.3 基于 AS-UII 的智能体的设计 ... 97

第 11 章 附录 ...115

附录 1: JC1.0 库函数 ... 115

附录 2: 产品的主要技术性能和参数 ... 116

附录 3: 产品的使用条件和使用环境要求 ... 116

附录 4: 常见故障及维修方法 ... 118

附录 5: AS-UII 主板布局图 ... 133

(4)
(5)

第1章 让你的智能机器人动起来

1.1 欢迎进入 AS-UII 的世界

我国科学家对机器人的定义是:“机器人是一种自动化的机器,所不同的是这种机器具 备一些与人或生物相似的智能能力,如感知能力、规划能力、动作能力和协同能力,是一种 具有高度灵活性的自动化机器”。智能机器人是 21 世纪新的热点,也是一个国家整体实力的 显示。智能机器人是一个多学科的综合,涉及机械设计和制造、 传感器、控制与规划、电 子电气、计算机与信息处理、通讯、能源、材料、系统工程。

AS-UII 是面向教育的新一代智能移动机器人。AS-UII 有一个功能强大的微处理系统和 传感器系统,而且它还能扩展听觉、视觉、和触觉,成为真正意义上的智能机器人。

AS-UII 是能力风暴大学版机器人,II – 表示第二版本。AS-UII 是专门为大学进行课程 教学、工程训练、科技创新以及研究服务的新型移动智能机器人。

1.2 AS-UII 的内部结构

AS-UII 的内部结构参见图 1-1 。AS-UII 结构简图:

图 1-1 AS-UII 结构简图 上盖

主板 传感器

上面是我的“X”光片,您可以看更清楚,具体各部 分包含什么?有什么功能?咱们后面再说来……

液晶显示屏

底 盘

(6)

1.3 AS-UII 的控制按键部分

看见 AS-UII 背后的控制按键部分了吗?其结构如图 1-2。在这个部分有 2 个小灯,它 们指示 AS-UII 所处的状态。

图 1-2 控制按键部分 开关按钮

控制 AS-UII 电源开关的按钮,按此按钮可以打开或关闭机器人电源。

“电源”指示灯

按下 AS-UII 的开关后,这个灯会发绿光,这时可以与机器人进行交流了!

“充电”指示灯

当你给机器人充电时,“充电”指示灯发红光。

“充电口”

将充电器的相应端插入此口,再将另一端插到电源上即可对机器人充电。具体使用方 法见“1.4 AS-UII 的充电”。

“下载口”

“充电口”旁边的“下载口”用于下载程序到机器人主板上,使用时只需将串口连接 线的相应端插入下载口,另一端与计算机连接好,这样机器人与计算机就连接起来了。具体 使用方法见“1.6”。

“复位/ASOS”按钮

这是个复合按钮,用于下载操作系统和复位。当串口通信线接插在下载口上时,按击 此按钮,机器人系统默认为此操作为下载操作系统;如果你想使用其复位功能则需要将通信 线拔下,按击此按钮,机器人系统认为此操作为系统复位。

“运行”键

打开电源后,按击“运行”键,机器人就可以运行内部已存储的程序,按照你的“指令”

行动。

“通信”指示灯

“通信”指示灯位于机器人主板的前方,在给 AS-UII 下载程序时,这个黄灯会闪烁,

(7)

这样就表明下载正常,程序正在进入机器人的“大脑”即 CPU。

1.4 AS-UII 的充电

AS-UII 可以在线充电:也就是不用取出电池,直接为机器人充电。

图 1-3 充电器充电示意图

1.4.1

开机充电

AS-UII 可以一边充电一边活动,这样很方便,不会影响你对机器人进行编程和调试。

您要采用这种方式给 AS-UII 充电时,只需:

1. 将充电器取出;

2. 把充电器充电线插入控制按键中的充电插口;

3. 另一端充电器电源插头插入标准电源插座上(220V,50Hz)。

1.4.2

关机充电

AS-UII 也可以关机充电。只需将机器人的电源关闭,按击控制按键中的“开关”键,

“电源”指示灯灭就表示电源已经关闭。这时再用以上三个步骤给机器人充电。充电 1.5 小时即可充满。

1.4.3

更换电池

电池充满电压 8.4V,额定工作电压 7.2V,最低工作电压 5V。电池可重复充电 1000 次 以上。因为 AS-UII 里用的是锂电池,没有记忆和充爆问题,所以你可以随时充电随时用。

当电池达到使用寿命后,需要更换电池,我们按下面步骤进行:

1. 关闭 AS-UII 的电源;

2. 将电池取出,更换电池;

3. 重新装上新电池。

(8)

1.5 AS-UII 的连接和检测

1.5.1

AS-UII 的连接

除了运行 AS-UII 的情况外,很多情况下 AS-UII 是要和计算机连接以后使用的。连接 AS-UII 是一项基本操作,下面是连接的标准步骤:

1. 取出串口连接线。一头接 AS-UII 的“下载口”插口,另一头接 PC 机箱后的 9 针串 口。如果你的电脑后面没有空余 9 针串口,请咨询电脑维护人员。(可以把暂时不用的设备 移开,腾出一个串口。)

2.打开 AS-UII,按击控制按键中的“开关”键,见到“电源”指示灯发光即可。

3.开机后液晶显示屏 LCD 显示正常。

如果机器内有其他程序,显示的文字可能会不一样,但在右下侧都会有微微跳动的小太 极图案,表示系统正常。如果液晶屏是空白的,检查电池是否有电,接触是否良好,请充电 或更换电池。如果没有小太极图或者小太极图不跳动,说明操作系统没有正常运行,按复位 键重启系统(注意此时拔掉通信线)。如果系统还不能正常运行,参见附录“常见故障及维 修方法”和“下载操作系统”。

1.5.2

AS-UII 的检测

双击 VJC1.5 开发版图标,会要求你新建(或打开)“流程图“或”JC 程序“,选择进 入”流程图“界面,这样就进入了图形化编程界面。在此界面中你可以发现工具栏中有“自 检”按钮 ,点击此按钮,等待出现“下载成功!”,说明自检程序已经下载到机器人的操 作系统中。

自检程序下载完毕后,我们可以开始检测 AS-UII 了。拔下串口连接线,并将机器人带 到安全的地方(空旷,无障碍平地),进行自检。

在进行机器人自检时,我们可能会遇到一些传感器部分的应用,如有什么不清楚,可 以先看看第二章、第三章的内容。

按下控制按键中的“开关”按钮,会听到“嘟”一声,LCD 上显示出“ASOS2002 Grandar Ability Storms”,同时右下角有太极状的图标在跳,表示 AS-UII 的系统运行正常。按位于 控制按键中的“运行”键,机器人就开始自检,LCD 上会显示“(AS-UII) Intelligent Robot Test”,内容如下(一项内容自检完成后,再按运行键,将进行下一项检测内容):

1. LCD 显示是否正常? 1Yes 1No

字迹符号显示清晰,16×2 个字符不应有缺行、缺列现象。

2. 扬声器是否正常? 1Yes 1No

扬声器所播放的乐曲应清晰洪亮,无明显噪声。

3. 光敏传感器是否正常? 1Yes 1No

用手挡住左边光敏传感器,在 LCD 上显示的左边光敏传感器的值会增大,越暗、

(9)

如: [>>>>>

photo R210 L172 表示机器人的左边的光线强。

机器人随光强的不同,LCD 所显示左右光敏传感器的感应数值应随光强变化而变 化,其范围为 0~255,光强越弱,数值越大,光强越强,数值越小;左右两光敏 传感器在相同光强条件下,数值偏差<10。

4. 红外传感器是否正常? 1Yes 1No

在前方 10cm~80cm 范围内,有 A4 纸大小的障碍物时,在 LCD 上会有“<<<<”符号 显示,并指明障碍物所在的方位(左前、右前或者正前)。

如: <<<<

IR Test

表示机器人右前方有障碍。

5. 话筒是否正常? 1Yes 1No

对着 AS-UII 嘴部话筒槽孔说话,看 LCD 上的 > 是否增加。

6. 碰撞传感器是否正常? 1Yes 1No

按动位于机器人下部的碰撞环,在 LCD 上能显示表示对应方位的字符。

7. 检测直流电机是否正常? 1Yes 1No

机器人可移动、转弯,同时在 LCD 上显示光电编码器累计计数值和瞬时电机转速。

Motor 30 L 100 Test 31 R 100 可用此检测左右电机的转速差异。

8. 光电编码器是否正常? 1Yes 1No

机器人左、右轮子分别转动 1 圈,左右侧光电编码器也分别转动 1 圈,LCD 上显示 左、右光电编码器的计数值应约等于 AS-UII 的光电编码器分辨率 33。

通过以上检测,你可以了解 AS-UII 各部分的状态。

如果你拿到的 AS-UII 已经被使用过,可能内存里已经没有了自检程序。请参见下一节“与 AS-UII 进行交流”中介绍的方法下载自检程序。

1.6 对 AS-UII 进行编程

图形化交互式 C 语言(简称 VJC)是用于 AS-UII 的专用开发系统。VJC1.5 开发版运行 在 Windows 95/98 和 Windows NT 4.0 以上版本的操作系统上。VJC1.5 开发版是由图形化 编程界面和 JC 代码编程界面组成的,具体应用参考第四章。

双击桌面上的 VJC 图标,进入流程图程序编程界面(如图 1-4)可以看到 VJC1.5 开发 电机相对转速

(10)

版的图形化编程界面是由这样几个部分组成:菜单栏、工具栏、模块库(包括执行器、传感 器、控制、程序模块库)、垃圾箱、流程图生成区、JC 代码显示区。通过点击图形化编程界 面工具栏中的“编辑 JC 代码程序“快捷按钮就可以切换到 JC 代码编程界面(如图 1-5)

图 1-4 图形化编程界面

图 1-5 JC 代码编程界面

可以看到 VJC1.5 开发版的 JC 代码编程界面是由这样几个部分组成:菜单栏、工具栏、

编辑窗口、JC 信息窗口。通过点击 JC 代码编程界面工具栏中的“流程图窗口“快捷按钮就 可以切换到图形化编程界面。

首先我们先看看图形化编程界面:

新建程序: 采用模块搭建流程图的形式进行编程。要编写流程图程序,可以在点击桌 面上 VJC1.5 开发版图标之后出现的初始界面中选择新建“流程图“,这样就进入了一个图

主菜单

工具栏

程序区

(11)

形化编辑界面。如果编辑过之后,还想再新建一个程序,那么可以选择菜单栏中“文件”—

“新建”,也可以利用工具栏里的“新建”快捷按钮,直接新建一个新程序,见图 1-6:

图 1-6 新建程序菜单、图标

打开程序:可以选菜单上“文件”—“打开”(或点击工具栏中的“打开“按钮),

来查看或编辑以前保存的程序。

下载程序:写好的应用程序必须下载到 AS-UII 上运行。可以选择菜单栏中“工具”—

“下载当前程序”来下载当前窗口里的应用程序(或点击工具栏中的“下载“按钮)。如图 1-7:

图 1-7 下载当前程序菜单

VJC1.5 开发版会弹出如图 1-8 所示窗口,这时界面中提出两个需要确定的条款,当你 确定无误后,1、2 两项前端会打勾,然后出现蓝色条码显示编译下载的进程。若未按提示 操作会出现图 1-9 所示窗口。

图 1-8 下载窗口

(12)

图 1-9 下载操作不对窗口

下载过程中,你可以看到控制面板上“通讯”指示灯(黄色)在闪动,表示数据在传送。

如果编译下载都正确,VJC1.5 开发版会提示下载成功,如图 1-10 所示:

图 1-10 下载成功

下面再看看 JC 代码编程界面:

新建程序:在 VJC1.5 开发版的 JC 代码编程界面中我们采用 JC 语言进行编程。

同样的方法,可以在点击桌面上 VJC1.5 开发版图标之后出现的初始界面中选择新建“JC 程序“,这样就进入了一个 JC 代码编辑界面。如果你还想再新建一个新的程序,那么可以 选择菜单栏中“文件”—“新建”,然后在新建的窗口里编写程序。你也可以利用工具栏里 的“新建”快捷按钮,直接新建一个新的 JC 程序,见图 1-6:

打开程序:可以选菜单上“文件”— “打开”,来查看或编辑以前保存的程序。

下载程序:写好的应用程序必须下载到能力风暴智能机器人上运行。可以选择工具栏 里 按钮下载当前窗口里的应用程序。VJC 会在 JC 信息窗口中显示应用程序的编译下载过 程。下载过程中,你可以看到控制板前面的黄灯在闪动,表示数据在传送。

调试程序:所编写的 JC 程序如果有语法错误,那么在编译下载时就会在 JC 信息窗口 中显示程序的语法错误,提示错误可能在程序的第几行(用括号注明),并提示可能的错误 原因。这样你可以使用工具栏中的 按钮,就会出现跳转对话框,将出错的行数写入此对 话框,光标就会自动跳转到该错误行,那么你就可以找出错误,并修改它,再次编译下载,

(13)

直到没有编译错误下载成功为止。可以加快调试过程。

在实际应用中两种编程界面切换是经常用到的,现将编程界面切换方法总结如下:

图形化编程界面切换到 JC 代码编程界面的途径:

y 在菜单栏的“窗口“中选择任一个“JC 程序”(常用方法)

y 在菜单栏的“编辑“中选择“编辑 JC 程序代码”

y 点击工具栏中“编辑 JC 程序代码”快捷按钮 y 新建\打开文件时选择“*.jc”文件

JC 代码编程界面切换到图形化编程界面的途径:

y 在菜单栏的“窗口“中选择“流程图窗口”(常用方法)

y 点击工具栏中“流程图窗口”快捷按钮 y 新建\打开文件时选择“*.flw”文件

VJC1.5 开发版的详细操作方法请参见《VJC1.5 开发版操作手册》或直接查询 VJC1.5 开发版的帮助。

(14)

第2章 AS-UII 的系统结构

本章分为三个部分主要描述了:AS-UII 的组成部分及其各部分的主要作用,并对 AS-UII 的传动机构以及动力驱动系统作了简单的介绍。

2.1 AS-UII 的身体结构

2.1.1

控制部分

控制部分主要是 AS-UII 机器人的核心组成部分,见图 2-1。从图中我们可以清楚的看 到 AS-UII 控制部分的主要由以下两个部分组成:

图 2-1 AS-UII 控制部分 1. 主板

位于 AS-UII“心脏”部位的控制部件是 AS-UII 的大脑——主板,它由很多电子元器件 组成,跟人的大脑一样,主要完成接收信息、处理信息、发出指令等一系列过程。

AS-UII 的大脑有记忆功能,这主要由主板上的内存来实现,至于“大脑”的分析、判 断、决断功能则由主板上的众多芯片共同完成。

2. 控制按键

位于 AS-UII 背部的控制面板,是 AS-UII 机器人运行控制部件,它的组成和主要的控制 功能在前面 1.3 AS-UII 的各种反应 一节中,我们已做了介绍,这里就不再重复。

2.1.2

传感器部分

AS-UII 机器人的传感器,如图 2-2 ,主要有以下 5 种传感器:

1. 碰撞传感器

AS-UII 机器人的下部放置了一个碰撞系统,保证 AS-UII 机器人的正常活动。AS-UII 机器人的碰撞机构能够检测到来自 360°范围内物体的碰撞,使 AS-UII 机器人遭遇到来自 不同方向的碰撞后,能够转弯避开并保持正常活动。

控制按键部分 主板

控制按键布置图

(15)

碰撞传感器结构示意图

+ =

光电编码传感器

码盘 光电耦合器

图 2-2 AS-UII 感官部分 2. 红外传感器

AS-UII 机器人的红外传感器共包含两种器件:红外发射管和红外接收管,看图 2-2 就 可以发现红外接收管位于 AS-UII 机器人的正前方,两只红外发射管位于红外接收管的两侧。

红外发射管可以发出红外线,红外线在遇到障碍后被反射回来,红外接收管接收到被 反射回来的红外线以后,通过 A/D 转换送入 CPU 进行处理。AS-UII 机器人的红外传感器能 够看到前方 10cm∼80cm ,90°范围内的比 210mmx150mm 面积大的障碍物,如果障碍物太小 太细、或者在它的可视范围以外,它可就没法看到了。

在 AS-UII 机器人的可视范围内,它的可视距离是可以调整的,具体参见后面传感器部 分。

3. 光敏传感器

光敏传感器是由两个光敏电阻组成,它位于机器人的正前方。

光敏传感器能够探测光线,不过在这里我们是让它看见特定的颜色。我们在 AS-UII 机 器人的光敏传感器罩上了一层滤光纸,通过它的颜色来决定 AS-UII 机器人能探测什么颜色 的光线。

4. 话筒

话筒

碰撞环

光敏传感器

红外发射传感器

红外接收传感器

(16)

AS-UII 机器人的话筒的功能很强,它可以感受到声音的强弱。我们知道我们自己的耳 朵并不是所有声音都可以听见的,我们听见的声音在一定的频率范围内,AS-UII 的“耳朵”

也是这样,它能听见的声音频率范围跟人能听到的范围大致是一样的,大约是 16Hz∼20000Hz 的机械波。

AS-UII 机器人在听到你的声音命令后,会根据你的指示(由程序事先输入)采取行动。

5. 光电编码器

在 AS-UII 机器人里有码盘和光耦(光电编码器)。光电编码器主要作为控制的反馈信 号。光耦通过测定随轮轴一起转动的码盘的转动角度,得出轮子所转动的圈数,从而测定距 离。

2.1.3

执行部分

AS-UII 机器人的执行部分是指机器人执行具体功能时所要用到的部件,如图 2-3 AS-UII 执行部分所示,AS-UII 机器人的执行部分共有以下五种:

图 2-3 AS-UII 执行部分

1. 扬声器

AS-UII 机器人也可以通过扬声器发出一定频率的声音,也可以通过编程让机器人演奏 歌曲。

2. LCD

AS-UII 机器人上的 LCD 可以显示除中文外的各种字符。利用 LCD 可以单步显示程序运 行的中间结果。

3. 主动轮及其驱动机构

AS-UII 机器人的主动轮有两只,能够完成向前直走,向后转弯,左转,右转,原地打 转这些平地上的技术动作;正因为有驱动机构齿轮箱的存在,AS-UII 才可以利用直流电机

扬声器

LCD

主动轮 及 其 驱 动 机构

导向轮 直流电机

(17)

输出的动力。

4. 从动轮

AS-UII 机器人有 2 只从动轮,通过安置弹簧,它们可以在垂直与地面的方向上上下移 动,保持机器人动态平衡和实现一定的越障功能。

5. 直流电机

在 AS-UII 机器人上有两个直流电机。

2.1.4

AS-UII 的能源

将 AS-UII 机器人头朝下翻过来,就能够看到它的底盘下安装有一个盒体,这就是电池。

见图 2-4 AS-UII 的电池。智能机器人的能量就来自于这个电池。

图 2-4 AS-UII 的电池

2.2 AS-UII 的传动机构

2.2.1

齿轮传动机构

齿轮,顾名思义就像是带了齿的轮子。齿轮传动机构就是齿轮作为主要传动件的传动 机构。工作时,首先有一只主动轮先转动起来,转动过程中与另一个从动轮的齿一个一个的 咬和下去,这个与它咬和的齿轮也会跟着旋转,这样运动就从主动轮传递到从动轮,这叫做 齿轮的啮合传动。

齿轮的种类很多,它们通过不同的配合可以实现不同的传动类型,如图 2-7 传动类型 示意图:

(a) (b) (c) 图 2-7 传动类型示意图

电池

(18)

图 2-7(a)所示的传动类型能够改变运动的形式,齿轮是旋转运动,下方的齿条则是直 线运动;

图 2-7(b)所示传动类型能够改变了旋转运动的速度;

图 2-7(c)所示传动类型不仅改变了运动的速度而且改变了旋转运动的轴线方向。

2.2.2

AS-UII 的齿轮箱

也许你会感到纳闷了:为什么齿轮箱里的传动系统不能用一级传动呢?这是因为如果只 用两个齿轮啮合,为了达到改变速度的要求,就必须一个齿轮超小,一个齿轮超大,这样不 仅会造成空间上的浪费,并且对小齿轮性能指标的要求也很高。所以,为了达到一定的传动 比,我们有时候需要采用几级传动,一级一级的改变它的速度,直到将输出轴的速度调整到 所需要的指标。

对于改变速度的传动形式来说,就有一个传动比的概念。对于齿轮传动,传动比可以用 两个齿轮的齿数来定义:

I=Z1/Z2 Z1为主动齿轮的齿数,Z2为被动齿轮的齿数 输出的速度可表达为:

V输出=V动力源×I

我们在 AS-UII 机器人上用到的齿轮箱展开图(注:为了能看的更清楚,我们将齿轮箱展 开,实际情况会略有不同)见图 2-8:

图 2-8 齿轮箱展开图

(19)

当然,AS-UII 机器人的脚除了齿轮箱以外,还有其他的部件,轴就是其中一个关键的 部件。

轴在日常生活中是比较常见的,它依靠轴孔、轴承配合支撑带孔的零件(如齿轮、涡轮 等)并与之一起旋转以传递运动、扭矩或转矩的机械零件。

观察上图,我们可以发现在齿轮头里有三根轴,它们是齿轮的支架,在整个齿轮传动中,

我们根据轴的功能将轴分为三种:

1. 输入轴—直接与动力源的输出轴联接;

2. 输出轴—直接与其他的相关传动件联接的轴;

3. 中间轴—齿轮传动中仅作为齿轮支架的轴。

2.3 AS-UII 的动力与驱动

2.3.1

AS-UII 的动力

AS-UII 的动力来源于位于机器人底盘内的电池。

电池提供电能,而机器人运动需要的是动能。这两种能量是怎么转化的呢?

电能转化为动能是利用了一种专门的设备—电动机,这种设备是现代工业必不可少的,

是工业电气化的标志。

2.3.2

AS-UII 中的直流电机

以电为原动力产生机械旋转动力的装置叫做电动机。电动机如果是依靠直流电源工作,

则称为直流电机。

在 AS-UII 中,直流电机将轴的旋转运动输入到齿轮箱,然后齿轮箱的输出轴控制轮子 转动,从而驱动整个机器人的运动。

直流电机上的电压大小影响它的转速和扭矩。

观察下图:

图 2-9 直流电动机 T-N 图

直流电机在一定电压下,如图 2-9,在图中 12V 特性线上取两个点 J、K,很明显,

Jn > Kn, JT > KT。由此我们可以发现转速(n)变小时,转矩(T)增大,这就叫转速与转 矩成反比;如果改变电压,则转速转矩线随着电压的变化而向下方移动。在智能机器人负载 一定时(即转矩一定时),降低电压,对应的转速 n1、n2 不同,n1>n2,这样就可实现电机 的调速。

(20)

在智能机器人里正是采用改变电机电压的方式来改变电机的转速,叫做脉宽调制。

智能机器人电机上得到的信号是方波,不同的方波的平均电压不同(如图),我们就利 用这一点来进行 AS-UII 的速度控制。采用不同的脉宽调节平均电压的高低,进而调节电机 的转速,即脉宽调制(PWM,Pulse Width Modulation)。智能机器人上通过主板发脉宽调制 信号,通过改变脉冲宽度来调节输入到电机的平均电压。

图 2-10 不同宽度的方波实现 PWM 控制

AS-UII 的电机是经过减速器将转动传给轮子,将高速转化为低速。“AS-UII”通过三级 直齿轮传动减速,来满足“AS-UII”运行的速度和转矩。

2.3.3

AS-UII 的驱动方式

AS-UII 机器人的驱动是采用的差动驱动方式。

差动方式是指将两个有差异的或独立的运动合成为一个运动。当我们把两个电机的运动 合成为一个运动时,这就成了差动驱动。

仔细观察智能机器人的底盘,你会发现机器人有两个一样的齿轮头,每个齿轮头都包括 一个直流电机。这样两个直流电机分别独立控制 1 个驱动轮,在运行时,我们可以分别确定 两个电机各自的转速,组合起来就能实现机器人的各种运动方式,如直行、转弯等,这就实 现了差动驱动方式。

现在动动脑筋,看下表:

机器人运动路线 实现方式 语句

表 2-1 机器人的动作

首先,想一想,我们的智能机器人是差动方式驱动的,由两个直流电机分别控制。那么,

智能机器人能走出多少种不同的路线来呢?试填写上表的第一列。

刚刚想出来的动作是否都能实现呢?在现实方式上可不可以采用多种方式呢?

这里我们以 JC 代码编程为例,这样可以更深刻的理解两个库函数的意义及其应用。

在这里要实现各种动作,就主要涉及到了有关库函数的问题。用到的库函数有 motor() 和 drive()。

库函数 motor(a,b)应用时应注意:

1. 库函数只控制单个的电机转速;

2. 库函数有两个参数 a、b,且都是整数型的;

3. 库函数中 a 指定是左轮或是右轮,b 指定转速;

(21)

4. 库函数中 a 的取值为 1 或是 2,1 代表左轮,2 代表右轮;b 的取值范围是-100~

+100。

库函数 drive(a,b)应用时应注意:

此库函数是复合语句,同时控制左右两个电机的转速;

此语句有两个参数 a、b,且都是整形的;

a 指定是平移的速度,b 指定旋转的速度;

左轮的速度 VL=a-b,右轮的速度是 VR=a+b。

好,现在我们来举一个例子:

我们要让智能机器人走一个圆,那么动作就应是“走圆”,实现方式我们采用“顺时针”,

利用的语句可以是 motor(),如:{motor(1,90);motor(2,20);},也可以利用 drive()

语句,如:drive(55,-35)。注意,参数的不同可以使得所走的轨迹大小不同,在 motor()

里参数 b 影响轨迹的大小,在 drive()里两个参数同时影响轨迹大小。上面两个语句实现 的左右两个轮子的转速是一样的。不信,你可以算一下。这时,我们就可以填写表格了:

动作 实现方式 语句

走圆 顺时针 {motor(1,90);motor(2,20);}或 drive(55,-35)

……

好了,自己独立完成表 2-1 吧!

下面想想你能用 VJC 的图形化编程界面来实现上表的各个动作吗?

试试看!

填写下面表格:

动作 实现方式 模块

走圆 顺时针

VJC1.5 开发版的详细操作方法请参见《VJC1.5 开发版操作手册》或直接查询 VJC1.5 开发版的帮助。

(22)

第3章 传感器、微处理器与驱动器

3.1. 智能机器人的三大要素

人对周围环境的反应过程主要是感觉→大脑思考→作出反映,机器人的信息处理流程 也是如此。

能力风暴智能机器人的配有 5 种十几个传感器,另外还可以根据需要扩展其他传感器,

对环境的感知能力很强。感知环境的能力是产生智能行为的前提,因此能力风暴能产生许多 智能性行为。

能力风暴通过微控制器(microcontroller)来思维。我们采用的是 Motorola 公司 8 位单片机中功能最强、集成功能最全的高档机种。它的可靠性很高,有程序自下载功能。能 力风暴连上串口线就可自动下载程序。

计算机硬件决定了机器的极限潜能,去开发这种潜能是软件的工作。我们为用户提供 了交互式图形化编程 C 语言—VJC,它使开发能力风暴的高层行为充满了乐趣。有的低层的 驱动软件与硬件相关太紧密或实时要求很高,需要用汇编语言来处理。

能力风暴智能机器人的执行器有:二只高性能直流电机;一只喇叭;一只 2*16 字符的 液晶显示器。

4只碰撞传感器

2只红外传感器

2只光敏传感器

2只光电编码器

1只麦克风

外部存储器

单片机 稳压与低电 压复位系统

2只直流电机

LCD

喇叭

1只直流电机 或伺服电机 电机

驱动

喇叭 驱动

直流 驱动

BUS

各种外部 扩展卡

ASBUS 总线

串口 通讯

PC

图 3.1 能力风暴智能机器人的系统结构

(23)

3.2. 能力风暴的传感器及其处理电路

3.2.1. 碰撞传感器

碰撞传感器是使能力风暴智能机器人有感知碰撞环上的碰撞信息能力的传感器。在能力 风暴智能机器人的左前、右前、左后、右后设置有四个碰撞开关(常开),它们与碰撞环共 同构成了碰撞传感器(见图 3.2)。碰撞环与底盘柔性连接,在受力后与底盘产生相对位移,

触发固连在底盘上相应的碰撞开关,使之闭合。我们把来自四周的碰撞分为八个方向(见图 3.3)。

图 3.2 碰撞开关及碰撞环

图 3.3 碰撞传感器方位 应用

我们在 VJC 环境中,编写一个碰撞检测程序,来理解如何在程序中使用碰撞开关。VJC 图形编辑界面参见图 1-4:

1 进入 VJC 的图形化编程界面,将“控制模块库“中的“永远循环”模块拖入到流程图生 成区并与“主程序”相连;

2 将“传感器模块”库中 模块连接到循环内部,见图 3-6;

3 将“执行器模块”中的“显示模块”连接到程序中;

4 设置“显示”模块(见图 3-5),在“显示”模块上点击右键,在弹出“设置显示模块”

(24)

对话框选中“引用变量”,会出现“变量百宝箱”对话框,点击“碰撞检测”图标,在碰 撞变量引用中点击“碰撞变量一”,按确定键;

5 在“显示”模块正下方,连接“任务结束”模块,完成碰撞检测程序的编写。

图 3-5 VJC 碰撞显示变量设置图

图 3-6 碰撞检测程序流程

(25)

下载并运行此程序,观察 LCD 上的显示:

bmp_1=0 (表示此时没有碰撞)

若前碰撞受到碰撞,LCD 上显示:

bmp_1=4 (表示左后方受到碰撞)

在其它方向施加碰撞,LCD 显示的值将不同,四个方向发生碰撞时返回值的意义为: 1=>

左前方受碰,2=>右前方受碰,4=>左后方受碰,8=〉右后方受碰。

上面我们使用的是 VJC 的图形编程方式编的程序,我们再用 JC 语言编写下面的程序来 理解碰撞传感器是如何工作的。

在 JC 语言中,碰撞传感器的库函数是 bumper(),在程序运行过程中此库函数仅在被调 用到时执行一次,即采集数据一次。因此要连续查询碰撞传感器的状态就要在 VJC 交互式调 试窗口一行编辑框中输入如下程序块:

{while(1) {printf("bump=%d\n",bumper());wait(0.1);}}

按回车,JC 能立即编译这一段程序并下载运行,LCD 上显示:

bump=0 (表示此时没有碰撞)

(VJC 的这种交互式能力特别便于调试、测试和学习)

按左前碰撞环,LCD 上显示:bump=5。在其他方向施加碰撞,显示的值将不同。各个方 向发生碰撞时返回值对应关系如下:

无 0,左前 1,右前 2,左后 4,右后 8

安装 以下是碰撞传感器的接线图

左后 右后 左前 右前

图 3.4 碰撞传感器的接线图

用户在使用时只需将碰撞开关的组合插针以正确的方向插入相应的位置即可。

(26)

图 3.5 碰撞传感器的插针位置图 原理

到此,碰撞传感器已经能够被用户直接使用。但是,对应于每一个方向的碰撞,用户 是怎样得到一个二进制数值的呢?

在能力风暴智能机器人里,四个碰撞开关接在一个电阻网络里,通过采集模拟口 PE3 上电压值的变化,来识别出哪个或哪些碰撞开关闭合,从而判断出哪个方向有碰撞。同样,

在 VJC 交互信息窗口上方一行编辑框中输入如下程序块:

{while(1) {printf("pe3=%d\n",analogport(3));wait(0.1);}}

按回车,JC 能立即编译这一段程序并下载运行,LCD 上显示:

pe3=1 (表示此时无碰撞)

在各个方向上按压碰撞环,pe3 返回值各不相同,这些值是 pe3 上电压值通过模数转换

(模拟量转化为数字量)得到的结果。它们不直观,也不方便记忆。对此在库函数中进行了 变换,将模拟口上采得的电压值变为直观表示各个方位的四位二进制数(参看

VJC10\robots\AS-UII\libs\lib_AS_MII.jc 中的子函数 int bumper(),这样就得到了在应 用中的对应关系、计算方式和调用方法。

图 3.6 碰撞传感器的电路图 碰撞开关

1K

1K

2K

3.9K

(27)

范例 void main() {

int bumpvalue; /* 定义整形变量*/

while(1) {

bumpvalue=bumper(); /* bumper()将返回碰撞检测值*/

printf("bump=%b\n",bumpvalue);

/*以二进制形式打印出碰撞传感器的检测值*/

wait(0.5); /*等待0.5秒*/

} }

运行以上程序,前后左右按碰撞环,可直接从显示屏上读出显示值。

3.2.2. 红外传感器

能力风暴运用了 2 只红外发射管(970nm)和一只红外接收模块构成红外传感系统(见 图 3.7),主要用来检测前方、左前方和右前方的障碍,检测距离范围为 10~80cm。用户可 以通过调节两个电位器来调节左右两个红外的检测距离,顺时针红外发射强,检测距离远,

逆时针红外发射弱,检测距离近。注意强红外线可以穿透塑料,在机器人的上盖中传播,造 成接收信号始终表现为有障碍。解决办法是在红外发射管上套上黑纸环,使其侧面不能透出 红外线。同时也要避免地面的反射影响。逆时针将电位器旋转到底时将关闭红外线发射管。

主板中的 XT2 为 38kHz 的晶体,它将红外光发射的调制频率固化在 38KHz 左右,这是红外接 收模块中带通滤波器的中心频率。

红外光发射器 红外接收器 图 3.7 红外传感器

图中可以看出红外发射管的头部象一个发光二极管,它是两针的;红外接收器的头部是 个集成块,它是三针的。

安装

红外传感器的插针是有方向性的,用户自己拆卸、安装时应注意方向。红外线发射接 口 IRR 和 IRL 的正极已经标出,插反不会损坏元件,但传感器会不工作。红外线接收模块的 正确接法是将紫色线朝向主板上边中间的缺口,如果插反不会损坏器件,但错位有可能损坏 红外接收模块。装好以后可用下面介绍的语句检测一下。

(28)

图 3.8 红外传感器插针位置图 应用

在 JC 语言中,红外传感器的库函数是 ir_detector(),在程序运行过程中此库函数仅 在被调用到时执行一次,即采集数据一次。

在 JC 对话窗口中输入如下程序块:

{while(1) {printf("ir=%b\n", ir_detector());wait(0.5);}}

按回车,JC 能立即编译这一段程序并下载运行,LCD 上显示:

ir=0 (表示此时没有障碍)

用一张白纸分别挡在能力风暴智能机器人的前方、左方和右方,液晶显示器上显示的 ir 的 值都不一样,可总结如下:

无障碍 左方 右方 前方 十进制表示: 0 1 2 4 原理

红外接收模块集成了红外接收管、前置放大器、限幅放大器、带通滤波器、峰值检波器、

整前电路和输出放大电路,灵敏度很高。有时从红外管侧面和后面漏出的红外光也会被接受 模块探测到,在能力风暴智能机器人上,两个红外发射管和一个红外接收器都是先装在套管 里再固定在外壳上的,有效的避免了这种情况的发生。用户在自己扩展红外传感器时,如果 遇到这种情况,只需用黑胶布把发射管的侧面和后部包住即可。

红外传感器是靠发射并接收由障碍物反射回来的红外光来判断是否有障碍(如图 3.9)。

图 3.9 红外测障原理图

左红外发射 左发射调节 红外接收 右发射调节 右红外发射

(29)

图 3.9 中所示即为前方有障碍时的情况,红外光以 60 度的散角向外发射,阴影区域分别是 左右两个红外的反射光区域,而红外的接收模块正好处于左右两个反射光区域内,能接收到 左右两个红外发射管的反射光,由前所述即认为此时前方有障碍,事实也是如此。

在此,应特别注意红外接收模块只是在接收到了一定强度的红外光时才起到质的变化,

认为有障碍。所以,当障碍物太细时,能力风暴智能机器人会检测不到;当障碍物是黑色或 深色时,会吸收大部分的红外光,而只反射回一小部分,有时会使接收模块接收到的红外光 强度不够,不足以产生有障碍的信号。

下面是红外传感器的电路图:

XT238Khz R1512K R23 1M C30

22p C31

2200p

IRL CL5R

IRR CL5R

R3147

100uF/16VC23 INFRARED SENSOR

R263K9 VCC

Q4 9012 Q39012 AR1VM6CK332

AR2 VM6CK332 R10

1K R9 1K

R29100

R30 100

IRMOLD

603M PD2

PD3 PE4

1 2

U6A

74HC14

11 10

U6E

74HC14

13 12

U6F

74HC14

3 4

U6B

74HC14

R25 3K9 R24 3K9D2

1N4148

D3 1N4148

图 3.10 红外传感器电路图

从图 3.10 中可以看出,I/O 口 PD2,PD3 分别控制左右红外光发射管的关闭和打开,AR1 和 AR2 控制左右红外光发射管的发射强度。

红外传感器检测障碍的过程如下:

1. 左右发射管均关闭,红外探测器探测一次当前信号,并保存下来以跟后面采集到的 数据比较。

2. 当程序中调用 ir_detector()时,启动红外发射探测系统。首先,左红外发射管发 射一次,延时 1ms 后红外探测器探测一次信号;然后,右红外发射管发射一次,延 时 1ms 后红外探测器探测一次信号,红外探测器采样一次信号的时间为 0.064ms。

红外探测器通过 PE4 口采样当前值,并保存下来。由于先后时间的不同,就可以分 别探测左右两边的红外信号。

3. 调用一次 ir_detector()函数,红外探测系统开启一次。完成后,左右发射管关闭。

根据采集的数据可以判别是否有反射,只有在初始探测无反射而第二次探测有反射时,

左反射管才是有反射的,这样系统才认为左方有障碍。同理,初始探测无反射而第三次探测 有反射时,右反射管才是有反射的,右方被认为有障碍。采用这种方法可以抑制许多环境红 外噪音。

范例 void main() {

int ir;

while(1) {

ir=ir_detector();

if(ir!=0) /*判断有否障碍*/

{

motor(-80,-40); /*执行语句,即倒退0.5秒*/

wait(0.5);

}

(30)

motor(100,0); /*前进*/

} }

运行此程序可知当前方有障碍时,能力风暴智能机器人有反应。

3.2.3. 光敏传感器

能力风暴智能机器人上有 2 只光敏传感器(见图 3.11),它可以检测到光线的强弱。

图 3.11 光敏传感器

光敏传感器其实是一个光敏电阻,它的阻值受照射在它上面的光线强弱的影响。能力 风暴智能机器人所用的光敏电阻的阻值在很暗的环境下为几百KΩ,室内照度下几KΩ,阳 光或强光下几十 Ω。

安装

光敏传感器是一个可变的电阻,它的接插方式没有方向性,它在主板上的位置如图 3.12

图 3.12 光敏传感器插针位置图 应用

在 JC 语言中,光敏传感器的库函数是:左光敏,photo(1);右光敏,photo(2)。在程 序运行过程中库函数仅在被调用到时执行一次,即采集数据一次。

在 VJC 交互式调试对话窗口中输入如下程序块:

右光敏传感器 左光敏传感器

(31)

{while(1) {printf("photoleft=%d\n",photo(1));wait(0.5);}}

(仅采集左光敏的读数)按回车,JC 能立即编译这一段程序并下载运行,LCD 上显示:

photoleft=180 (表示此时照射在左光敏上的光线强弱)

改变照射在左光敏电阻上的光线强弱,可观察到读数的变化。可发现光越暗,数字越大,光 越强,数字越小。

原理

以下是光敏电阻自身的结构及工作原理图

1.电极 2.光导体 图 3.13 光敏电阻的电极图案

图 3.14 光敏电阻的工作原理图

光敏传感器在能力风暴智能机器人里表现出的光越暗,数值越大,光越强,数字越小 是因为:光敏电阻和 10K 的电阻 R13,R14 相连后构成分压器。左右两个光敏电阻分别与模 拟输入口 PE0,PE1 相连,在系统中采集的是光敏电阻上的电压值。光暗时,光敏电阻上的 电压接近 5V,光强时,接近 0V,模数转换为 8 位数字量后的范围为 0-255。

光敏传感器的线路图如下:

PE0 PE1

LIGHT SENSOR R14 10K R13

10K VCC

ORL N5AC04067

ORR N5AC04067

C6 104 104C5

图 3.15 光敏传感器的电路图

(32)

范例 void main() {

int right;

while(1) {

right=photo(2);

if(right>200) {beep();

beep();

} } }

运行此程序可知当光线暗于一定值时,能力风暴智能机器人叫两声。

3.2.4. 麦克风

能力风暴智能机器人上的麦克风(microphone)是能够识别声音声强大小的声音传感器

(见图 3.16)。

图 3.16 麦克风

应用

在 JC 语言中,声音传感器的库函数是 microphone( ),在程序运行过程中此库函数仅 在被调用到时执行一次,即采集数据一次。

在 VJC 交互式调试对话窗口中输入如下程序块:

{while(1) {printf("mic=%d\n", microphone());wait(0.1);}}

按回车,JC 能立即编译这一段程序并下载运行,如果周围的环境很静 LCD 上显示:

mic = 12 (表示此时很安静)

对着 microphone 发出一些声音,可以看到 microphone 的值不断变化。它的变化范围是 0~

255。

原理

麦克风采集到的信号通过 LM386(U1)进行放大,放大倍数为 200(由 C25 确定),输 出信号接至 PE2。没有声音时,电压为 2.5V 左右,转换为 8 位二进制数后得到的十进制整 数为 127 左右(如图 3.18),库函数 microphone()对数据进行处理,使返回值为 0~255。

(33)

GAIN 8 BYPS 7

VCC 6

VOUT 5 1 GAIN

2 IN- 3 IN+

4 GND U1

LM386N-1

100uF/16VC26 C25

10uF/16V

C2 104 C1

104 R2 2K

R3 MG47

R5 1K VCC

PE2

MIC MIC46

MICROPHONE CIRCUT

图 3.18 麦克风电路图

当有声音时,LM386 的输出电压在 2.5V 上下波动。PE2 测得的电压和 2.5 V 相减的绝 对值越大,则声音越大。R5,C2 构成高频滤波,滤去线路板其他元器件产生的高频噪声。

范例 void main() {

int b=1; /*状态标志位*/

int mic;

while(1) {

mic= microphone(); /*检测麦克风*/

printf("mic=%d\n",mic); /*显示检测值*/

wait(0.5); /*延时0.5秒,可调整*/

if(mic>40) b=b*(-1); /*条件满足,改变运动状态*/

if(b==-1) drive(100,0); /*前进*/

if(b==1) stop(); /*停止*/

} }

运行上面的程序,第一次声音大于一定值(范例中为 40,可根据具体情况调整)时,能力风 暴智能机器人全速前进,第二次声音大于一定值时能力风暴智能机器人停止运动;如此循环。

3.2.5. 光电编码器

光电编码器是一种能够传递位置信息的传感器,它由光电编码模块及码盘组成(见图 3.19)。能力风暴智能机器人有 2 只光电编码器,运用反射式红外发射接收模块。反射器(即 码盘)是黑白相间的铝合金制成的圆片,66 等分。当码盘随轮子旋转时,黑条和白条交替经 过光电编码器,反馈的信号状态不同,即构成一个脉冲。因此 360 度共产生 33 个脉冲,每个 脉冲的分辨率约为 10.91 度,轮子直径为 65mm,则周长方面的分辨率约为 6.19mm。

(34)

图 3.19 码盘及光电编码模块外形 安装

码盘装在轮子的内侧,光电编码芯片的插针位置如下图所示:

图 3.20 光电编码芯片的插针位置示意图 应用

检 测 左 右 编 码 器 当 前 状 态 的 库 函 数 为 : encoder ( 1 ), encoder ( 2 ); 运 行 一 下 VJC10\robots\AS-UII 中的 selftest.jc 程序中的 encoder_test(),看一下转一圈是否是 33 个脉冲。同时注意看 R 或 L 右边的“i”和“*”变化,“i”表示当前无反射信号,码 盘片的黑格应正对编码器。

库函数 rotation(1)、rotation(2)可以读出经过左右光电编码器脉冲累计值。

原理

光电编码器原理上也是靠发射与接收红外光来工作的。能力风暴智能机器人上用的光电 编码器芯片集成了发射与接收功能。

码 盘 和 电 机 插 座

(35)

无返回信号 有返回信号 反射型红外光电传感器 图 3.21 光电编码器的工作原理图

从图中可以看出:红外光射在黑色辐条上时没有反射信号,因为红外光大部分已经被 黑色辐条吸收;当红外光射在白色辐条上时有反射信号,因为红外光在白辐条上反射强烈。

图 3.22 光电编码器电路图

2 1 4 3

5 6 8 7 10 9

1 2 3 4 5 6 7 8 9 10

3 1

2 Vcc Gnd Vout

3 1

2 Vcc Gnd Vout

左编码器

右编码器

图 3.22 光电编码器和 motor/encoder 插座的接线图 范例

void main( ) {

int encoder_state;

while(1) {

encoder_state=encoder(1); /*返回左编码器的当前状态*/

printf("encoder=%d\n",encoder_state);

wait(0.1); /*延时0.1秒,可调整*/

} }

以上是 encoder(int index) 函数的应用。运行程序,用手旋转左轮胎,观察 LCD 上显示值 的变化:码盘上的白条对红外发射接受芯片时,encodar_state 的值为 1;黑条对着芯片时,

encoder_state 的值为 0。

范例:

void main() {

rotation(1); /*调用一次,目的是为了将脉冲记数清零*/

drive(70,0); /*前进*/

(36)

wait(2.0); /*延时2秒*/

printf("left=%f\n",(float)rotation(1)/33.0);

/*读出的脉冲数值除以33即得左轮旋转圈数*/

stop(); /*停止*/

}

以上是 int rotation(int index)函数的应用。运行此程序,不同的速度值(在此为 70)可 观测到不同的结果。

3.2.6. 其他传感器

能力风暴还能集成很多其他的传感器,插在 ASBus(参见 3.5 节)上即可使用。下面 作简单介绍。

人体热释片传感器

人体热释片传感器对移动的人体热源敏感,加上菲涅耳透镜后可以探测 10 米外的人 体。能力风暴装上 1 个或几个人体热锋电传感器后,你可以让他一看见你,就向你迎过来,

让他跟着你走。

超声传感器

超声传感器是机器人测距的专业传感器,测量距离一般为 20cm-6m,测量精度为 1%,是 测量声波发射与收到回波之间的时间差来测量距离的。运用能力风暴本体上带的传感器在房 间里找到门不容易,但运用声纳对房间扫描一周后,就能较方便找到房门。

连续测距红外传感器

SHARP 公司推出了创新的 GP2D02/ GP2D12 连续测距红外传感器,测量范围为 10cm-80cm,

参加灭火比赛时,用它来找房间门非常棒。

数字指南针

自主机器人的导航至今仍是世界性难题,借助数字指南针,可以使能力风暴辨别方向。

温度传感器

想让机器人动态告诉你气温吗?加一个温度传感器是个好方法。

视觉

让能力风暴处理视觉是有些力不从心了,但你可以用它来作移动的监视平台。你可以在 能力风暴上装微型摄像头,把视频信号发射出来,用 PC 机接收后进行图象处理。

火焰传感器

用来发现火焰,参加机器人灭火比赛最好使用火焰传感器。

还有许多传感器,可以让能力风暴拥有有特殊本领。大部分传感器可以方便地运用

(37)

ASBus 接在能力风暴上,并用 JC 来编驱动程序。个别传感器需要用汇编编写驱动。详细信 息请看广茂达网站:http://www.grandar.com 。

能力风暴的魅力在于你能控制所有的资源,直接领悟信息采集与处理的机制,以及如何 处理现实情况的复杂性和难以预测性。

(38)

3.3. 能力风暴的计算机硬件

能力风暴计算机硬件的设计策略是尽量选择功能齐全、可靠、周边设备集成度高的微 控制器,价格也需控制,能让中国的学生以可以承受的价格获得世界上先进的智能机器人计 算平台。Motorola 生产的 68HC11,使我们以极少的周边芯片获得了齐全的功能,8 个模拟 口,5 个输入捕捉,3 个 PWM 输出,16 位地址,8 位数据总线,串口,以及 4 个通用 I/O。

同时,充分考虑到软件开发工具问题。因为没有优秀方便的软件开发工具,硬件只能 成为专有系统,而无法成为开发平台。68HC11 的自下载功能,使我们拥有了纯软件开发调 试的优秀工具 JC。JC 即可用于开发高层应用软件,又便于开发低层驱动,还能交互调试。

在观察能力风暴控制板时要注意识别芯片管脚,特别是 1 脚位置。常见芯片的封装形 式有两种,双列直插(DIP)和塑料扁平封装(PLCC),参见下图。

正面视图 图 3.24 DIP 芯片管脚

正面视图

图 3.25 PLCC 芯片管脚和插座引脚

3.3.1. 微控制器

68HC11E1 有 CPU、片内存储器、定时器系统、串行口、A/D、并行 I/O 口,中断和复位 系统组成,见图 3.26。

CPU

计算机的计算原理是什么?68HC11 的 CPU 有两个 8 位累加器,两个 16 位变址寄存器、

一个 8 位条件寄存器,一个 16 位堆栈指针和程序计数器;M6800/M6801 指令系统,共 300

(39)

构成,时钟周期,指令周期等等。

图 3.26 68HC11E1 原理结构图 片内存储器

68HC11E1 无内部 ROM,有 512 字节 EEPROM,可重定位的 256 字节 RAM。

定时器和脉冲电路

16 位高性能定时器系统,8M 晶振,定时器频率为 2MHZ(周期 0.5μs),3 个输入捕捉,

可测量脉冲数量,脉冲周期、宽度和相位等;5 个输出比较,可输出 PWM 信号,可以完成各 种定时控制功能,有定时器溢出中断功能。高性能定时器是 68HC11 的特色,能力风暴中用 输入捕捉计码盘信号,用输出比较功能控制直流电机。

串行口

串行通讯接口 SCI,能力风暴用于和 PC 机通信;全双工同步串行外围接口 SPI(图 3.27),Motorola 单片机独有的串口标准,速度可达 2Mbps 以上,用于扩展外围芯片和多机 通讯。能力风暴中已将其用于其他设备驱动中。

图 3.27 SPI 全双工同步串行接口引脚排列 A/D 转换器

(40)

8 个输入通道和四个转换结果寄存器,具有一次完成四路 A/D 转换或连续对同一路采 样转换 4 次的功能。后一种功能可以方便实施去掉最大、最小、取均位的滤波方法。能力风 暴中碰撞传感器、声音均使用 A/D 转换器,非常方便,这也是 68HC11 的特色。

中断

有 16 个硬件中断和两个软件中断,它们各有独立的中断向量和中断允许位,响应中断 时能自动保护所有的 CPU 寄存器。另外具有实时中断电路,可每隔指定的时间产生一次中断。

而 8051 单片机则只有 5 个硬件中断。

并行 I/O 口

单片方法工作时,有 38 个 I/O;扩展方式时:有 8 位数据单线和 16 位地址总线,可 扩展 64K 存储器,另有 2 个 8 位 I/O 口和一个 I/O 口。

复位系统和电源

计算机有多种复位方式:上电自动复位;外部 RESET 复位;看门狗复位(软件工作不 正常时);时钟监视复位。能力风暴采用前两种复位方式。

68HC11 的管脚

68HC11 的一大特色是功耗低,工作电流小于 15mA,有 WAIT 和 STOP 两种方式进行省电。

68HC11 的管脚图见图 3.28。

图 3.28 68HC11 的管脚

VDD,VSS----电源脚,VDD 为+,VSS 为 –

MODB/VSTBY,MODA/LIR----运行方式选择输入脚,备用电源供给脚。

EXTAL,EXTAL----晶振脚。能力风暴接 8M 晶振。

E----总线时钟输出脚。能力风暴中为 2MHZ。

(41)

RESET----复位脚,低电压复位。

XIRQ,IRQ --- XIRQ 不可屏蔽中断请求输入。

IRQ 外部中断输入脚

VREFL,VREFH ---- A/D 参考电压输入。能力风暴中 VREFL=0,VREFH=5V。

PE(PEO-PE7)----A/D 模拟输入或通用输入 PA(PAO-PA7)---- PA0-PA2,输入捕捉脚。

PA3-PA6,定时器输出比较脚,PA7,能作通用 I/0,或脉冲累加器输入或比较输出。

PD0-PD5----可作通用 I/0 脚,或者 PDO 为串口 RXD 输入,PD1,串口 TXD 输出,PD2-P5 分别为 MISO,MOSI,SCK,SS,构成 SP2 串口总线。

STRA,STRB,PB,PCD----单片时,可作通用 I/O 口,扩展方地址选择 AS 和读(R/W)

控制线。

能力风暴运行于扩展工作方式,扩展了 32K 静态 RAM 和 8 个 I/O 口。注意:为了省引 脚,单片机中一般以低 8 位地址和 8 位数据以时分多路方式合用 PC 的 8 只引脚。

能力风暴充分利用了 68HC11E1 的全部硬件资源。

3.3.2. 外部存储器

能力风暴智能机器人扩展了 32K 的静态不挥发 RAM。其优点是既有静态 RAM 的速度和 方便(70ns),又有 EEPROM 或 FlashRom 的掉电不丢失性,从而能将程序和数据合用一个芯 片。AS62256 写入的数据可保存十年以上,同时具有可靠的上电、掉电、强静电等数据保护 功能。

选址和并行口扩展

32KRAM 用了 AO-A14 共 15 根地址线,构成 32K 的地址空间,A15 为高电平时和 E,RESET 等信号复合片选 32K RAM,因此 32K RAM 的地址空间为 OX8000-OXFFFF。另一根地址线 A15 和其余地址线及读/写线复合扩展 4 个输入控制线,4 个输出控制线,见图 3.29。

图 3.29 扩展地址选择线 地址空间与 8 个读写控制线选择对应表:

写操作 读操作 OX4000—OX4FFF OS0 IS0 OX5000—OX5FFF OS1 IS1 OX6000—OX6FFF OS2 IS2 OX7000—OX7FFF OS3 IS3

12 13

14 15

A(12:15

R / -W

10 11

E

74HC14

VCC

A 1

B 2

C 3

E1 4

E2 5

E3 6

15 Y0 14 Y1 13 Y2 12 Y3 11 Y4 10 Y5 9 Y6

7 Y7GND 8

VCC 16

74HC138

(42)

对地址 OX4000 进行写操作,OS0 口线被选中,OS0 作为片选信号,即把数据总线上的数 据写往 OSO 选中的并行接口芯片上。对地址 OX4000 进行读操作,IS0 口线被选中,IS0 作为 片选信号,即把选中的芯片上的 8 位数据通过并行口读至 CPU。

32K 空间用来选择四对输入输出控制线,在能力风暴在 ASBUS 上能扩展 4 块平行输入 卡,4 块平行输出卡。目前 PC 机上也只有 4-5 个 PCI 扩展槽。只要使用一对输入输出选择 线就可以扩展 8 个输出口,8 个输入口。

能力风暴地址空间的分配如图 3.30。

图 3.30 能力风暴智能机器人的地址空间,图中地址为 16 进制

能力风暴智能机器人的操作系统 ASOS 放在高端内存 10K 左右,往下到 8000 之上有近 20K 左右是用户程序空间。在下载用户程序的时候,JC 会显示编译后代码有多少字节,存放 的位置。你可以计算一下 20K 能放多少行 JC 程序。

3.3.3. 电源与复位电路

能力风暴控制板采用 Maxim603 稳压芯片,提供 500MA,5V 电压,该芯片自身的功耗很 低。低电压复位保护电路采用 DS1233D-10,当电压低于 4.5V,将产生复位信号,同时红色 RST 发光二极管变亮,见图 3.31。

數據

表 5.1 短接头连接位置与地址选择对应表  跳线  地址  0X4000  0X5000  0X6000  0X7000                    3.  8 个数字输出口     ASIO 卡上双排插针 J1 为 8 个数字输出口,各口与八位二进制数位位对应。其中外侧插 针为接地线,内侧插针为信号线,每个输出口可单独进行输出,也可以多个同时输出,由对 应的发光二极管发光提示。  4

參考文獻

相關文件

You are a property agent working for the Quality Property Company. A potential client has contacted you from Australia because he will soon be moving to Hong Kong with

[r]

下列文句未使用「倒裝句式」的選項是:﹙A﹚好鳥枝 頭亦朋友﹙B﹚子何恃而往﹙C﹚不患人 之不己知,患

maintenance and repair works should be carried out by school and her maintenance agent(s) to rectify defect(s) as identified in routine and regular inspections. Examples of works

Reinforcement learning is based on reward hypothesis A reward r t is a scalar feedback signal. ◦ Indicates how well agent is doing at

Agent learns to take actions maximizing expected reward.. Machine Learning ≈ Looking for

 Goal: select actions to maximize future reward Big three: action, state, reward.. Scenario of Reinforcement Learning.. Agent learns to take actions to maximize expected

 Transfer the P-CSCF address with the PDP Context Activation signaling to the UE. GGSN acts as a DHCP Relay Agent 1.Create PDP context bearer ( TS 23.060) 2.UE requests a