您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 基于光电导航的无人驾驶智能车
1基于光电导航的无人驾驶智能车丁X,梁X,万X电子科技大学光电信息学院四川成都610054【摘要】本系统采用一块以ATmega128单片机为核心的控制板,分别用光电传感器、红外接收管和颜色传感器TCS230,通过对接收信号转换结果进行处理,引导小车前进,转弯,停车。采用直流电机驱动小车的运动,利用H桥电路实现电机制,以PWM方式实现电机调速,并通过差速的控制实现转直角弯的功能。整个系统反应灵敏,误动较小,运动平稳,达到了基本设计的部分要求和指标。1概述本系统主要由直流电机驱动模块、转弯与停车检测模块、边界检测模块,系统控制模块、电源模块组成,下面分别论证这几个模块的选择。2作品实现2.1直流电机驱动模块的论证与选择方案一:采用电机驱动芯片L293D。虽然该芯片内部集成了2个H桥电路,能够很方便地对电机进行控制。但它每桥最大仅能提供0.6A的电流,且其DIP16脚封装散热不强,不适合驱动较大功率的电机,因此不能有效完成指定的任务。方案二:采用由大功率达林顿管组成的H桥驱动电路。但是若要用单片机通过它来实现频繁的PWM调速,所占用的软件资源较多。方案三:采用电机驱动芯片L298N。它同样是双H桥驱动方式,每通道最大可输出2A的电流,采用两通道并联最大电流可达4A,完全可以满足小车在超车区突然提速的功能。同时其Multiwatt封装提供了良好的散热。基于以上分析,结合本题对电机的实际要求,我们采用方案三。1.2转弯与停车检测模块的论证与选择方案一:采用不调制的反射式红外发射接收电路。将反射式红外传感器ST188接收到的模拟信号二值化后输出其精度高,反应快,电路结构简单。方案二:采用调制的反射式红外发射接收电路。利用低频模拟锁相环NE567震荡驱动红外发射头,当接收头收到的反射信号与NE567内部振荡频率一致时,输出低电平,抗干扰性很强其体积小重量轻便于安装。由以上分析知两种方案都可完成转弯与停车检测,为更有效实现基本要求功能,我们给小车配备精度更高反应更快的方案一模块。1.3边界检测模块的论证与选择方案一:采用TCS230是首款带数字兼容接口的RGB彩色光/频率转换器,它内部集成了可配置的硅光电二极管阵列和一个电流/频率转换器,TCS230输出为占空比50%的方波,且输出频率与光强度成线性关系。该转换器对光响应范围为250000-1,典型输出频率范围为2Hz-500kHz,用户可通过两个可编程引脚来选择100%、20%或2%的输出比例因子。TCS230的输入输出引脚可直接与微处理器或其他逻辑电路连接。通过输出使能端OE将输出置于高阻状态可使多个器件共享一条微处理器输入线。使用简单方便。2方案二:使用CCD传感器,其有以下优点:1.高解析度(HighResolution)2.低杂讯(LowNoise)高敏感度3.动态范围广(HighDynamicRange)4.良好的线性特性曲线(Linearity)5.大面积感光(LargeFieldofView):6.低影像失真(LowImageDistortion)7.体积小、重量轻CCD具备体积小且重量轻的特性。但应为其使用方法较为复杂。由上分析可知,为了快速检测边线。采用方案一用TCS230进行检测。1.4控制系统的论证与选择方案一:采用AT89C51单片机为核心的控制系统。可通过输入IO口电平高低的判断实现其对直流电机转动的控制,但其处理速度不及AVR单片机快,工作电压范围不够宽,抗干扰能力也不及AVR强。方案二:采用ATmega128单片机为核心的控制系统。通过红外接收管,光电传感器控制输入IO口电平的高低,控制直流电机转动,从而控制小车运动。其具有低功耗,高性能的AVR8位微处理器,先进的RISC结构。由以上两种方案对比,以及考虑到51单片机与AVR单片机的性价比,我们选择方案二。2系统理论分析与计算2.1小车速度控制分析与算法本系统采用H桥电路实现电机制,以PWM方式实现电机调速。当脉冲控制信号为高电平时H桥导通,为低电平时H桥截止。那么电机的平均功率满足下式(为满占空比时的功率,A为占空比):小车匀速行驶时的速度为:可见通过调节占空比A可实现对小车的调速。3电路与程序设计3.1电路的设计3.1.1单片机最小系统电路图见附录2图3,采用ATmega128单片机为为核心的控制系统,该芯片通过控制以PWM方式实现电机转动与调速,有8个AD转换输入口可实现多个传感器同时工作有效的实现转弯停车等任务3.1.2直流电机驱动电路原理图见附录2图1,以L298P芯片为核心的外围系统控制直流电机的转动。通过控制单片机定时器初值T0和T1,从而可以实现从单片机的任意输出口输出不同占空比的脉冲波形。3.1.3电源电路原理图如附录2图2*fullPPvAff01ATfullfullPPdtAPT3电源由变压部分、滤波部分、稳压部分组成。为整个系统提供5V或9V电压,确保电路的正常稳定工作。这部分电路比较简单,都采用三端稳压管实现,故不作详述。3.2程序的设计程序流程图1、主程序流程图小车流程图否是否是开始前进遇标志向相应的方向进行转弯检测停车标志减速,并停车。发出声光信号系统初始化44系统测试4.1测试条件与仪器测试条件:检查多次,硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。测试仪器:两米卷尺一把,秒表一个4.2基本部分测试数据1234小车能否正常行驶全程能能能能小车行驶全程所用时间t1144S140S146S144S4.3测试结果分析通过实测并根据测试表内容可知,本系统在完成基本功能的控制上的成功率较高,分析原因主要是由于本系统算法及其参数选取,调整,控制对象和硬件特性达到了较好的匹配。但完成每个基本任务的时间还不够短分析有以下原因:1.小车跑道较短,如果车速过快,不能及时灵活的控制其转弯。2.驱动小车的电机由于自身性能限制,使其不能达到理想速度。3.小车负载过重,跑道的摩擦较大,阻碍了其向前运动。尽管小车速度不够理想,但就其完成任务的情况来看,还是可以完成题目基本要求。一.拟解决的关键问题5电路原理图的设计图1:直流电机驱动模块图2:电源系统图3:6二.特色与创新点采用电机驱动芯片L298N其Multiwatt封装提供了良好的散热。采用不调制的反射式红外发射接收电路。其精度高,反应快,电路结构简单。采用TCS230使用简单方便采用ATmega128单片机为核心的控制系统。通过红外接收管,光电传感器控制输入IO口电平的高低,控制直流电机转动,从而控制小车运动。其具有低功耗,高性能的AVR8位微处理器,先进的RISC结构。三.其他说明部分源程序小车程序#includeavr/io.h#includeavr/wdt.h7#includeutil/delay.h#includeavr/pgmspace.h#includeavr/eeprom.h#defineCPU_CLOCK_HZ14745600typedefcharint8;typedefunsignedcharuint8;typedefintint16;typedefunsignedintuint16;typedeflongint32;typedefunsignedlonguint32;////////////////减速电机端口//////////////////////////////////////////////#defineM1_RPORTB|=_BV(PB0)#defineM1_LPORTB&=~_BV(PB0)#defineM1_TOCR0=0#defineM2_RPORTB|=_BV(PB1)#defineM2_LPORTB&=~_BV(PB1)#defineM2_TOCR2=0#defineM3_RPORTB|=_BV(PB2),PORTB|=_BV(PB5)#defineM3_LPORTB&=~_BV(PB2),PORTB|=_BV(PB5)#defineM3_TOCR1A=0#defineM4_RPORTB|=_BV(PB3),PORTB|=_BV(PB6)#defineM4_LPORTB&=~_BV(PB3),PORTB|=_BV(PB6)#defineM4_TOCR1B=0#defineADC_REF_AREF0//ADC的参考电压选择#defineADC_REF_AVCC1#defineADC_REF_INTERNAL3externvoidusertask_uph(void);externvoidusertask_upl(void);externvoidusertask_down(void);externvoidusertask_left(void);externvoidusertask_right(void);externvoidusertask_stop(void);uint16Timer1Data;uint16Timer2Data;uint16Timer3Data;8voidSys_Init(void)//系统初始化{PORTB=0;DDRB=0xff;PORTD=0x00;DDRD=0xc8;DDRF=0x00;//作为ADC输入,方便单片机采样DDRG=0xff;TCCR0=_BV(WGM01)|_BV(WGM00)|_BV(COM01)|_BV(CS01);TCCR2=_BV(WGM21)|_BV(WGM20)|_BV(COM21)|_BV(CS21);TCCR1A=_BV(COM1A1)|_BV(COM1B1)|_BV(WGM11);TCCR1B=_BV(WGM13)|_BV(WGM12)|_BV(CS11);ICR1=0x00FF;sei();}voiddc_moto_control(uint8*point){if(0x80==*point)M1_T;elseif(*point0x80){OCR0=70+(uint8)(((uint16)(0x7f-*point)*145)/100);M1_L;}else{OCR0=70+(uint8)(((uint16)(*point-0x80)*145)/100);M1_R;}if(0x80==*(point+1))M2_T;elseif(*(point+1)0x80){OCR2=70+(uint8)(((uint16)(0x7f-*(point+1))*145)/100);M2_L;}else{OCR2=70+(uint8)(((uint16)(*(point+1)-0x80)*145)/100);M2_R;}9if(0x80==*(point+2))M3_T;elseif(*(point+2)0x80){OCR1A=70+(((uint16)(0x7f-*(point+2))*145)/100);M3_L;}else{OCR1A=70+(((uint16)(*(point+2)-0x80)*145)/100);M3_R;}if(0x80==*(point+3))M4_T;elseif(*(point+3)0x80){OCR1B=70+(((uint16)(0x7f-*(point+3))*145)/100);M4_L;}else{OCR1B=70+(((uint16)(*(point+3)-0x80)*145)/100);M4_R;}}intmain(void){uint8circle;/Sys_Init();circle=0;usertask_upl();intt=180;while(t){_delay_ms(15);t--;}while(circle100){if((PINF&0x01)|(PINF&0x02))//遇路口交通标志转弯判断语句,前后左右传感器的AD采样{intt=180;while(t)10{_delay_ms(15);t--;}usertask_left();usertask_upl();circle=circle+1;}}usertask_uph();while(c
本文标题:基于光电导航的无人驾驶智能车
链接地址:https://www.777doc.com/doc-7198558 .html