转发:智能小车设计指导

向下

转发:智能小车设计指导

帖子  Admin 于 周二 五月 07, 2013 12:08 pm

智能小车设计指导
河海大学计算机与信息学院(常州)学生科协
第二版
第二版说明
本书自去年编写第一版之时就已经有计划还要写第二版了,去年的第一版取得了很好的效果,
去年的第一版由于时间仓促,难免有很多疏漏之处,今年在开学之前我就联系科协的几位有经验的
同学共同编写第二版。第二版以第一版为基础,在功能上做了完善,细节上做了补充,主要修改如
下:
1. 新加入摄像头、激光管、电磁、算法等内容,方便学有余力的同学进行下一步的学习。
2. 基础部分对芯片的原理,电路设计进行了更加详细的介绍,不只告诉刚入门的同学要怎样做,
还想告诉为什么要这样做。
3. 程序设计部分加入一些简单的程序和仿真,方便入门的同学学习。
4. 修改了上一版中的一些错误,对内容安排有所调整。
本书的基础部分(第一版内容)主要由孙浩、顾丽萍完成,摄像头部分由尹海峰完成,电磁部
分由李永强完成,算法部分由宋加才完成,最终由孙浩进行统稿。
本书凝聚着作者的心血,希望大家能够充分利用,针对于各位本书以下几点需要特别补充说明:
1. 本书不是为了给各位读者提供一个成熟的模板和电路供大家使用,我更希望大家能够以书中的
内容作为参考,弄清楚其中的原理,根据自己的理解完成设计,而不是照搬电路图。
2. 第二版虽然在内容上有所扩充,但是并不能作为唯一参考,本书只是想告诉大家设计方法和原
理,更多的还需要各位读者自己查阅相关参考书和网上的资料。
3. 最终完成智能车设计需要综合单片机编程、模数电、Protel 设计、电路焊接、自动控制算法设
计等多方面内容,因此需要团队协作,协调掌握,需要有所偏重但是不能只会某一样。
4. 虽然我们提供了较为完善的资料,但是没有一成不变的设计,希望各位读者能够发挥自己的创
新精神,积极探索,寻找新的方法。
5. 如果你正在阅读本书,最起码说明你对智能小车的设计感兴趣,但是如果想完成后面的设计需
要的更多的是坚持。希望各位读者能够有一颗恒心,最终完成设计。
由于时间仓促和我们的水平有限,如果在阅读的过程中发现什么错误或者有什么好的建议欢迎
通过下面的联系方式联系我们,真诚期待您的反馈。
孙浩
2010 年9 月
联系我们
计信科协论坛:http://xinxikexie.uueasy.com (资料发布、问题讨论-推荐)
计信科协资料下载服务器:ftp://10.1.12.41 (限内网访问需要断掉客户端,具体访问方法见科协论坛)
科协人人网:http://www.renren.com/jxkx
实验室:实验楼A217 创新实验室
由于人数较多,QQ 群加一个即可。
计信科协QQ 讨论群:83940327
电子设计部QQ 讨论群:83159175
智能车交流QQ 讨论群:70385417
智能车交流飞信群:31373778
有什么意见或者建议欢迎大家通过以上沟通渠道及时向我们反馈。
目录
第一章 初识智能小车 .................................................................................................................................. 1
1.1 常见的两种类型 ............................................................................................................................... 1
1.2 智能小车的基本结构 ....................................................................................................................... 1
第二章 车体设计 .......................................................................................................................................... 3
2.1 小车的拆卸 ...................................................................................................................................... 3
2.2 舵机的安装 ...................................................................................................................................... 3
2.3 车体的整体布局 ............................................................................................................................... 4
第三章 硬件设计 .......................................................................................................................................... 5
3.1 电源模块设计 ................................................................................................................................. 5
3.1.1 智能车电源设计要点 ........................................................................................................... 5
3.1.2 低压差稳压芯片LM2940 简介 ............................................................................................ 5
3.2 单片机最小系统设计 ...................................................................................................................... 6
3.2.1 单片机最小系统简介 ........................................................................................................... 6
3.2.2 51 单片机最小系统设计 ....................................................................................................... 6
3.3 循迹模块设计 ................................................................................................................................. 9
3.3.1 红外光电管的工作原理 ....................................................................................................... 9
3.3.2 检测电路设计 ..................................................................................................................... 10
3.3.3 光电检测部分的发挥设计 ................................................................................................. 12
3.4 舵机转向模块设计 ........................................................................................................................ 12
3.4.1 舵机的工作原理 ................................................................................................................. 12
3.4.2 常见舵机简介及使用注意事项 ......................................................................................... 13
3.5 后轮电机驱动模块设计 ................................................................................................................ 14
3.5.1 H 桥驱动电路的工作原理 ................................................................................................... 14
3.5.2 常用H 桥集成电路芯片L298 ............................................................................................ 16
3.6 测速模块 ....................................................................................................................................... 17
第四章 程序设计 ........................................................................................................................................ 18
4.1 PWM 的相关知识 ........................................................................................................................... 18
4.1.1 PWM 简介以及实现 ............................................................................................................ 18
4.1.2 51 单片机产生PWM 波 ...................................................................................................... 19
4.2 舵机的控制 ................................................................................................................................... 21
4.3 后轮电机的控制 ............................................................................................................................ 22
4.4 程序总体的设计 ............................................................................................................................ 22
4.5 程序设计的发挥与拓展 ................................................................................................................ 23
第五章 测试与调试 .................................................................................................................................... 24
5.1 测试与调试 ................................................................................................................................... 24
5.2 智能车的测试步骤 ........................................................................................................................ 24
第六章 车速的测量 .................................................................................................................................... 26
6.1 车速测量的重要性 ........................................................................................................................ 26
6.2 车速测量的几种方式 .................................................................................................................... 26
6.2.1 霍尔传感器检测 ................................................................................................................. 26
6.2.2 反射式光电检测 ................................................................................................................. 26
6.2.3 透射式光电检测 ................................................................................................................. 26
6.3 车速测量的单片机实现 ................................................................................................................ 27
第七章 摄像头的使用 ................................................................................................................................ 28
7.1 摄像头工作原理及简介 ................................................................................................................ 28
7.2 模拟摄像头视频分离电路设计 .................................................................................................... 29
7.3 摄像头选型 ................................................................................................................................... 30
7.4 摄像头安装 ................................................................................................................................... 32
7.5 基本视频信号采集 ........................................................................................................................ 32
7.5.1 使用单片机内部A/D 转换。 ............................................................................................ 34
7.5.2 使用外部A/D 转换器 ......................................................................................................... 35
7.5.3 使用模拟电路对PAL 信号进行转化(参考北京科技大学CCD 一队) ....................... 36
第八章 电磁传感器的使用 ......................................................................................................................... 38
8.1 智能汽车电磁组简介: ................................................................................................................ 38
8.2 20KHz 电源参考设计方案 .............................................................................................................. 38
8.2.1 电源技术指标要求 ............................................................................................................. 38
8.2.2 电源组成 ............................................................................................................................. 39
8.2.3 功率输出电路 ..................................................................................................................... 40
8.2.4 恒流控制 ............................................................................................................................. 42
8.2.5 参考设计电路 ..................................................................................................................... 42
8.2.6 电源调试 ............................................................................................................................. 43
8.2.7 注意事项 ............................................................................................................................. 44
8.3 电磁组传感器及模路径检测设计参考方案 ................................................................................ 44
8.3.1 设计原理 ............................................................................................................................. 44
8.3.2 磁场检测方法 ..................................................................................................................... 45
8.3.3 电路设计 ............................................................................................................................. 48
8.3.4 传感器的设计与调试 ......................................................................................................... 52
8.3.5 检测方案 ............................................................................................................................. 54
8.4 软件部分的简要流程图 ................................................................................................................ 56
8.5 结束语 ........................................................................................................................................... 57
第九章 激光传感器的使用与设计 ............................................................................................................. 58
9.1 激光传感器的工作原理和驱动 .................................................................................................... 58
9.2 激光传感器的选用与注意事项 .................................................................................................... 58
9.3 激光管的布局和安装 .................................................................................................................... 58
第十章 算法设计 ........................................................................................................................................ 60
10.1 摄像头组处理算法 ...................................................................................................................... 60
10.1.1 黑线提取算法 ................................................................................................................... 60
10.2 车体控制算法 .............................................................................................................................. 62
10.2.1 PID 算法 ............................................................................................................................. 62
10.2.2 预判算法 ........................................................................................................................... 63
基础部分
本部分主要介绍制作智能小车所需要最基本的软硬件相关知识,本部分在讲解基础知识以及设
计原理的同时也提供了典型的应用电路,方便初学者进行制作。希望读者能够认真阅读,广泛查阅
资料,弄清楚各模块的原理之后再动手制作,切忌照搬电路图,硬套程序。
智能小车设计指导 第二版
-1-
第一章 初识智能小车
1.1 常见的两种类型
首先既然是小车就要有一个车最基本的转向和驱动功能,对于一般电子设计常用的小车如下图
所示,图1.1 为常见的两种小车,首先是第一种,这种小车的优点在于可以获得很大的速度,由于
转向采用的是舵机所以缺点就在于要想转弯一定要有一定的转角。这类小车就是校内智能小车比赛
和飞思卡尔采用的类型,通常为后轮直流电机驱动+前轮舵机转向的方式,但是也有例外,像2007
年的全国大学生电子设计竞赛中的电动车跷跷板一题,为了达到精确的控制效果,很多人将后轮改
为步进电机驱动。
后一种是在本届全国电设中设计的小车,小车采用的是双步进电机+双万向轮的方式,当然也有
采用直流电机+万向轮的方式,这类的小车的优点在于转弯不需要转角,可以原地转弯,其次是可以
精确控制小车行进路线,缺点是无法获得很大是速度,这种小车在本文中将不再叙述。
这两种小车都有各自的优点,使用步进电机还是用直流电机驱动也要根据具体的竞赛题来选择,
直流电机的优点在于控制简单,转速快,缺点在于无法控制转过角度,可能要和很多外部传感器配
合使用,增加了硬件的设计难度。步进电机的优点在于角度、转速可控,可以开环控制,缺点在于
控制较为麻烦,无法实现较高的速度。本书将以飞思卡尔智能汽车为参考,介绍智能车的相关基础
知识。
图1.1 智能车常见的两种类型
1.2 智能小车的基本结构
在下面的文章中我将以上图的第一种小车为例介绍一下智能小车的结构。
如图1.2 所示,小车的结构主要分为以下几个部分:
1. 循迹模块:用于探测黑线的位置,基础由若干个光电管组成,通过反射红外线的变化判断黑线
的有无。高年级的同学建议尝试使用摄像头等作为传感器。
2. 舵机转向模块,通过一定占空比的方波控制舵机转过的角度,舵机具有力矩大,响应速度快等
特点,在航模,机器人等设计中应用非常广泛,舵机的控制也是只能小车程序设计的重要部分。
3. 电机驱动模块,由于单片机输出的电流有限,无法直接驱动电机进行工作,因此需要通过专用
的电路进行驱动,只要单片机给出相应的控制信号,便可控制电机工作,本文以较为常用的H
桥驱动芯片L298N 为例,鼓励大家自行选择更合适的驱动方案。
4. 单片机模块,根据使用的传感器和控制策略的不同,单片机的选择也不同,对于低年级刚入门
的同学可以使用51 单片机,有一定基础的同学可以使用性能稍强的***R 系列,高年级同学推
荐使用MSP430 或者S12 等其他性能更强的单片机。
第一章 初识智能小车
-2-
5. 电源模块,由于小车采用电池供电,因此合理的设计一个电源模块是小车稳定运行的前提。
循迹模块
单片机最
电机驱动
图1.2 智能小车的基本结构
以上只是针对小车结构的一个简单介绍,要完成整体的设计每一部分都很重要,在后面文章中
我会依次详细叙述。
智能小车设计指导 第二版
-3-
第二章 车体设计
2.1 小车的拆卸
这一点不用多说,一般选用的是带有无线遥控功能的可转向的玩具车,所以第一步就是拆掉除
了后轮驱动电机之外的所有多余部分,其次就是在拆卸的时候要充分的考虑到自己的安装要求,切
不可盲目,也没必要留着多余的部件。
2.2 舵机的安装
完成了玩具车的拆卸之后要做的第二步就是安装舵机,现在市场上卖的玩具车虽然也具有转向
功能,但是前轮的转向多是依靠直流电机来驱动,无论向哪个方向转都是一下打到底,无法控制转
过固定的角度,因此根据我们的设计需求,需要将原有的转向部分替换成现有的舵机,以实现固定
转角的转向。舵机的实物图如图2.1 所示。
需要说明的是由于小车系玩具车改装,在安装舵机是需要合理的利用小车的结构,将舵机安装
牢固,同时还需注意合理利用购买舵机是附赠的齿轮,从而将舵机固定在合适的位置。舵机的安装
方式有俯式、卧式多种,不同的安装方法力臂长短、响应速度都有所不同,这一点请自己根据实际
情况合理选择,图2.2 为舵机的安装图。
图 2.1 舵机实物图 图2.2 舵机安装图
舵机安装过程中有一点需要尤其注意,由于舵机不是360°可转的,因此必须保证车轮左右转
的极限在舵机的转角范围之内。
舵机安装完毕之后就可以对小车的转角进行控制了,但是由于玩具车的车体设计往往限制了小
车的转角,因此可以对小车进行局部的“破坏”来增大前轮的转角,要知道在比赛中追求速度的同
时一个大的转角对小车的可控性会有一个很大的提升,如图2.3 所示,就是对增加小车转角的一个
改造,这是我在去年小车比赛中的用法。将阻碍前轮转角的一部分用烙铁直接烫掉。
但是这种做法也有风险,由于你的改造会破坏小车的整体结构,有可能会对小车的硬件结构造
成破坏,因此如果你的小车在改造之后显得过于脆弱的话那你就要对你的小车采取些加固措施了。
第二章 车体设计
-4-
图2.3 增加车轮转角的方法
2.3 车体的整体布局
除了舵机的安装,车体的整体布局也是很重要的一方面,好的布局不仅能够增强小车的美观性,
也能够提高小车的整体性能。首先是电路板的放置,很多自己搭建的电路板要合理的安装在小车上,
还要考虑到比赛过程中可能的冲撞给电路板带来的损害,在电路板的安装中尤其注意循迹模块的安
装,由于循迹模块安装在小车的前部,伸出车体的长短都有讲究在设计时要有所考虑。其次是电池
的放置,由于电池较重,电池的放置直接影响到小车的重心,在追求速度的比赛中对电池安装的位
置也要有所考虑,具体的优劣这里只做提醒,不多叙述。
智能小车设计指导 第二版
-5-
第三章 硬件设计
3.1 电源模块设计
3.1.1 智能车电源设计要点
电源是整个系统稳定工作的前提,因此必须有一个合理的电源设计,对于小车来说电源设计应
注意两点:
1. 与一般的稳压电源不同,小车的电池电压一般在6-8V 左右,还要考虑在电池损耗的情况下电压
的降低,因此常用的78 系列稳压芯片不再能够满足要求,因此必须采用低压差的稳压芯片,
在本文中以较为常见的LM2940-5.0 为例。
2. 单片机必须与大电流器件分开供电,避免大电流器件对单片机造成干扰,影响单片机的稳定运
行。
现在各种新型的电源芯片层出不穷,各位读者可以根据自己的需求自行选择电源芯片,对于本
设计应该主要注意稳压压差和最大输出电流两个指标能否满足设计要求。
3.1.2 低压差稳压芯片LM2940 简介
LM2940 系列是输出电压固定的低压差三端端稳压器;输出电压有5V、8V、10V 多种;最大输
出电流1A;输出电流1A 时,最小输入输出电压差小于0.8V;最大输入电压26V;工作温度-40~+125℃;
内含静态电流降低电路、电流限制、过热保护、电池反接和反插入保护电路。同时LM2940 价格适
中而且较容易购买,非常适合在本设计中使用。
LM2940-5.0 封装和实物图如图3.1 所示。
图3.1 LM2940 封装和实物图
从封装可以看出LM2940-5.0 与78 系列完全相同,实际应用中电路也大同小异。图3.2 为参考
电路图。
第三章 硬件设计
-6-
图 3.2 LM2940 参考电路图
如图3.2 所示,采用两路供电,这样可以使用其中一路单独为单片机,指示灯等供电。另外一
路提供L298N、光电管、舵机的工作电压,L298N 的驱动电压由电池不经任何处理直接给出。舵机
可以用6V 供电,也可以直接用5V 供电。
3.2 单片机最小系统设计
3.2.1 单片机最小系统简介
单片机是小车的控制中心,单片机最小系统的合理设计是小车平稳运行的前提,所谓最小系统,
就是能够保证单片机运行的最精简的硬件设计,由于设计时间有限,不可能设计一块统一规划,功
能刚好符合要求的电路板,因此需要设计若干系统板组合使用。在本次竞赛中各位选手可以根据需
要选择不同的单片机,如果使用摄像头作为传感器则可以使用飞思卡尔的S12 系列单片机,如果是
使用其他传感器则可以使用MSP430、***R 等系列单片机,具体的型号还需要各位自行选择,对于初
学者51 单片机也能够满足基础需求,51 系列单片机建议选择AT89S51 等型号。
在设计单片机最小系统时需要注意以下几点:
1. 需要合理考虑调试过程中的扩展需要,正常情况下需要将所有IO 口引出,同时需要注意单片机
电源设计,保证最小系统能够稳定供电。
2. 合理集成相应的外围模块,如几个LED 显示,蜂鸣器等,这些小部件可能觉得无关紧要,但是
在调试的时候能够带来很大方便。
3. 最好将程序的下载接口集成在最小系统上,这样会极大的方便小车的调整与测试。这一点对于
贴片式封装的单片机不考虑,但是对于51、***R 等单片机却经常让初学者忽略。
如图3.3 所示,为51 单片机的最小系统参考电路图。
3.2.2 51 单片机最小系统设计
为了照顾刚入门的同学这里我只着重叙述51 单片机最小系统的设计,***R 的设计和51 有许多
共同之处,这里我只给出参考,不做重点叙述。建议大家能够根据自己的需求独立设计自己的单片
机最小系统,方便以后的竞赛和学习使用。
智能小车设计指导 第二版
-7-
图3.3 51 单片机最小系统
图3.3 中的51 单片机最小系统由以下几个部分组成:
1. 晶振电路,单片机要想工作必须有一个外部的时钟源,这个时钟源由外部晶振产生,具体电路
为图中的Y1、C2、C3,在做电路板时应注意晶振和电容要靠近18 脚和19 脚放置,如果放置过
远可能会造成晶振不能起振,或工作不稳定。典型值为C2、C3 30pF,Y1 12M。
2. 复位电路,复位电路包括上电复位和手动复位两部分,51 系列单片机多为高电平复位,也就是
说RST(9)脚上只要有持续两个机器周期以上的高电平就能使单片机复位,因此上电复位的原
理就是利用电容充电的一段时间将复位脚拉至高电平,使单片机完成复位,C1 可以选用104 或
105 之类的瓷片电容,R1 在电容充电结束后将复位脚拉至低电平,保证单片机正常工作。
3. ISP 下载接口,该下载接口在实际制作时可以用双排的5*2 的排针代替,电路是根据标准的ISP
下载线来设计的,与常用的并口下载线,串口下载线和笔记本用的USBASP 下载线兼容,只需
将下载线接口插到本接口上就可以直接向单片机烧写程序,免去了不断拔插单片机芯片的烦恼,
这一点也是我一直向会员推荐的,无论是51 还是***R 都非常方便。
ISP 的下载接口在设计时应注意以下两点,否则可能会造成程序下载的失败。
1. 下载线接口中的电源尽量和单片机共用一个电源。
2. 下载线接口中用到的P1.5~P1.7 脚不要连接数码管等外部器件,如果要连接外部器件可以设计
为可插拔的方式,防止影响程序的下载,或者将P1 口分配为读取按钮开关状态等方式。
对于下载线有几点说明:
1. 51 和***R 常用的是ISP 下载方式,也就是上面介绍的接口,实物接口如图3.4 所示,常用的有
分为并口下载线,串口下载线和USB 下载线,一般台式机建议使用并口下载线,速度快而且稳
定,图3.5 为并口下载线实物图。
2. 购买并口下载线时应注明51/***R ISP 下载线或stk200/stk300 下载线,购买USB 接口的下载线时
一般的名称为USBASP,特别是在网上购买时应注意区分。
第三章 硬件设计
-8-
图3.4 接口 图3.5 并口下载线
51 的最小系统还应特别注意第31 脚(如图)应拉高,31 脚EA 脚为内外存储器的选择脚,由
于我们只用内部存储器,因此需要将此脚连至高电平,这一点非常重要,很多人的单片机无法工作
也往往是由于疏忽这一点引起。另外还有一点要引起注意的是P0 口,与其他几组I/O 口不同,P0
口没有内部上拉电阻,因此如果驱动LED 等外部器件时可以在P0 口加上10K 的排阻,而实际结果
也证明加外部上拉电阻的方式有助于增强端口的驱动能力。
***R 单片机的最小系统和51 类似,但是***R 有更为强悍的功能,***R 可以只需电源不需任何外
接电路即可工作,以ATmega16 为例,内部具有可配置的1-8M 时钟源,并且可以自动上电复位,当
然除非在不得已的情况下,其他情况还是建议有相应的外部电路。***R 的最小体统设计可以参照51
的设计,像晶振电路,下载线接口都与51 相同,但是应注意以下两点:
1. ***R 为低电平复位,因此复位电路上有所异同。
2. 接了外部晶振以后再写下载程序时应注意配置好对应的熔丝位,否则可能造成芯片锁死。
我建议大家可以根据自己的需要用Protel 设计自己的最小系统,这样不仅调试方便也完全没必
要花钱去购置一套开发板,而且在以后的学习中也方便使用。图3.6 为我自己制作的***R 最小系统
板。在这个系统板上我们放置了ISP 接口,在线仿真用的JTAG 接口和便于外部器件取电的五组电源
接口,通知放置了四组指示灯和一个蜂鸣器,每组I/O 口用两排排针引出,两排排针之间留有一定
的间距便于插头的插拔。为了使电路板小巧美观,部分电阻电容采用贴片式封装。以上是我们再设
计这块最小系统时的考虑,总之无论设计如何,都要用稳定易用为标准,没必要一味的追求大而全。
在全国电设的比赛中我们单片机系统全都采用这块板,而实际的结果也证明这块板子也完全满足我
们的要求。
图3.6 自己制作的最小系统板的正反面
智能小车设计指导 第二版
-9-
3.3 循迹模块设计
3.3.1 红外光电管的工作原理
在本设计中我们采用红外一体式发射接收器,红外一体式发射接收器市场价格在1~几元不等,
图3.7 所示的是较为常见的一种。这种是将发射管和接收管放置在一个塑料壳内,发射管和接收管
的直径都为3mm,如果追求大功率更远的探测距离也可以购买单独的发射和接收管,但是对于一般
设计来说图中的红外发射和接收器已经足够。当然如果追求大功率更远的探测距离也可以购买单独
的发射和接收管,但是注意相应的管上要注意套上热缩管等隔离器件以消除临近发射管的干扰。系
统中我们设计反射距离在2cm 左右,此时探测环境都在检测电路板的阴影之下,不易受到其它光线的
干扰。传感器都选用RPR220 反射红外传感器。该封装形状规则,便于安装。没有强烈日光干扰(在有
日光灯的房间里) 探测距离能达5cm 以上 ,完全能满足探测距离要求。
红外一体式发射接收器由于感应的是红外光,常见光对它的干扰较小,是在小车、机器人等制
作中广泛采用的一种方式。红外一体式发射接收器检测黑线的原理为,由于黑色吸光,当红外发射
管发出的光照射在上面后反射的部分就较小,接收管接收到的红外线也就较少,表现为电阻比较大,
通过外接的电路就可以读出检测的状态,同理当照射在白色表面时发射的红外线就比较多,表现为
接收管的电阻就比较小。
图 3.7 红外光电管的顶部和尾部图
仔细观察可以发现,上图红外光电管分为两部分,一部分为无色透明类似于LED,这是红外的
发射部分,给他通电后能够产生人眼不可见的红外光,另外一部分为黑色的红外接收部分,它的电
阻会随着接收到红外光的多少而变化,由于它们也是二极管,因此可以用判断二极管的方法辨别极
性,判断光电管好坏最简单的测试方法为用万用表的欧姆档连接接收管的两端,然后将接收管放入
台灯下观察阻值的变化,如果用的是指针式万用表的话则黑表笔的一端为正极,同时注意电阻的变
化幅度。一般引脚的正负放置可能有所差异,上图的光电管经过我的测试发射管长脚的一端为正,
而接收端长脚的一端为负,这个自己在使用之前一定要自己测试一下。另外测试红外发光管的好坏
还有一个比较巧妙的方法,那就是利用你的手机摄像头,红外线由于波长较长,在人眼的可视范围
之外,但是却仍然在手机摄像头的可视范围之内,因此可以用打开手机的拍照功能,看一下便清楚
了,这也是红外夜视摄像头的原理。
红外光电管由于感应的是红外光,常见光对它的干扰较小,是在小车、机器人等制作中广泛采
用的一种方式。红外光电管检测黑线的原理为,由于黑色吸光,当红外发射管发出的光照射在上面
后反射的部分就较小,接收管接收到的红外线也就较少,表现为电阻比较大,通过外接的电路就可
以读出检测的状态,同理当照射在白色表面时发射的红外线就比较多,表现为接收管的电阻就比较
小。
第三章 硬件设计
-10-
3.3.2 检测电路设计
上面介绍了红外光电管检测黑线的基本原理,图3.8 为红外检测的基本电路图。LM339 类似于
增益不可调的运算放大器。每个比较器有两个输入端和一个输出端。两个输入端一个称为同相输入
端,用“+”表示,另一个称为反相输入端,用“-”表示。用作比较两个电压时,任意一个输入端
加一个固定电压做参考电压(也称为门限电平,它可选择LM339 输入共模范围的任何一点),另一
端加一个待比较的信号电压。当 “+”端电压高于“-”端时,输出管截止,相当于输出端开路。当
“-”端电压高于“+”端时,输出管饱和,相当于输出端接低电位。两个输入端电压差别大于10mV
就能确保输出能从一种状态可靠地转换到另一种状态,因此,把LM339 用在弱信号检测等场合是
比较理想的。LM339 的输出端相当于一只不接集电极电阻的晶体三极管,在使用时输出端到正电源
需要接一只电阻(称为上拉电阻,选3-15K)。选不同阻值的上拉电阻会影响输出端高电位的值。因
为当输出晶体三极管截止时,它的集电极电压基本上取决于上拉电阻与负载的值。另外,各比较器
的输出端允许连接在一起使用。对于图3.8 有几个注意点:
1. 图中的LM393 为专业的电压比较器,一片LM393 内部含有两路比较器,相同的还有LM339,
两者的不同点在于LM339 内部有四路比较器,因此如果做8 路红外光电管的话可以采用两片
LM339,相对就简化了电路。
2. 如果采用LM339 或LM393 在送单片机的输出端需加约2K 欧姆的上拉电阻连至5V,这样才能保
证比较器在输出高电平时有5V 左右的高电平输出,这一点很容易被忽略,应当引起注意,详
细请查找芯片的说明文档。
3. 图中R1、R2 的选择,R1 为限流电阻,不同大小的限流电阻决定了红外发射管的发射功率,R1
越小,红外发射管的功率就越大,多个并联后小车的能耗也就大幅增加,但是同时增加了光电
管的探测距离,因此可以根据自己的测试情况选择合适的限流电阻,R2 为分压电阻,R2 的选
择应当尤为注意,切不可机械的照搬某一个电路图,直接套用上面的阻值,R2 的选择和采用红
外接收管的内阻有关,由于R2 和接收管构成分压电路,因此R2 的大小和接收管的电压变化有
关,具体的选择只需按照分压的原理进行一下简单的计算就可以,这里不再赘述。按照图3.8
所示,若电路工作正常在光电管在黑线和白纸上移动式则在图中R2 的上端也就是LM339 的4
脚应该有明显的电压变化,良好的情况下电压变化可以达到3-4V,电压变化非常明显,如果电
压变化不明显,可以尝试着更换R2 的阻值。
图3.8 循迹电路电路图
智能小车设计指导 第二版
-11-
4. 图3.8 是采用专业的电压比较器,实际上也有很多电路图也有采用LM358 或者LM324 之类的运
放,这一点其实无关紧要,LM393 的引脚和LM358 兼容,而且不需要在输出脚外加上拉电阻,
实际运用中各有优劣可以自行选择。
5. 图中的R3 为分压电阻,为比较器提供参考电压,具体参考电压的设定应根据R2 上端的电压来
决定,如③中介绍,假如输入脚的电压变化为1.7~4.7V 则参考电压就可以设定在3V 左右,在
实际应用过程中可以根据当前的环境状况进行调整。对于比较器可以单独用一个电位器(图中
R3)分压提供参考电压,如果为了简化电路也可以几路电压比较器共用一路参考电压,各有优
劣可以自行选择。
6. 对于51 单片机由于没有内置AD 建议采用比较器的方式,而对于***R 等他内置AD 的单片机或
者采用片外AD 芯片则可以直接输入变化的电压量,通过单片机A/D 端口直接读取。通过单片
机的A/D 口直接读取电压的变化量,不仅可以简化外部电路,同时还能保留红外接收管的连续
变化电压信息,通过软件算法进行位置细化,不仅可以得到更精确的位置信息,还可以消除环
境光线的影响。但是同时也就加重了软件设计的难度。
通过上面的介绍相信大家对红外循迹也就有了一个简单的了解,也就会发现上面的电路也不是
唯一的了,建议大家不要局限于上面的电路自己设计更好的循迹电路。
介绍完单个红外管的电路设计,接下来就该介绍多个并联的设计了,只有多个红外光电管并联
才能够起到良好的检测效果,在实际应用中光电管的排列方式,排列间距都有讲究,一般来说“一”
字型的排列已经能够满足我们的要求如图3.9 所示。设计者亦可以尝试不同的排列方式和间距之间
的优劣,这里只做简单提示。
如果采用比较器的方式比较器也可以放置在循迹模块的电路板上,也可以放置在主板上,图3.10
为我以前设计的四路循迹模块实物图。建议大家也可以采用PCB 的方式设计循迹模块。
图3.10 四组光电管组成的循迹模块正反面
在设计传感器的排列是还有一点需要考虑的就是传感器之间的距离,通常两个传感器之间的距
离和黑线的宽度相近,但是也不一定所有的间距都相同,为了扩大检测的范围两侧的排布略微稀疏,
从而在检测范围和检测精度之间取一个平衡,如图3.11 所示为八个传感器组成的印制电路板PCB 设
计图。
图3.9:光电管布局图
第三章 硬件设计
-12-
图 3.11 设计完成的印制PCB 效果图
对于传感器的安装也需要具体考虑,正常情况下,安装完成后离地面的高度大概在2cm 左右,
高度越高,对于每个传感器来说红外光能够照射到的范围也就越大,但是由于每个红外发射管的功
率有限,接收到的也就越少,可能会影响接收的效果,如果将传感器扬起还可以获得一定的前瞻性,
因此需要根据发射管的功率和实际型号调整到一个合适的值。
3.3.3 光电检测部分的发挥设计
以上介绍了光电检测电路的基本组成,上面的电路能够完成基本的检测功能,在过去几届校区
的比赛中采用最多的也是这种方式,但是上面的电路也有明显的缺点:
1. 检测距离较短,前瞻性较差。
2. 所有光电管一直处在工作状态,功耗较大使电池的续航时间降低
如果想消除以上的缺点可以从以下几个方面考虑:
1. 使用大功率分离式红外光电管或激光管等其他检测器件(激光管在后面会有介绍)。
2. 将红外光进行调制发射,增大探测距离。
3. 各管轮流扫描工作,减小功耗。
以上只是针对学有余力的同学一些提示性的建议,有兴趣的同学可以在原有的基础之上进行改
进。
3.4 舵机转向模块设计
3.4.1 舵机的工作原理
一般来讲,舵机主要由以下几个部分组成, 舵盘、减速齿轮组、位置反馈电位计5k、直流电
机、控制电路板等。
工作原理:控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速
后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电
位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电
机的转动方向和速度,从而达到目标停止。
舵机的基本结构是这样,但实现起来有很多种。例如电机就有有刷和无刷之分,齿轮有塑料和
金属之分,输出轴有滑动和滚动之分,壳体有塑料和铝合金之分,速度有快速和慢速之分,体积有
大中小三种之分等等,组合不同,价格也千差万别。例如,其中小舵机一般称作微舵,同种材料的
条件下是中型的一倍多,金属齿轮是塑料齿轮的一倍多。需要根据需要选用不同类型。
舵机的输入线共有三条,红色中间,是电源线,一边黑色的是地线,这两根线给舵机提供最基
本的能源保证,主要是电机的转动消耗。电源有两种规格,一是4.8V,一是6.0V,分别对应不同的
转矩标准,即输出力矩不同,6.0V 对应的要大一些,具体看应用条件;另外一根线是控制信号线,
智能小车设计指导 第二版
-13-
Futaba 的一般为白色,JR 的一般为桔黄色。
舵机的控制信号为周期是20ms 的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对
应舵盘的位置为0-180 度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持
在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会
改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms 的基准
信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信
号。由此可见,舵机是一种位置伺服的驱动器,转动范围不能超过180 度,适用于那些需要角度不
断变化并可以保持的驱动当中。比方说机器人的关节、飞机的舵面等。
3.4.2 常见舵机简介及使用注意事项
常见的舵机厂家有:日本的Futaba、JR、SANWA 等,国产的有北京的新幻想、吉林的振华等。
现举Futaba S3003 来介绍相关参数,以供大家设计时选用。之所以用3003 是因为这个型号是市场
上最常见的,也是价格相对较便宜的一种(以下数据摘自Futaba 产品手册)。
尺 寸(Dimensions): 40.4×19.8×36.0 mm
重 量(Weight): 37.2 g
工作速度(Operating speed):0.23 sec/60°(4.8V) 0.19 sec/60°(6.0V)
输出力矩(Output torque): 3.2 kg.cm (4.8V) 4.1 kg.cm (6.0V)
Futaba S3003 的价格在60 元左右,通用型号的还有辉盛SG-5010 应用的也较为广泛。
舵机是小车转向的控制机构,具有体积小、力矩大、外部机械设计简单、稳定性高等特点,无论是
在硬件还是软件舵机设计是小车控制部分的重要组成部分,舵机的主要工作流程为:控制信号→控
制电路板→电机转动→齿轮组减速→舵盘转动→位置反馈电位计→控制电路板反馈。图3.11 为舵机
的实物图。
图 3.11 舵机实物图
图3.12 为舵机的内部结构图,舵机根据力矩划分有多种型号,价格也从几十到几百元不等,作
为本文中介绍的智能小车的应用,实物如图3.11 所示,价格在30 元左右的舵机已经能够满足要求,
但是在使用时应注意硬件连接,根据以往的情况来看舵机烧坏的情况也比较常见。
对于舵机的连接有以下注意以下两点:
1. 常用舵机的额定工作电压为6V,可以使用LM1117 等芯片单独提供6V 的电压,如果为了简化
硬件设计直接使用5V 供电影响也不是很大,但是一定要和单片机分开供电,否则会造成单片
机无法正常工作。
2. 一般来说可以将信号线连接至单片机任意一引脚,但是如过连接像***R 等带有PWM 输出功能
第三章 硬件设计
-14-
的单片机时而且打算使用快速PWM 功能时,应将信号线连接到对应的引脚。
图 3.12 舵机内部结构图
3.5 后轮电机驱动模块设计
3.5.1 H 桥驱动电路的工作原理
前面已经提到过,由于单片机的驱动能力不足,无法驱动像电机这样的大功率外部器件,因此
必须外加驱动电路。电机常用的驱动芯片很多,在本设计中我们选用硬件设计简单,驱动效率较高
的L298N 作为电机驱动芯片,在介绍L298N 之前有必要介绍一下H 桥电路。
H 桥驱动电路是较为常见的一种,图 所示为一个典型的直流电机控制电路。电路得名于“H 桥驱动
电路”是因为它的形状酷似字母H。
如图3.13 所示,H 桥式电机驱动电路包括4 个三极管和一个电机。要使电机运转,必须导通对
角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,
从而控制电机的转向。由于H 桥电路可以很方便的实现电机正反转的驱动因此应用广泛。
图 3.13 典型H 桥驱动电路
要使电机运转,必须使对角线上的一对三极管导通。例如,如图3.14 所示,当Q1 管和Q4 管
导通时,电流就从电源正极经Q1 从左至右穿过电机,然后再经Q4 回到电源负极。按图中电流箭头
所示,该流向的电流将驱动电机顺时针转动。当三极管Q1 和Q4 导通时,电流将从左至右流过电机,
从而驱动电机按特定方向转动。
图3.15 所示为另一对三极管Q2 和Q3 导通的情况,电流将从右至左流过电机。当三极管Q2 和
Q3 导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动。
智能小车设计指导 第二版
-15-
图 3.14 H 桥驱动电机正转 图 3.15 H 桥驱动电机反转
驱动电机时,保证H 桥上两个同侧的三极管不会同时导通非常重要。如果三极管Q1 和Q2 同时
导通,那么电流就会从正极穿过两个三极管直接回到负极。此时,电路中除了三极管外没有其他任
何负载,因此电路上的电流就可能达到最大值(该电流仅受电源性能限制),甚至烧坏三极管。基于
上述原因,在实际驱动电路中通常要用硬件电路方便地控制三极管的开关。
图3.16 所示就是基于这种考虑的改进电路,它在基本H 桥电路的基础上增加了4 个与门和2
个非门。4 个与门同一个“使能”导通信号相接,这样,用这一个信号就能控制整个电路的开关。而2
个非门通过提供一种方向输人,可以保证任何时候在H 桥的同侧腿上都只有一个三极管能导通。
图 3.16 改进后的H 桥驱动电路
采用以上方法,电机的运转就只需要用三个信号控制:两个方向信号和一个使能信号。如果DIR
-L 信号为0,DIR-R 信号为1,并且使能信号是1,那么三极管Q1 和Q4 导通,电流从左至右流经
电机(图3.17);如果DIR-L 信号变为1,而DIR-R 信号变为0,那么Q2 和Q3 将导通,电流则反
向流过电机。
图 3.17 驱动电机转动时的信号示意图
第三章 硬件设计
-16-
3.5.2 常用H 桥集成电路芯片L298
H 桥电路虽然有着诸多的优点,但是在实际制作过程中,由于元件较多,电路的搭建也较为麻
烦,增加了硬件设计的复杂度。
由于H 桥电路有诸多的优点,但是在实际制作过程中电路又比较麻烦,因此在本设计中我们采
用H 桥集成电机驱动芯片L298。L298N 的工作原理和以上介绍的H 桥相同,引脚图如图3.13 所示:
图3.13 L298 引脚图
L298N 是ST 公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15 脚封装。主要特点
是:工作电压高,最高工作电压可达46V;输出电流大,瞬间 峰值电流可达3A,持续工作电流为
2A;额定功率25W。内含两个H 桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进
电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入
信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电 压下工
作;可以外接检测电阻,将变化量反馈给控制电路。使用L298N 芯片驱动电机,该芯片可以驱动一
台两相步进电机或四相步进电机,也可以驱动两台直流电机。L298 的参考电路图如图3.14 所示。
图3.14 L298 参考电路图
对于以上电路图有以下几点说明:
1. 电路图中有两个电源,一路为L298 工作需要的5V 电源VCC,一路为驱动电机用的电池电源VSS。
智能小车设计指导 第二版
-17-
2. 1 脚和15 脚有的电路在中间串接大功率电阻,可以不加。
3. 图中连接了两路电机,P2 和P5 是一一对应关系,如果只驱动一路电机可以连接对应的12 或者
34 脚。
4. 八个续流二极管是为了消除电机转动时的尖峰电压保护电机而设计,简化电路时可以不加。
5. 6 脚和11 脚为两路电机通道的使能开关,高电平使能,所以可以直接接高电平,也可以交由单
片机控制。
6. 由于工作时L298 的功耗较大,可以适当加装散热片。
3.6 测速模块
在飞思卡尔的小车中,测速是必不可少的一部分,但是在校内的比赛中测速应用较少。初学者
可以不考虑速度,对小车进行开环控制。而如果加入速度反馈则不仅仅是速度测量的事情,更重要
的是结合相应的控制算法,这样速度反馈才有意义,在本章中只做简单介绍,详细的内容可以参加
本书第六章。
测速较为常用的有
1.测速发电机。
2.转角编码盘。
3.反射式光检测。
4.透视式光电传感器。
5.霍尔传感器。
上述的方法中,测速发电机输出电压信号可由A/D 端口读取,其余的要利用单片机内部的定时
器/计数器模块进行测量。软件的工作量会有所增大。不同的测速方式使用的速度范围也有所不同,
从稳定性和成本的角度上考虑可以采用后三种方式,具体的实施方法这里不做叙述。但是有一点需
要说明,一个好的测速模块是为算法服务的,因此在搭建测速模块构成反馈的同时必须有相应的算
法设计,这样小车的整体性能才能够得到提高,测速模块的加入才有意义。
第四章 程序设计
-18-
第四章 程序设计
4.1 PWM 的相关知识
4.1.1 PWM 简介以及实现
PWM 听起来很专业其实在本文所讲的应用中很简单,专业一点的讲就是脉冲宽度调制,说白
了也就是占空比可变的脉冲波形。也就是说用单片机产生一定周期的方波,而且方波中高电平的时
间可以已自己调整,这就是PWM 波。示波器上显示的图形如图4.1 所示。
之所以在这里先将PWM 的相关知识是因为在智能小车的设计中PWM 是很重要的一个应用,
首先舵机的控制就是给一定占空比的方波来实现不同的转角的,其次后轮电机的调速也是通过不同
占空比的方波来实现。
对于PWM 波的产生不同的单片机虽然有不同的方式但是大致的原理是一样的,对于51 单片机
由于没有自带PWM 波产生的寄存器因此需要通过软件的方式来实现。***R 的单片机虽然自带快速
PWM 波的模式,在软件设计上可以有部分的简化但在本质上还是一样的。下面以ATmega16 的技术
文档中快速PWM 模式的一个图来说明以定时器计数的方式产生PWM 波的原理。如图4.2 所示。
从图4.2 可以看出快速PWM 波的产生其实就是一个计数匹配的过程,以上图为例TCNTn 中的
数值随着每进一次中断记一次数,当数值和另一个寄存器OCRn 中的数值相等时就将固定的引脚Ocn
清零(变为低电平),当TCNTn 计数到最大值(如果是8 位定时器则为0xFF)再次将OCRn 置位,因
此只要定好每次进入中断的时间和寄存器OCRn 的值就可以产生一定频率和一定占空比的PWM 波。
51 单片机也可以采用相同的方式,有所不同的是51 单片机中并没有上面所提到的寄存器,因
此需要自己设定一些变量进行计数。在设置定时器时应注意以下两点:
①合理选择进入中断的时间和计数上限。
②计数上限和最终的PWM 频率的选择应由外部器件的具体要求决定。
对于程序的详细写法这里没办法做详细的说明以上给出了思路,请自己参考程序设计的相关书
籍。
图4.1 PWM 波
智能小车设计指导 第二版
-19-
.图4.2 快速PWM 模式时序图
4.1.2 51 单片机产生PWM 波
程序初始化:定时器0 和定时器1 都采用方式1,16 位的计数方式,计时时间到后进入中断,进
入中断时间为0.04ms,为此特地写了一个简化的程序用来验证PWM,51 单片机的PWM 的程序如
下:
#include<AT89X51.H>
#define Moto1 P2_0 //驱动电机信号的输出端口
#define Moto2 P2_1
#define Duoj P2_4 //舵机信号的输出端口
unsigned char D_count,D_num;
unsigned char M_count,M_num;
void main()
{
Moto1=1;
P2_2=0;
Duoj=1;
TMOD=0x11; //Timer0 和Timer1 同时配置为模式1,16 位计数模式
TH0=(65536-40)/256; //定时器初值设置
TL0=(65536-40)%256; //
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
TR0=1; //允许定时器0 计数
ET0=1; //允许定时器0 溢出中断
TR1=1;
ET1=1;
EA=1; //开启总中断
第四章 程序设计
-20-
D_num=25;
while(1)
{
}
}
void t0()interrupt 1
{
D_count++;
if(D_count==D_num)
Duoj=0;
if(D_count==250)
{
D_count=0;
Duoj=1;
}
TH0=(65536-40)/256; //重装初值
TL0=(65536-40)%256;
}
void t1()interrupt 3
{
M_count++;
if(M_count==M_num)
{
Moto2=1;
}
if(M_count==5)
{
M_count=0;
Moto2=0;
}
TH1=(65536-2000)/256;
TL1=(65536-2000)%256;
}
利用Proteus7.4 SP3 软件进行仿真,仿真电路如所示图4.3 所示。
通过仿真图大家也能够看出来,利用相关的软件进行仿真其实非常容易,因此特别推荐大家在
做软件时能够充分利用各种工具软件如Proteus、Multisim 等进行先期的验证。Proteus 的仿真结
果如图4.4 所示。
Proteus 等软件的使用这里不过多介绍,但是仍然希望大家注意一点,对于程序希望大家能够
彻底看懂,从基础看起,要大致弄懂每一句话,每一个数值的来源,切勿生搬硬套。另外上面所介
绍的是针对51 单片机的程序注意是依靠定时器的计数来产生,像***R 等多数稍微高级一点的单片机
都带有硬件PWM,因此可以直接配置相关的寄存器,这样能够简化程序提高效率。
智能小车设计指导 第二版
-21-
图4.3 Proteus 仿真图
图4.4 Proteus 中的示波器观察程序的运行结果
4.2 舵机的控制
前面已经有过介绍说舵机转过的角度是由一定占空比的方波来控制的,图4.5 给出了舵机的转
角和高电平占空比关系图。由图可知:对舵机的控制信号时由一串周期18-20ms,其中高电平时间
1-2ms 的方波信号组成。当高电平时间为1ms 时舵机左转60°,当高电平时间为2ms 时舵机右转
60°转过的其他角度与高电平的时间呈线性关系。也就是说每0.1ms 的高电平变化就会影响舵机12°
的转角,因此这也就是我在上一节中提到的要合理设置定时器频率和计数上限的原因。
对于舵机控制的程序设计有以下两点需要注意:
1. 在舵机安装完成后你无法保证舵机0°的转角刚好就是车轮指向正前方,因此上图中的0°也
就没有任何意义,设计者必须根据小车的安装情况设定自己的参考点。
2. 在实际应用中可能无法做到舵机的连续可调,可以设定固定的几个转角,当然如果设定的转角
数越多舵机的转向过渡就会显得越平滑控制效果就越好。
3. 实际应用中舵机可能各有不同,方波的周期也不一定是严格的20ms,因此在小车的控制之前先
要写一段测试程序对你的舵机进行转角测试,同时也为程序的编写提供数据。
第四章 程序设计
-22-
图4.5 舵机的PWM 控制信号
4.3 后轮电机的控制
前面已经讲过后轮电机有单片机通过驱动芯片进行驱动,那么对后轮电机的控制很显然也就包
括了方向和速度的控制。方向的控制很简单,电路图如图3.14 所示,前面说过电机和至单片机的的
1234 四个是一一对应的,其中12 是一个通道,使能为ENA 脚控制,高电平有效,34 是第二个通道,
使能由ENB 控制。因此可以把电机接在12 脚上(图3.14 中P5 的12 脚),因此如果接单片机的12
脚分别接在51 单片机的P1.0,P1.1 两脚如果在程序中令P1.0 = 1;P1.1 =0;电机正转,则P1.0 = 0;
P1.1 =1;电机反转,而如果在程序中对P1.0 或1.1 脚产生一个PWM 波来控制,那么不同的占空比
就会让电机具有不同的速度。
对于电机的调速控制有以下两点说明:
①应注意选择合适的控制频率,过高可能导致电机不转,频率过低可能使电机间歇性转动。
②使用不同占空比的PWM 波控制电机时有时虽然在空转的情况下电机速度降低但是同时带负载的
情况会严重降低,所以在以往的比赛中经常出现有的小车在转弯时出现跑不动的情况,因此应注意
选择频率和占空比。
4.4 程序总体的设计
对于简单的智能小车程序设计来说一般都采用查询的方式,即先查询光电管的状态,然后根据
光电管的状态选择舵机的控制信号,控制舵机转过一定角度,同时控制后轮的转速变化。具体是设
计各有不同如简单的if 语句轮流判断或者switch 语句都可以实现类似的功能,因此程序的一般结构
为:
头文件
全局变量定义
中断服务函数
主函数
端口定时器设置
死循环
查询光电管状态
设定舵机转过角度
设定后轮转动方向和速度
智能小车设计指导 第二版
-23-
虽然一般程序的结构大致如此,但是还是有很多可以优化的地方,如简单的查询方式效率过低,
可以将光电管可能的状态,舵机PWM 波的值,后轮PWM 的值三者设为三个长度相同的对应数组,
这样就可以以for 循环查询的方式将将三者对应起来,提高了效率,同时还可以拓展可能出现的情
况。具体的程序我认为绝非三言两语能够总结的也不是一时半会能够学会的,在这里我只能提供一
个方向和大致的思路,真正完善的程序设计还是要建立在大量实践的基础之上。
4.5 程序设计的发挥与拓展
前面已经说过程序设计的思路,在硬件设计中也讲过测速模块的设计,因此在程序设计中我还
是将它放在发挥与拓展的部分中,对于测速一般有两种方式,实际上着两种方式还是建立在对定时
器的灵活使用之上,一种是定时计数,即在规定的时间内计数测速模块采集到的脉冲次数,二是定
数计时,即计数到一定的次数时去计算所用的时间,无论哪种方法一般都是两个定时器配合使用,
即一个计数,一个计时。有的单片机具有输入
说完测速,下面想说的是算法的优化,也许这个小车过于简单,还谈不上什么算法不算法的,
但是仍然有很多技巧值得我们去学习去摸索。在控制方面最简单的一点估计就不用我多说了——转
弯减速,直道加速,这是小车最基本的部分,而如果配合测速模块这一点又有很多可以设计的地方,
在不同的速度情况下遇到转弯采取什么样的处理方式又有所不同。举个例子,我见过一个设计,他
的转弯设计为刹车的方式,所谓刹车就是直接让电机倒转一定时间再恢复即可起到刹车的效果。这
一点也算是一个小小的发挥,对于长直道加速后的一个急转弯这一招很有效,小车甚至能够以一个
很漂亮的摆尾转过去,但是当遇到一个半圆形车道时就出现了小车不停刹车的状况,这一点就是在
设计上不够完善。因此在做类似的发挥设计时应当尤其注意。
除此之外还有在光电管状态判别上的优化,因为小车的运行情况相对来说比较恶劣,因此在程
序设计时还要充分考虑到各种可能出现的情况并在程序中加以限制或过滤,只有这样小车才能有一
个平稳的运行效果。
对于扩展这一块目前只介绍那么多,在本书的发挥部分有更为详细的介绍,感兴趣的同学可以
去关注。
第五章 测试与调试
-24-
第五章 测试与调试
5.1 测试与调试
首先我想有必要强调一下测试与调试的重要性,如果忽略这两个环节往往会绕很多弯路造成很
大麻烦,因此希望大家认真对待。
首先说测试,何为测试,测试就是检验元件好坏,电路能否正常工作,因此特别是在硬件设计
中,开始一个模块设计之前和完成一个模块设计之后都要进行测试。在设计之前很多同学刚入门,
对很多元器件没有搞清楚,基本的封装和引脚都不清楚就轻率的进行焊接和画PCB 板,最终浪费了
大量时间并对心理造成负面影响。因此在动手之前请务必查清楚所用元件资料,不清楚的利用手头
的仪器进行测试。在稍微复杂一点的电路设计之前可以先搭建其中的一部分电路,测试一下是否正
常,然后在进行总的电路设计。这样循序渐进的进行设计可以节省时间保证电路的正确性。同样,
程序方面的设计也是如此。没见过哪个牛人上来就是哗哗的把整个程序都写好的,基本上都是从最
简单的程序开始,慢慢的调试和扩充。电路设计之后的测试也同样重要,特别是和程序有关的外围
检测、驱动等模块,如果不排除硬件故障在调试的时候很难让你分清到底是硬件还是软件的问题,
因此硬件设计完成之后首先需要测试硬件能够正常工作,这样在遇到问题时才能够排除硬件的干扰
找出问题的所在。
测试完成之后再说调试部分,所谓调试就是在基本功能实现的基础之上调整参数,实现最佳的
性能。真正从比赛的角度上来说需要在调试上花一定的时间。如果从总的角度上来说大家在做的时
候可以先做一个个模块,基本功能实现后可以去尝试在原有的基础之上去扩展并提高性能,最后根
据前一阶段的测试结果有针对性的重新设计电路板,最终将硬件部分测试下来,后面的时间主要就
可以从软件的角度去调整参数。
另外需要强调一点就是,在硬件设计阶段就要留出参数选择接口和指示模块,如使用拨码开关
作为参数选择使用LCD 作为信息显示,同时也可以留出无线通讯端口如无线串口模块方便后期的参
数采集和调试。同时针对赛场上的突发状况需要在软件中预置几种状况,最起码要预置几种速度选
择,这样一旦在比赛是初始方案无法正常运行可以及时通过车身上的拨码开关等选择另一种方案,
这一点希望大家在硬件设计的时候就要考虑进去。
5.2 智能车的测试步骤
对于小车的整体来说测试要按照模块来进行,一般我认为应分为以下几个步骤:
①首先测试电源的工作情况,各个模块能否得到良好供电。
②光电管安装完成后按照第三章中的方法依次测试每个光电管的电压变化情况,完成后根据测试数
据调节电位器选择合适的参考电压然后依次测量比较器或运放的输出端有无根据检测到黑线的情况
产生相应的电平变化,若没有则检查相应的电路和元件好坏,测试成功后进行下一步。
③检查单片机能否正常的烧写程序和工作。
④用单片机

Admin
Admin

帖子数 : 177
注册日期 : 10-03-21

http://cdmcu.fengbb.com

返回页首 向下

回复: 转发:智能小车设计指导

帖子  Admin 于 周二 五月 07, 2013 12:23 pm

第五章 测试与调试
5.1 测试与调试
首先我想有必要强调一下测试与调试的重要性,如果忽略这两个环节往往会绕很多弯路造成很
大麻烦,因此希望大家认真对待。
首先说测试,何为测试,测试就是检验元件好坏,电路能否正常工作,因此特别是在硬件设计
中,开始一个模块设计之前和完成一个模块设计之后都要进行测试。在设计之前很多同学刚入门,
对很多元器件没有搞清楚,基本的封装和引脚都不清楚就轻率的进行焊接和画PCB 板,最终浪费了
大量时间并对心理造成负面影响。因此在动手之前请务必查清楚所用元件资料,不清楚的利用手头
的仪器进行测试。在稍微复杂一点的电路设计之前可以先搭建其中的一部分电路,测试一下是否正
常,然后在进行总的电路设计。这样循序渐进的进行设计可以节省时间保证电路的正确性。同样,
程序方面的设计也是如此。没见过哪个牛人上来就是哗哗的把整个程序都写好的,基本上都是从最
简单的程序开始,慢慢的调试和扩充。电路设计之后的测试也同样重要,特别是和程序有关的外围
检测、驱动等模块,如果不排除硬件故障在调试的时候很难让你分清到底是硬件还是软件的问题,
因此硬件设计完成之后首先需要测试硬件能够正常工作,这样在遇到问题时才能够排除硬件的干扰
找出问题的所在。
测试完成之后再说调试部分,所谓调试就是在基本功能实现的基础之上调整参数,实现最佳的
性能。真正从比赛的角度上来说需要在调试上花一定的时间。如果从总的角度上来说大家在做的时
候可以先做一个个模块,基本功能实现后可以去尝试在原有的基础之上去扩展并提高性能,最后根
据前一阶段的测试结果有针对性的重新设计电路板,最终将硬件部分测试下来,后面的时间主要就
可以从软件的角度去调整参数。
另外需要强调一点就是,在硬件设计阶段就要留出参数选择接口和指示模块,如使用拨码开关
作为参数选择使用LCD 作为信息显示,同时也可以留出无线通讯端口如无线串口模块方便后期的参
数采集和调试。同时针对赛场上的突发状况需要在软件中预置几种状况,最起码要预置几种速度选
择,这样一旦在比赛是初始方案无法正常运行可以及时通过车身上的拨码开关等选择另一种方案,
这一点希望大家在硬件设计的时候就要考虑进去。
5.2 智能车的测试步骤
对于小车的整体来说测试要按照模块来进行,一般我认为应分为以下几个步骤:
①首先测试电源的工作情况,各个模块能否得到良好供电。
②光电管安装完成后按照第三章中的方法依次测试每个光电管的电压变化情况,完成后根据测试数
据调节电位器选择合适的参考电压然后依次测量比较器或运放的输出端有无根据检测到黑线的情况
产生相应的电平变化,若没有则检查相应的电路和元件好坏,测试成功后进行下一步。
③检查单片机能否正常的烧写程序和工作。
④用单片机产生不同占空比的信号控制舵机进行转角测试,找出小车转向的参考点和对应的PWM
设置参数。
⑤测试后轮电机的工作情况,并试验在不同频率和占空比的情况下电机的驱动能力。
⑥将光电管和舵机联合,编写程序测试转向情况。
⑦编写测试程序让小车初步运行。
⑧反复测试各参数变化对小车的影响,找出最有效的配置。
⑨对小车运行过程中各种可能出现的情况进行测试,发现问题、找出解决方法。
⑩整理数据,优化算法和程序设计。
智能小车设计指导 第二版
-25-
发挥部分
本部分补充介绍了摄像头、激光管、电磁传感器的基本原理,对电路的设计、信号采集、信号
处理等方面都有介绍,同时对算法方面也略有涉及。由于此部分内容是针对有基础的同学,因此更
多介绍的是一种方法、一种思路,具体的实现方法还需要大家自行设计。介绍内容供大家参考,也
希望大家不要局限于本书内容,积极发挥。
第六章 车速的测量
-26-
第六章 车速的测量
6.1 车速测量的重要性
为了使得赛车能够平稳地沿着赛道运行,需要控制车速,使赛车在急转弯时速度不至过快而冲
出赛道。通过控制驱动电机上的平均电压可以控制车速,但是如果开环控制电机转速,会受很多因
素影响,例如电池电压、电机传动摩擦力、道路摩擦力和前轮转向角度等。这些因素会造成赛车运
行不稳定,通过速度检测,对车模速度进行闭环反馈控制,即可消除上述各种因素的影响,使得车
模运行得更稳定。
车速检测的方式有很多种,例如用测速发电机、转角编码盘、霍尔传感器检测、反射式光电检
测和透射式光电检测。测速发电机、转角编码盘精度比较高,但是价格比较贵,常用在飞思卡尔智
能汽车竞赛当中,不过多介绍。
6.2 车速测量的几种方式
6.2.1 霍尔传感器检测
霍尔传感器检测主要通过霍尔效应来实现的,磁铁在接近霍尔传感器时传感器会产生一个高电
平,通过检测一定时间内检测到的高电平,可计算出对应的速度量。示意图如图6.1 所示。
图6.1 霍尔传感器安装示意图
6.2.2 反射式光电检测
反射式光电检测比起霍尔传感器来说精度得到了很大的提高。原理同光电式检测一样。具体的
电路图可以参照3.3 节循迹模块的设计,图6.2 为检测用的黑白条纹。
6.2.3 透射式光电检测
透射式光电检测可以使测量精度大大地提高,原理同光电式检测一样,主要优势在于机械结构
上的稳定。电路原理仍和前面介绍的循迹模块相同,可以参照3.3 节电路进行设计这里不再赘述,
安装方式如图6.3 所示。
除了以上介绍的几种方式之外常用的还有光电编码器、测速发电机等多种方式,但是较为简单
而且成本较低的主要就是上面介绍的三种,其他的在这里就不做介绍。
智能小车设计指导 第二版
-27-
图6.2 黑白相间的反射条纹
图6.3 透射式光电检测电路的安装
6.3 车速测量的单片机实现
在上一小节中主要介绍了测速的几种方式,那么究竟怎样才能让单片机知道速度是多少,其实
原理都是一样的。上面介绍的三种方法都是将速度转化成脉冲的方式,速度增加时测速期间所采集
到的脉冲频率也增加,因此无论用的是哪一种方法在本质上都是测量频率。那么对于普通单片机来
说测量频率无外乎两种方法,单位时间内测量脉冲个数和固定的脉冲个数测量所用时间,两种方法
都可以用,需要根据自己的实际情况去选择。这两种方法一般都需要两个定时器配置使用,而有一
个定时器有必须用来产生PWM 波,因此在定时器的使用上需要做一个规划。对于有些单片机带有
输入捕获功能(***R 很多就有,更高级就不用说了)因此可以使用硬件上的输入捕获功能来测量脉
冲电平的时间,这也是很方便的一种方法。但是在选用和配置寄存器时应注意合理选择,防止定时
器溢出。
第七章 摄像头的使用
-28-
第七章 摄像头的使用
7.1 摄像头工作原理及简介
摄像头的工作原理是:按一定的分辨率,以隔行扫描的方式采集图像上的点,当扫描到某点时,
就通过图像传感芯片将该点处图像的灰度转换成与灰度一一对应的电压值,然后将此电压值通过视
频信号端输出。信号如图7.1 所示,摄像头连续地扫描图像上的一行,则输出就是一段连续的电压
信号,该电压信号的高低起伏反映了该行图像的灰度变化。当扫描完一行,视频信号端就输出一个
低于最低视频信号电压的电平(如0.3V),并保持一段时间。这样相当于,紧接着每行图像信号之
后会有一个电压“凹槽”,此“凹槽”叫做行同步脉冲,它是扫描换行的标志。然后,跳过一行后(因
为摄像头是隔行扫描的),开始扫描新的一行,如此下去,直到扫描完该场的视频信号,接着又会出
现一段场消隐区。该区中有若干个复合消隐脉冲,其中有个远宽于(即持续时间长于)其它的消隐
脉冲,称为场同步脉冲,它是扫描换场的标志。场同步脉冲标志着新的一场的到来,不过,场消隐
区恰好跨在上一场的结尾和下一场的开始部分,得等场消隐区过去,下一场的视频信号才真正到来。
摄像头每秒扫描25 幅图像,每幅又分奇、偶两场,先奇场后偶场,故每秒扫描50 场图像,所以
摄像头扫描周期是20ms。奇场时只扫描图像中的奇数行,偶场时则只扫描偶数行。
图7.1 摄像头视频信号
摄像头有两个重要的指标:有效像素和分辨率。分辨率实际上就是每场行同步脉冲数,这是因
为行同步脉冲数越多,则对每场图像扫描的行数也越多。事实上,分辨率反映的是摄像头的纵向分
辨能力。有效像素常写成两数相乘的形式,如“320x240”,其中前一个数值表示单行视频信号的精
细程度,即行分辨能力;后一个数值为分辨率,因而有效像素=行分辨能力×分辨率。
值得注意的是,通常产品说明上标注的分辨率不是等于实际分辨率(即每场行同步脉冲数),而
是等于每场行同步脉冲数加上消隐脉冲数之和。因此,产品说明上标注的“分辨率”略大于实际分
辨率。我们要知道实际的分辨率,就得实际测量一下。
通过S12 单片机的定时器模块对单个脉冲的下降沿和上升沿间隔、两相邻脉冲上升沿间隔进行
计时,可得每行信号和每个脉冲持续的时间。实际测得所用摄像头(1/3 Omni Vision CMOS)的时序
参数见表7.1。
从测得的结果可知,该摄像头扫描的每场中有320 行信号,其中第23 行到310 行是视频信号,
第311 行到下一场的第22 行是场消隐信号。在视频信号区,每行信号持续的时间相同,约为62us;
每行的行同步脉冲持续时间也相同,约为4.7us。而在场消隐区,每行持续的时间会有所变化,每行
对应的消隐脉冲持续的时间,尽管其中大多数为3.5us,但也有变化。在场消隐区中,第320 行的消
隐脉冲持续的时间远长于其他消隐脉冲的时间,此脉冲即为场同步脉冲。
智能小车设计指导 第二版
-29-
表7.1 摄像头时序参数
7.2 模拟摄像头视频分离电路设计
要能有效地对视频信号进行采样,首先要处理好的问题是如何提取出摄像头信号中的行同步脉
冲、消隐脉冲和场同步脉冲。这里有两种可行的方法。第一,直接通过单片机AD 进行提取。因为
行同步脉冲、消隐脉冲或场同步脉冲信号的电平低于这些脉冲以外摄像头信号的电平,所以据此可
设定一个信号电平阈值来判断AD 采样到的信号是否为上述三类脉冲。第二,就是给单片机配以合
适的外围芯片,此芯片要能够提取出摄像头信号的行同步脉冲、消隐脉冲和场同步脉冲以供单片机
作控制之用。
考虑到单片机的速度有限,而一些脉冲的间隔时间又较短,同时为了减轻其处理负担,我们采
用了第二种方法进行信号提取。LM1881 视频同步信号分离芯片(简称LM1881)可从摄像头信号中
提取信号的时序信息,如行同步脉冲、场同步脉冲和奇、偶场信息等,并将它们转换成TTL 电平直
接输给单片机的I/O 口作控制信号之用。LM1881 的端口接线方式如图7.2 所示。
图7.2 LM1881 连接图
其中,引脚2 为视频信号输入端,引脚1 为行同步信号输出端。引脚3 为场同步信号输出端,
当摄像头信号的场同步脉冲到来时,该端将变为低电平,一般维持230us,然后重新变回高电平(如
图3 中的c)。引脚7 为奇、偶场同步信号输出端,当摄像头信号处于奇场时,该端为高电平,当
处于偶场时,为低电平。事实上,不仅可以用场同步信号作为换场的标志,也可以用奇.偶场间的交
替作为换场的标志。
第七章 摄像头的使用
-30-
图7.3 LM1881 信号时序图
由LM1881 及其外围电路构成的摄像头采样电路如图7.4 所示。摄像头视频信号端接LM1881 的
视频信号输入端,同时也接入单片机的一路AD 转换端口。LM1881 的行同步信号端(引脚1)接入
单片机,采用脉冲捕捉方式获取行同步信号,也可以采用硬件中断获取。同时将LM1881 的场同步
信号也接入单片机(建议接到外部中断引脚),这样,可以获取场信号和行同步信号,从而判断每场
图像是否采集完。
图7.4 摄像头采样电路图
7.3 摄像头选型
目前市面上常见的摄像头主要有CMOS 和CCD 两种,按输出又可分为数字摄像头和模拟摄像头。
模拟摄像头多为CCD 的,按不同档次分辨率不同。CMOS 摄像头大多为数字摄像头。不管CCD 或
CMOS,基本上两者都是利用矽感光二极体(photodiode)进行光与电的转换。这种转换的原理与具
备“太阳电能”电子计算机的“太阳能电池”效应相近,将光影像转换为电子数字信号。 比较CCD
和CMOS 的结构,ADC 的位置和数量是最大的不同。简单的说,CCD 每曝光一次,在快门关闭后进
行像素转移处理,将每一行中每一个像素(pixel)的电荷信号依序传入“ 缓冲器” 中,由底端的线
路引导输出至CCD 旁的放大器进行放大,再串联ADC 输出;相对地,CMOS 的设计中每个像素旁就
智能小车设计指导 第二版
-31-
直接连着ADC(放大兼类比数字信号转换器),讯号直接放大并转换成数字信号。两者优缺点比较如
图7.5 所示。
CCD CMOS
灵敏度 同样面积下高 感光开口小,灵敏度低
成本 成本高 CMOS 整合集成,成本低
解析度 连接复杂度低,解析度高 低,新技术高
噪点比 单一放大,噪点低 百万放大,噪点高
功耗比 需外加电压,功耗高 直接放大,功耗低
图7.5 CCD 和CMOS 比较
由于构造上的基本差异,我们可以列出两者在性能上的表现之不同。CCD 的特色在于充分保持
信号在传输时不失真(专属通道设计),透过每一个像素集合至单一放大器上再做统一处理,可以保
持资料的完整性;CMOS 的制程较简单,没有专属通道的设计,因此必须先行放大再整合各个像素
的资料。针对智能车系统来说,CCD 摄像头具有对比度高、动态特性好的优点,但需要工作在12V
电压下,对于整个系统来说过于耗电;CMOS 数字摄像头体积小,耗电量小,图像稳定性较高,但
是对光线的要求较高,容易受到外界环境光的影响。建议在初学的情况下可以使用CCD 模拟摄像头
进行图像视频信号采集,推荐淘宝上一款单板模拟摄像头如图7.6 所示。
图7.6 单板摄像头
图像传感器: 1/3″SONY CCD
有效像素: CClR:500(H)×582(V) ElA:510H)×492(V)
感光面积: 4.8mm×3.6mm
信号系统: PAL(模拟信号)
水平清晰度: 420 电视线
最低照度: 0.1Lux/F1.2
增益控制: 自动
背光补偿: 自动
电子快门: 自动
第七章 摄像头的使用
-32-
快门速度: 1/50(1/60)—1/100,000(秒)
白平衡: 自动跟踪白平衡
信噪比: 大于48db (AGC OFF)
视频输出: 1.0Vp-p,75Ω(BNC)
工作电压: DC12V±10%
工作电流:100mA
尺寸(MM): 38×38/32×32
标配3.6MM 镜头,配3P 连接线(需要开发票的另收5 个税点)
3P 线定义:
红线-------电源
黑线-------地
黄线-------信号
测试方法:
1、将红黑线接上DC12V 电源后,将信号线和地线接入普通电视机*** 输入端,通过电视机可看到
CCD 摄像头采集的图像。
2、通电后,使用示波器观测信号线电平,将看到标准的PAL 信号曲线。
图中摄像头网址链接为http://item.taobao.com/item.htm?id=4804519458。本链接仅作参考。
为了使CCD 模拟摄像头工作,需要给其加上12V 电压,通常使用的电池仅为7.2V 左右,所以需要
加上5V 升12V 的升压模块来为摄像头供电,常用的升压模块淘宝网址为
http://item.taobao.com/item.htm?id=6651551480。
7.4 摄像头安装
摄像头的安装位置应合适选取。安装位置太低,会导致视域不够广阔,影响寻线的有效范围,
同时容易产生赛道反光;安装位置太高,导引线会变得过窄而无法被检测到,而且赛车系统会因重
心抬高而稳定性变差,同时盲区会变大。安装示意图如图7.7 所示。
安装位置合适的一个标准是:在此位置的拍摄范围能满足控制的需要。控制的策略简单,则所
需的拍摄范围就可以小一些;反之策略复杂,需获得的赛道信息较多, 则拍摄范围就应大一些。整
车效果图如图7.8 所示。
7.5 基本视频信号采集
该视频采集过程是基于CCD 模拟摄像头来进行的,同样适用于CMOS 中极少数模拟摄像头,关
于数字摄像头(常用的OV7620 等)如有兴趣的同学可以自己去查找资料学习,这方面不再论述。
模拟摄像头一般输出的黑白全电视信号为PAL 制式模拟信号,所以必须经过相应的图像处理模
块进行相应转换之后才能由单片机进行处理,解决方案有以下三种,下面将依次介绍。
智能小车设计指导 第二版
-33-
图7.7 摄像头安装示意图
图7.8 整车效果图
第七章 摄像头的使用
-34-
7.5.1 使用单片机内部A/D 转换。
如果使用的单片机具有A/D 转换器的功能,可以使用内部AD 转换。实际使用发现,如果在单
片机工作频率不够、AD 转换速率不够快的情况下,每行图像采集的点数较少,使得图像分辨率不高。
在要求不是非常高的情况下,该方法还是可行的。以飞思卡尔MC9S12XS128 为例,由于摄像头行同
步信号接到了S12 单片机的外部中断IRQ 引脚,所以当每行视频信号到来时,会产生一个中断。此
时如果需要采集该行,就开始进行AD 转换。程序如下:
// AD 初始化,选用AD0
void ADInit()
{
ATD0CTL2=0xC0; //启动AD0 1100
ATD0CTL3=0x08; //转换序列长度为1
ATD0CTL4=0x81; //时钟采样时间 ATDCLOCK=BUS/2*(PRS+1) 采集模量8 位2 进制 总分频为4
ATD0CTL5=0xA0; //选择通道
ATD0DIEN=0x00; //数字信号输入使能
}
实际采集过程中不可能一幅图像所以行都进行采集,第一时间不够用,如果为了时间够用的话
可能就会降低横向分辨率,而且单片机的RAM 有限,不可能存储所有的信息;第二,实际比赛过程
中不需要所有行的信息都知道,只需要采集一些特殊行或者一幅图像的前多少行就可以了。所以行
中断函数常用来进行选择采集一幅图像的哪些有用行。考虑到摄像头在采集图像时有梯形失真,所
有选择采集的有用行要合理进行选择,以尽量减小失真度。如果要求不高,可以每隔固定的几行进
行采集。如:
(中断初始化函数省略)
#define VIDEO ATD0DR0L // 经过 AD 转换的视频信号
#define LINELENG 40 // 每行采样点数
#define ROWLENG 10 // 总共采集行数
#define ROWSTART 40 // 每场开始行
#define INTERVAL 20 // 采集间距
#pragma CODE_SEG __NEAR_SEG NON_BANKED
// 行中断处理程序
void interrupt 11 IC3_ISR()
{
// 清除行同步中断标志位
TFLG1_C3F = 1;
// 行中断计数器 +1
HsCnt++;
// 到达开始采集行开始采集,每隔 INTERVAL 采集一次
if((HsCnt >= ROWSTART) && (HsCnt % INTERVAL == 0) && (RowImgCnt < ROWLENG))
{
// 初始化 AD
ADInit();
// 将每行指定数量的数据暂存
for(line = 0; line < LINELENG; line++)
{
智能小车设计指导 第二版
-35-
while(!ATD0STAT1_CCF0);
Buffer[line] = VIDEO;
}
// 中止 AD 转换
ATD0CTL2 = 0x00;
// 行采集计数 +1
RowImgCnt++;
// 将行数据存入场图像数组
for(linestore = 0; linestore < LINELENG; linestore++)
{
ImageData[RowImgCnt - 1][linestore] = Buffer[linestore + 2];
}
}
// 判断是否采集完毕
if(RowImgCnt >= ROWLENG)
{
// 禁止行中断
ISR_HsDis();
// 一场采集完毕,将标志位置1
VsGetflag = 1;
}
}
通过上述程序可以看出,每幅图像采集10 行,每行40 个点,每两行之间间隔20 行,这样就
可以在短时间将一幅图像大致完整的采集出来,同时还有舵机控制和速度控制,并保证所有的时间
和在20ms 以内,因为一旦20ms 来到,场中断触发,程序将会跳到场中断函数。一般场中断函数主
要用来准备下一幅图像采集的准备工作,如:
#pragma CODE_SEG __NEAR_SEG NON_BANKED
// 场中断处理程序
void interrupt 15 IC7_ISR()
{
// 清楚场同步中断标志位
TFLG1_C7F = 1;
// 初始化行同步中断计数器
HsCnt = 0;
// 初始化行图像计数器
RowImgCnt = 0;
// 禁止场中断
ISR_VsDis();
// 打开行中断
ISR_HsInit();
}
7.5.2 使用外部A/D 转换器
TLC5510 是美国德州仪器(TI) 公司生产的8 位高速A/D 转换器,它可提供最大20Msps 的采样
第七章 摄像头的使用
-36-
率。使用外部A/D 转换器电路后,只要单片机给一定频率的时钟即可。如果给予的时钟频率不够高,
TLC5510 的高速性能便得不到发挥,这样使得处理速度慢以至于使得单片机的内部资源得不到最充
分的利用。外部AD 的电路图如图7.9 所示:
图7.9 外部AD
7.5.3 使用模拟电路对PAL 信号进行转化(参考北京科技大学CCD 一队)
对PAL 信号进行硬件二值化是为了降低单片机的计算负荷,通过调节阈值而
将灰度图像转换成黑白图像,这样就不需要用AD 转换就可以采集图像了。其最
明显的优点在于普通IO的操作速度要比AD快,使提高分辨率成为可能。在对硬件二值化的研究中,
常用的三个版本分别如图7.10、图7.11、图7.12 所示。
图7.10 第一代固定参考电压比较器电路
实际的比较器电路选择要根据实际情况,通过选择好适当的参考电压,摄像头视频信号在经过
比较器电路之后输出不同的高低电平。合适的参考电压下,输出信号接入单片机IO 口,黑线和白线
对应的比较器输出信号正好相反,由于单片机普通IO 口的操作速度很快,能满足绝大多数情况下的
采集速度,故能够通过检测IO 口的高低电平来判断黑线白线,再通过更加具体的滤波算法来过滤掉
噪点等其他无用信息。正常检测时,可以把每一行读到的多个高低电平信号存到数组中去,可以自
定义一个二维数组,存储行列信号,然后进行信号的分析处理。
实际测试过程中,如果某一行你采集的点数都是0 或都是1,但是采集的过程中是保证黑线白
线都能采集到的话,则有可能你的比较器参考电压设置的过高或过低,导致比较之后的值一直为高
或为低,此时可以手动调节参考电压的大小,再通过上位机时时观察你所采集的那一行是否会同时
出现0 和1,而且出现的位置是否满足你当是对应的黑白线位置。
但是一直出现的是0 不代表你的摄像头一定是好的,因为你发回来的数组默认的缺省值都是0,
所以检测摄像头的好坏或者是否工作至关重要。
智能小车设计指导 第二版
-37-
图7.11 第二代可变参考电压比较器电路
图7.12 第三代边沿检测比较器电路
如果你有扎实的基础,可以去研究一下动态的参考电压,这样可以使得智能车能够克服不同光
线不同环境的影响。
第八章 电磁传感器的使用
-38-
第八章 电磁传感器的使用
8.1 智能汽车电磁组简介:
第五届全国大学“飞思卡尔杯”智能汽车竞赛新增加了“电磁组”。根据比 赛技术要求,电磁
组竞赛,需要选手设计的智能车能够检测到道路中心线下电线中20KHz 交变电流产生的磁场来导引
小车沿着道路行驶。在平时调试和比赛过程中需要能够满足比赛技术要求的20KHz 的交流电源驱动
赛道中心线下的线圈。同时参赛选手需要自行设计合适的电磁传感器来检测赛道信息完成智能寻迹
功能。
关于电磁组的几点说明:
1. 智能车制作是一个涵盖电子、电气、机械、控制等多个领域和学科的科技创新活动。简单点来
说可以将其分为硬件电路(包括电源、MUC 控制部分、电机驱动、传感器)、机械、算法三方
面的设计。电磁组在机械方面可以参照光电组的设计方案,这里不再赘述。本设计指导只讲述
20KHZ 电源、电磁传感器设计方案以及部分算法。
2. 本次校区小车比赛第一次加入电磁组部分,所以我们力求尽可能的多讲一些理论原理,让大家
制作起来心里清楚明白。低年级组的同学由于还没有学习模电、高频等课程,可以先不用注重
理论细节,我们会给出成熟的设计方案供大家参考。
3. 电磁组是全国新添的竞赛项目,大多数参赛队尚处于摸索阶段,我们的相关经验也不太丰富,
希望各参赛选手多多思考,多查查工具书,全国智能车网站上也能找到一些有用的入门级的资
料,选手们可以去参阅。
8.2 20KHz 电源参考设计方案
8.2.1 电源技术指标要求
根据官网关于电磁组赛道说明,20KHz 电源技术要求如下:
1. 驱动赛道中心线下铺设的 0.1-0.3mm 直径的漆包线;
2. 频率范围:20K±2K;
3. 电流范围:50-150mA;
图8.1 是赛道起跑区示意图,在中心线铺设有漆包线。
首先分析赛道铺设铜线的电抗,从而得到电源输出的电压范围。我们按照普通的练习赛道总长
度50m,使用直径0.2mm 漆包线。在30 摄氏度下,铜线的电阻率大约为0.0185 欧姆平方毫米/米。
计算可以得到中心线的电 阻大约为29.4 欧姆。
按照导线电感量计算机公式:

Admin
Admin

帖子数 : 177
注册日期 : 10-03-21

http://cdmcu.fengbb.com

返回页首 向下

返回页首


 
您在这个论坛的权限:
不能在这个论坛回复主题