沈师二队技术报告.docx
《沈师二队技术报告.docx》由会员分享,可在线阅读,更多相关《沈师二队技术报告.docx(34页珍藏版)》请在冰豆网上搜索。
![沈师二队技术报告.docx](https://file1.bdocx.com/fileroot1/2023-2/2/436e33c2-b972-4c1d-8afd-07983f5135f1/436e33c2-b972-4c1d-8afd-07983f5135f11.gif)
沈师二队技术报告
第一届“飞思卡尔”杯全国大学生
智能汽车邀请赛
技术报告
学校:
沈阳师范大学
队伍名称:
沈师二队
参赛队员:
曹声嘉
王小山
徐友
带队教师:
王庆宇
关于技术报告和研究论文使用授权的说明
本人完全了解第一届“飞思卡尔”杯全国大学生智能汽车邀请赛关保留、使用技术报告和研究论文的规定,即:
参赛作品著作权归参赛者本人,比赛组委会和飞思卡尔半导体公司可以在相关主页上收录并公开参赛作品的设计方案、技术报告以及参赛模型车的视频、图像资料,并将相关内容编纂收录在组委会出版论文集中。
参赛队员签名:
带队教师签名:
日期:
第一章引言
1.1设计背景
随着计算机技术的发展,微电子技术,网络技术等的快速发展,以嵌入式系统为控制系统的智能产品正在我们的生活中得以应用。
近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,完善其结构和功能。
1.2设计目标
本文所介绍的自主寻迹智能车系统主要有两大部分组成,自主式电动和外界环境智能监控系统。
首先是自主式寻迹车,其主要工作特点是工作环境的不确定性,因而对系统能的要求更高,需要小车具有自主寻迹行动功能、对外感知能力以及局部的自主规划能力等。
基于以上考虑,我们用一片MCU来制作完成一辆自主式电动智能车。
智能车采用电池驱动、PWM波调整速度。
小车可以用传感器感知道路的环境,通过自我判断对环境进行探测,并做出相应的反映(如弯路识别)。
这样的控制系统如果加以完善可以应用在多项领域中,如:
应用在公交车系统的智能控制中,环境的温度测量中等。
外界智能监控系统。
该系统由两个系统组成:
温度测量系统和速度测量系统。
在温度采集中,最重要的就是对电机温度的采集,温度测量模块采用DS18B20,DS18B20是美国DALLAS公司生产的可完全替代DS1820的全新型单线数字式温度计与其外围电路一起构成温度的测量和显示系统,该器件能够准确的采集电机的温度值,并将温度显示出来,超出规定的温度,智能车会发出报警。
在速度测量系统中,速度测量模块主要采用3144霍尔器件,用它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。
当小车轮子上的磁铁的磁场的南极(S极)接近霍尔电路外壳上打有标志的一面时,作用到霍尔电路上的磁场方向为正,北极接近标志时为负。
获取磁场变化的信号次数并应用有效的软件算法来测出小车的行进的速度,并将其显示在液晶显示屏上。
由此可知,自主式寻迹小车对各个层次的研究和对其他相关领域的开发都有一定的参考价值。
本设计介绍了一个自主探测寻轨智能小车,小车以Motorola公司MC9SDG128作为核心控制器,以脉宽调制(PWM)控制方式控制电机,采用tcrt5000传感器件,采用红外寻迹走法,通过数据的采集对小车的走向进行修正控制。
通过外部数据采集系统对电机的温度和车速进行测量,并用液晶显示模块显示。
实现以下几点功能:
1.实现小车在规定路面上面稳定的寻迹行驶
2.实现小车在不同路况下的加速和减速
3.实现小车出道时情况的紧急处理
4.实现小车在行驶时对行驶速度的检测和显示
5.实现小车在行驶时对电机温度的检测和显示
第二章硬件实现
该设计方案的总体结构主要分为以下五部分:
控制模块,直流电机驱动和控制模块,赛道探测模块,车速和温度测量模块,液晶显示模块。
总体结构图如下:
图1
2.1赛道探测模块
光电传感器模块的重要功能是对路面进行检测探测。
路面轨迹的原理是:
光线射到路面并反射。
由于黑线和白线的反射系数不同,可根据接收到的反射光强弱判断是黑线还是白线。
方案一:
可见光发光二极管与二极管组成的发射-接收电路。
这种方案的缺点在于其他环境光会对光敏二极管的工作产生很大的干扰,一旦外界光亮条件改变,很可能造成误判和漏判;虽然采取超高亮发光二极管可以降低环境光源干扰,但又增加了额外的功耗。
方案二:
采用红外反射式探测,即用已调的红外线垂直射到板面,经反射后转换为电信号送入单片机处理,这是一种很广泛的应用,使用红外接近开关,再没检测到黑线时Uo输出为高电平,在检测到黑线时Uo将与传感器内部电路断开,因而加一个上拉电阻,如图2所示,此时将输出低电平。
此口直接和I/Q口连接,此方案抗干扰能力强,对黑色和其他颜色分辨灵敏,且易实现。
基于以上考虑和题目要求引导线为黑色的条件,选择方案二。
图2
用LM393比较器和光电传感器相连,以降低外界的干扰,当输入的信号较弱时,输出电压小于比较电压,输出电压仍然为低,当外界输入信号较强时,高于比较电压输出电平为高,高电平信号传入到控制模块对其进行转向的判断,不同位置的传感器输入的信号,转向的角度也不一样,从而准确行驶。
由于赛道宽25mm,所以我们将9对传感器的间距设置为27mm,这样智能车在行驶过程中,可以保证尽量只有一对传感器能检测到跑道。
我们对这9对传感器依次编号,这样根据不同编号的传感器检测到赛道,MCU产生相应的PWM波形输出控制舵机转过相应角度。
,对道路进行数据采样。
其具体设计想法是这样:
通过采集红外传感器的信息,作为pid算法的入口参数,在pid算法中我们主要是使用了积分和比例环节,这样便可以似的比较平滑的使系统进入稳定状态。
然后利用计算结果采取不同占空比的PWM波,从而得到不同的转向速度,其中比较繁琐的计算步骤,采用查表的方式实现线性近似,大大的提高了速度。
我们用角度偏差作为PID控制器的输人,转向轮偏转角作为其输出,设计出一种单输入单输出的控制器
△P(n)=Ka[2.58e(n)一3.48e(n一1)+5.36e(n-2)]公式1[1]
式中:
e(n)为第n次采样时车辆与路标距离偏差;Ka为调节器比例系数;△P(n)为第n次采样后转向轮偏转角增量。
通过这样方法,车体的转向就可以比较平滑,不会出现急转和车身反复晃动的情况了。
寻道传感器的排列如上
2.2电源稳压模块
方案一:
我们将控制舵机电路,控制电机电路和电源稳压电路与控制板扩展电路设计在一块板子上,用LM7805三端稳压器将电池的电压转换为舵机的驱动电压,在实际的应用中,由于电机和舵机等耗电器件对电压值的需求不同,会造成电路的干扰及有些器件的驱动力不足。
下图为舵机的驱动电路,由于驱动电机和驱动舵机的电路在同一个电路板上,在舵机和电机同时工作的状态下,如果电机消耗的功率不大的时候,舵机能够工作。
一旦电机驱动力不足被憋住的时候,舵机不做任何动作,电机的工作很大程度上影响了舵机的工作。
虽然在电池电压足够大的时候能够工作,但是给整个电路的调试带来了太多的不便。
图三
方案二:
电源稳压控制模块主要采用的是LM2575芯片,LM2575系列开关稳压集成电路是美国国家半导体公司生产的1A集成稳压电路,它内部集成了一个固定的振荡器,只须及少外围器件便可构成一种高效的稳压电路,可大大减小散热片的体积,而在大多数情况下不需要散热片;内部有完善的保护电路,包括电流限制及热关电路等;芯片可提供不同数目的外部控制引脚。
是传统三端式稳压集成电路的理想替代品。
如下图:
图四
主要参数如下;
最大输出电流:
1A;
最大输出电压:
45V
输出端电压:
3.3V,5V,12V,ADJ(可调)
振荡频率:
54KHz
最大稳压误差:
4%
工作温度范围:
-40度~+125度
VIN:
未稳压电压输入端;
OUTPUT:
开关电压输出,接电感及快恢复二极管;
GND:
公共端
FEEDBACK:
反馈输入断
ON/OFF:
控制输入端,接公共端时,稳压电路工作;接高电平时,稳压电路停止。
在本设计中的稳压电路如下:
图五
2.2.1电感的选择
根据输出的电压档次、最大输入电压Vin(MAX)、最大负载电流Iload(MAX)等参数选择电感时可参照相应的电感曲线图来查找所需采用的电感值。
小车最大的输入电压为9V,电流输出在0.3-0.4安培,所以在电路中我们设计应用330uH的电感。
图六
2.2.2输入输出电容的选择
输入电容应大于47μF,并要求尽量靠近电路。
而输出电容推荐使用的电容量为100μF~470μF,其耐压值应大于额定输出的1.5~2倍。
对于5V电压输出,推荐使用耐压值为16V的电容。
2.2.3二极管的选择
二极管的额定电流值应大于最大负载电流的1.2倍,但考虑到负载短路的情况,二极管的额定电流值应大于LM2575的最大电流限制;另外二极管的反向电压应大于最大输入电压的1.25倍。
2口接电池正极,1口串联一0R电阻,电路中我们连接了两个ELQ磁环来减少共模干扰,L3和L4及其连接的CY1和CY2电容构成了典型的LC滤波电路,在输出端设计了低通滤波电路,在电源电压不稳定的情况下,使电路中的高频信号不能通过,从而保障了电源的稳定性。
2.3电机驱动模块
方案一:
采用MC33886虽然驱动能力要比L298大一些,但是在现实的测验中发现如果在电机功率过大时或者电机堵转时,此时33886的温度会很快升高,威胁了器件和电路的安全。
另外在整个调试过程中,应用33886的开发周期长,没有用场效应管直接进行调试简单快捷。
方案二:
采用L298芯片,L298是恒压恒流双H桥集成电机芯片,可同时控制两个电机,且连续输出电流2A峰值4A。
实践证明通过L298的驱动和PWM的脉宽调制不能达到电机对电流的就要求。
表1L298控制引脚使能逻辑关系
ENA(B)
IN1(IN3)
IN2(IN4)
电机运行情况
H
H
L
正转
H
L
H
反转
H
同IN2(IN4)
同IN1(IN3)
快速停止
L
X
X
停止
Vss电压最小为4.5V,最大可达36V;Vs电压最大值也是36V。
但经过实验,Vs电压应该比Vss电压高,否则有时会出现失控现象。
在L298芯片的使用中,为了增强电机的驱动能力,我们将L298中能驱动两组电机的对应管脚连接,使之驱动一个电机。
在本设计中实现的原理图如下:
图七
方案三:
备用电机控制方案
图八
此方案的设计使电机工作的更加保险,在电机的驱动电路中,如果遇到驱动芯片的的驱动能力不足时可以使用备用电机控制方案.其设计特点如下:
采用光耦控制,真正实现光电隔离,系统安全可靠,电路中的二极管D12IN5819防止器件被反向电流击穿,并联的一个104电容也能有效的滤除电路中噪音的干扰.场效应管IRFZ24N的驱动电流2.95A,其最大可通过电流为17A,在电路中还可根据二极管的数量来控制电流的大小,来从而调节电机的速度.
2.4舵机控制模块
本设计中舵机为开发系统中自带,其控制主要通过不同位置的传感器返回信号给控制模块,调节占空比控制其转向角度。
模块选用TLP-521光耦隔离开关,消除共模干扰,在开关电源的周围接压敏电阻和阻容滤波,可以有效地滤区电源中的高频干扰。
在光电耦合器输入端加电信号使发光二极管发光,光的强度取决于激励电流的大小,此光照射到封装在一起的三极管上后,因光电效应而产生了光电源,由三极管输出端引出,实现了一光一电的转换。
通过光电隔离的办法控制舵机避免了系统带来的干扰。
当DUOJKZ端输入高电平,VCC1端接高电平,发光二极管未能导通,U13电压为VCC1端电压。
一旦DUOJKZ端电压被拉低,发光二极管发亮,使三极管导通[3]。
本次设计中舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置(图九) 。
图九
原理图如下:
图十
2.5温度测量模块
温度测量模块采用DS18B20,DS18B20是美国DALLAS公司生产的可完全替代DS1820的全新型单线数字式温度计,它具有结构简单,不需外接元件,采用一根I/O数据线既可供电又可传输数据、并可由用户设置温度报警界限等特点。
●电源电压范围为3.0V~5.5V;
●内含程序设置寄存器,可用来设置分辨率位数,该寄存器是DS1820所没有的。
其中,TM为测试模式位,为1表示测试模式,为0表示工作模式,出厂时该位设为0,
且不可改变。
R1和R0的设置组合与温度分辨率有关,具体关系见表1。
表1温度分辨率的设置
●片内带有64位激光ROM:
从高位算起,该ROM有一个字节的CRC校验码,6个字节的产品序号和一个字节的家庭代码。
对于家庭代码,DS1820是10H,DS18B20是28H。
●内含温度数据寄存器:
该寄存器由两个字节组成,实际上DS18B20中寄存器的字节定义或温度值与DS1820不一样,DS1820的分辨率为0.5℃,而DS18B20的12位分辨率为2~4℃。
使用DS18B20时,首先需将其复位,然后才能执行其它命令。
复位时,主机将数据线激发为低电平并保持480μs~960μs,然后释放数据线,再由上拉电阻将数据线拉升15~60μs。
然后再由DS18B20发出响应信号,以将数据线激发成低电平60~240μs,这样,就完成了复位操作。
其复位时序如图十一所示。
在温度的采集中,片内有两位来记录温度的值,一位为高位,当赋值为FF时表示温度为正值,赋值为00时温度为负值,低位来存储采集的值,其计算方法将采集进来的值按位取反末尾加一然后除二,就得到测量的温度值。
图十一
图十二
图十三
2.6速度测量模块
速度测量模块主要采用3144霍尔器件,用它可以检测磁场及其变化,可在各种与磁场有关的场合中使用。
当小车轮子上的磁铁的磁场的南极(S极)接近霍尔电路外壳上打有标志的一面时,作用到霍尔电路上的磁场方向为正,北极接近标志时为负。
锁定型霍尔开关电路的特点是:
当外加场B正向增加,达到BOP时,电路导通,之后无论B增加或减小,甚至将B除去,电路都保持导通状态,只有达到负向的BRP时,才改变为截止态。
小车每转一周,产生一个脉冲,通过计算脉冲数目,通过软件算法得出运算完的速度,通过霍尔元件的变化,计算出小车车轮转一圈的距离,从而再应用软件算法得出运算完的速度。
图十四3144机构图
图十五
2.7液晶显示模块
方案一:
采用LED显示模快显示,可以采用一片7219芯片来驱动LED显示管,虽然外围电路比较简单,但是我们要达到用文字和数字准确显示小车行进间的状态就不能实现。
方案二:
采用LCD液晶显示板显示系统信息,LCD不但可以显示数字且可以显示文字信息,当前显示的是什么状态可用文字标出,即使在小车行进的过程中,也能够一目了然的看到小车的行驶的状态。
LCD有明显的优点:
微功耗、尺寸小,超薄轻巧、显示信息量大、字迹清晰、美观、视觉舒适;可以用中文LCD液晶进行菜单显示,使整个控制系统更加人性化。
对以上两种方案的比较,显示部分采用第二种方案。
液晶显示模块采用C系列中文液晶显示模块,C系列中文模块可以显示字母、数字符号、中文字型及图形,具有绘图及文字画面混合显示功能。
提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口(OCMJ4X16A/B无串行接口)。
所有的功能,包含显示RAM,字型产生器,都包含在一个芯片里面,只要一个最小的微处理系统,就可以方便操作模块。
显示数据RAM提供64x2个字节的空间,最多可以控制4行16字(64个字)的中文字型显示,当写入显示资料RAM时,可以分别显示CGROM,HCGROM与CGRAM的字型;本系列模块可以显示三种字型,分别是半宽的HCGROM字型、CGRAM字型及中文CGROM字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H~0006H的编码中将选择CGRAM的自定字型,02H~7FH的编码中将选择半宽英数字的字型,至于A1以上的编码将自动的结合下一个字节,组成两个字节的编码达成中文字型的编码BIG5(A140~D75F)GB(A1A0~F7FF),详细各种字型编码如下:
1.显示半宽字型:
将8位资料写入DDRAM中,范围为02H~7FH的编码。
2.显示CGRAM字型:
将16位资料写入DDRAM中,总共有0000H,0002H,0004H,0006H四种编码。
3.显示中文字形:
将16位资料写入DDRAM中,范围为A140H~D75FH的编码(BIG5),A1A0H~F7FFH的编码(GB)。
将16位资料写入DDRAM方式为透过连续写入两个字节的资料来完成,先写入高字节(D15~D8)再写入低字节(D7~D0)。
图十六
第三章算法分析
3.1小车转向控制流程图[2]
图十七
3.2小车行进处理流程图
图十八
3.3、温度子系统流程图
图十九
第四章总结
随着电子技术的不断发展和人们生活水平的不断提高,人们对新事物的接受能力越来越强,单片机的应用也正在人们生活中变得越来越广,智能产品的开发和应用也越来越受欢迎,我们对智能车的开发可以应用其他相关的领域,如应用在公交系统中,可以很好的提高公交系统的运营效率。
我们非常荣幸能够参加这次freescale智能车的比赛,在我们精心准备的六个月中,遇到了很多困难,但是在大家的努力下和老师的耐心指导下,我们攻克了一个又一个的难关,无论是在方案的选择,硬件的设计,还是软件的编写都是组员们用汗水和智慧换来的,在方案的选择上,我们出现过很多分歧,当然也走了很多弯路,但是,事实证明了我们走过来的弯路也正是我们积累经验的机会,比如在电机驱动芯片的选择上,我们先用了MC33886,在测量过程中我们发现它的温度会很高,直接威胁了其它器件的安全,我们又选择了LM298,又通过实践证明,它的驱动能力远不能满足我们对电流的要求。
通过两天的查询和学习,我们最终选择了用场效应管来满足电极速度对电流的要求。
在传感器的选择上,大家也出现了分歧,有人说用摄相头,有人说用可见发光二极管或者是红外线传感器,可是根据既经济有好用的原则,我们选择了红外线传感器,尝试了多种排列才得到了满意的结果。
在我们所制作的自主寻迹智能车中,已经完全实现了我们预计的功能,可以寻轨迹行驶,对电机温度的测量,对速度的测量及速度和温度的显示,可以根据不同功能的要求继续完成开发。
人生的过程就是不断的发现问题,研究问题和解决问题。
我们会在此基础之上继续研究和探索,用我们的智慧来给人民创造幸福。
第五章技术参数
模型车的主要技术参数如下:
1.改造后的车模总体重量,长368mm、宽240mm、高120mm;
2.电路功耗15W,所有电容总容量1860uF;
3.传感器种类以及个数:
使用了9对光电传感器、1个DS18B20、1个3144;
4.除了车模原有的驱动电机、舵机之外伺服电机个数为0;
5.赛道信息检测精度、频率:
赛道检测频率为60HZ
参考文献
[1]刘金琨.先进PID控制及其MATLAB仿真[M].北京:
电子工业出版社,2003.
[2]张培仁.基于C语言编程MCS-51单片机原理与应用[M].北京:
清华大学出版社,2003.
[3]邵贝贝.单片机嵌入式应用的在线开发方法[M].北京:
清华大学出版社,2004.
[4]BenjaminC.Kuo,FaridGolnaraghi.AutomaticControlSystemEighthEdition[M].汪小帆李翔译北京:
高等教育出版社,2004.
[5]刘慧银龚光华王云飞.Motorola(Freescale)微控制器MC68HC08原理及其嵌入式应用[M].北京:
清华大学出版社,2005.
附录
附录A程序源代码
表A-1温度测量代码
#ifndef_Drive18B20_
#define_Drive18B20_
#include"Delays.h"
ucharow_reset(void)//复位
{
ucharpresence;
DDRA_BIT4=1;
PORTA_BIT4=0;//拉低DQ总线开始复位
Delayus(480);
PORTA_BIT4=1;
Delayus(60);
DDRA_BIT4=0;
presence=PORTA_BIT4;
Delayus(480);
return(presence);
//返回应答信号
//有应答返回0,无应答返回1
}
voidwrite_bit(charbitval)//写一位数据
{
DDRA_BIT4=1;
PORTA_BIT4=0;//拉低DQ开始一个写时序
if(bitval==1){
PORTA_BIT4=1;//如果要写'1'则将总线置高
}
Delayus(60);
PORTA_BIT4=1;//释放DQ总线
}
voidwrite_byte(charval)//写一字节数据
{
uchari;
uchart;
for(i=0;i<8;i++)
{
t=val>>i;
t&=0x01l;
write_bit(t);
}
}
ucharread_bit(void)//读一位数据
{
//uchari;
DDRA_BIT4=1;
PORTA_BIT4=0;//将DQ总线拉低开始读时序
Delayus
(1);
Delayus
(1);
PORTA_BIT4=1;//释放总线
Delayus(4);
DDRA_BIT4=0;
return(PORTA_BIT4);
}
ucharread_byte(void)//读一字节数据
{
uchari;
ucharvalue=0;
for(i=0;i<8;i++)
{
if(read_bit())
{
value|=0x01<
}
Delayus(60);
}
return(value);
}
uchargetWD(void)
{
bytewdbit[9];
ucharloop;
ucharLsb=0;
ucharMsb=0;
if(ow_reset()==0)
{
write_byte(0xcc);
write_byte(0x44);
Delayus(240);
}
if(ow_reset()==0)
{
write_byte(0xcc);
write_byte(0xbe);
for(loop=0;loop<9;loop++){
wdbit[loop]=read_byte();
}
Lsb=wdbit[0];
Msb=wdbit[1];
}
//Msb=*128;
//Msb+Lsb;
wd=Lsb/2;
return(wd);
}
#endif
表A-2速度测量代码
ulonggetLength()
{
if(cm_length>170){
fm_length+=17;
cm_length=0;
}