智能车教程教材_第1页
智能车教程教材_第2页
智能车教程教材_第3页
智能车教程教材_第4页
智能车教程教材_第5页
已阅读5页,还剩244页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

5.2.1单片机最小系统图5.2使用单片机外部程序存储器的单片机最小系统5.2.2单片机系统的扩展在单片机应用系统硬件设计中,虽然单片机的最小应用系统拥有较高的性价比,但在功能很复杂的系统中,最小系统往往不能满足要求,往往需要连接各种设备,形成各种接口通道。因此,单片机系统的扩展成了单片机应用系统硬件设计中最常遇到的也是不可避免的问题。单片机系统的扩展包括数据存储器(RAM)扩展、程序存储器(ROM/EPROM)扩展、输入/输出(I/O)扩展、定时/计数器扩展、中断系统扩展及其他特殊功能扩展。5.2.2单片机系统的扩展

1.程序存储器扩展单片机系统扩展中,最常见的是程序存储器扩展,在扩展时需注意以下几方面的问题:

(1)可分配地址空间。在MCS-51系列单片机中,程序存储器可占用0000H~FFFFH间64K的存储空间。虽然地址可与数据存储器或I/O口重叠,但它们实际上是两个相互对立的存储空间。硬件上程序存储器通过使用PSEN而不是用RD进行控制读操作;软件上用MOVC而非MOVX执行读操作命令。

(2)地址译码电路。随着大规模集成电路的发展,程序存储器的容量越来越大,仅需使用一两片芯片就可满足系统对容量的要求,因此地址译码通常采用直接或用反相器产生片选信号的方式。但是,在扩充多片程序存储器时,地址译码一般采用译码器方式,以获得地址范围连续而又不相重叠的片选信号。这是因为程序机器码在存储空间中需要连续放置,因此各存储器占用的程序存储器空间必须相互连续。另外,分配给程序存储器的地址范围还必须包含单片机的启动程序。5.2.2单片机系统的扩展

(3)程序存储器扩展方法。其他接口扩展芯片与程序存储器共用地址总线、数据总线和部分控制总线。其中控制总线有ALE低8位地址信号锁存控制、PSEN外部程序存储器读控制。EPROM程序存储器扩展电路如图5.3所示。图5.3(a)中系统只扩展一片EPROM,可将EPROM的片选端直接接地;图5.3(b)中的系统扩展了两片EPROM,若P2.i等于0,就选择了EPROM(1),若P2.i等于1,就选择了EPROM(2)。

(4)常用程序存储器芯片。程序存储器芯片最常见的是Intel公司的典型系统芯片2716(2K×8),2732(4K×8),2764(8K×8),27128(16K×8),27256(32K×8)和27512(64K×8)等。近年来大容量EPROM芯片不断涌现,2764以上的大容量芯片在单片机应用系统程序存储器扩展中得到越来越广泛的使用。5.2.2单片机系统的扩展图5.3EPROM程序存储器扩展电路图5.3EPROM程序存储器扩展电路5.2.2单片机系统的扩展2.数据存储器扩展在单片机系统扩展中,最常见的数据存储器扩展是静态随机存取存储器SRAM的扩展,在扩展时应注意以下几个方面的问题:(1)存储器地址空间。在MCS-51系列单片机中,任何扩展的数据存储器、I/O口及外围设备的地址都不能相互重叠,但可以和程序存储器地址重叠。因为数据存储器与I/O口是统一编址的,共用0000H~FFFFH间的64K地址空间。(2)数据存储器读写控制。数据存储器与I/O口的读/写控制可以通过RD和WR指令,地址总线和数据总线则与程序存储器共用。(3)数据存储器扩展方法。图5.4所示的是数据存储器扩展电路。除了在读写控制上使用不同信号和不同指令外,数据存储器扩展方法与程序存储器扩展方法是一样的。(4)常用数据存储器芯片。目前常用数据存储器芯片有SRAM6116(2K×8),6264(8K×8)和62256(32K×8)等。另外,电可擦除只读存储器、E2PROM2816(2K×8)和E2PROM2864(8K×8)等也可作为数据存储器使用。5.2.2单片机系统的扩展图5.4RAM数据存储器扩展电路5.2.2单片机系统的扩展3.输入/输出(I/O)口扩展大部分单片机应用系统设计中都不可避免地要进行I/O口扩展。因为单片机本身能提供的有限的I/O口中的许多都有复用功能,当这些口被复用功能占用后,留给用户系统的I/O口就不多了。在进行I/O口扩展时,应注意以下几个方面的问题:(1)I/O口寻址空间。在MCS-51系列单片机应用系统中,扩展的I/O口与数据存储器占用统一编址的64K存储空间,而与外部程序存储器空间无关。指令上扩展I/O口具有与数据存储器相同的寻址方式,且地址总线、数据总线与控制总线的连线也与数据存储器相同。(2)单片机提供的I/O口。当单片机本身的I/O口在复用功能未被使用时,这些口可当作普通的I/O口使用。5.2.2单片机系统的扩展图5.5所示的是用TTL芯片扩展的简单I/O口电路。图5.5(a)中通过锁存器74LS273扩展8位并行输出口。在通过数据总线扩展输出口时,锁存器被视为一个外部RAM单元,输出控制信号为WR,使用MOVX@DPTR,A指令。当单片机向锁存器输出数据时,地址信号P2.7和写信号WR同时有效,使或门输出低电平接入锁存器CLK端。当WR由低变高时,锁存器CLK端的信号上升沿将数据总线上的数据锁存到输出端,完成输出操作。图5.5(b)所示为用三态门74LS245通过数据总线扩展的8位并行输入接口。三态门由P2.7和RD进行或控制,使用MOVX@DPTR,A指令。当单片机产生地址信号和RD信号,经或门产生低电平信号时,控制三态门打开,输入信号便可经数据总线送入单片机内部。

5.2.2单片机系统的扩展图5.5TTL芯片扩展的简单I/O接口电路5.2.2单片机系统的扩展此外,还可以利用单片机的串行口和移位寄存器也可以实现I/O口的扩展。这种I/O是通过串行口把串行数据转换为并行数据,或是把并行数据转换为串行数据,此种扩展方法速度较慢,但所扩展的I/O口不占用片外I/O口地址。图5.6(a)所示是利用移位寄存器74LS165(并行输入串行输出)扩展的8位并行输入接口电路。单片机与74LS165的串行输出端相连的RXD作为串行输入端,与74LS165的时钟输入端相连的TXD端作为移位脉冲输出端,控制74LS165数据输出节拍。移位和置数过程通过单片机的一根I/O线(如P1.0)来控制。图5.6(b)所示是利用串行输入并行输出移位寄存器74LS164扩展的8位并行输出接口电路。单片机与74LS164的数据输入端相连的RXD和TXD分别作为串行数据输出端和移位脉冲输出端,普通I/O口P1.0用于清除74LS164的输出数据。5.2.2单片机系统的扩展除了以上I/O口的扩展方法外,I/O接口的扩展还可以通过专用接口芯片,例如可编程的并行I/O接口芯片8255,图5.7所示的就是通过8255进行I/O扩展的电路。8255由并行I/O端口、数据总线驱动器、读/写控制逻辑和A组,B组控制块四个逻辑结构组成。8255通过读、写控制逻辑实现全部的工作状态。在单片机应用系统中,8255的读写操作是通过单片机的地址信号线A0和A1、数据信号线D0~D7,及控制信号线WR,RD,CS实现的。在使用可编程接口芯片时,除要有正确的硬件,软件中应增加相应的初始化操作。这是因为,用可编程接口芯片扩展I/O口可以通过软件灵活方便地选择接口的工作方式。初始化工作主要是根据应用对芯片的工作方式进行相应的设定,使各口线工作在输入或输出状态。5.2.2单片机系统的扩展图5.6利用串行口扩展I/O接口电路5.2.2单片机系统的扩展图5.7可编程芯片扩展I/O接口电路5.2.2单片机系统的扩展在使用可编程接口芯片时,除要有正确的硬件,软件中应增加相应的初始化操作。这是因为,用可编程接口芯片扩展I/O口可以通过软件灵活方便地选择接口的工作方式。初始化工作主要是根据应用对芯片的工作方式进行相应的设定,使各口线工作在输入或输出状态。

(3)常用I/O口扩展芯片常用的I/O口扩展的TTL芯片有三态门(74LS241,74LS244,74LS245)、锁存器(74LS273,74LS273,74LS374)、串行输入/并行输出移位寄存器(74LS164,74LS595)、并行输入/串行输出寄存器(74LS165,74LS166)和可编程I/O接口芯片(8255,8155)等。

5.2.2单片机系统的扩展4.其他外围芯片扩展在单片机应用系统中,除了程序存储器、数据存储器及I/O口这些系统主要部件外,还有一些满足系统应用的十分有用的外围芯片,如中断系统、定时/计数器、键盘、显示控制器及串行通信控制器等。这些外围芯片内部大都设有与微处理器芯片的接口电路,接口电路主要由控制命令逻辑电路、状态存储器与设置电路、数据存储与缓冲电路三部分组成,用来实现单片机信号与外围芯片内部信号的转换工作。由于大部分外围芯片能与微处理器芯片直接相连,因此在单片机应用系统中扩展,接口电路比较简单。图5.8所示为外围芯片与微处理器芯片连接的典型电路,中央处理器CPU与外围芯片连接的信号主要是总线信号,包括地址信号、数据信号、读写控制信号、定时信号、中断信号和复位信号等。

5.2.2单片机系统的扩展图5.8一般外围芯片扩展电路

5.2.2单片机系统的扩展此外,有些外围芯片(接口芯片)专门用来控制微处理器芯片与外围设备的连接,它们与外围设备连接的信号主要是输入/输出控制信号和数据信号。不同的控制方式下,接口信号的复杂程度也不同。由于中断接口与DMA接口的控制信号更为复杂,因此通常要由接口芯片提供专用控制信号才能完成数据传输。在单片机应用系统中用到的外围芯片较常见的有:可编程控制器8259,可编程直接存储器存取控制器(DMA)8237,8257;可编程CRT控制器8275,8276,MC6845,MC6847,可编程键盘、显示接口8279;可编程通信接口8250,8251;可编程定时器8253,8254;点阵式打印机控制器8295;A/D和D/A转换芯片等。5.3FreescaleHCS12单片机15.3.1

FreescaleHCS12单片机系列简介

25.3.2

FreescaleHCS12单片机最小系统

5.3.1FreescaleHCS12单片机系列简介

FreescaleHCS12微控制器系列产品是飞思卡尔公司于2002年在68HC12微控制器的基础上升级开发出来的。它是基于16位CPU的控制器,其前身是8位的68HC11微控制器。HCS12系列产品的工作电压为5V,时钟频率最高为25MHz。该系列产品微控制器的结构及特点如下:(1)HCS12的核心①16位HCS12CPU:20位ALU,指令队列,增强型索引寻址;②多种外部总线接口(MEBI);③模块映射控制机制(MMC);④中断控制(INT);

5.3.1FreescaleHCS12单片机系列简介⑤断点(BKP);⑥背景调试模块(BDM)。(2)CRG时钟和复位发生器①锁相环(PLL);②看门狗(COPWATCHDOG);③实时中断(RTI);④时钟监视器(CM)。(3)带中断功能的8位和4位端口可编程的上升沿或下降沿触发。5.3.1FreescaleHCS12单片机系列简介(4)存储器HCS12存储器有内部寄存器、RAM、EEPROM和FLASH/ROM。每个存储单元对应一个地址,共有64K个地址,用4位十六进制数表示(0000H~FFFFH)。存储器中每个存储单元可存放一个8位二进制信息,这就是存储器存储单元内的内容。不同的存储器占用不同的存储空间。(5)2个8通道A/D转换器HCS12内置了2个10位/8位的A/D模块:ATD0和ATD1。HCS12的ATD是逐次逼近型A/D转换器,它内置多路器,精度为2LSB,无需外部采样保持电路。HCS12ATD在寄存器区内共有28个寄存器,其中3个仅用于HCS12生产线的内部调试。HCS12ATD的最高转换频率约为2MHz,ATD模块的特点如下:5.3.1FreescaleHCS12单片机系列简介

8位/10位精度可选择;

8位数字量转换时间仅需6μs,10位数字量转换时间仅需7μs;

具有采样缓冲器和放大器;

可编程采样时间;

数据可选择左/右对齐方式和无符号/有符号数据方式;

转换结束标志和转换结束中断;

外部触发控制;

模拟输入的8个通道为复用方式,采用多通道扫描方式;

模拟/数字输入引脚复用;

可选择单次转换模式或连续转换模式。5.3.1FreescaleHCS12单片机系列简介(6)3个1Mb/s的CAN总线模块,兼容CAN2.0A/B①5个接收缓冲器,3个发送缓冲器;②4个独立的中断通道(发送中断、接收中断、错误中断和唤醒中断);③低通滤波器唤醒功能。(7)增强型捕捉定时器(ECT)ECT功能相当于高速的I/O口,由一个16位自由运行计数器、8个16位的输入捕捉/输出比较通道、一个16位脉冲累加器以及一个16位模数递减计数器(MDC)组成。HCS12ECT有以下特点:

4个具有16位缓冲寄存器的输入捕捉通道;

4个8位脉冲累加器可以通过级联形成2个16位的脉冲累加器;

5.3.1FreescaleHCS12单片机系列简介

1个具有4位预分频的16位递减模/数计数器;

4个可选的延迟计数器用来增强输入抗干扰能力。(8)8个PWM通道①每个通道的周期和占空比由程序决定;②8个8通道或16个4通道;③各通道独立控制;④脉冲在周期内中心对称或左对齐输出;⑤可编程时钟选择逻辑;⑥紧急事件关断输入;⑦可作为中断输入。5.3.1FreescaleHCS12单片机系列简介(9)串行口①2个异步串行通信接口(SCI)SCI是一种采用标准的不归零数据NRZ格式的异步串行通信接口,它内置独立的波特率产生电路和SCI收发器,可以选择8或9个数据位(其中9位数据格式的第9位可由SCI控制寄存器的M位指定位奇或偶校验位)。发送和接收的奇偶校验位可以选择是否由硬件生成。SCI的特点是:双线串行接口,标准NRZ格式,硬件自动生成奇偶标志,全双工操作,独立波特率产生逻辑,独立的发送器和接收器允许控制位,通信中采用中断驱动机制,具有回送方式,可以监视发送器的输出,实现通信过程的自诊断。5.3.1FreescaleHCS12单片机系列简介②2个同步串行设备接口(SPI)SPI系统的时钟源是总线时钟,可以通过设置SPI波特率寄存器来选择分频系数。HCS12SPI的核心是一个8位移位寄存器,数据传输时,在时钟信号SCK的控制下,数据寄存器的数据从8位移位寄存器移出或移入。SPI数据寄存器有SPI控制寄存器1(SPICR1)和SPI控制器2(SPICR2)设置。SPI状态寄存器可以通过设置改变SPI的工作状态。当SPI系统使能时,PORTS端口的PS7~PS4四个引脚将分别为SPI的MISO,MOSI,SCK,引脚。SPI有三种工作模式:主机模式、从机模式和双工模式。5.3.1FreescaleHCS12单片机系列简介(10)总线①兼容总线标准;②多组总线模块。(11)LQFP-112和QFP-80封装选择①5V输入和带驱动能力I/O;②5VA/D转换器输入;③50MHz系统频率;④单线背景调试模块;⑤片上硬件断点。5.3.2MC9S12DG128最小系统设计MC9S12DG128芯片是全国智能汽车竞赛组委会指定各参赛队使用的FreescaleHCS12系列中的一款芯片,本节介绍以MC9S12DG128芯片为核心的最小系统的组成,如图5.9所示。该最小系统主要包括以下几个部分:时钟电路、串口电路、BDM接口、供电电路、复位电路和调试用LED灯。各个部分的功能分别如下:(1)时钟电路为单片机提供一个外接的16Hz的石英晶振。(2)串口的RS-232驱动电路可实现TTL电平与RS-232之间的转换。(3)BDM接口允许用户通过该接口向单片机下载和调试程序。(4)供电电路主要是给单片机提供+5V的电源。(5)复位电路是通过一个复位芯片给单片机一个复位信号。(6)调试用LED灯和单片机的PORTB口相连,供程序调试使用。5.3.2MC9S12DG128最小系统设计1.时钟电路时钟电路是单片机系统可靠运行的关键之一。如果时钟电路在设计上存在问题,会造成时钟电路不稳定,且时钟电路的高频噪声会引起系统的兼容性下降,会成为系统永久的隐患。这种不稳定因素带来的不可靠性会给整个系统的调试工作带来极大的困难,设计人员一般很难发现会是由于时钟电路设计不合理或辅助元器件参数有问题造成的。因此,时钟电路的设计需要引起初学者的重视,在辅助元器件参数的选择、印刷电路板的布线等方面需要给予很大程度的重视。对于初学者,在设计时钟电路时,可以首先使用有源振荡器作为外部时钟,并且振荡器的频率不必太高,积累足够的经验后再使用频率更高的晶振。若使用无源石英晶振时,也可以不使用内部锁相环倍频电路。5.3.2MC9S12DG128最小系统设计5.3.2MC9S12DG128最小系统设计标准的MC9S12DG128单片机的时钟电路,通过把一个16MHz的外部晶振接到单片机的外部晶振输入接口EXTAL和XTAL上,然后利用MC9S12DG128内部的压控振荡器(VCO)和锁相环(PLL)把这个频率提高到25MHz,使之作为单片机工作的内部总线时钟。值得注意的是,MC9S12DG128单片机的外时钟电路既可以使用串联振荡电路,也可以使用并联振荡电路。使用串联振荡电路时,XCLKS引脚即PE7引脚要拉低,而使用并联振荡电路或外部有源振荡器时,该引脚要拉高。因此,在最小系统的设计中,通常会设计一处跳线,方便选择外部有源振荡器还是串联振荡电路。图5.10所示是最小系统外接无源晶振的接口电路。若直接使用有源振荡器,则可以接一个16MHz的外部有源晶体振荡器,经单片机内部分频后得到一个8MHz的总线时钟。由于EXTAL的输入电压为2.5V,故有源晶体振荡器输出的时钟信号必须经分压后才可以和EXTAL连接。5.3.2MC9S12DG128最小系统设计图5.10最小系统外接无源晶振的接口电路

5.3.2MC9S12DG128最小系统设计

对于锁相环模块,需要加上一个如图5.11所示的滤波器电路。其中,VDDPLL引脚由单片机内部提供2.5V电压,XFC端是压控振荡器(VCO)的电压控制端,通过给锁相环电路编程,以数字方式锁定VCO的控制端电。而Cs,Cp和Rs的取值与晶振、REFDV寄存器和SYNR寄存器有关,需要通过计算得出,若其参数选择不当,会使得VCO的控制端电压抖动,导致系统工作不正常。

图5.11锁相环滤波电路

5.3.2MC9S12DG128最小系统设计时钟电路的振荡器一方面为单片机系统提供时钟,另一方面时钟电路又是一个很强的高频干扰源,因此,为避免对电路板上其他元件造成高频干扰,时钟电路部分的印刷电路板的设计要做得特别讲究。在设计印刷线路板的布线时,为使系统的电磁兼容性得到保证,单片机系统时钟电路和单片机电源电路印刷线路板布线必须满足以下的原则:(1)时钟产生器尽量靠近用到该时钟的器件。(2)尽量让时钟信号回路周围电场趋近于零。要用地线将时钟区圈起来,时钟线要尽量短。(3)石英晶振的外壳要接地。(4)在石英晶振的下面和对噪声特别敏感的器件下面不要布线。(5)锁相环的滤波电路要尽量靠近MCU。5.3.2MC9S12DG128最小系统设计(6)单片机的每个电源端和接地端都要接一个去耦电容,去耦电容要尽量靠近MCU。对于给单片机不同电源端供电的VDD线也要遵循上述规则,如模拟电路供电端VDDA、给单片机I/O模块供电端VDDX、给MCU内部电压调整器供电端VDDR等。片内的电压调整器向片内各模块输出多种不同规格的电压,如VDD1,VDD2,需要外接滤波电容时,一定不要省略。特别是时钟、锁相环电路的电源端VDDPLL,是由内部电压调整器给出的2.5V电压,因此一定要接滤波器件。A/D变换用的参考电压端的供电也要经过特殊的处理才能保证A/D变换的精度。5.3.2MC9S12DG128最小系统设计2.串行口的RS-232驱动电路通过串口驱动电路中的RS-232电平转换芯片,单片机可以利用异步通信协议与PC机通信。RS-232电平转换芯片可以实现TTL电平与RS-232电平之间的转换,然后再通过9芯串行口与PC进行串口通信。3.电源电路HCS12单片机的芯片内部使用3V电压,而I/O端口和外部供电电压为5V。通常需要采用滤波电路改善系统的电磁兼容性,降低系统对电源的高频干扰。4.复位电路复位电路的作用是产生一个低电压信号给MC9S12DG128的RESET端,使系统上电启动。在最小系统中,通常使用低电压复位芯片MC34064,使上电复位更加可靠。而在设计系统目标板时,也可以只用一只0.1

F的电容替代电路中的MC34064。同时,在系统目标板上通常添加一个手动复位按钮,以方便调试时使用。5.3.2MC9S12DG128最小系统设计5.BDM接口BDM接口是连接BDM调试工具的,其中BDMIN接口是接BDM调试工具,向MC9S12单片机下载程序用的。若下载相应的BDM调试工具软件到目标板后,这块目标板就具有了BDM调试器功能。BDMOUT接口是当开发上的应用程序为BDM调试器程序时,此接口可以用做BDM调试器的输出口。如果不打算将这块目标板用做BDM调试器,可以不引出BDMOUT接口,从而有更多的I/O口可供用户的应用程序使用。6.单片机并行口及驱动能力并行口模块是单片机中最简单的I/O模块,其他功能模块如SCI,SPI,PWM,CAN等在不作为相应功能模块使用时,也可以作为并行口模块使用。如果在单片机的并行口上连接一些发光二极管(LED),可用于调试时显示系统应用程序的某些状态。5.3.2MC9S12DG128最小系统设计S12单片机的引脚共有92个,都可以当做I/O引脚使用。特别是A口、B口、K口等常用于CPU总线扩展时的总线接口,它们不用做总线扩展时只能作为并行口使用。并行I/O口上有一个方向寄存器,它控制并行I/O口是用于输入还是输出。若方向寄存器相应位清零,表示该位用于输入;往方向寄存器相应位写1,表示该位用于输出。为安全考虑,单片机的I/O口在复位时,方向寄存器是清零的,即复位后所有I/O口都默认为输入口。并行I/O口在初始化时,要往相应的方向寄存器位写1,才能将该口定义为输出。S12单片机的I/O接口有较强的电流吸收能力,各I/O接口可以允许10mA吸收电流,此时输出端仍能保证不高于0.8V。5.3.2MC9S12DG128最小系统设计对于定义为输出口的单片机引脚,可输出逻辑1或逻辑0,在5V供电的情况下,逻辑1不低于4.2V,逻辑0不高于0.8V。如果不作特别说明,一般单片机的I/O的驱动能力相当于一个TTL晶体管的驱动能力。TTL晶体管导通时,输出为0,相当于输出端接地,允许流过晶体管的典型电流为4mA;TTL晶体管截止时,输出端通过片内的上拉电阻保持输出端高电平。当作为高电平输出时,通过上拉电阻可以给出的电流最大仅为0.8mA。因此,当单片机的引脚作输出用时,与高电平可能的输出电流相比,低电平有较强的吸收电流的能力,不能指望由单片机向外提供功率,也不能指望单片机输出的高电平可以直接点亮一个LED,而要利用晶体管的导通,靠外部供电来驱动输出设备。这样,当单片机的引脚输出低电平时,晶体管导通,相当于开关与地接通,LED点亮;当单片机的引脚输出高电平,晶体管截止,相当于开路,LED熄灭。5.3.2MC9S12DG128最小系统设计7.调试用LED灯除电源上电指示灯外,在单片机的某一个I/O接口上可装上一些调试用LED灯,虽然这一部分不是单片机最小系统必需的,但对最小系统的调试很有用。例如,为调试方便,可将调试用LED灯接在PORTB口上,当某一PORTB口位为低电平时,则相应的LED会亮。即使PORTB口上接了LED,但B口的8个引脚仍可以通过64芯插座引出,以供用户使用。若与用户定义的PORTB口功能不发生矛盾的话,LED可以保留;若有矛盾,可通过断开相应位的上拉电阻或LED的方式屏蔽它们。思考题1.什么是单片机的最小系统?2.单片机系统的扩展分为哪几种?为什么要进行扩展?3.在单片机(I/O)口扩展中,需要注意哪些问题?4.MC9SDG128最小系统包括哪几个部分?第6章智能汽车设计实践——

光电管型设计

6.1机械设计

1

6.2硬件设计

2

6.3软件设计

3第6章智能汽车设计实践——光电管型设计

6.1机械设计6.1.1光电管传感器的布局6.1.2舵机的安装6.1.3测速传感器的安装6.1.1光电管传感器的布局1.传感器的布局间隔2.传感器的径向探出距离传感器的布局间隔各个传感器的布局间隔对智能车的运行,是有一定影响的。传感器的间隔是否合适,对过弯的精确性以及防止飞车有很大的影响。

设定传感器间隔的原则是:既要满足一定的密度以保证走弯道时轨迹相对精确,又要尽可能拥有大的横向控制范围来防止飞车。若传感器间隔设置合适,当赛道有一点微小的变化时,小车的控制单元就能进行相应的反应(改变前轮转角),从而使得过弯道的轨迹与弯道大体重合,精确性好。

传感器的径向探出距离

(1)“一”字形布局

:“一”字形布局是传感器最常用的布局形式,即各个传感器在一条直线上,从而保证纵向的一致性,使其控制策略主要集中在横向上,其排布如图6.1所示。图6.1“一”字形布局传感器的径向探出距离(2)“八”字形布局:“八”字形布局从横向来看与“一”字形布局类似,但它增加了纵向的特性,从而具有了一定的前瞻性,其排布如图6.2所示。

图6.2“八”字形布局传感器的径向探出距离(3)“W”字形布局:为了能够提早地预测到弯道的出现,我们还可以将左右两端的传感器进行适当前置,从而形成“W”形布局,此外,还可利用“W”形布局来检测赛道的弯曲程度。其光电管排布如图6.3所示。

图6.3“W”字形布局6.1.2舵机的安装在智能车上,舵机的输出转角通过连杆传动控制前轮转向。舵机是系统中一个具有较大时间常数的惯性环节。其时间延迟正比于转过的角度,反比于舵机的响应速度。对于快速性要求极高的智能小车来说,舵机的响应速度是影响其过弯最高速度的一个重要因素,特别是对于前瞻不够远的智能小车更是如此。

6.1.2舵机的安装提高舵机控制前轮转向速度的一种方法是采用杠杆原理,在舵机的输出舵盘上安装一个较长的输出臂,其安装图如图6.4所示。

图6.4舵机的安装图6.1.3测速传感器的安装为了减轻智能车的质量,测速时应尽量选用质量轻精度高的传感器,为了不影响加速性能,编码器的传动齿轮较小,基本上和电机的齿轮相同。其安装图如图6.5所示。

图6.5测速传感器的安装6.2硬件设计6.2.1HCS12控制核心6.2.2电源管理单元6.2.3路径识别单元6.2.4车速检测模块6.2.5舵机控制单元6.2.6直流驱动电机控制单元6.2硬件设计硬件电路设计是智能车控制系统设计的基础。智能车控制系统硬件结构主要由HCS12控制核心、电源管理单元、路径识别电路、车速检测模块、转向伺服电机控制电路和直流驱动电机控制电路组成,其系统硬件结构如图6.6所示。

图6.6系统硬件结构图6.2.1HCS12控制核心HCS12控制核心单元既可以直接采用组委会提供的MC9S12EVKX电路板,也可以自行购买MC9S12DG128单片机,然后量身制作适合自己需要的最小开发系统。6.2.1HCS12控制核心MC9S12DG12B单片机引脚图如图6.7所示。图6.7MC9S12DG12B单片机引脚图6.2.1HCS12控制核心在光电管方案中,其I/O口具体分配如下:PH口与PA口用于小车光电发光管发光控制;PT0用于车速检测的输入口;PB口用于显示小车的各种性能参数;PWM0(PP0引脚)与PWM1(PP1引脚)合并用于伺服舵机的PWM控制信号输出;PWM2(PP2引脚)与PWM3(PP3引脚)合并用于驱动电机的PWM控制信号输出(电机正转);PWM4(PP4引脚)与PWM5(PP5引脚)合并用于驱动电机的PWM控制信号输出(电机反转)。在连续路径识别算法中,PAD口用于传感区光电接收管电压信号的输入口。

6.2.2电源管理单元电源管理单元是智能车硬件设计中的一个重要组成部分,它的作用是对组委会提供的7.2V1800mANi-cd蓄电池进行电压调节。按照系统各部分正常工作的需要,各模块电压值分为5V,6.5V和7.2V三个挡。

6.2.2电源管理单元电源管理单元主要用于以下三个方面:(1)采用稳压管芯片L7805CV将电源电压稳压到5V后,给单片机系统电路、路径识别的光电传感器电路、车速检测的转角编码器电路和驱动芯片MC33886电路供电;(2)经过一个二极管降至6.5V左右后供给转向伺服电机;(3)直接供给直流驱动电机。

6.2.2电源管理单元同时考虑到稳压芯片L7805CV的额定输出电流较小,故采用两片L7805CV分别对单片机电路、车速检测电路、驱动芯片电路和光电传感器电路供电,以保证系统正常运行。其稳压电路如图6.8所示。

图6.8稳压电源单元6.2.3路径识别单元在光电管方案中,通过红外发光管发射红外光照射跑道,由于跑道表面与中心线具有不同的反射强度,因此利用红外接收管可以检测到这些信息。通过合理安排红外发射/接收管的空间位置可以检测到智能车相对于前方道路的位置。红外发射接收管一般安放在模型车前端,可以安装成一排,也可以前后安装两排,传感器的总数量受到比赛规则的限制。

6.2.3路径识别单元红外接收管接收道路反射的红外光后产生电压的变化,它可以反映出赛道中心线的位置。这个电压信号可以通过外部的电压比较器变成高、低电平由单片机的I/O端口读取,也可以通过单片机A/D端口直接读取。从I/O端口读取的参考电路如图6.9所示,从A/D端口直接读取的参考电路如图6.10所示。

图6.9I/O端口读取电路图6.10A/D端口读取电路6.2.3路径识别单元两个光电管方案中常见的问题1.相邻光电管之间的干扰2.光电管发射功率的影响相邻光电管之间的干扰由于红外发射管是基于漫反射原理的,其发射的红外光可能影响到安装在附近的红外接收管。消除这种干扰可以采取以下几种措施:

(1)选择发射与接收方向性好的红外传感器。(2)选择发射与接收一体化的红外传感器,它的外壳可以抑制相邻干扰。

(3)在红外接收管上安装黑色套管,使其只接收前方一定角度内的红外光线,这种减小互扰动的措施效果较好。

(4)使相邻的红外发射/接收管交替工作(即“点火”)。这种方法不仅减小了相邻红外传感器之间的干扰,同时也降低了整体传感器的功耗。

光电管发射功率的影响

为了增加前瞻距离,需要加大光电管红外发射功率,使得返回的红外线的强度提高,这样不仅使得电池电能的消耗量增加,同时也会缩短红外发射管的寿命。为解决这个问题,可以利用红外接收管响应速度快的特点,采用光电管脉冲发射/接收的方法加以处理。红外发射管工作在周期脉冲方式下,可以大大降低平均工作电流,从而降低了整个发射电路的电量消耗。

6.2.4车速检测模块为了使得模型车能够平稳地沿着赛道运行,除了控制前轮转向舵机以外,还需要控制车速。通过对速度的检测,可以对车模速度进行闭环反馈控制。此外,若采用基于路径记忆的控制策略,为了获取道路信息,需要得到智能车的行驶距离,也必须通过车速检测模块来间接实现。

6.2.4车速检测模块车速检测一般是通过检测驱动电机转速来实现的。比赛中所使用的常见测速方法列举如下:1.转角编码盘2.反射式光电检测3.霍尔传感器检测转角编码盘转角编码盘分为绝对位置输出和增量式位置输出两种。一般可使用增量式编码盘。它输出脉冲的个数正比于电机转动的角度,从而使编码盘输出脉冲的频率正比于转速。可以通过测量单位周期内脉冲个数或者脉冲周期得到脉冲的频率。

反射式光电检测许多队伍在后轮齿轮传动盘上粘贴一个黑白相间的码盘,通过安装在码盘侧面的反射式红外传感器,来读取光码盘的转动脉冲。其原理和转角编码盘的测速机理是类似的。

霍尔传感器检测在后轮轮毂上粘贴1个或者2个小型的永磁体,附近固定一个霍尔传感器。霍尔元件有3个引脚,其中2个分别是电源引脚和接地引脚,另一个是输出信号引脚,只要通过一个上拉电阻接至5V电压,就可以形成开关脉冲信号。后轮电机每转1周,则可以产生1个或者2个脉冲信号。这种方式简易、廉价,但测速精度不如前面的方法,因为永磁体本身的体积决定了不可能在后轮轮毂上安装过多磁片,对测速精度要求不高的队伍可以考虑此方法。

6.2.5舵机控制单元舵机本身是一个位置随动系统。它是由舵盘、减速齿轮组、位置反馈电位计、直流电机和控制电路组成的。通过内部的位置反馈,使它的舵盘输出转角正比于给定的控制信号,因此对于它的控制可以使用开环控制方式。在负载力矩小于其最大输出力矩的情况下,它的输出转角正比于给定的脉冲宽度。但实际上,由于舵机反应的延迟性,智能车的舵机转角通常不能在一个控制周期内到达指定的设定角度,因此,可以在舵机外部再安装一个位置反馈装置,构成双闭环系统,以实时检测和控制舵机的转动角度。

6.2.5舵机控制单元舵机控制单元采用组委会提供的Futaba公司S3010型舵机作为智能车方向控制部件。

图6.14转向伺服电机实物图6.2.6直流驱动电机控制单元直流驱动电机控制电路主要用来控制直流电动机的转动方向和转动速度。改变直流电动机两端的电压可以控制电动机的转动方向;而控制直流电动机的转速,则有不同的方案,较常规的方法是采用PWM控制。驱动电路既可以直接采用MC33886电机驱动芯片,也可以采用大功率MOS管来自行设计电机驱动电路。

MC33886全桥驱动电路采用MC33886的全桥驱动时,为了提供更大的驱动电流,可以将多片MC33886并联使用,其采用3片MC33886并联方式驱动电机硬件电路如图6.15所示。

图6.15电机驱动硬件电路图大功率MOS管电机驱动电路

采用大功率MOS管组成电机驱动电路时,在保证大电流驱动电机的同时,可以有效地避免多片MC33886并联时由于芯片分散性导致的驱动芯片某些片发热某些不发热的现象。但由分离元件组成的驱动电路的稳定性低于集成芯片。图6.16MOS管组成电机驱动电路

6.3软件设计6.3.1初始化算法6.3.2路径离散识别算法6.3.3路径连续识别算法6.3.4控制策略及控制算法

6.3软件设计在智能车控制系统光电管方案的软件设计中,程序的主流程是:先完成单片机初始化(包括I/O模块、PWM模块、计时器模块、定时中断模块初始化)之后,通过无限循环语句不断地重复执行路径检测程序、数据处理程序、控制算法程序、舵机输出及驱动电机输出程序。其中,定时中断用于检测小车当前速度,作为小车速度闭环控制的反馈信号。

6.3软件设计光电管方案主程序流程图如图6.17所示。

图6.17光电管方案主程序流程图6.3.1初始化算法1.锁相环初始化2.A/D初始化3.PWM初始化4.定时器初始化6.3.2路径离散识别算法路径离散识别算法是通过普通I/O端口将光电管接收端的电压值读入单片机,根据端口输入的高、低电平逻辑来判断该传感器是否处于黑色引导线上方,再筛选出所有处于引导线上方的传感器,便可以大致判断出此时车身相对道路的位置,确定出路径信息。

6.3.2路径离散识别算法路径离散识别算法简便易行,因为输入量为开关量,所以对硬件及算法的要求都比较低,在传感器数目较多的情况下也可以实现较高的识别准确性。但它的一个缺陷在于路径信息只是基于间隔排布的传感器的离散值,对于两个相邻传感器之间的“盲区”无法提供有效的距离信息,因此其路径识别精度极大地受限于传感器的间距。此外,由于离散算法得到的路径信息是离散值,如果将离散的路径信息直接应用到转向及车速控制策略中去,会导致转向及车速调节的阶跃式非连续变化,这将会对智能车的性能产生不利影响。此时,舵机转向及车速控制僵硬,舵机对路径变化反应不灵敏,舵机输出转向相对于路径为阶跃式延迟响应,易产生超调及振荡现象,对于追求高车速、短决策周期的控制策略来说,很可能因为舵机响应不及时而造成控制失效。

6.3.3路径连续识别算法路径连续识别算法是通过单片机A/D口将接收管电压读入。道路中心线相对于各个红外接收管的距离所引起的电压变化经A/D转换成相应的数字量,然后通过插值运算可以得到更加精确的路径信息。然而,由于器件制造工艺引起的分散性问题,各个光电管的性能特性存在很大的差异,特别是电压波动范围相差较大,这就给算法制定统一的标准带来了困难。为了解决这一问题,可以采用归一化方法——把各传感器的电压值都处理成相对于该传感器最大电压(白区的电压)和最小电压(黑区的电压)的变化百分比,以使所有的特性曲线的范围都将在0~100之间。

6.3.3路径连续识别算法在比赛前先对光电管进行预标定,找到各光电管对黑线的敏感程度,将预标定过程中各个光电管的最大值和最小值存下来,用最大值减去最小值得到每个传感器在赛道上的输出范围,小车行驶过程中,将每个传感器输出的信号减去最小值,再除以该传感器的输出范围即可得到其相对输出值,然后找到其中最大的那个值。该值对应的光电管下面的黑线比例为最大,然后找到此光电管旁的另外两个光电管。可以根据这三个值可以算出黑线的准确位置。6.3.4控制策略及控制算法1.转角的控制2.车速的控制3.路径记忆算法6.3.4控制策略及控制算法为保证小车一直沿着黑色引导线快速行驶,系统主要的控制对象是小车的转向和车速。即应使小车在直道上以最快的速度行驶。在进入弯道的过程中尽快减速,且转向要适合弯道的曲率,确保小车平滑地转弯,并在弯道中保持恒速。从弯道进入直道时,小车的舵机要转至中间,速度应该立即得到提升,直至以最大的速度行进。为实现上述控制思想,可以采用不同的控制方法来控制小车的转角和速度。

转角的控制为了使舵机迅速地转至期望的角度,先通过前排发射接收光电管检测黑线,当小车处于直道时,最中间的光电管检测到信号,当处于不同曲率的弯道时,前排两侧不同的光电管将检测到信号。所以,根据前排光电管检测到的不同信号,可以判断出小车所处的位置。然后,根据小车的位置再对调整舵机进行相应的调整。

转角的控制调整舵机的原则是:小车处于直道时,摆正舵机。小车处于弯道的曲率越大,则舵机转角越大。除此之外,小车还会遇到黑色交叉线的特殊情况,对此,本系统将保持小车原有的方向与速度,使小车不受交叉线的干扰。如果小车转过的弯过大,则可能使前排光电管全部偏离黑色轨迹,从而没有一个光电管检测到黑线,故应使舵机保持原角度,让小车急转驶回正道。同时,将速度适当降低,防止小车冲出轨迹。

转角的控制这里采用比例和微分相结合的PD控制方法。(1)比例控制:通过前面提取的position与中心位置相减得到比例控制的偏差量,然后再根据偏差量的大小采用比例系数控制舵机转向。(2)微分控制:通过存储连续20次采样所得到的黑线位置,可以计算出相应的黑线位置变化率,进而根据这个变化率的大小,来调整微分系数,以控制舵机转向。

车速的控制因为小车比赛的赛道是未知的,弯道的分布情况也不能确定,小车可能频繁地进出弯道,不停地调整速度来适应不同轨迹。所以,需要对智能车的速度进行闭环控制,使得小车的速度能够频繁地变化,且能在很短的时间内由当前速度转变为期望的转速。基于这几点的考虑,可以考虑利用MC9S12DG128单片机的模糊指令集。

路径记忆算法

由于传感器看到赛道的长度有限,不能很好地对赛道状况进行预测,因此,如果小车在跑第一圈的时候能够记下赛道全部路径信息,在第二圈的时候则能够根据第一圈的记忆信息辅助控制,在相同条件下将比不使用赛道记忆的智能车更具有优势。

路径记忆算法成功实现赛道记忆算法,必须具备以下五个条件赛车必须识别起跑线。赛车需要在第一圈记下正确的赛道信息。正确地滤波。赛车必须拥有足够的存储空间。赛车在第二圈如何应用第一圈记下的信息。起跑线的检测

从图6.18的起始线的特点可以看到,在两条黑线之间有大约2cm的白色区域,可以通过识别这个特征信息,来区别起始线和十字交叉线。我们采用一排为五个的红外光电管,中间三个之间的距离为2cm,旁边两个的距离为5cm,如图6.19所示。

图6.18起始线尺寸图图6.19光电管排列图赛车如何在第一圈记下正确的赛道信息

当起跑线被检测到后,开始对赛道进行记忆。我们采用的是分段式记忆算法,当黑线的位置在中间某个区域内则记为直道,在右面的区域则记为右弯道,在左面的区域则记为左弯道。我们利用编码器记录小车走过的路程,具体做法为:用PCAN1记录编码器的脉冲数,输入到计数器当中,进而采用计数器的溢出中断来对赛道进行定距离记忆,当计数器的脉冲数溢出时,这时计数器申请溢出中断,从而实现对赛道定距离记忆。当第二次检测到起始线时记忆结束。

正确的滤波

确的滤波对赛道记忆而言是至关重要的,它决定了在第二圈时赛车的运行路线和运行速度,对赛道滤波需要分两种情况,第一种就是在记忆过程中对赛道滤波,由于我们采用的是分段式记忆方法,当某一段记到的脉冲数小于某个数时,这时我们把它归为上一段。第二种就是在第二次检测到起始线后对赛道进行全局滤波,这时我们要从赛道中滤出小S道、大S道和连续弯道。

正确的滤波具体做法如下:首先我们必须先找出它们的特征,对于小S道,由于我们采用的是分段式记忆算法,如果当连续几段的脉冲数都很少时,我们可以把这几段看成一个整体,把它从赛道中滤出来,从而实现小S道直冲。当然这个脉冲数的阈值必须是通过大量的测试而得,否则将造成错误。大S道不能像小S道那样直接冲过去,否则小车将冲出跑道。我们必须将连续弯道提取出来,因为在第二圈回忆跑道时,连续弯道最容易出错。

赛车必须拥有足够的存储空间

由于赛车的RAM空间只有8kb,所以EEPROM必然成为了存储赛道信息的最佳选择。通过编写WriteEEPROM和ReadEEPRROM这两个函数,将EEPROM当作ROM来使用。这样就解决了存储空间不足的问题,而且EEPROM在程序复位和断电后数据不会丢失。

赛车在第二圈如何应用第一圈记下的信息

根据第一圈记录下来的信息,小车就可以提前预知直道还是弯道。对于直道,小车在道路的前段以常规的速度行驶,以便小车调整车身姿态,中段则以全速行驶,后段则提前减速到一个最佳的速度,为过弯道而做准备。在弯道中,小车会根据第一圈记下来的不同曲率,以设定速度匀速行驶。特别的是,在过小S弯时,可以人为地让小车减小调节舵机的大小,这样小车便能以近似直道冲过去。

赛车在第二圈如何应用第一圈记下的信息

记忆算法流程图如图6.20所示。

图6.20记忆算法流程图思考题

1.光电管型智能车的三种排布方式:“一”字形、“八”字形、“W”字形各有何优、缺点?试设计一类更有利于智能车前瞻性和赛道检测精确性的光电管排布方式。2.在智能车的设计过程中,如何有效减少光电管之间的干扰?思考题3.设计一种滤波方案,使光电管型智能车能够在运行时克服外界光线的频繁变化。4.路径记忆算法相对于一般控制算法的优势何在?何种情况下使用路径记忆算法能够显著提高小车行驶的速度?第7章智能汽车设计实践——

摄像头型设计

第7章智能汽车设计实践——摄像头型设计两种检测方案的比较——路径识别方法优点缺点红外光电管传感器方案1.电路设计相对简单2.检测信息速度快3.成本低

1.道路参数检测精度低、种类少2.检测前瞻距离短3.耗电量大4.占用MCU端口资源较多5.容易受到外界光线影响摄像头传感器方案1.检测前瞻距离远2.检测范围宽3.检测道路参数多4.占用MCU端口资源少1.电路相对设计复杂2.检测信息更新速度慢3.软件处理数据较多

表7.1两种检测方案的比较第7章智能汽车设计实践——摄像头型设计图像采集传感器可分为CCD型和CMOS型,其中CMOS型摄像头工艺简单,价格便宜,对于识别智能车赛道这样的黑白二值图像能力足够,因此,我们以下主要以CMOS型摄像头为例,介绍基于摄像头方案的智能车详细设计。

7.1机械设计

17.2硬件设计

2

7.3软件设计

3第7章智能汽车设计实践——摄像头型设计7.1机械设计同光电管方案比起来,摄像头方案机械设计的不同主要体现在摄像头传感器的安装上,而舵机及车速检测单元的安装基本同光电管一样。下面我们将重点介绍摄像头传感器安装这一问题。

摄像头的作用是检测道路的信息,相当于人的眼睛,其视野范围和前瞻距离决定了小车的过弯性能和速度。所以摄像头的安装方式要适当。摄像头的安装方案有两种:一种是正向安装,另一种是旋转90°安装。

7.1机械设计图像采集是智能车设计的一个技术难点。普通图像传感器通过行扫描方式,将图像信息转换为一维的视频模拟信号输出。由于S12的A/D转换器采集速度较低,进行10位A/D转换所需要的时间为7μs。这样,采集的图像每行只有8个像素,图像的水平分辨率很低。倘若在此基础之上就进行智能车的路径识别,则很可能漏检宽度仅2.5cm的黑色引导线,从而导致某些控制决策因无法获取足够精度的路径信息而失效。但同时,S12每场图像大约可以采集300行左右的图像信息,故图像的垂直分辨率相对较高。

7.1机械设计而按照大赛采用跑道的形状特点,这些跑道都是由直线和圆弧组成的,检测车模前方一段路径参数,只需要得到中心线上3~5个点的位置信息就可以估算出路径参数,如位置、方向和曲率等。通过图像中的若干行信息就可以检测出这排点的位置,故所需的检测图像应该是水平分辨率高,垂直分辨率低。

7.1机械设计倘若正向安装摄像头,尽管水平方向的视野开阔一些,不至于迷失黑线跑出赛道。但实际采集到的图像是水平分辨率低,垂直分辨率高,与所需的检测图像要求刚好相反。为了保证不漏检黑色引导线,正向安装就需要提高水平方向的分辨率,这就需要大大提高MC9S12DG128单片机的A/D采样频率,导致MC9S12DG128超频使用。单片机超频使用会影响系统稳定性,容易发生程序失稳的现象。除此之外,由于正向安装采集到的图像宽度大,长度短,致使智能车容易看到赛道边缘以及地面,产生较大的干扰,而且对底端的图像信息丢失也过多,大大影响过弯速度。

7.1机械设计倘若将CMOS摄像头旋转90°安装,输出的图像信息也将旋转90°,通过S12的A/D转换器采集的图像信息,水平分辨率与垂直分辨率会发生互换,从原来的水平分辨率低、垂直分辨率高的图像变成水平分辨率高、垂直分辨率低的实际图像,正好符合道路参数检测模型的要求。在同样保证90cm的前瞻下,底端的宽度有22cm左右,顶端65cm,可以达到避免地面干扰的效果。同时底端仅有不到20cm的图像丢失,而且摄像头的俯角相对较小,可以克服反光的问题,这样过弯道的时候会有安全保障。

7.1机械设计此外,摄像头所架的高度一定要适宜。架得过高会导致小车的视野过大,看到的黑线变得太细,还会导致智能车的重心太高,使智能车快速过弯时容易翻车;架得太低又会影响前瞻,带来反光的问题,影响采样。合适的高度要既满足小车的重心要求,又保证前瞻距离。安装摄像头的底座和支杆应使用刚度大、质量轻的材料,以防晃动。

7.2硬件设计在摄像头方案中,由于车速检测模块、舵机控制单元及直流驱动电机控制单元同光电管方案相同,以下对路径识别单元、HCS12控制核心及电源管理单元做简要介绍。

7.2硬件设计7.2.1HCS12控制核心7.2.2电源管理单元7.2.3路径识别单元7.2.1HCS12控制核心HCS12控制核心单元既可以直接采用组委会提供的MC9S12EVKX电路板,也可以自行购买MC9S12DG128单片机,然后量身制作适合自己需要的最小开发系统。7.2.1HCS12控制核心在摄像头方案中,其I/O口具体分配如下:PAD1用于摄像头视频信号的输入口;IRQ(PE1引脚)用于摄像头行同步信号的输入捕捉;PM0用于摄像头奇-偶场同步信号的输入口;PT0用于车速检测的输入口;PB口用于显示小车的各种性能参数;PWM0(PP0引脚)与PWM1(PP1引脚)合并用于伺服舵机的PWM控制信号输出;PWM2(PP2引脚)与PWM3(PP3引脚)合并用于驱动电机的PWM控制信号输出(电机正转);PWM4(PP4引脚)与PWM5(PP5引脚)合并用于驱动电机的PWM控制信号输出(电机反转)。7.2.1HCS12控制核心具体的对应引脚详见图7.1

图7.1112引脚封装的MC9S12DG12B单片机引脚图7.2.2电源管理单元同光电管方案比较,摄像头方案的电源管理单元就显得复杂得多。根据系统各部分正常工作的需要,各模块的电压值可分为2.5V,5V,6.5V,7.2V,12V五个挡,主要包含以下五个方面:

7.2.2电源管理单元(1)采用稳压管芯片LM2576将电源电压稳压到5V后,给单片机系统电路、车速检测的转角编码器电路供电,且为后面的升压降压做准备;

(2)经过一个二极管降至6.5V左右后供给转向伺服电机;(3)直接给直流驱动电机、驱动芯片MC33886电路供电;(4)采用升压芯片B0512S将5V电压升压到12V后,给摄像头供电;(5)采用稳压芯片LT1764将5V电压稳压到2.5V后,作为单片机A/D模块参考电压。

7.2.2电源管理单元由于稳压芯片LM2576的额定输出电流较小,故采用两片LM2576分别对单片机电路、车速检测电路供电,以保证系统正常运行。其电源分配图如图7.2所示。

图7.2电源分配图7.2.3路径识别单元路径识别单元是智能车控制系统的输入采集单元,其优劣直接影响智能车的快速性和稳定性。在摄像头方案中,其前瞻距离及检测到的赛道信息是红外线光电管方案远不能比拟的,但其软、硬件设计也较红外线光电管方案难。

7.2.3路径识别单元要能有效地采样摄像头视频信号,首先要处理好的技术问题就是能提取出摄像头信号中的行同步脉冲、消隐脉冲和场同步脉冲。否则,单片机将无法识别所接收到的视频信号处在哪一场,也无法识别是在该场中的场消隐区还是视频信号区,更无法识别是在视频信号区的第几行。

7.2.3路径识别单元要处理好行同步脉冲和场同步脉冲提取的问题,有以下两种可供参考的方法。方法一:直接采用A/D转换进行提取。当摄像头信号为行同步脉冲、消隐脉冲或场同步脉冲时,摄像头信号电平就会低于这些脉冲模式之外时的摄像头信号电平。据此,可设一个信号电平阈值来判断A/D转换采样到的摄像头信号是否为行同步脉冲、消隐脉冲或场同步脉冲。方法二:就是给单片机配以合适的外围芯片,此芯片要能够自己提取出摄像头信号的行同步脉冲、消隐脉冲和场同步脉冲,以供单片机控制之用。

7.2.3路径识别单元倘若采用第一种方法,则无需配以外部芯片,在硬件上就可以较为简便。然而,此方法在智能车控制系统的设计中存在两大局限性。其一,S12的A/D转换时间还不够短,在不超频的情况下,该单片机的A/D转换时间最短为7μs,而行同步脉冲一般只有4.7μs左右的持续时间,大多数消隐脉冲更只有3.5μs的持续时间,持续时间都小于7μs,所以A/D转换很有可能漏检行同步脉冲或消隐脉冲。一旦漏检一两个脉冲,就会使摄像头视频采样的效果大打折扣。7.2.3路径识别单元其二,在智能车控制系统中,S12除负责摄像头视频采样方面的处理之外,还要负责黑色引导线的提取、方向速度控制等方面的处理,但毕竟MC9S12DG128的处理能力还是有限的,若采用此方法,会使得在视频采样上花费较多的S12处理资源,这样摄像头视频采样本身的效率较低。此外,黑色引导线的提取、方向速度控制等方面的设计也会局限于所剩余的单片机处理资源。7.2.3路径识别单元倘若采用第二种方法,则需要配以专门的外围芯片。虽然硬件上相对要繁琐一些,但在资源的合理配置上则大大提高。目前,LM1881视频同步信号分离芯片就是一款合适的芯片,它提取摄像头信号的行同步脉冲、消隐脉冲和场同步脉冲,并将它们转换成数字式电平直接输给单片机的I/O口作为控制信号。其硬件连接图如图7.3所示。

7.2.3路径识别单元图7.3摄像头采样电路图7.2.3路径识别单元摄像头视频信号端接LM1881的视频信号输入端,同时也接入S12的一个A/D转换器口(选用PAD1)。LM1881的行同步信号端(引脚1)接入S12的一个外部中断IRQ口。LM1881的奇-偶场同步信号输出端接S12的普通I/O口即可(选用PORTM0)。

7.3软件设计在摄像头方案智能车控制系统的软件设计中,程序的主流程是:通过外部中断采集程序对摄像头的视频信号进行采集,主程序在两次外部中断的间隙中完成对数据进行处理及计算并给出控制量,采样周期为20ms。其中,主程序主要完成的任务是:单片机初始化和黑线提取算法;图像滤波算法;舵机控制算法及驱动电机控制算法。

7.3软件设计摄像头方案具体主程序流程图如图7.4所示。

图7.4摄像头方案具体主程序流程图7.3软件设计7.3.1初始化算法7.3.2图像采集算法7.3.3黑线提取算法7.3.4图像滤波算法7.3.5控制策略及控制算法7.3.1初始化算法1.锁相环的设置2.脉冲宽度调制(PWM)初始化3.定时中断及输入捕捉通道的初始化4.A/D转换模块初始化5.外部中端(IRQ)的初始化1.锁相环的设置通过设置锁相环,可以改变单片机的时钟频率。在MC9S12单片机中,靠锁相环产生的时钟频率由下面的公式得到:式中,OSCCLK是外部晶体振荡时钟频率,一般为8MHz或16MHz;SYNR是时钟合成寄存器;REFDV是时钟分频寄存器。

(7.1)2.脉冲宽度调制(PWM)初始化PWM是用于舵机和驱动电机的控制,在MC9S12单片机中,其初始化主要包括以下六大步骤:禁止PWM;选择时钟;选择极性;选择对齐模式;对占空比和周期编程;使能PWM通道。3.定时中断及输入捕捉通道的初始化定时中断及输入捕捉通道主要用于产生周期中断以进行速度采集,其初始化工作主要包括:设定预分频系数;定时器溢出中断使能;定时器使能。其中断函数主要包括:清标志位;用户自己的代码。

4.A/D转换模块初始化A/D转换模块主要用于视频信号的采集,将模拟的视频电压信号转换成对应的数值,以便于后面的黑线提取算法实现。5.外部中端(IRQ)的初始化IRQ主要用于捕捉视频信号的行同步信号,产生外部中断以进行图像采集。7.3.2图像采集算法图像信号采集作为整个控制算法的基础,具有举足轻重的地位,同时也是智能车软件设计的一个技术难点。其设计得好坏与否,直接关系到智能车的整体性能。

7.3.2图像采集算法通常,摄像头产品说明书上会给出有效像素和分辨率,分辨率即为每场信号中真正为视频信号的行的数目。但产品说明书上通常不会具体介绍视频信号行的持续时间、它们在每场信号中的位置、行消隐脉冲的持续时间等参数,而这些参数又关系到图像采样的有效实现。因此需要设计软、硬件方法实际测量一下这些参数。以下给出上海交通大学代表队通过实验测出的1/3OmniVisionCMOS摄像头时序参数以供参考,如表7.2所示。

7.3.2图像采集算法信号属性行序数行持续时间行同步脉冲持续时间消隐脉冲持续时间场消隐区1~423µs

3.5µs527.3µs

8µs637.3µs

3.5µs7~1029.8µs

3.5µs11~2264µs

4.7µs视频信号区23~31064µs4.7µs

场消隐区(同步脉冲)311~31464µs

4.7µs31564µs

3.5µs316~31929.8µs

3.5µs32053.4µs

28µs表7.21/3OmniVisionCMOS摄像头的时序参数7.3.2图像采集算法考虑到实际赛道只是在白色KT板上布置黑色引导线,路径识别只需大致提取出黑色引导线即可,不必每行采集。因此,我们可以采用隔行采集思想来压缩图像的数据。实践证明,智能车控制系统的图像传感系统在单一方向上只要有40像素的分辨能力就足够用了。故我们只需对这288行视频信号中的某些行进行采样就可以了。

7.3.2图像采集算法假设每场采样40行图像数据,为了方便软件程序的编写,可以均匀地采样288行视频信号中的40行,即每隔7个有效行采集一行。例如采样其中的第7行、第14行、第21行、…、第273行、第280行,即采样该场信号的第29行、第36行、第43行、…、第295行、第302行(每场开始的前22行视频为场消隐信号)。

7.3.2图像采集算法此外,为了进一步解决图像数据大与HCS12单片机数据处理速度有限的矛盾,还可以通过适当地将S12的CPU超频运行,以及降低A/D转换器的转换精度,以提高A/D转换器的速度,具体实现流程图(以采集一幅16行×40列的图像为例)如图7.5所示。

7.3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论