学 士 学 位 论 文
自动避障避险小车的设计
姓 名: | |
学 号: | |
指导教师: | |
院系(部所): | |
专 业: | |
完成日期: |
本系统以STC12C5A60S2单片机为控制核心,充分利用了自动检测技术、光电传感技术和MOS管H桥电机驱动电路,并在系统供电电路上进行了创新设计,取得了较好的效果。
通过光电对管传感器自动检测黑色标志线,单片机利用PID算法对数据进行整合处理得到相应的控制信息,输出对应的PWM信号到MOS管H桥电机驱动中进而控制直流电机,实现车辆的实时智能控制。光电开关采集车与障碍物的距离,智能化处理车辆避障避险的自动控制。
【关键字】 STC12C5A60S2;PC机;MOS管H桥电路;避障避险
Abstract
This system STC12C5A60S2 microcontroller core , take full advantage of the automatic detection technology, optical sensing technology and MOS transistor H -bridge motor drive circuit and the system power supply circuit innovative design , and achieved good results.
Automatic detection by photoelectric sensor black mark on the tube line , single-chip integrated PID algorithm for data processing control information corresponding output PWM signal corresponding to a MOS transistor H -bridge motor driver then control the DC motor to achieve real-time intelligent control of the vehicle . Photoelectric switch collected from the car and the obstacle , obstacle avoidance hedging vehicle intelligent processing automatic control .
【Key words】 STC12C5A60S2; PC; H-bridge driver circuit of MOS; Avoidance hedging
第1章 绪论
1.1 课题研究的意义
自第一台工业机器人诞生以来,机器人的发展已经遍及机械、电子、冶金、交通、宇航、国防等领域。近年来机器人的智能水平不断提高,并且迅速地改变着人们的生活方式。人们在不断探讨、改造、认识自然的过程中,制造能替代人劳动的机器一直是人类的梦想。
随着科学技术的发展,机器人的感觉传感器种类越来越多,其中视觉传感器成为自动行走和驾驶的重要部件。视觉的典型应用领域为自主式智能导航系统,对于视觉的各种技术而言图像处理技术已相当发达,而基于图像的理解技术还很落后,机器视觉需要通过大量的运算也只能识别一些结构化环境简单的目标。视觉传感器的核心器件是摄像管或CCD,目前的CCD已能做到自动聚焦。但CCD传感器的价格、体积和使用方式上并不占优势,因此在不要求清晰图像只需要粗略感觉的系统中考虑使用接近觉传感器是一种实用有效的方法。
机器人要实现自动导引功能和避障功能就必须要感知导引线和障碍物,感知导引线相当给机器人一个视觉功能。避障控制系统是基于自动导引小车(AVG—auto-guide vehicle)系统,基于它的智能小车实现自动识别路线,判断并自动避开障碍,选择正确的行进路线。使用传感器感知路线和障碍并作出判断和相应的执行动作。
1.2 课题研究的背景
国外智能车辆的研究历史较长,始于上世纪50年代,它的发展历程大致可分为三个阶段:
第一阶段:20世纪50年代是智能车辆研究的初始阶段。早期研制该系统的目的是为了提高仓库运输的自动化水平,应用领域仅局限于仓库内的物品运输,但它却具有了智能车辆最基本的特征即无人驾驶。随着计算机的应用和传感器技术的发展,智能车辆的研究不断得到新的发展。
第二阶段:从80年代中后期,师姐主要发达国家对智能车辆开展了卓有成就的研究。进入80年代中期,设计和制造智能车辆的浪潮席卷了全世界,一大批世界著名的公司开始研究智能车辆平台。
带三阶段:从90年代开始至今,智能车辆进入了深入、系统、大规模的研究阶段。最为突出的是,美国卡内基—梅隆大学机器人研究所一共完成了Navlab系列的自主车的研究,取得了显著成就。
相比与国外,我国开展智能车技术方面的研究起步较晚,始于20世纪80年代,而且大多数研究尚处于针对某个单项技术研究的阶段。
中国第一汽车集团和国防科技大学机电工程与自动化学院于2003年研制成功了我国第一辆自主驾驶轿车。
上海交通大学应用现代控制理论设计出了一种自动驾驶汽车模型,该模型在汽车系统的动力学建模的基础之上,设计了自动驾驶的专项系统,它能根据的弯曲变化程度实时的计算出车辆的转向盘角度,控制车辆按照预设道路行驶。
智能车辆研究也是智能交通系统ITS的关键技术。目前,国能许多高校和科研院所都在进行ITS关键技术、设备的研究,随着ITS研究的兴起,我国已经形成了一支ITS技术研究开发的专业技术队伍。
1.3 课题研究的主要内容
其实智能车,就是一个机器人,其可以分为三大结构:传感器检测、机械执行、处理器。智能车通过感知导引线和障碍物,可以实现自动循迹、避障等功能,且可以通过一套完整的控制策略,改善小车的行驶状况,达到更加稳定的状态。 要完成上述的功能设计,传感检测部分可以采用能够感知清晰的图像的摄像头,或者选用人们常用的光电对管传感器来感测路况。而智能小车的机械部分,可以采用四轮车(带有舵机)、或者三轮车(前轮为万向轮),电机则只需使用直流电机即可。对于主控芯片CPU,我们选择简单易用的51单片机或高级复杂额ARM等芯片,通过配合软件编程,可以很好的实现自动寻迹、避障的功能。
第2章 系统方案设计与论证
2.1 系统总体框架
智能避障避险小车自动控制系统以STC12C5A60S2单片机为核心控制器,通过光电对管采集信息并传送给STC12C5A60S2单片机,单片机利用PID算法对信息进行处理,输出4路PWM波通过MOS管H桥电机驱动控制4个电机,实现电动小车的智能行驶。单片机通过光电对管、光电开关采集信息,利用PID算法处理数据,驱动电机转动,带动小车智能行驶,小车的行驶又不断更新采集到的信息到单片机上,从而实现小车会车自动控制。
为了较好的实现系统各个监测模块的功能和彼此之间的配合衔接,并且考虑到整个系统的实现难易程度,以及性价比,对系统各个模块做了几个方案并对其进行了设计与对比论证,具体论证如下:
2.2 单片机的选择
方案一:采用现在比较通用的51系列单片机。此系列单片机是8位机,处理速度较慢,I/O资源较少,程序存储空间小,没有控制PWM的寄存器,对电机控制不方便。而且其最小系统的外围电路都要自己设计和制作,使用起来不方便。
方案二:可编程逻辑器件CPLD,它具有编程灵活、集成度高、设计开发周期短、适用范围宽、开发工具先进、设计制造成本低、标准产品无需测试等特点,可实现较大规模的电路设计。但是,该器件主要依赖于软件设计,缺少硬件的配合,致使程序设计复杂,难以使用,运算速度太快。CPLD同样难以满足本设计的需要[]。
方案三:STC的一些芯片完全兼容MCS-51,新增两级中断优先级,多一个外中断,内置EEPROM,512B内存等。速度快8~12倍, 2路PWM,抗干扰强。具有与8051兼容的高速CIP-51内核,与MCS-51指令集完全兼容,片内集成了数据采集和控制系统中常用的模拟、数字外设及其他功能部件;内置FLASH程序存储器、内部RAM。片上I/O口资源丰富,拓展功能齐全。
结合题目的要求,STC单片机的特点与实际的需求,本系统选用方案三STC单片机作为主控芯片,实现整个系统的调节控制。
2.3 电源模块的选择
方案一:使用干电池。干电池价格便宜,随处可买来使用,使用过程轻松无需护理。但是,因其内阻相对较大,所以放电电压特性较软,也导致其输出电流能力不及蓄电池。
方案二:使用蓄电池。蓄电池一次性投资大,但多次使用可以彰显其经济性,供电时内阻小,电流电压特性硬。
比较以上两种方案,方案二更好,使用7.2V蓄电池电压更加稳定,有利于智能小车的行驶。
2.4 电机驱动模块的选择
方案一:采用L298电机驱动模块。L298内部就是8个功率管加驱动电路,使用起来电路简单。L298内置两个H桥,每个H桥提供1A的额定工作电流和最大3A的峰值电流。
方案二:采用三极管H桥驱动。采用三极管NPN8050和PNP8550组成的H桥电路作为驱动器驱动直流电机。
方案三:采用MOS管H桥驱动。采用MOS管LM3205和LM4905组成的H桥电路作为驱动器驱动直流电机。MOS管是压控元件,具有输入阻抗大,所以对电压源的负载轻。开关速度快、无二次击穿现象等特点,满足高速开关动作需求。
比较以上三种方案,方案一的不足之处在于L298电机驱动模块的驱动马达较小,单端驱动方式性能比较差。方案二晶体管本身有导通电阻,在通过大电流时会明显发热,如果没有散热措施会很容易烧毁,这样就会电路功率的增加。方案三MOS管的导通电阻值比普通三极管低,允许流过更大的电流,而且MOS管都内置有反向二极管来保护管子本身。所以,采用方案三MOS管连接H桥不但效率可以提高,电路也可以简化。
2.5 整流降压模块的选择
方案一:采用三端固定式集成稳压模块7805.此模块是串联型稳压电源,噪音小,压差大,纹波较小,当该稳压器输入电压为5.6V时,输出电压为5.0V,功耗为4.5W,功耗大,需要加散热片。输出电压精度低。
方案二:采用开关型稳压模块2596.此模块是降压型电源管理单片集成电路,能够输出3A的驱动电流,同时具有很好的线性和负载调节特性。内部集成频率补偿和固定频率发生器。压差较小,纹波大,IC的发热量小。输出电压的误差可以保证在 的范围内,振荡频率误差在 的范围内。
方案比较与选择:方案一采用7805压差大,虽然最小压差为2V,7.2V电池电源降压到5V时,输出电压不稳,效率很低。功耗太大,对于用电池供电的小车来说无疑是对电能的浪费,大大减小了电池的可供电时间。方案二采用LM2596芯片很容易的解决了使用7805芯片带来的不足之处,其压差小、功耗低、输出电压稳定、散热小等特点。所以,采用方案二更加合理。
2.6 寻迹模块的选择
方案一:小车循迹,我们通常采用红外检测的方法,红外检测法是通过黑线和白色对红外线的吸收效果不同,当红外光线射到白色底板时,会发生漫反射反射到智能车的接受管上,而射到黑线则会被吸收不会产生发射,智能车红外接收管就接收不到。故整个智能车通过红外接收管是否接收到红外线来判断黑线和白线的[11],从而实现循迹。但需要主要的是,红外传感器的检测距离有限,一般在3cm之内。红外光电传感器由1个红外发射管(发射器)和1个光电二极管(接收器)所构成。 本次设计,红外光电传感器我们采用是的ST188,其是由发射功率红外光电二极管和高灵敏度光电晶体管构成,它使用的非接触式检测方式,且检测距离范围较大,一般为4~13mm。
方案二:采用OV7620数字摄像头,内置10位双通道A/D转换器,输出8位图像数据具有自动增益和自动白平衡控制,能进行亮度、对比度、饱和度、γ校正等多种调节功能;其视频时序产生电路可产生行同步、场同步、混合视频同步等多种同步信号和像素时钟等多种时序信号;数字摄像头采集到的数字信号,用于处理道路情况,16.67ms采集一幅画面,但是价格较贵,采集一次时间较长,数据量太大对CPU占用严重。
比较以上两种方案,方案一更适合小车实现寻迹。
2.7 避障模块的选择
方案一:采用光电开关。能结合单片机的工作主频精确监测到人员的通过量,经济实用,并且监测距离适中,电气特性相对稳定,性价比较高,其检测距离可以根据我们的需要进行调节。此传感器探测距离远,抗干扰性强,且价格低廉,容易使用,已在机器人行业中得到广泛应用。
方案二:采用超声波传感器。超声波传感器是利用超声波的特性研制而成的传感器。超声波是一种振动频率高于声波的机械波,由换能晶片在电压的激励下发生振动产生的,它具有频率高、波长短、绕射现象小,特别是方向性好、能够成为射线而定向传播等特点。超声波对液体、固体的穿透本领很大,尤其是在阳光不透明的固体中,它可穿透几十米的深度。超声波碰到杂质或分界面会产生显著反射形成反射成回波,碰到活动物体能产生多普勒效应。因此超声波检测广泛应用在工业、国防、生物医学等方面。
由于智能避障避险小车对距离长度信息的采集相对比较固定,光电开关控制比较方便,且价格低廉。而超声波传感器,采集数据时间相对较长且短距离采集数据稳定性较差。所以,方案一更适合课题的设计。
第3章 硬件电路设计与实现
3.1 CPU性能介绍
STC12C5A60S2系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
3.2 MOS管H桥电机驱动模块
MOS管H桥电路用于驱动电机并控制电机正反转。如下图,它由2个P型场效应管Q1、Q2与2个N型场效应管Q3、Q4组成。所以,它也叫P-N MOS管H桥电路。
桥臂上的4个场效应管相当于四个开关,P型管在栅极为低电平时导通,高电平时关闭;N型管在栅极为高电平时导通,低电平时关闭。场效应管是电压控制型元件,栅极通过的电流几乎为“零”。
正因为这个特点,在连接好下图电路后,控制臂PP3_OUT置高电平(U=VCC)、控制臂PP2_OUT置低电平(U=0)时,Q1、Q4关闭,Q2、Q3导通,电机左端低电平,右端高电平,所以电流沿箭头方向流动。设为电机正转。
控制臂PP3_OUT置低电平、控制臂PP2_OUT置高电平时,Q2、Q3关闭,Q1、Q4导通,电机左端高电平,右端低电平,所以电流沿箭头方向流动。设为电机反转。从而实现电机的正反转,MOS管H桥电机驱动模块电路如图3-2所示:
图32 MOS管H桥电机驱动模块电路图
3.3 整流升压模块
系统由蓄电池供电,电池电压的稳定性不是很好,要实现对直流电机的精确控制,首先要控制直流电机的电压稳定,采用LM2577芯片的升压电路,把7.2V蓄电池升压为8V直流电压供给直流电机。整流升压模块电路图如图3-3所示:
图33整流升压模块电路图
3.4 整流降压模块
系统由蓄电池供电,电池电压为7.2V,而单片机、光电开关、光电对管都需要5V供电,所以需要降压模块把电池电压,降为可为单片机、光电开关、光电对管供电的5V电压。整流降压模块电路如图34所示:
图34整流降压模块电路
第4章 系统软件设计及实现
4.1 主程序框图
图41主程序流程图
4.2 光电传感器采集处理信息
图42光电传感器采集处理信息流程图
4.3 避障避险流程
图43 避障避险程序控制流程图
参考文献
附 录
附录 系统原理图
附录 光电传感器电路图
附录 整流升压模块原理图
附录 实物图片
附录V 部分程序
#include #define uint unsigned int #define uchar unsigned char /*---------------定时器1模拟PWM----------------*/ sbit PWM_0 = P2^4; sbit PWM_1 = P2^5; sbit PWM_2 = P2^6; sbit PWM_3 = P2^7; uchar PWM_ON0, PWM_ON1, PWM_ON2, PWM_ON3; uchar count0, count1, count2, count3; void time1_init(); //定时器1初始化 void pwm_init(); //模拟PWM 放在定时器1中使用 void dianji_zuo(uchar aa,uchar pwm) ; void dianji_you(uchar aa,uchar pwm) ; /*************************************************************/ /* STC12C单片机 定时器1初始化 */ /*************************************************************/ void time1_init() { AUXR |= T1x12; //定时器1 改为不分频 TMOD|=0X10; //启动定时器1 TH1=(65536-500)/256; TL1=(65536-500)%256; EA=1; ET1=1; TR1=1; } /*************************************************************/ /* STC12C单片机 定时器1模拟PWM */ /*************************************************************/ void pwm_init() { if(count0==PWM_ON0) //第一路 PWM_0 = 1; count0++; if(count0 == 100) { if(PWM_ON0!=0) PWM_0 = 0; count0=0; } //-----------PWM_ON1-------------// if(count1==PWM_ON1) //第二路 PWM_1 = 1; count1++; if(count1 == 100) { if(PWM_ON1!=0) PWM_1 = 0; count1=0; } //-----------PWM_ON2-------------// if(count2==PWM_ON2) //第三路 PWM_2 = 1; count2++; if(count2 == 100) { if(PWM_ON2!=0) PWM_2 = 0; count2=0; } //-----------PWM_ON3-------------// if(count3==PWM_ON3) //第四路 PWM_3 = 1; count3++; if(count3 == 100) { if(PWM_ON3!=0) PWM_3 = 0; count3=0; } //-------------------------------// } /*************************************************************/ /* 左电机 控制 */ /*************************************************************/ void dianji_zuo(uchar aa,uchar pwm) { if(aa==0) // 左电机 停止 车右拐// 1 前进 { PWM_ON1=0; PWM_ON0=0; } if(aa==1) //左电机 前进 { PWM_ON1 = pwm ; PWM_ON0 = 0; } if(aa==2) //左电机 后退 { PWM_ON1 = 0 ; PWM_ON0 = pwm; } } /*************************************************************/ /* 右电机 控制 */ /*************************************************************/ void dianji_you(uchar aa,uchar pwm) { if(aa==0) // 左电机 停止 车右拐// 1 前进 { PWM_ON3=0; PWM_ON2=0; } if(aa==1) //左电机 前进 { PWM_ON3 = pwm ; PWM_ON2 = 0; } if(aa==2) //左电机 后退 { PWM_ON3 = 0 ; PWM_ON2 = pwm; } } /*************************************************************/ /* 定时器中断1 */ /*************************************************************/ void time1() interrupt 3 { TH1=(65536-500)/256; TL1=(65536-500)%256; pwm_init(); } void main() { time0_init(); //定时器0初始化 time1_init(); //定时器1初始化 pwm_init(); //模拟PWM 放在定时器1中使用 P0=0xff; key_moshi(); while(1) { if(key5 == 1) { guangdian_duiguan(); guangdian_kaiguan(); biaozhiwei_chuli2(); led_xianshi(); } } } 致 谢 本文论文的主要内容写作始终都是在导师**老师的悉心指导下完成的。首先对*老师致以最崇高的敬意和诚挚的感谢!是他引导、鼓励我在一个崭新的领域里进行了有意的探索,并帮助我克服了种种困难!*老师严谨的科研态度、平易近人的作风、强烈的创新意识、敏锐的洞察力、渊博的知识、开阔的眼界,一丝不苟的敬业精神都是我一直学习的榜样,从*老师那里我学到了许多有益的思想方法和宝贵的经验,并将终生影响我对学习、工作和生活的态度。 本文论文的最终完稿是在*老师的精心指导和帮助下完成的,在此对导师*老师致以崇高的敬意和诚挚的感谢!四年来无论在学习,生活和工作上,*老师都给予了大力的帮助和指导。 同时感谢*老师在完稿过程中给予的建议和帮助,他的指导和建议使我的论文更加完善,在此对*老师致以诚挚的感谢。 饮水思源,师恩难忘,再次衷心感谢教育、指导我的老师们!下载本文