基于线性ccd的自主行驶小车系统的设计 大学本科学位论文.docx
- 文档编号:25439407
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:38
- 大小:66.23KB
基于线性ccd的自主行驶小车系统的设计 大学本科学位论文.docx
《基于线性ccd的自主行驶小车系统的设计 大学本科学位论文.docx》由会员分享,可在线阅读,更多相关《基于线性ccd的自主行驶小车系统的设计 大学本科学位论文.docx(38页珍藏版)》请在冰豆网上搜索。
基于线性ccd的自主行驶小车系统的设计大学本科学位论文
摘要
本文主要设计制作一辆基于线性CCD自主循迹行驶的智能车,采用飞思卡尔半导体公司生产的32位单片机MK60DN512VLQ10作为核心处理器,主要通过TSL1401线性CCD采集赛道的一维图像信息,反馈给单片机控制舵机转向,电机调速,使小车按照事先架设好的跑道自主行驶,并且能通过ST188红外对管识别出终点(跟边线垂直的黑线段)自动停车。
硬件系统由单片机模块,TSL1401线性CCD模块、电源管理模块、电机驱动模块、OLED人机交互模块、光电对管模块以及电机、舵机和编码器组成。
软件系统主要由IAR进行开发,控制算法主要采用PID控制。
关键词
智能车;线性CCD;PID
Abstract
ThispapermainlyintroducesthedesignaboutasmartcarwithautomatictrackingfunctionbasedonlinearCCD.ThecontrolsystemusestheFreescaleSemiconductor's32-bitmicrocontrollerMK60DN512VLQ10asthecoreprocessor.TheTSL1401linearCCDacquiresone-dimensionalimageinformation,whichisfeedbackedtoTheMCU.ThentheMCUcontrolsservo’sdirection,motor’sspeed,sothecarcanautomaticallydriveinaccordancewithbeforehandtrack,identifytheend(theblacklineverticalwithsideline)andstopautomaticallybytheST188.Thehardwaresystemincludesamicrocontrollermodule,aTSL1401linearCCDmodule,apowermanagementmodule,amotordrivemodule,twoOLEDmodules,fourphotoelectrictubemodules,amotor,aservoandaencoder.ThesoftwaresystemisdevelopedbyIARandthecontrolalgorithmmainlyusesPIDcontrol.
Keywords
SmartCar;LinerCCD;PID
1. 引言
汽车行业的发展已经超过了100多年,自1980年以来,智能理论控制技术在交通运输工程中已经被越来越广泛的运用,智能汽车的概念在这一背景下也就相应产生和发展[1]。
随着科学技术与现代汽车工业的结合发展,两者的产物“智能汽车”能像机器人一样,可以自动地进行环境的感知,规划和决策的运行控制[2]。
智能车系统是一个综合多技术领域系统,其包含了自动控制、模式识别、传感技术、电子、电气、计算机、机械与汽车等多个学科专业[3]。
因此,对智能车技术的研究能够促进计算机技术、车辆控制理论、摄像头[4]等多传感器信息融合技术等技术的快速发展;可以提高车辆的控制能力和辅助驾驶水平,对优化交通设施,缓解和改善交通问题具有积极的意义;改善工业人员工作环境,提高安全系数,同时还可以提高工业的智能化水平,提高产量。
为人类的生产生活带来越来越多的便利,使人类的生活质量越来越高。
智能车最大的要求就是能够自动循迹,像全国“飞思卡尔”杯智能车比赛、瑞萨杯智能车比赛等比赛都是要求智能车能够自动循迹。
而光电传感器的选用在自动循迹智能车系统中更是一个关键的问题。
传统的红外对管,激光管在前瞻和稳定性方面都存在一定的缺陷[5],线性CCD是新兴的光电传感器,第八届全国飞思卡尔杯智能车比赛中就对TSL1401线性CCD传感器进行了第一次使用,与传统的红外对管,激光等光电传感器相比,线性CCD具有很多优点,尤其是在线性度和图像均匀性等方面,采集到的数据便于单片机处理。
实验表明,线性CCD的前瞻比较远,能达到1.2米左右。
随着对智能车辆速度增加的要求,需要跟踪处理越来越多路况,如路口,避障等。
对于以上的情况,线性CCD能够利用其本身的特点有效的予以解决,尤其是在对于智能车辆的提速问题上。
随着线性CCD技术的不断提高与发展,线性程度自然会持续提高,提取的图像信息会变得更加的稳定有效,前瞻会变得更宽更远,因此必定会加快推进智能车速度提高的进步[6]。
本智能车系统就是基于线性CCD为基础而设计的。
2.设计方案思路
2.1单片机的选择
方案一:
采用传统的8位40引脚单片机STC89C52作为主控芯片,该MCU是台湾宏晶公司的产品,具有低功耗,高性能,编程简单等特点,应用在很多领域。
方案二:
使用飞思卡尔半导体公司的32位144引脚单片机MK60DN512VLQ10作为主控芯片,该MCU外设资源多,运算速度快,精度高。
考虑到本次智能车系统设计有一定的复杂性,要求主控芯片带有AD,PWM,正交解码等功能,并且要用到的引脚数目比较多,因此本次设计选用了K60作为主控芯片。
2.2电机驱动的选择
方案一:
使用2片BTN7971半桥芯片搭成一个全桥驱动电机,电路搭建简单,理论驱动电流达到50A,但是芯片容易发烫。
方案二:
用4个MOS管LR7843构成H桥和一个MOS驱动芯片IRF2184驱动电机运转,虽然电路组建有点复杂,但是理论驱动电流能达到160A并且电路稳定不会发烫。
方案三:
采用LN298电机驱动模块,电路简单,但是驱动电流只能达到2A,达不到理想驱动效果。
考虑到系统电路的稳定性,本次设计选用了方案二。
2.3显示模块的选择
方案一:
使用常用的LCD1602作为液晶显示器,显示字母和数字比较方便,控制简单,成本低,整屏能显示16*2个字符,与单片机并口连接,接线引脚多。
方案二:
使用LCD12864作为液晶显示器,自带中文字库,分辨率为128*64,与单片机并口连接,但是价格昂贵。
方案三:
采用0.96寸OLED12864显示器,采用4线同步串行SPI接线方式,接线简单,高分辨率,为128*64,显示效果远远超过LCD[7]。
考虑到成本,电路接线,显示效果等因素,本次设计选用了方案三。
3. 总体设计
3.1系统设计要求
本课题要求设计制作一套基于线性CCD的自主行驶小车系统。
本系统场地是在一个白色地面上用黑色绝缘胶带布置两根边线,两根边线内是小车要行驶的道路,小车能通过线性CCD识别出该道路,并能自主沿着道路前进,到达终点时会自动停止,终点为跟边线垂直的黑线段(黑色绝缘胶带)。
在道路中间含十字路口,要求能识别出该十字路口,并正确通过该十字路口。
3.2系统总体设计方案
本系统的最小控制核心MCU为MK60DN512VLQ10;线性CCD用支架固定在小车中心离地30cm处,前瞻60cm(能准确提取边线且不失真),使用4个MOS管搭成H桥作为电机驱动模块[8],大大增加电机驱动能力;光电传感器模块由四个ST188光电对管构成,在车身底部“一”字排开,用以检测终点。
电源模块采用飞思卡尔的7.2V电池给电机供电,同时经TPS7350芯片输出5V稳压给CCD模块、编码器供电;经TL1963芯片输出6V稳压给舵机供电;经TPS7333芯片输出3.3V稳压给单片机、OLED模块供电。
TSL1401线性CCD采回的图像数据传递给单片机处理,单片机利用PID算法控制舵机转变方向,调节电机速度,从而完成小车智能循迹[9]。
系统由K60为最小控制核心模块、TSL1401线性CCD模块、电源管理模块、电机驱动模块、OLED12864液晶人机交互模块、ST188光电对管模块以及电机、舵机和编码器组成。
系统框图如图3-1所示。
图3-1 系统框图
系统各个模块功能设计如下:
1、通过TSL1401线性CCD获取道路的一维图像信息(128个像素点的电压),然后给单片机进行数据处理;
2、采用MK60DN512VLQ10单片机为主控芯片对外围电路进行实时控制;
3、光电对管用以检测起跑线,到达终点后,控制停车;
4、伺服舵机带动小车两前轮控制小车转向;
5、电机驱动电路驱动直流电机带动小车两后轮运转;
6、采用两片OLED12864显示屏,一片显示CCD采回的图像波形,另一片结合五向按键做人机交互界面,调节PID参数,节省多次下载程序的时间,大大提高调车效率;
7、采用500线欧姆龙编码器反馈电机转速,精确控制小车速度,有效提高系统的稳定性。
4. 硬件设计
4.1 飞思卡尔32位单片机MK60DN512VLQ10介绍及其最小系统
本设计使用的MCU是飞思卡尔半导体公司生产的32位MK60DN512VLQ10单片机,是飞思卡尔公司推荐的K60系列的32位增强型单片机。
该芯片以飞思卡尔最新的闪存技术,并且具有功耗低,性能高,精度高等特点,特别是多路快速的16位模数转换(ADC)、数模转换(DAC)和可编程增益运放(PGA)等功能强大、高效率的信号转换,调节和控制模块。
K60还具有以太网,全功能USB、硬件加密和篡改检测功能,具有丰富的模拟通信,定时和控制外设,还包括单精度浮点型运算单元,NAND闪存控制器和DRAM控制器[10]。
本设计的MK60DN512VLQ10单片机的最小系统如图4-1所示。
图4-1K60单片机最小系统
4.2 电源模块的设计
本智能小车采用飞思卡尔公司的7.2V电池给RS540直流电机供电,除此之外,系统还需要6V、5V、3.3V、12V给系统其他模块供电。
4.2.1 6V稳压电源设计
由于舵机需要用到6V电源给其供电,本次设计选用了德州仪器生产的TL1963A电源管理芯片,可调输出电压范围为1.21V~20V,输出电流能达1.5A,驱动舵机的效果比较明显,其电路原理图如图4-2所示。
图4-26V稳压电源原理图
通过查询芯片的Datasheet可知,TL1963A的输出电压计算公式为
,因此电阻R1配1K,R2配3.9K,经计算VOUT=1.21*(1+3.9/1)=5.929V≈6V。
4.2.2 5V稳压电源设计
为了提高电池的使用时间,通常需要调节压差(输入输出电压差小),使用功耗小(静态电流小),还有就是能够有欠压信号使单片机复位,德州仪器生产的TPS73XX系列就符合这一功能的低压差稳压器。
因此5V电源模块部分就采用TPS7350Q芯片,最大输出电流达500mA,输出电压精度高,噪声小,内部带过流过压保护,另一个优点就是该芯片外围元器件少,电路搭建简单,符合智能车设计要求[11]。
其电路原理图如图4-3所示。
图4-3 5V稳压电路原理图
在本系统中,5V稳压模块给TSL1401线性CCD模块,500线欧姆龙编码器,5V至12V升压模块供电,经计算CCD模块供电需要100mA,编码器供电只需几十mA,升压模块需耗电100mA,因此使用TPS7350Q符合系统供电要求。
4.2.3 3.3V稳压电源设计
因为MCU的供电需要3.3V供电,为此选用了TPS7333Q作为电源管理IC,输出3.3V电压,同TPS7350Q一样,输出精度高,带过压过热保护功能,输出电流达500mA,电路原理图如图4-4所示。
图4-4 3.3V稳压电路原理图
输出的3.3V电压给单片机供电以为,还给OLED显示模块供电,单片机供电需要200mA,由于用到了2片OLED液晶屏,所以耗电200mA,因此总的供电量也是合理符合的。
4.2.4 12V稳压电源设计
由于IRF2184需要12V供电,因此比较使用了DCDC-5V12V升压模块,因为该模块已经集成化,所以比较稳定,纹波比较小。
其外观图如图4-5所示。
图4-5B0512S外观图
4.3 电机驱动模块
电机驱动电路一般采用H全桥驱动直流电机,一般的桥式电机驱动电路分为单极性和双极性,但是双极性电路输出的电压含有比较多的交流成分,极易造成电机消磁和发烫,因此最后选择了直流电动机可逆单极型驱动器,采用4个功率元件N沟道mos管搭建而成,额定输出电流达到150A以上,驱动效果理想,使直流电机的转速和扭矩都明显提高。
其电路原理图如图4-6所示。
图4-6电机驱动原理图
为了驱动MOS管LR7843,为此使用了mos管驱动芯片IRF2184,IRF2184的驱动电压是12V,因此用了5V-12VDCDC升压模块,同时为了不让驱动部分的大电流回流到单片机最小系统把单片机烧掉,因此在单片机输出引脚和驱动之间加了隔离芯片74HC02,该芯片是4通道2输入或非门,不仅能进行电平转换,而且还能根据单片机输出高低电平控制电机正反转,使用起来更方便。
4.4 OLED显示模块
本次设计用到的是OLED12864液晶显示模块,OLED的英文名为OrganicLight-EmittingDide,中文名为有机型发光二极管,该屏幕轻薄,省电,已经在MP3等播放器上得到了广泛的应用,OLED12864分辨率为128*64,能显示中文字符,大小只有0.96寸,并且成本低,实物图如图4-7所示。
图4-70.96寸OLED12864实物图
为了调试方便,使用了2片OLED屏幕,一片读取CCD采集的赛道信息,另一片用五向按键调节PID参数。
单片机采用4线SPI驱动液晶显示,通过控制片选端CS选择驱动哪片OLED,模块的电路原理图如图4-8所示。
图4-8OLED12864液晶屏原理图
4.5 五向按键模块
本次设计的按键部分采用了五向按键,小巧方便,在硬件设计上原本需要占据5个I/O口,但本设计采用了AD按键,把5个引脚同时挂在同一个I/O口上,利用5个方向引脚电压的差异识别出哪个方向键按下,大大节省了I/O口资源。
按键模块配合OLED模块使用,进行人机交互,缩短了系统调试时间,按键模块电路原理图如图4-9所示。
图4-9五向AD按键原理图
4.6 TSL1401线性CCD模块
线性CCD是本系统的核心部分,就好比小车的“眼睛”,非常重要。
本次设计中的CCD模块采用了北京龙邱科技公司的TSL1401模块,如图4-10所示。
图4-10TSL1401模块实物图
4.6.1 线性CCD模块引脚定义
SI:
串行输入口。
经过单片机的IO口控制数据起始位。
CLK:
时钟引脚。
经过单片机的IO口控制电荷的转换和像素的输出。
AO:
模拟输出。
经过单片机的ADC口进行数据采集。
VDD:
+5V电源供电。
GND:
接地。
4.6.2 线性CCD模块工作原理
TSL1401线性CCD模块中有光电二极管128个成线性分布。
都有积分电路与各个光电二极管相互对应,这些积分电路称为像素。
采样的像素采集的灰度值与感应到的光的强度以及积分的时间成正比。
除了128个像素以外,模块还包含逻辑开关控制电路以及移位寄存器电路。
每个像素的积分和复位由SI引脚控制;CLK引脚在电路中的作用是顺序输出每一个像素电压值。
TSL1401线性CCD模块的内部结构如图4-11所示。
图4-11TSL1401模块内部结构图
能够从图中看到像素电路、开关逻辑控制电路以及位移寄存器电路。
还有一个增益调整模块,对输出电压可调增益,所以不需要其他放大模块进行放大,AO口输出的电压可以直接给单片机AD采样进行处理。
一般都是从CIK引脚的下降沿进行AD采样。
4.7 ST188红外对管模块
终点为跟边线垂直的黑线段(黑色绝缘胶带),小车到终点是要自动检测到,如果也用CCD检测,可能会造成误判,小车转弯时也可能当作终点而停车,所以专门用了ST188红外对管模块来检测终点线,其外形如图4-11所示。
图4-11ST188外观引脚图
其中A、K引脚是红外发射极的正负极,E、C引脚是接受极的正负极,能检测范围是4-13mm,无须接触,电路原理图如图4-12所示。
图4-12ST188红外对管接线原理图
工作原理:
当检测到黑线时(无红外线反射),A、K未导通,C、E截至,输出高电平,相反当检测到白线时(有红外线反射),A、K导通,C、E也导通,输出端为低电平[12]。
考虑到在测量过程中会出现比较大的死区电压,为此加了运放进行比较器调节,同时用电位器还能进行阈值调节,方便灵活。
为了直观反映检测效果,运放输出端加了指示灯,黑线指示灯亮,白线指示灯灭。
另外终点线有2段黑线,所以用了4个ST188检测,根据黑线段的间距进行合理分布,在车模底部一字排开,无论什么情况都有2个ST188同时检测到2条黑线段,使单片机控制小车停车。
4.7 500线欧姆龙编码器
智能车要完成闭环控制,必须能够反馈速度,本系统采用了欧姆龙公司生产的500线E6A2-CW3C双相编码器进行反馈,转一圈能输出500个脉冲,实物图如图4-13所示。
图4-13500线编码器实物图
编码器一段通过齿轮跟电机连在一起,模块有4根接线,褐色连5V,蓝色连GND,黑色连A相,白色连B相,利用K60的正交解码功能检测脉冲数据[13]。
因为A,B两相的相位相差90度,所以可以通过对比是A相超前还是B相超前进行正反转判断,并且也能在A、B相的上升(下降)沿进行脉冲计数,反馈给单片机测速。
如果A,B相引脚直接接单片机正交解码引脚,测到的是尖峰波(并非方波),单片机不能正常处理,因此加了10k的上拉电阻后,就能得到正常的方波给单片机测速,与单片机连接口如图4-14所示。
图4-14编码器引脚接线图
4.9 SD-5舵机
小车的转向舵机使用的是北京科宇通博科技有限公司生产的SD-5舵机,它的工作电压是6V,并且自带堵转保护电路,力矩是5000g,回中较准确,定位较精确,只需300Hz频率PWM波就能进行方向控制,操作简单。
SD-5舵机实物图如图4-15所示。
图4-15SD-5舵机实物图
4.10 RS-540直流电机
本系统使用了RS540大功率直流电机,工作时电压为7.2V,空载时电流为1.72A,最大的工作电流可以达到9.71A,最大工作功率达到61.75W,完全符合小车速度需要,电机实物图如图4-16所示;
图4-16RS540电机实物图
4.11 小车车模
使用飞思卡尔智能汽车竞赛的B模型,实物图如图4-17所示。
图4-17飞思卡尔比赛B车模
5. 软件设计
硬件平台搭好后,就需要软件的开发,小车只有通过软硬件的有机结果,才能实现自动循迹功能,本系统软件开发使用的是IAR,其界面如图所示,IAR有多种版本,有编译ARV的,stm8的,ARM的,因为K60是ARM内核的,因此选择了IARForARM版本进行安装。
IAR是目前最简单和最完备的嵌入式开发工具,利用IAR开发有许多优点,能够最大化地优化代码,节约硬件资源,大大地降低开发成本。
本次设计软件编写使用了通俗易懂,可移植性较强的C语言,在电脑上安装好IAR软件后,根据使用说明建立一个工程项目,进行程序编写和在线调试,界面如图5-1所示,详细的源程序见附件。
图5-1IAR界面图
5.1 总体方案
程序主要要实现的功能是:
通过TSL1401线性CCD传感器采集的128个一维图像信息,传递给单片机进行判断处理,单片机根据PD算法,判断小车与中线的偏差输出PWM波控制舵机打角多少,使小车始终沿跑道中线行驶,为了控制小车的速度,使小车能闭环稳定跑,通过反馈编码器的转速给单片机,单片机利用PI算法同样输出PWM波控制电机速率。
当ST188光电对管模块检测到终点线后,单片机控制小车停车。
为了在调试过程中方便快捷,提高效率,利用了K60的flash擦写功能,在OLED液晶屏上使用五向按键改变PID参数,直接在小车上调试,省去了多次下载程序的时间,并且能对调试理想的参数进行保存,下次开机后还能读取上一次保存的参数,明显提高调车效率。
5.2 主程序设计
程序上电后,先关总中断,然后串口、CCD、PIT0、FTM0、FTM1、OLED、ADC、FLASH、按键等各模块初始化,然后开总中断,进入main函数,开始各子函数调用。
首先开始CCD的采集,CCD采集的128个像素点的电压通过单片机AD采样,然后二值化后通过PD算法输出PWM波控制舵机打角转向,编码器正交解码返回脉冲数给单片机通过PI算法输出PWM波给电机调速,并且执行AD按键扫描程序,执行按键事件进行OLED屏幕参数调节(PID参数)。
以上子程序都在PIT0中断中执行,在PIT0中断中,1ms进一次中断,为一个控制周期,共分4个控制周期,第一个控制周期内CCD曝光计算,第二个控制周期内进行获取编码器脉冲数后进行PI调速,第三个周期内进行内进行位置解算,PD算法控制舵机转向,第四个周期为按键扫描,进行人机互动。
Main函数内做两件事:
一是判断终点线,一旦检测到,就直接电机不使能停车;二是CCD计算曝光时间(20ms一次),会在后面CCD部分讲到。
主程序框图如图5-2所示。
图5-2系统主程序框图
5.3 各子程序模块设计
接下来开始介绍各个子程序部分的设计,由于各程序中基本上都用到了PID控制算法,先介绍下PID控制原理。
PID控制算法为使用较早,较为经典的控制方法之一。
PID控制器根据系统的过去信息(I)、当前信息(P)和将来信息(D)三个参数进行控制。
P为系统偏差的比例,I为系统偏差的积分,D为系统偏差的微分。
PID控制算法优点有很多,使用起来方便简单,鲁棒性能比较好,因此在工业上得到了普遍的运用。
PID控制系统由三部分组成,分别是控制对象、执行机构以及模拟调节器,如图5-3所示。
图5-3PID控制系统原理框图
PID调节器是一种线性调节器,e(t)为给定的量r(t)和实际输出的量c(t)之间的偏差:
,然后将系统偏差的比例(P)、积分(I)、微分(D)根据某种线性组合关系组合成控制量,最终对控制量一起控制,因此叫PID调节器[14]。
但是在实际生产应用中,常常会根据相关控制要求需要将P、I、D进行适当的组合,来达到有效控制被控对象的目的。
比如,P调节器,PI调节器,PD调节器,PID调节器等。
一般的PID调节控制规律为:
上式中,KP是比例系数,KI是积分常数,KD是微分常数。
各校正环节的在系统控制中作用是:
(1)比例环节(P):
作用是一旦系统出现了偏差,比例调节环节马上进行调节,抑制偏差的产生,但是也有缺点,就是系统会产生余差;
(2)积分环节(I):
主要作用是为了消除比例环节产生的余差,提高系统的无差度。
积分环节作用与积分时间常数有关系,积分时间常数越大,那么积分作用就越弱,反之则正好相反;
(3)微分环节(D):
主要反映了系统的偏差变化的预见性,在系统偏差还未变大时就产生抑制调节,有效减少系统的调节时间。
5.3.1 TSL1401线性CCD程序设计
由于因线性CCD的输出信号与周围环境的光线有关系,一般情况下,晚上灯光效果比白天会使输出的电压低,当线性CCD背对光线比正对着光线输出电压低,输出电压大小和CCD曝光量大小直接相关。
曝光量取决于CCD模块所选用的镜头光圈的大小和程序所控制CDD曝光时间多少,因为镜头光圈大小已经固定不能改变,因此使用软件改变曝光时间,本次设计采用了自适应曝光时间算法调节曝光量[15]。
程序流程图如图5-4所示。
图5-4CCD自适应曝光曝光程序框图
曝光控制原理:
先发送一次启动和移位时序信号,因为TSL1401每128个时钟序列的前18个周期是内
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于线性ccd的自主行驶小车系统的设计 大学本科学位论文 基于 线性 ccd 自主 行驶 小车 系统 设计 大学本科 学位 论文