智能车设计 论文_第1页
智能车设计 论文_第2页
智能车设计 论文_第3页
智能车设计 论文_第4页
智能车设计 论文_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

摘要在全国大学生飞思卡尔“智能汽车”竞赛中,对智能车前轮倾角的调整是一个十分重要的过程,它关系到车模在高速行进过程中的直线行驶性能,转弯的性能等许多方面。为了提高倾角调整的准确性、一致性,本毕业设计旨在开发一种运用于前轮小倾角的高精度的倾角测量仪。首先设计硬件电路,主要包括SCA100T倾角传感器硬件SPI接口电路、ATmega16单片机及外围电路和LCM046模块信息显示硬件电路设计。完成硬件电路部分后是对倾角测量仪软件程序的开发,主要包括倾角传感器驱动模块和信息显示模块的程序两方面。实验证明此设计可以完成精确度为0.2°的小倾角测量,但仍有需要改进之处,有待优化。关键字:倾角测量SCA100T—D01ATmega16AbstractInNationalUndergraduateFreescale"smartcar"contest,adjustingtheangleofthefrontwheelofthesmartcarisaveryimportantprocess.Itisrelatedtomanyaspectslikethestraight-linedrivingandtheturnperformancesofthecarmodelsintheprocessofhigh-speedtravel.Inordertoimprovetheaccuracyandconsistencyoftheinclinationadjustment,thisgraduationprojectaimstodevelopasmallanglehigh-precisioninclinometertomeasureinclinationofthefrontwheel.First,buildthehardwarecircuit,includingthedesignofSCA100TtiltsensorhardwareSPIinterfacecircuit,ATmega16microcontrollerandperipheralcircuitsandLCM046moduleinformationdisplayhardwarecircuit.Aftercompletingthepartofhardwarecircuit,thefollowingistodevelopthesoftwareprogramoftheinclinometer,mainlyincludingthetiltsensordrivemoduleandtheinformationdisplaymoduleoftheprogram.Theexperimentsshowthatthisdesigncanbedonewithanaccuracyof0.2°inclinationmeasurement,butitstillneedstobeimproved,needstobeoptimized.Keywords:DipAngleMeasurementSCA100T—D01ATmega16目录TOC\o"1-5"\h\z\o"CurrentDocument"摘要IAbstractII\o"CurrentDocument"引言1\o"CurrentDocument"概述2\o"CurrentDocument"1.1基于AVR单片机的倾角测量仪开发的意义2\o"CurrentDocument"1.2四轮定位2\o"CurrentDocument"倾角测量仪硬件设计4\o"CurrentDocument"2.1主要元器件介绍42.1.1传感器的选型42.1.2单片机的选型62.1.3显示屏的选型8\o"CurrentDocument"2.2硬件的总体设计方案92.2.1倾角传感器模块设计102.2.2单片机电路模块11\o"CurrentDocument"2.2.3LCM046的显示模块122.2.4倾角测量仪硬件设计整体电路图13\o"CurrentDocument"2.3装置样机13\o"CurrentDocument"倾角测量仪的软件设计14\o"CurrentDocument"3.1软件开发环境14\o"CurrentDocument"3.2软件设计的总体方案153.2.1传感器模块153.2.2显示屏模块20\o"CurrentDocument"4.实验23\o"CurrentDocument"4.1倾角测量实验23\o"CurrentDocument"4.2温度测量实验24结论25\o"CurrentDocument"致谢26\o"CurrentDocument"参考文献27引言在智能车比赛中,存在许多影响车子的稳定行驶以及各项性能的机械结构,因此,对前轮倾斜角度的调整成为了至关重要的一个步骤。为了让智能车能够在比赛中有好的表现,主要有以下四种定位方式:主销后倾、主销内倾、前轮外倾、前轮前束,但目前市场上在专用于智能车轮胎的低成本、高精度倾角测量仪这个方面依旧是一块空白。经过调查,我发现大多数的选手在准备阶段还主要是用目测对小车前轮倾斜角度进行调整,这样就大大的降低了精确度,进而影响到小车性能的发挥。因此,本设计的主要目的就是开发一款适用于智能车轮胎小倾角的高精度测量仪。设计和实现一个基于AVR单片机倾角测量仪,主要有以下两个方面的内容:一是基于AVR单片机倾角测量仪硬件电路设计,其中主要包括倾角传感器硬件接口电路、单片机及外围电路和信息显示硬件电路设计;二是倾角测量仪软件程序的开发,主要包括倾角传感器驱动模块、信息显示模块、按键模块以及传感器内部温度补偿模块程序的开发。概述1.1基于AVR单片机的倾角测量仪开发的意义全国大学生飞思卡尔“智能汽车”竞赛是教育部倡导的大学生科技竞赛之一。该竞赛旨在培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能。对于智能车而言,要保持车辆直线行驶的稳定性,使之转弯自动回正、转向轻便,必须确定车轮定位参数。而在目前的智能车比赛中,调整智能车轮胎的倾角一般都采用目测,用人眼来观察左右前轮的倾角存在误差大,难以调整等问题。1.2四轮定位车轮定位角度是存在于悬架系统和各活动机件间的相对角度,保持正确的车轮定位角度可确保智能车直线行驶,改善车辆的转向性能,确保转向系统自动回正,避免轴承因受力不当而受损失去精度,还可以保证轮胎与地面紧密接合,减少轮胎磨损、悬架系统磨损以及降低油耗等。汽车悬架系统主要定位角度包括:车轮外倾、车轮前束、主销后倾、主销内倾等。1、车轮外倾车轮外倾角是指车轮中心平面与汽车垂直平面的夹角。当车轮顶部向汽车外部倾斜时角度为正,反之为负。车轮外倾角主要作用是使车轮与地面的动态承载中心得到合理的分配,从而达到提高机械零件的使用寿命,减少轮胎的磨损等效果。若车轮外倾角不正确,轮胎会出现异常的磨损,智能车在行驶时也会发生偏驶的现象。一般前轮外倾角为1°左右如图1-1所示。乍轮外倾图1-1车轮外倾2、车轮前束车轮的水平直径与车辆纵向对称平面之间的夹角为前束角。由于车轮外倾及路面阻力使前轮有向两侧张开做滚锥运动的趋势但受车轴约束,不能向外滚动,导致车轮边滚边滑,增加了磨损,通过前束可使车轮在每瞬间的滚动方向都接近

于正前方,减轻了轮毂外轴承的压力和轮胎的磨损。前轮前束一般为0〜12mm。如图1-2所示。3、主销后倾图3、主销后倾图1-2车轮前束过车轮中心的铅垂线和真实或假想的转向主销轴线在车辆纵向对称平面的投影线所夹锐角为主销后倾角,向前为负,向后为正。主销后倾角的存在可使车轮转向轴线与地面的交点在轮胎接地点的前方,可利用地面对轮胎的阻力产生绕主销轴线的回正力矩,该力矩的方向正好与车轮偏转方向相反,使车辆保持直线行驶。通常后倾角为1°〜3°。如图1-3所示。图1-3图1-3王销后倾4、主销内倾主销内倾定义为在同时垂直于车辆纵向对称平面和车辆支承平面的平面内,由真实的或假想的转向主销的轴线在该平面上的投影与车辆支承平面的垂线所构成的锐角。主销内倾角的作用,是使车轮在受外力偏离直线行驶时,前轮会在重力作用下自动回正。另外,主销内倾角还可减少前轮传至转向机构上的冲击,并使转向轻便,但内倾角不宜过大,否则在转向时,会使轮胎磨损加快。通常主销内倾角不大于8°。如图1-4所示。倾角测量仪硬件设计2.1主要元器件介绍2.1.1传感器的选型1、SCA60C:N1000060SCA60C:N1000060加速度计是由硅体微机传感元件芯片和一个信号调节ASIC组成的。封装过程中是标准的半导体传输成型工艺。该传感器具有8个SMD管脚(鸥翼式)。测量倾角范围为±90。,由于测量范围大,所以精度也就相对降低许多。另外,由于它是单轴倾角传感器,对于测量多方向的四轮定位的倾角是不能够满足要求的。2、SCA100T-D01SCA100T系列是一个基于3D测量的双重轴倾角测量仪。传感单元的2条测量轴与安装平面平行,且相互垂直。它有低温度依赖性,高精度和低噪声,以及一个高效的传感单元设计,这使得SCA100T成为大多倾角测量仪的理想的选择。该传感器主要应用于:平台水准和稳定性测量、水准仪、360°垂直定向测量及容积率测量等。经过多次的对比,一开始我考虑选用的是角度传感器,但经过考察实际情况以及查阅大量的资料,我发现在本设计中需要用到的是倾角传感器。最终,我选用SCA100T—D01倾角传感器来获取倾角信号,它精度高,且为双轴传感器,非常适合智能车轮胎倾角测量时所需的小角度、多方向等要求。1)特性双轴倾角测量(X轴和Y轴);SCA100T-D01的测量范围为±30°;精度为0.0025°(10HzBW,模拟输出);传感单元控制过阻尼频率响应(-3dB18Hz);过温度的高稳定性;数字SPI倾斜及温度输出;通过静电力的偏转传感单元的检测质量的自检功能;连续传感单元互连错误检查。2)实物图与引脚图实物图与引脚图如图2-1所示。图2-1SCA100T-D01实物图与引脚图3)SCA100T-D01的SPI串行接口一个串行外围接口(SPI)系统包括一个主设备和一个或多个的从属设备。主机设备为一个单片机提供SPI时钟以及从属设备从主机设备处接收任何集成电路SPI时钟。VTI的ASIC科技产品总是作为一个从属设备来使用。SPI有4线程同步串行接口。数据通信是通过低电平活动的附属选择或是片选线程(CSB)使能的。数据是由一个3线程接口来传送的,其中包括串行数据输入(MOSI)、串行数据输出(MISO)以及串行时钟(SCK)。该传感器可以用软件或是硬件进行SPI通信,其中在硬件条件下接受的加速度数据是11位的。每一次传输始于CSB的下降沿,止于CSB的上升沿。在传输过程中,命令和数据是由SCK和CSB依据以下规则控制的:命令和数据转移时,MSB先,LSB最后;每个输出数据/状态流在SCK下降沿时输出(MISO线),在SCK上升沿时进行抽样(MOSI线);•在CSB下降沿选择设备后,开始接收一个8位的命令并执行命令定义的操作;如果收到无效命令,将不会有数据传输入片中并且MISO将保持在高阻状态,直到下一次CSB的下降沿,重新初始化串行通信;数据从MISO传出开始于SCK的下降沿,在SPI命令最后一位结束后SCK立即变为上升沿;SPI时钟频率的最大值为500kHz;SPI命令可以是单独命令或是数据与命令的结合。在数据与命令结合的情况下,输入数据遵循不间断的SPI命令,输出数据时与输入数据平行。4)自检及错误检测模式为了保证可靠的测量结果,SCA100T有连续互连错误校准记忆正确度检测。若检测出错误,将强制使输出信号接近0V或VDD电压。校准记忆正确度是通过不断运行的奇偶校验检查控制寄存器记忆内容来验证的。一旦检测到奇偶校验误差,控制寄存器就会自动从EEPROM重载。如果重载数据后检测到一个新的奇偶校验误差,所有模拟输出电压都会强制接近0V。SCA100T也包括一个分离的自检模式。它是利用静电力模拟加速或是减速状态来实现自检的。自检功能可通过SPI接口并由STX或是STY命令来激活的,可由MEAS命令来停止。自检模式同时也能由ST管脚(管脚9和10)的高电平激活。自检模式不能同时为所有通道激活。自检包括以下几个检测方面:传感元件运动检测;ASIC信号路径检测、PCB信号路径检测、微控制器模数转换以及信号路径检测。

2.1.2单片机的选型1、MC9S12XS128MC9S12XS128是一个16位的单片机,由128KB程序Flash、8KB随机存储器、8KB数据Flash组成片内存储器。同时还包括2个异步串行通信接口、1个串行外设接口、1个8通道输入捕捉/输出比较定时器模块、16通道12位A/D转换器和一个8通道脉冲宽度调制模块。端口引脚大多为复用引脚,具有多重功能。但因为XS128价格较高,并且其中许多的功能在本设计中都不需要使用,性价比不高,因此不选用XS128作为本设计的传感器。2、ATmega16ATmega16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16的数据吞吐率高达1MIPS/MHz,可以缓减系统在功耗和处理速度之间的矛盾。16K字节的系统内可编程Flash,512字节EEPROM,32个通用I/O口线,32个通用工作寄存器,用于边界扫描的JTAG接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/计数器(T/C),片内/外中断,可编程串行USART,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP封装)的ADC,具有片内振荡器的可编程看门狗定时器,一个SPI串行端口,以及六个可以通过软件进行选择的省电模式。其实物图与引脚图如图2-2所示:=09图2-2ATmega16实物图与引脚图=091)产品特性ATmega16的外设特点:它有两个8位、一个16位的具有独立预分频器和比较器功能的定时器/计数器,它的实时计数器RTC具有独立振荡器以及可工作于主机/从机模式的SPI串行接口。•特殊的处理器特点:上电复位以及可编的掉电检测、经过标定的片内RC振荡器以及五种睡眠模式。ATmega16的工作电压为4.5-5.5V,正常模式下工作电流为1.1mA。2)引脚说明ATmega16的引脚功能如表2-1所示。

表2-1ATmega16引脚说明表引脚名称功能说明VCC数字供电电源GND地PORTA(PA7..PA0)A端口作为模拟输入传输给模/数转换器。在没有使用模/数转换器的情况下,A端口也作为一个八位的双向输入/输出端口。端口管脚能提供内部上拉电阻(选定每一位)。A端口输出缓存器有着对称的驱动特性,可以输入和输出大电流。当管脚PA0至PA7被用作输出并外部置低,内部上拉电阻被激活的情况下,它们将输出电流。当在重置的条件下A端口管脚处在高阻状态,即使系统时钟还未工作。PORTB(PB7..PB0)B端口作为一个八位的双向输入/输出端口并且端口管脚能提供内部上拉电阻(选定每一位)。B端口输出缓存器有着对称的驱动特性,可以输入和输出大电流。作为输入端,B端口管脚在外部置低,内部上拉电阻被激活的情况下,它们将输出电流。当在重置的条件下B端口管脚处在高阻状态,即使系统时钟还未工作。B端口也能用作ATmega16多种特殊功能。PORTC(PC7..PC0)与B端口类同。PORTD(PD7..PD0)与B端口类同。RESET重置输入。持续时间超过最小脉冲长度的低电平将产生系统复位,即使系统时钟不在工作状态。过短的脉冲将不保证能产生重置。XTAL1作为反向振荡放大器与和内部时钟操作电路的输入。XTAL2作为反向振荡放大器的输出。AVCCAVCC为A端口以及模/数转换器提供电压。即使没有使用模数装换器,也必须外连至Vcc。如果使用模数转换器,必须通过一个低通滤波器连至Vcc。AREFAREF是模/数转换器的模拟参考管脚。3)ATmega16的SPI接口ATmega16集成了一个串行外设SPI接口,允许ATmega16和外设之间进行高速的同步数据传输。它的主要特点有:全双工,3线同步数据传输;主机或从机操作;LSB首先发送或MSB首先发送;7种可编程的波特率;传输结束中断标志;写冲突标志检测;可以从闲置模式唤醒。主机和从机系统包括两个移位寄存器和一个主机时钟发生器。主机拉低SS引脚来启动一次数据传输。其中,SPI接口不自动控制SS引脚,而必须通过用户的程序来处理。主机和从机将需要发送的数据放入相应的移位寄存器。对SPI数据寄存器(SPDR)写入数据即可启动时钟脉冲,双方以此为基准进行8位数据交换。传输结束后,SPI时钟停止,传输结束标志位SPIF置1。如果此时SPCR中的SPIE位置1就会产生中断。MOSI情况下,主机移出数据,从机接受数据;MISO情况下,主机接受数据,从机移出数据。每次数据传输完成,主机都可以通过拉高SS实现与从机的同步。SPI模块使用的外部引脚有4个:MOSI(与PB5复用)、MISO(与PB6复用)、SCK(与PB7复用)和CSB(与PB4复用)引脚。2.1.3显示屏的选型1、LCM046显示屏的特点及功用LCM046可与任何单片机相连,功耗非常低,数据传输方式是串口传输。显示状态50pA(典型值),省电模式<1pA,工作电压2.4〜5.2V,视角对比度可调显示清晰,稳定可靠,使用编程简单,是仪器仪表、手持便携仪器、电话系列、家用电器、运动器材、医疗保健仪器、智能充电器等的最佳通用型显示模块。2、LCM046显示屏引脚说明由于LCM046内部有上拉电阻,为保证低功耗,每次送数之后,/CS、/RD、/WR、DATA必须接高电平或悬浮。根据采用的MCU不同,采用不同方式接口,不必使用分压电阻若MCU与LCM046工作电压相同可直接相接。/RD、/IRQ、BZ可不用,用三线接口即可:/CS、/WR、DATA。LCM046引脚说明见表2-2。表2-2LCM046引脚说明引脚符号说明输入/输出1/CS模块片选,内部上拉,必须接!输入2/RD模块数据读出控制线,内部上拉输入3/WR模块数据/指令写入控制线,内部上拉,必须接!输入4DA数据输入/输出,内部上拉,必须接!输入/输出5GND地线,必须接!输入6VLCDLCD屏工作电压调整,可调整视角对比度,必须接!输入7VDD正电源,必须接!输入8IRQWDT/定时器输出,集电极开路输出,不用可不接输出9BZ压电陶瓷蜂鸣片驱动+极输出10/BZ压电陶瓷蜂鸣片驱动-极输出

3、LCM046显示屏的相关时序1)写命令/数据时序WP-EHI3EZHDATAleaeaes濒幽撅魂WP-EHI3EZHDATAleaeaes濒幽撅魂[XJXXCommand_orAddr2orData2Command_orAddr2orData2DataModeCommandorAddi3orDataJDataModeCSIDATAn0I1IA5-4A3#AlA。[DODID2D3]DODI以D3|DODI。2D3[DODIDWD3[DOMemoryAddjess(MA)DataCN'IA)Data(MA+l)Data(MA+2)Data(MA+3)注A5=0,MA为写入的第一位数据地址此后连续送数地址自动加1.4、使用模块注意事项RAM表数据位为1则显示,为0则灭。当模块工作电压为3.3V以下时,VLCD脚与VDD直接相接,当模块工作电压>3.3V时,VLCD脚与VDD间接一个电位器50K调节,参考值为5V/36K。2.2硬件的总体设计方案硬件设计主要包括倾角传感器模块、单片机模块、按键模块、显示屏模块以及电源供电模块。系统的整体硬件设计原理框图如图2-3所示。图2-3硬件设计原理框图倾角传感器模块的设计:系统采用SCA100—D01的SPI接口来读取输出信息,可避免额外的A/D采样,由于ATmega16具有SPI中断,可直接将传感器作为从器件接到单片机的SPI接口上。单片机模块的设计:单片机电路设计主要是单片机外围电路的连接,以保证单片机可以正常工作。此外,还有单片机与倾角传感器之间的SPI接口、显示屏LCM046相关引脚以及按键的连接,以确保信号能够正常传输。按键模块的设计:主要是与单片机的连接,让用户可以根据需要通过外部按键来切换显示屏上显示的数据。显示屏LCM046应用电路的设计:主要是显示屏本身供电等自身外围电路的连接,以及显示屏与单片机相关引脚的连接。电源适配器供电模块的设计:倾角测量仪的电源可由电源适配器或者电池提供的,因为各模块所需的工作电压都有所不同,同时设计了一个稳压模块,将适配器提供的6V电源稳定为5V,供给单片机与传感器工作。2.2.1倾角传感器模块设计根据相关资料显示,该传感器通过SPI接口传出的数据会比通过模拟信号传出后进行模数转换得出的倾角数据精度更高,因此倾角测量模块主要是倾角传感器SCA100T—D01与ATmega16单片机之间的SPI接口,包括MISO、MOSI、SCK、CSB四个引脚。另外,还有传感器电源VDD与地VSS。共6个引脚需接出。12引脚与地之间必须接一个0.1uF的滤波电容,用在电源整流电路中,用来滤除交流成分,使输出的直流更平滑。引脚5和11为输出模拟信号时的连接引脚。引脚9和10为自检模块的驱动引脚。根据该传感器说明书中的引脚说明表,如表2-3所示,该模块原理图如图2-4所示。表2-3引脚说明节点输入/输出描述SCK输入串行时钟NC输入不连接,悬起MISO输出输出;输出数据MOSI输入输入;输入数据OUT-2输出Y轴输出(CH2)GND补充接地CSB输入片选(低电平有效)NC输入不连接,悬起

ST-2输入CH2自测输入ST-1输入CH1自测输入OUT-1输出X轴输出(CH1)VDD补充电源电压(+5VDC)图2-4传感器模块原理图2.2.2单片机电路模块单片机电路设计主要是ATmega16单片机小车开发板与JTAG仿真器、传感器以及LCD相关引脚的连接以确保信号传输正常。该模块中ATmega16单片机原理图如图2-5所示。其中,因为不需使用模数转换器,引脚27可直接接电源。图2-5单片机模块原理图JTAG仿真器接口原理图如图2-6所示。其中,TCK为时钟信号引脚与单片机引脚21相连,TMS为模式选择引脚,与单片机引脚22相连。TDI与TDO分别为数据输入与输出引脚,分别与单片机引脚24、23相连。引脚4与7都需要接电源。引脚6为复位脚,接单片机引脚4。引脚2与10接地。引脚8留作后续设备时候,此处悬空不接。图2-6JTAG仿真器接口原理图2.2.3LCM046的显示模块LCM046显示电路设计主要是显示屏本身供电等外围电路的连接,以及显示屏与单片机相关引脚的连接。其中,BZ与/BZ引脚是驱动蜂鸣器的,此设计中没有使用蜂鸣器,所以BZ与/BZ引脚悬空不接。IRQ为定时器输出,RD为模块数据读出控制线,也悬空。CS为片选引脚,与单片机引脚35相连。WR为数据/指令写入控制线,与单片机引脚36相连。DA为数据输入/输出,与单片机引脚37相连。VLCD必须接电源。该模块原理图如图2-7所示。

2.2.4倾角测量仪硬件设计整体电路图采用ProtelDXP2004软件绘制倾角测量仪的原理图及PCB电路板。该倾角测量仪的硬件设计总体原理图如图2-8所示。图2-8硬件设计总体原理图2.3装置样机本装置样机组成分为三部分:SCA100T—D01传感器测量模块、单片机及外围电路模块、LCM046显示屏模块。本装置制作的原则是测量模块尽可能小,与轮胎的贴合面进可能的平整,最小程度影响倾角测量。倾角测量仪实验样机实物图如图2-9所示。图2-9实验样机实物图倾角测量仪的软件设计3.1软件开发环境本次毕业设计中的软件设计我选择的开发环境是AVRStudio4,它是极大多数AVR开发者必选的工具。其编译界面如图3-1所示。图3-1AVRStudio4编译界面ATMELAVRStudio集成开发环境(IDE),包括AVRAssembler编译、AVRStudio调试功能、AVRProg串行、并行下载功能和JTAGICE仿真等功能。它为功能强大的AVR8位RISC指令集单片机提供了工程管理工具、源文件编辑器、芯片模拟器和在线仿真调试(In-circuitemulator)接口。它有一个全新的模块结构,此结构允许第三方软件共同合作开发,而且GUI插件和其它模块也可以写或挂到该系统上。因为AVRStudio4默认的语言是汇编语言,自身不带有C语言编译器,因此在安装该软件时同时需要安装一个C编译器,此编译器我选择的是WINAVRO在正确安装这两个软件后,打开AVRStudio4,在创建新工程的时候就会多出来一个AVRGCC的选项,选择该项即可使用C语言进行编译。3.2软件设计的总体方案本系统软件部分采用模块化结构,各模块均编成子程序,便于函数之间相互调用和对问题的调试。本系统软件主要分为3大模块,分别为传感器模块、倾角信息显示模块、以及按键模块。倾角测量仪的软件流程图如图3-2所示。图3-2软件流程图系统以ATmega16单片机作为中央控制芯片。首先对单片机和LCM046显示屏进行初始化设置;然后将传感器得到的倾角信息以及温度信息经过计算处理后由SPI接口输入单片机,最终通过LCM046显示出来,可通过按键进行各种数据显示之间的切换。3.2.1传感器模块1、SPI接口初始化首先,根据ATmega16单片机中的SPI控制寄存器——SPCR以及SPI状态寄存器——SPSR的说明表,使能SPI接口。1)SPI控制寄存器——SPCRBit76543210SPIESPEDORDMSTRCPOLCPHASPR1SPR0其中:

SPIE:置1时,引发SPI中断。SPE:置1时,使能SPI。DORD:为1时,先发送数据的地位;为0时,先发送数据的高位。MSTR:为1时选择主机模式,为0时选择从机模式。CPOL:时钟极性。CPHA:时钟相位。SPR1...0:SPI时钟频率选择。2)SPI状态寄存器——SPSRBit76543210SPIFWCOL—————SPI2X其中,本设计使用到的有:SPIF:在串行发送结束后置1。WCOL:若SPI在数据传输中对SPDR写入数据,WCOL会置1。Bit5.1:保留位,读操作返回值为0。SPI2X:该位置1将加倍SPI时钟频率。程序如下://MOSI和SCK引脚输出,低电平voidSca100t_Init(void){DDRB=0xa0;SCA_CS_PIN_d;SCA_CS_high;SPCR=0x51;SPSR=0x00;〃主机模式、模式0、使能SPI//MSB在前,SPI时钟频率:8M/16=500kHZ2、倾角读取与转换1)根据ATmega16的SPI数据寄存器——SPDR的说明表以及SCA100T—D01的命令寄存器的命令列表,进行倾角数据的读取。//MOSI和SCK引脚输出,低电平SPCR=0x51;SPSR=0x00;SPDR为读/写寄存器,用来在通用寄存器组和SPI移位寄存器之间传输数据。其说明表为:Bit76543210MSBLSB其中:MSB为数据的最高位,LSB为数据的最低位。SCA100T—D01的命令寄存器的命令列表如表2-3所示。

表2-3SCA100T-D01命令列表图3-4SPI图图3-4SPI图3-3RWTR命令时序图OCXXXXXXXXXXXXXXXXXXXXX^命令名称命令格式描述MEAS00000000测量模式,是启动后默认的操作模式。在正常操作情况下,MEAS命令是自检模式的退出命令。RWTR00001000在不影响正常操作的情况下能够读取温度数据寄存器。温度数据寄存器每150us更新一次。只要CSB为低电平,即可终止加载操作,8位温度数据传输如图3-3所示。MSB数据最先传输。在正常操作中,是否在RWTR命令下将数据写入温度数据寄存器不会产生影响,因此建议全部写入0。RDSR00001010读取状态寄存器。RLOAD00001011重载NV数据至存储输出寄存器。STX00001110为激活X轴(通道1)的自检功能。X轴加速传感兀件电极被置为高电平,这将导致静电力转换传感元件产生电波并刺激正方向的加速。当输入MEAS命令时,自检模式将关闭。自检模式将不能同时为双通道激活。STY00001111激活Y轴(通道2)的自检功能。Y轴加速传感元件电极置高电平。RDAX00010000访问模数转换后的X通道(通道1)中存储在加速度数据寄存器X的加速度信号。通过SPI接口传输命令与11位加速度数据如图3-4所示。RDAY00010001访问模数转换后的Y通道(通道2)中存储在加速度数据寄存器Y的加速度信号。程序如下:uint16_tSca100tReadX(void){SCA_CS_low;//首先将CSB置低,选择该设备SPDR=CMD_RDAX;〃发送读取X轴数据命令while(!(SPSR&_BV(SPIF)));〃等待SPDR=0x00;〃任意发送一数据,准备开始读取倾角数据while(!(SPSR&_BV(SPIF)));temp=SPDR;〃将读取的高8位数据赋给tempSPDR=0x00;while(!(SPSR&_BV(SPIF)));temp=(temp<<3)|(SPDR>>5);〃移位SCA_CS_high;〃将CSB置高,结束传输returntemp;〃返回数据}其中,需要注意的是,通过SPI接口输出的数据为11位,而每次读取仅能读取8位,并且先输出高位后输出低位,因此,在读取完高8位数据后需要将变量左移3位,而将下一次读取的数据寄存器中的数据右移5位,将剩下的3位写入变量中,这样才能完整的读取11位数据。读取Y轴数据与上述类似,在此就不重复介绍。2)数字输出与角度换算直接从寄存器读取出的数据是范围为0至2048的数据,此数据需要经过换算才能最终在显示屏上显示出实际角度,参考说明书,可根据下列公式进行换算:a=arcsin[(Dout-Dout@0°)/sens]。其中:Dout为数字输出(RDAX或是RDAY);Dout@0°为数字偏移值,RDAX和RDAY数据寄存器在0角度位置处的标准内容为:二进制:10000000000;十进制:1024;a为角度;sens为设备敏感度,取值1638。程序如下:uint16_treadSca100tAngelX(void)temp=(double)Sca100tReadX();temp=(temp-1024)/1638;〃根据公式计算出函数自变量if(temp>1)〃判断函数自变量是否在定义域范围内{temp=1;}if(temp<-1){temp=-1;}tempangel=asin(temp)/3.1415926*180;〃将弧度值转换为角度值if(tempangel>0)〃判断角度值的正负{一angel=(uint16_t)(tempangel*10);〃若为正则乘以10以显示小数点后一位}else{angel=(uint16_t)(-tempangel*10)+1000;〃若为负则显示屏第一位显示“1”}returnangel;}换算Y轴数据与上述类似,在此就不重复介绍。3、温度测量SCA100T有内部温度传感器,这是用来作内部温度自补偿。这些温度信息对于附加的外部补偿也是可用的。温度传感器能够通过SPI接口进行存取,读取的温度数据为8位字符(0・・・255)。根据此公式进行温度数据的转换:T=(counts—197)/-1.083。其中,counts为读取的温度,T为摄氏度下的温度。为了保证获得正确的数据,CSB必须至少提前RWTR命令150us保持在高电平状态。程序如下:uint8_tSca100tReadT(void){SCA_CS_low;_delay_ms(150);〃延时150ms以上再送命令SPDR=CMD_RWTR;〃发送测量温度命令while(!(SPSR&_BV(SPIF)));SPDR=0x00;while(!(SPSR&_BV(SPIF)));count=SPDR;temperature=(count-197)/(-1.083);〃温度数据换算SCA_CS_high;returntemperature;}3.2.2显示屏模块使用LCM046显示屏设置的主要子函数包括:LCM046的初始化、写入命令代码函数、写入数据函数、显示数据函数。同时还设有延时函数,以便调节数据传送过程中时序时间。1、显示屏初始化在初始化过程中应注意的是:模块上电后,软件初始化模块,应延时200ms以上再送命令。第一写入模块专用初始化命令定义模块。第二定义内部RC振荡方式或定义外部晶体振荡方式,第三开振荡器。第四开显示器。以上四步完成后再送其它命令或显示数据。程序如下:voidLCM046_Init(void){_delay_ms(200);〃延时200ms以上再送命令LCM046_PortInit();〃向LCM046发送初始化命令:LCM046_WriteCMD(LCM_COMMAND_INIT);//LCM046模块专用初始化定义LCM046_WriteCMD(LCM_COMMAND_RC);〃定义模块内部RC振荡器工作LCM046_WriteCMD(LCM_COMMAND_RC_ON);〃开振荡器LCM046_WriteCMD(LCM_COMMAND_LCD_ON);〃开LCD显示}2、显示屏写命令函数LCM046的写入命令代码函数主要是供LCM046的初始化函数调用,用于传输命令代码°LCM046写入命令格式为100C7C6C5C4C3C2C1C00。其中,100是设定为写入命令模式、C7到C0是写入的命令代码,在写入命令代码函数中需要按照该格式一位一位的将数据传送到DATA引脚。程序如下:staticvoidLCM046_WriteCMD(uint8_tcmd){uint8_ti;//CS=0CS_LOW;//CSB置低,选择设备_delay_us(1);〃延时1秒〃写100——写命令的模式位LCM_WR_BIT_1;LCM_WR_BIT_0;LCM_WR_BIT_0;〃写8bit的命令

3、显示屏连续写数据函数LCM046的读入数据函数主要是供LCM046显示数据函数调用,用于连续写入数据。LCM046连续写数据格式为1010A4A3A2A1A0D0D1D2D3。其中,1010是设定为连续写数据模式、A4A3A2A1A0是寄存器地址、D0D1D2D3是向该地址中传入的数据。在写数据函数中需要按照该格式一位一位的将数据传送到DATA引脚。传入数据方法与写命令函数中的传数据方法相同,这里就不再进行详细介绍。4、显示屏显示数据LCM046显示数据函数用于直接将数据显示在LCM046的四个七段管中。程序如下:voidLCM046_Display10(uint16_tnum){uint8_ti;uint8_tsegmentCode;//num的个位//num的十位//num的百位//num的千位uint8_tdata[4];data[3]=num%10;data[2]=num/10%10;data[1]=num/100%10;//num的个位//num的十位//num的百位//num的千位}

5、显示屏数据保持功能因为该传感器的精度高,稍微一点的角度变化都会影响到倾角的测量。可能有时调整很久才调整到一个最适合的测量角度,刚显示出角度,因为一些原因产生了移动,还没有读取的数据马上就消失了,这样一来就十分影响测量效率以及工作进度。因此,我设计了一个“保持”模式,通过按键就可以让用户轻松的记录下所需时刻的数据。//hold初始值为//hold初始值为0uint8_thold=0;〃判断是否按下按键2〃取反为1,不显示数据while(1){if(key==2){hold=!hold;}if(hold==0){LCM046_Display10(g_Counter);〃值为0时显示数据}〃判断是否按下按键2〃取反为1,不显示数据实验该传感器默认0°位置为水平位置,因此,在将传感器焊在板子上的时候应放在平整的桌面上进行焊接,保证所有引脚都平贴在板子上,尽量减少因为焊接而引起的误差。实验数据如图4-1所示。K轴:max38.1值:K轴:mas2047minO.2minl016角度:1诘由:max35.2渤:ID3K1966min?min846图4-1实验数据1从实验数据中能够看出,X轴所测出的倾角数据要比Y轴测出的精确许多,因此,在以后的实验中,都以X轴的数据为准。并且,传感器在0-38。范围内放置时具有较好分辨率,超出此范围外,传感器变得不灵敏,因为此时arcsin函数逐渐接近水平。在完成整个样机后,为了测量出该倾角传感器的精度,我进行了两部分的实验,一是倾角测量部分,二是温度测量部分。4.1倾角测量实验因为智能车轮胎的倾角都是10°以下的小角度,因此我先用量角器在白纸上分别画出3°、5°以及10°的角度,然后将传感器所在的板子分别根据白纸上的痕迹,倾斜三个角度,读出显示屏上的数据并记录。本试验数据中单点重复测量3次,取平均。以减小实验误差。实验数据如图4-2所示。第一次第二次第三次平均值10°时魂10.2°10.3°10.2°10.2°Y轴13.2°13.5°12.9°13.3°5°时魂5.T5.2°4.9°5.T丫轴8.5°8.7°8.7°8.6°3^■时魂3.3°3.2°3.0°3.2°Y轴5.4°5.5°5.2°5.3°图4-2实验数据2从这些数据中可以看出,通过X轴测量的数据能够达到0.2°的精度,完全能够满足小角度高精度测量的要求。

4.2温度测量实验该倾角传感器有一个温度传感器,用来进行内部温度自补偿。因为该传感器对外界温度十分敏感,为了保证周围温度变化不影响传感器倾角测量,我做了如下实验。分别将传感器放在阳光下,室内常温,空调前三个不同温度的位置,先读取温度,再读取同一智能车轮胎的倾角。根据前面的经验,这次实验我只读取X轴的数据进行对比。实验数据如图4-3所示。度rrr

温302620第一次第二次度rrr

温302620第一次第二次第三次平均值6.2°6.3°6.3°6.3°6.0°6.2°6.T6.1°6.0°6.0°6.T6.0°从这些数据可以看出,因为传感器内部可以进行温度自补偿,所以在外界温度变化不大的情况下,由传感器采集的倾角数据是基本相同的。因此,采集的数据时可靠的。结论实验样机基本达到了最初的设计目的:能够用倾角传感器检测到倾角信号以及温度信号,经过公式换算,通过按键控制

温馨提示

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

评论

0/150

提交评论