智能车设计 论文

摘要

在全国大学生飞思卡尔“智能汽车”竞赛中,对智能车前轮倾角的调整是一个十分重要的过程,它关系到车模在高速行进过程中的直线行驶性能,转弯的性能等许多方面。为了提高倾角调整的准确性、一致性,本毕业设计旨在开发一种运用于前轮小倾角的高精度的倾角测量仪。首先设计硬件电路,主要包括SCA100T 倾角传感器硬件SPI 接口电路、ATmega16单片机及外围电路和LCM046模块信息显示硬件电路设计。完成硬件电路部分后是对倾角测量仪软件程序的开发,主要包括倾角传感器驱动模块和信息显示模块的程序两方面。实验证明此设计可以完成精确度为0.2°的小倾角测量,但仍有需要改进之处,有待优化。

关键字:倾角测量 SCA100T —D01 ATmega16

Abstract

In National Undergraduate Freescale "smart car" contest, adjusting the angle of the front wheel of the smart car is a very important process. It is related to many aspects like the straight-line driving and the turn performances of the car models in the process of high-speed travel. In order to improve the accuracy and consistency of the inclination adjustment, this graduation project aims to develop a small angle high-precision inclinometer to measure inclination of the front wheel. First, build the hardware circuit, including the design of SCA100T tilt sensor hardware SPI interface circuit, ATmega16 microcontroller and peripheral circuits and LCM046 module information display hardware circuit. After completing the part of hardware circuit, the following is to develop the software program of the inclinometer, mainly including the tilt sensor drive module and the information display module of the program. The experiments show that this design can be done with an accuracy of 0.2 ° inclination measurement, but it still needs to be improved, needs to be optimized.

Keywords: Dip Angle Measurement SCA100T —D01 ATmega16

目录

摘要................................................................................................................................ I Abstract . ....................................................................................................................... II

引言................................................................................................................................ 1

1. 概述............................................................................................................................. 2

1.1 基于AVR 单片机的倾角测量仪开发的意义 ...................................................... 2

1.2 四轮定位................................................................................................................. 2

2. 倾角测量仪硬件设计................................................................................................. 4

2.1主要元器件介绍...................................................................................................... 4

2.1.1传感器的选型....................................................................................................... 4

2.1.2 单片机的选型...................................................................................................... 6

2.1.3 显示屏的选型...................................................................................................... 8

2.2 硬件的总体设计方案 ............................................................................................ 9

2.2.1 倾角传感器模块设计........................................................................................ 10

2.2.2 单片机电路模块................................................................................................ 11

2.2.3 LCM046的显示模块 . ........................................................................................ 12

2.2.4 倾角测量仪硬件设计整体电路图.................................................................... 13

2.3装置样机................................................................................................................ 13

3. 倾角测量仪的软件设计........................................................................................... 14

3.1软件开发环境........................................................................................................ 14

3.2软件设计的总体方案............................................................................................ 15

3.2.1 传感器模块........................................................................................................ 15

3.2.2 显示屏模块........................................................................................................ 20

4. 实验 .......................................................................................................................... 23

4.1 倾角测量实验 ...................................................................................................... 23

4.2 温度测量实验 ...................................................................................................... 24

结论.............................................................................................................................. 25

致谢.............................................................................................................................. 26

参考文献...................................................................................................................... 27

引言

在智能车比赛中,存在许多影响车子的稳定行驶以及各项性能的机械结构,因此,对前轮倾斜角度的调整成为了至关重要的一个步骤。为了让智能车能够在比赛中有好的表现,主要有以下四种定位方式:主销后倾、主销内倾、前轮外倾、前轮前束,但目前市场上在专用于智能车轮胎的低成本、高精度倾角测量仪这个方面依旧是一块空白。经过调查,我发现大多数的选手在准备阶段还主要是用目测对小车前轮倾斜角度进行调整,这样就大大的降低了精确度,进而影响到小车性能的发挥。因此,本设计的主要目的就是开发一款适用于智能车轮胎小倾角的高精度测量仪。

设计和实现一个基于AVR 单片机倾角测量仪,主要有以下两个方面的内容: 一是基于AVR 单片机倾角测量仪硬件电路设计,其中主要包括倾角传感器硬件接口电路、单片机及外围电路和信息显示硬件电路设计;

二是倾角测量仪软件程序的开发,主要包括倾角传感器驱动模块、信息显示模块、按键模块以及传感器内部温度补偿模块程序的开发。

1. 概述

1.1 基于AVR 单片机的倾角测量仪开发的意义

全国大学生飞思卡尔“智能汽车”竞赛是教育部倡导的大学生科技竞赛之一。该竞赛旨在培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能。对于智能车而言,要保持车辆直线行驶的稳定性,使之转弯自动回正、转向轻便,必须确定车轮定位参数。而在目前的智能车比赛中,调整智能车轮胎的倾角一般都采用目测,用人眼来观察左右前轮的倾角存在误差大,难以调整等问题。

1.2 四轮定位

车轮定位角度是存在于悬架系统和各活动机件间的相对角度,保持正确的车轮定位角度可确保智能车直线行驶,改善车辆的转向性能,确保转向系统自动回正,避免轴承因受力不当而受损失去精度,还可以保证轮胎与地面紧密接合,减少轮胎磨损、悬架系统磨损以及降低油耗等。汽车悬架系统主要定位角度包括:车轮外倾、车轮前束、主销后倾、主销内倾等。

1、车轮外倾

车轮外倾角是指车轮中心平面与汽车垂直平面的夹角。当车轮顶部向汽车外部倾斜时角度为正,反之为负。车轮外倾角主要作用是使车轮与地面的动态承载中心得到合理的分配,从而达到提高机械零件的使用寿命,减少轮胎的磨损等效果。若车轮外倾角不正确,轮胎会出现异常的磨损,智能车在行驶时也会发生偏驶的现象。一般前轮外倾角为 1°左右如图1-1所示。

图1-1 车轮外倾

2、车轮前束

车轮的水平直径与车辆纵向对称平面之间的夹角为前束角。由于车轮外倾及路面阻力使前轮有向两侧张开做滚锥运动的趋势但受车轴约束,不能向外滚动,导致车轮边滚边滑,增加了磨损,

通过前束可使车轮在每瞬间的滚动方向都接近

于正前方,减轻了轮毂外轴承的压力和轮胎的磨损。前轮前束一般为0~12mm。如图1-2所示。

图1-2 车轮前束

3、主销后倾

过车轮中心的铅垂线和真实或假想的转向主销轴线在车辆纵向对称平面的投影线所夹锐角为主销后倾角,向前为负,向后为正。主销后倾角的存在可使车轮转向轴线与地面的交点在轮胎接地点的前方,可利用地面对轮胎的阻力产生绕主销轴线的回正力矩,该力矩的方向正好与车轮偏转方向相反,使车辆保持直线行驶。通常后倾角为1°~3°。如图1-3所示。

图1-3 主销后倾

4、主销内倾

主销内倾定义为在同时垂直于车辆纵向对称平面和车辆支承平面的平面内,由真实的或假想的转向主销的轴线在该平面上的投影与车辆支承平面的垂线所构成的锐角。主销内倾角的作用,是使车轮在受外力偏离直线行驶时,前轮会在重力作用下自动回正。另外,主销内倾角还可减少前轮传至转向机构上的冲击,并使转向轻便,但内倾角不宜过大,否则在转向时,会使轮胎磨损加快。通常主销内倾角不大于8°。如图1-4所示。

图1-4 主销内倾

2. 倾角测量仪硬件设计

2.1主要元器件介绍

2.1.1传感器的选型

1、 SCA60C :N1000060

SCA60C :N1000060加速度计是由硅体微机传感元件芯片和一个信号调节ASIC 组成的。封装过程中是标准的半导体传输成型工艺。该传感器具有8 个SMD 管脚(鸥翼式)。测量倾角范围为±90°,由于测量范围大,所以精度也就相对降低许多。另外,由于它是单轴倾角传感器,对于测量多方向的四轮定位的倾角是不能够满足要求的。

2、 SCA100T-D01

SCA100T 系列是一个基于3D 测量的双重轴倾角测量仪。传感单元的2条测量轴与安装平面平行,且相互垂直。它有低温度依赖性,高精度和低噪声,以及一个高效的传感单元设计,这使得SCA100T 成为大多倾角测量仪的理想的选择。该传感器主要应用于:平台水准和稳定性测量、水准仪、360°垂直定向测量及容积率测量等。

经过多次的对比,一开始我考虑选用的是角度传感器,但经过考察实际情况以及查阅大量的资料,我发现在本设计中需要用到的是倾角传感器。最终,我选用SCA100T —D01倾角传感器来获取倾角信号,它精度高,且为双轴传感器,非常适合智能车轮胎倾角测量时所需的小角度、多方向等要求。

1) 特性

双轴倾角测量(X 轴和Y 轴);SCA100T-D01的测量范围为±30°;精度为0.0025°(10Hz BW,模拟输出);传感单元控制过阻尼频率响应(-3dB 18Hz);过温度的高稳定性;数字SPI 倾斜及温度输出;通过静电力的偏转传感单元的检测质量的自检功能;连续传感单元互连错误检查。

2) 实物图与引脚图

实物图与引脚图如图2-1所示。

图2-1 SCA100T-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、 MC9S12XS128

MC9S12XS128是一个16位的单片机,由128KB 程序Flash 、8KB 随机存储器、8KB 数据Flash 组成片内存储器。同时还包括2个异步串行通信接口、1个串行外设接口、1个8通道输入捕捉/输出比较定时器模块、16通道12位A/D转换器和一个8通道脉冲宽度调制模块。端口引脚大多为复用引脚,具有多重功能。但因为XS128价格较高,并且其中许多的功能在本设计中都不需要使用,性价比不高,因此不选用XS128作为本设计的传感器。

2、 ATmega16

ATmega16是基于增强的AVR RISC结构的低功耗8 位CMOS 微控制器。由于其先进的指令集以及单时钟周期指令执行时间,ATmega16 的数据吞吐率高达1 MIPS/MHz,可以缓减系统在功耗和处理速度之间的矛盾。16K 字节的系统内可编程Flash ,512 字节EEPROM , 32 个通用I/O 口线,32 个通用工作寄存器,用于边界扫描的JTAG 接口,支持片内调试与编程,三个具有比较模式的灵活的定时器/ 计数器(T/C),片内/外中断,可编程串行USART ,有起始条件检测器的通用串行接口,8路10位具有可选差分输入级可编程增益(TQFP 封装) 的ADC ,具有片内振荡器的可编程看门狗定时器,一个SPI 串行端口,以及六个可以通过软件进行选择的省电模式。其实物图与引脚图如图2-2所示:

图2-2 ATmega16实物图与引脚图

1) 产品特性

● ATmega16的外设特点:它有两个8 位、一个16位的具有独立预分频器

和比较器功能的定时器/ 计数器,它的实时计数器RTC 具有独立振荡器

以及可工作于主机/ 从机模式的SPI 串行接口。

● 特殊的处理器特点:上电复位以及可编的掉电检测、经过标定的片内RC

振荡器以及五种睡眠模式。

● ATmega16的工作电压为4.5 - 5.5V,正常模式下工作电流为1.1 mA。

2) 引脚说明

ATmega16的引脚功能如表2-1所示。

表2-1 ATmega16引脚说明表

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可与任何单片机相连,功耗非常低,数据传输方式是串口传输。显示状态50μA(典型值) , 省电模式

2、LCM046显示屏引脚说明

由于 LCM046 内部有上拉电阻, 为保证低功耗, 每次送数之后,/CS、/RD、/WR 、DATA 必须接高电平或悬浮。根据采用的MCU 不同, 采用不同方式接口, 不必使用分压电阻若MCU 与LCM046 工作电压相同可直接相接。/RD 、/IRQ 、BZ 可不用,用三线接口即可: /CS、/WR、DATA 。LCM046引脚说明见表2-2。

表2-2 LCM046引脚说明

3、LCM046显示屏的相关时序

1) 写命令/数据时序

2) 连续写数据时序

注 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 硬件设计原理框图

1. 倾角传感器模块的设计:系统采用SCA100—D01的SPI 接口来读取输出信息,可避免额外的A/D采样,由于ATmega16具有SPI 中断,可直接将传感器作为从器件接到单片机的SPI 接口上。

2. 单片机模块的设计:单片机电路设计主要是单片机外围电路的连接,以保证单片机可以正常工作。此外,还有单片机与倾角传感器之间的SPI 接口、显示屏LCM046相关引脚以及按键的连接,以确保信号能够正常传输。

3. 按键模块的设计:主要是与单片机的连接,让用户可以根据需要通过外部按键来切换显示屏上显示的数据。

4. 显示屏LCM046应用电路的设计:主要是显示屏本身供电等自身外围电路的连接,以及显示屏与单片机相关引脚的连接。

5. 电源适配器供电模块的设计:倾角测量仪的电源可由电源适配器或者电池提供的,因为各模块所需的工作电压都有所不同,同时设计了一个稳压模块,将适配器提供的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 引脚说明

2.2.2 单片机电路模块 北京联合大学 毕业论文

器以及LCD 相关引脚的连接以确保信号传输正常。该模块中ATmega16单片机单片机电路设计主要是ATmega16单片机小车开发板与JTAG 仿真器、传感原理图如图2-5所示。其中,因为不需使用模数转换器,引脚27可直接接电源。

图2-5 单片机模块原理图

图2-4 传感器模块原理图

北京联合大学 毕业论文

JTAG 仿真器接口原理图如图2-6所示。其中,TCK 为时钟信号引脚与单片机引脚21相连,TMS 为模式选择引脚,与单片机引脚22相连。TDI 与TDO 分别为数据输入与输出引脚,分别与单片机引脚24、23相连。引脚4与7都需要接电源。引脚6为复位脚,接单片机引脚4。引脚2与10接地。引脚8留作后续设备时候,此处悬空不接。

图2-6 JTAG 仿真器接口原理图

2.2.3 LCM046的显示模块

LCM046显示电路设计主要是显示屏本身供电等外围电路的连接,以及显示屏与单片机相关引脚的连接。其中,BZ 与/BZ引脚是驱动蜂鸣器的,此设计中没有使用蜂鸣器,所以BZ 与/BZ引脚悬空不接。IRQ 为定时器输出,RD 为模块数据读出控制线,也悬空。CS 为片选引脚,与单片机引脚35相连。WR 为数据/指令写入控制线,与单片机引脚36相连。DA 为数据输入/输出,与单片机引脚37相连。VLCD 必须接电源。该模块原理图如图2-7所示。

图2-7 显示模块原理图

2.3装置样机

图如图2-9所示。 2.2.4倾角测量仪硬件设计整体电路图 北京联合大学 毕业论文 测量仪的硬件设计总体原理图如图2-8所示。 采用Protel DXP 2004软件绘制倾角测量仪的原理图及PCB 电路板。该倾角图2-8 硬件设计总体原理图 轮胎的贴合面进可能的平整,最小程度影响倾角测量。倾角测量仪实验样机实物围电路模块、LCM046显示屏模块。本装置制作的原则是测量模块尽可能小,与本装置样机组成分为三部分:SCA100T —D01传感器测量模块、单片机及外

图2-9 实验样机实物图

3. 倾角测量仪的软件设计

3.1软件开发环境

本次毕业设计中的软件设计我选择的开发环境是AVR Studio 4,它是极大多数AVR 开发者必选的工具。其编译界面如图3-1所示。

图3-1 AVR Studio 4 编译界面

ATMEL AVR Studio集成开发环境(IDE) ,包括AVR Assembler编译、

AVR Studio调试功能、AVR Prog串行、并行下载功能和JTAG ICE仿真等功能。它为功能强大的AVR 8位 RISC 指令集单片机提供了工程管理工具、源文件编辑器、芯片模拟器和在线仿真调试(In-circuit emulator)接口。它有一个全新的模块结构,此结构允许第三方软件共同合作开发,而且GUI 插件和其它模块也可以写或挂到该系统上。

因为AVR Studio 4默认的语言是汇编语言,自身不带有C 语言编译器,因此在安装该软件时同时需要安装一个C 编译器,此编译器我选择的是WINAVR 。在正确安装这两个软件后,打开AVR Studio 4,在创建新工程的时候就会多出来一个AVR GCC的选项,选择该项即可使用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 控制寄存器——SPCR

其中:

SPIE :置1时,引发SPI 中断。

SPE :置1时,使能SPI 。

DORD :为1时,先发送数据的地位;为0时,先发送数据的高位。

MSTR :为1时选择主机模式,为0时选择从机模式。

CPOL :时钟极性。

CPHA :时钟相位。

SPR1…0:SPI 时钟频率选择。

2) SPI 状态寄存器——SPSR

Bit

其中,本设计使用到的有:

SPIF :在串行发送结束后置1。

WCOL :若SPI 在数据传输中对SPDR 写入数据,WCOL 会置1。

Bit 5…1:保留位,读操作返回值为0。

SPI2X :该位置1将加倍SPI 时钟频率。

程序如下:

void Sca100t_Init(void){

DDRB=0xa0; //MOSI和SCK 引脚输出,低电平

SCA_CS_PIN_d;

SCA_CS_high;

SPCR=0x51; //主机模式、模式0、使能SPI

SPSR=0x00; //MSB在前,SPI 时钟频率:8M/16=500kHZ }

2、倾角读取与转换

1) 根据ATmega16的SPI 数据寄存器——SPDR 的说明表以及SCA100T —D01的命令寄存器的命令列表,进行倾角数据的读取。

SPDR 为读/写寄存器,用来在通用寄存器组和SPI 移位寄存器之间传输数据。

其说明表为:

Bit 其中:

MSB 为数据的最高位,LSB 为数据的最低位。

SCA100T —D01的命令寄存器的命令列表如表2-3所示。

表2-3 SCA100T —D01命令列表

图3-3 RWTR 命令时序图

图3-4 SPI 接口传输命令与数据时序图

程序如下: uint16_t Sca100tReadX(void){ SCA_CS_low; //首先将CSB 置低,选择该设备 SPDR=CMD_RDAX; //发送读取X 轴数据命令 while( !(SPSR & _BV(SPIF)) ); //等待 SPDR=0x00; //任意发送一数据,准备开始读取倾角数据 while( !(SPSR & _BV(SPIF)) ); temp=SPDR; //将读取的高8位数据赋给temp SPDR=0x00; while( !(SPSR & _BV(SPIF)) ); temp=(temp>5); //移位 SCA_CS_high; //将CSB 置高,结束传输 return temp; //返回数据

}

其中,需要注意的是,通过SPI 接口输出的数据为11位,而每次读取仅能读取8位,并且先输出高位后输出低位,因此,在读取完高8位数据后需要将变量左移3位,而将下一次读取的数据寄存器中的数据右移5位,将剩下的3位写入变量中,这样才能完整的读取11位数据。

读取Y 轴数据与上述类似,在此就不重复介绍。

2) 数字输出与角度换算

直接从寄存器读取出的数据是范围为0至2048的数据,此数据需要经过换算才能最终在显示屏上显示出实际角度,参考说明书,可根据下列公式进行换算:α=arcsin[(Dout-Dout@0°)/sens]。

其中:

● Dout 为数字输出(RDAX 或是RDAY );

● Dout@0°为数字偏移值,RDAX 和RDAY 数据寄存器在0角度位置处

的标准内容为:二进制:100 0000 0000;十进制:1024;

● α为角度;

● sens 为设备敏感度,取值1638。

程序如下:

uint16_t readSca100tAngelX(void)

temp=(double)Sca100tReadX();

temp=(temp-1024)/1638; //根据公式计算出函数自变量

if (temp>1) //判断函数自变量是否在定义域范围内

} { temp=1; } if (temp0) //判断角度值的正负 { angel=(uint16_t)(tempangel*10); //若为正则乘以10以显示小数点后一位 }else{ angel=(uint16_t)(-tempangel*10) + 1000; //若为负则显示屏第一位显示“1” } return angel;

换算Y 轴数据与上述类似,在此就不重复介绍。

3、温度测量

SCA100T 有内部温度传感器,这是用来作内部温度自补偿。这些温度信息对于附加的外部补偿也是可用的。温度传感器能够通过SPI 接口进行存取,读取的温度数据为8位字符(0…255)。根据此公式进行温度数据的转换:T=(counts —197)/-1.083。其中,counts 为读取的温度,T 为摄氏度下的温度。为了保证获得正确的数据,CSB 必须至少提前RWTR 命令150us 保持在高电平状态。

程序如下: uint8_t Sca100tReadT (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;

return temperature;

}

3.2.2 显示屏模块

使用LCM046显示屏设置的主要子函数包括:LCM046的初始化、写入命令代码函数、写入数据函数、显示数据函数。同时还设有延时函数,以便调节数据传送过程中时序时间。

1、显示屏初始化

在初始化过程中应注意的是:模块上电后, 软件初始化模块,应延时200ms 以上再送命令。第一写入模块专用初始化命令定义模块。第二定义内部RC 振荡方式或定义外部晶体振荡方式,第三开振荡器。第四开显示器。以上四步完成后再送其它命令或显示数据。 程序如下:

void LCM046_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);

}

2、显示屏写命令函数

LCM046的写入命令代码函数主要是供LCM046的初始化函数调用,用于传输命令代码。LCM046写入命令格式为1 0 0 C7 C6 C5 C4 C3 C2 C1 C0 0。其中,1 0 0是设定为写入命令模式、C7到C0是写入的命令代码,在写入命令代码函数中需要按照该格式一位一位的将数据传送到DATA 引脚。

程序如下: static void LCM046_WriteCMD(uint8_t cmd){ uint8_t i; //CS=0 CS_LOW; //CSB置低,选择设备 _delay_us(1); //延时1秒 //写100——写命令的模式位 LCM_WR_BIT_1; LCM_WR_BIT_0; LCM_WR_BIT_0; //写8bit 的命令 //开振荡器 LCM046_WriteCMD(LCM_COMMAND_LCD_ON); //开LCD 显示

for(i=0;i

//CS、WR 、DATA 置高平,实现低功耗方式

CS_HIGH;

WR_HIGH;

DATA_HIGH; }

3、显示屏连续写数据函数

LCM046的读入数据函数主要是供LCM046显示数据函数调用,用于连续写入数据。LCM046连续写数据格式为1 0 1 0 A4 A3 A2 A1 A0 D0 D1 D2 D3。其中,1 0 1 0是设定为连续写数据模式、A4 A3 A2 A1 A0是寄存器地址、D0 D1 D2 D3是向该地址中传入的数据。在写数据函数中需要按照该格式一位一位的将数据传送到DATA 引脚。传入数据方法与写命令函数中的传数据方法相同,这里就不再进行详细介绍。

4、显示屏显示数据

LCM046显示数据函数用于直接将数据显示在LCM046的四个七段管中。

程序如下: void LCM046_Display10(uint16_t num){ uint8_t i; uint8_t segmentCode; uint8_t data[4]; data[3]=num%10; //num的个位 data[2]=num/10%10; //num的十位 data[1]=num/100%10; //num的百位 data[0]=num/1000%10; //num的千位 for(i=0;i

}

5、显示屏数据保持功能

因为该传感器的精度高,稍微一点的角度变化都会影响到倾角的测量。可能有时调整很久才调整到一个最适合的测量角度,刚显示出角度,因为一些原因产生了移动,还没有读取的数据马上就消失了,这样一来就十分影响测量效率以及工作进度。因此,我设计了一个“保持”模式,通过按键就可以让用户轻松的记录下所需时刻的数据。 程序如下:

uint8_t hold=0; //hold初始值为0

while(1){

if(key==2){ //判断是否按下按键2

hold=!hold; //取反为1,不显示数据

}

if(hold==0){

LCM046_Display10(g_Counter); //值为0时显示数据

}

4. 实验

该传感器默认0°位置为水平位置,因此,在将传感器焊在板子上的时候应放在平整的桌面上进行焊接,保证所有引脚都平贴在板子上,尽量减少因为焊接而引起的误差。实验数据如图4-1所示。

图4-1 实验数据1

从实验数据中能够看出,X 轴所测出的倾角数据要比Y 轴测出的精确许多,因此,在以后的实验中,都以X 轴的数据为准。并且,传感器在0-38°范围内放置时具有较好分辨率,超出此范围外, 传感器变得不灵敏,因为此时arcsin 函数逐渐接近水平。

在完成整个样机后,为了测量出该倾角传感器的精度,我进行了两部分的实验,一是倾角测量部分,二是温度测量部分。

4.1 倾角测量实验

因为智能车轮胎的倾角都是10°以下的小角度,因此我先用量角器在白纸上分别画出3°、5°以及10°的角度,然后将传感器所在的板子分别根据白纸上的痕迹,倾斜三个角度,读出显示屏上的数据并记录。本试验数据中单点重复测量3次, 取平均。以减小实验误差。实验数据如图4-2所示。

图4-2 实验数据2

从这些数据中可以看出,通过X 轴测量的数据能够达到0.2°的精度,完全能够满足小角度高精度测量的要求。

4.2 温度测量实验

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

图4-3 实验数据3

从这些数据可以看出,因为传感器内部可以进行温度自补偿,所以在外界温度变化不大的情况下,由传感器采集的倾角数据是基本相同的。因此,采集的数据时可靠的。

结论

实验样机基本达到了最初的设计目的:能够用倾角传感器检测到倾角信号以及温度信号,经过公式换算,通过按键控制依次显示在LCD 屏上,精度高,非常适合小角度的智能车轮胎倾角测量。并且,为了方便使用,还设定有“保持”模式,方便记录数据。样机体积小,携带方便,传感器独立于主板之外,适用于任何角度的测量。

设计过程中由于实践经验不足,考虑问题不太周全,在电路实验、软件调试过程都出现了不少问题,在这里还要感谢邵老师对我实验中出现问题的耐心提点和帮助。

通过这一课题我不仅将所学C 语言的相关知识系统的运用到具体项目中,还深入了解了许多关于AVR Studio 4、DXP 等相关软件的使用方法及主要功能。同时,在硬件电路搭建过程中,对SPI 接口也有了一定程度的掌握并能够较好的将它运用在实际电路连接中。另外,对本课题中最核心的SCA100T 倾角传感器以及其自带的拓展功能:温度补偿等,也做了全面的研究。在完成这个设计的过程中,我深刻的认识到理论知识好理解,但是真正将其运用到实际中还是相当比较困难的。因此,只有踏踏实实、认认真真的调试与研究,有越挫越勇的精神才能完成挑战,真正的掌握知识,运用知识。

整体设计有待提高的方面:

1) 目前的软件设计可以实现预期的设计目的,但还是有许多值得完善的方面,还可以再添加一些辅助处理,使功能更加完善。比如:可以设计定时休眠模式以达到低功耗的功能等。

2) 该测量仪原先设计可将传感器固定在轮胎上,但由于时间有限就没有再重新制作固定装置,而仅仅是用手将传感器所在的电路板按在轮胎上,这样一来,手的轻微的移动对传感器的精度也有一定的影响。

3) 在前期考虑显示屏的选择时,并没有考虑到需要进行多组不同数据的显示,因此选用了LCM046,该液晶屏不能一次显示多组数据,并且无法知道现在屏幕所显示的是哪一组,需要通过外部按键进行切换,比较麻烦。

致谢

历时六个月终于顺利完成此课题,首先我要感谢一下我的母校一北京联合大学生物化学工程学院,感谢各位领导和老师对我的悉心教导,以强大的师资力量和良好的教学环境为我们今后的道路打下坚实的基础。

其次,在这里我由衷的感谢邵明刚老师对我的教导,在这六个月里他花费了大量的精力给予了我极大的支持,没有邵明刚老师的帮助我的毕业设计不可能顺利完成。在整个毕业设计过程中,邵明刚老师都给与了我很多的帮助和建议,他传授给了我许多设计方法和设计思路,有很多都是我之前没有接触过的,经过此次设计,我觉得收获颇多,在软件编程上也在我不懂的地方给了我细心的讲解。

最后,感谢王晓玉、郭强同学对我的帮助,在软件编程时告诉我一些语句的使用,帮我查找资料等。还有感谢设计过程中帮助过我的老师和同学们,没有你们我的毕业设计不能顺利完成,再次感谢大家。

北京联合大学 毕业论文

参考文献

[1]杭和平,杨芳,谢飞。单片机原理与应用。机械工业出版社,2008。

[2]杭和平,邵明刚,杨芳。AVR 单片机原理与GCC 编程实践——智能小车的系统开发。中国电力出版社。

[3]郁有文,常健。传感器原理及工程应用。西安电子科技大学出版社。

[4]梅丽凤 ,王艳秋,张军。单片机原理及接口技术。清华大学出版社2006。

[5]阎石。数字电子技术基础。高等教育出版社。

[6]谭浩强。C 语言程序设计。清华大学出版社1999。

[7] SCA60C-N1000060英文数据手册.pdf

[8] En_Atmega16_datasheet_new. ATmega16英文数据手册.

[9] 芯艺AVR 单片机与GCC 编程V 1.1 版2004.pdf.

[10] SCA100T_inclinometer_datasheet.pdf

[11] http://wenku.baidu.com/view/c2f3647d27284b73f24250df.html.

[12] http://www.lamshine.com/inclinometer/SCA60C.pdf.

[13] http://wenku.baidu.com/view/871d0af27c1cfad6195fa7ff.html.

[14]LCM046 通用仪器仪表液晶显示模块技术说明书。

[15] SCA100T 角度传感器在角度测量系统中的设计_周姣.pdf

[16]基于SCA100T 的倾角测量系统设计_赵伟.pdf

[17]高精度倾角传感器SCA100T 在测斜仪中的应用_李静.pdf

[18]基于SPI 接口的双轴SCA100T 倾角传感器及其应用方法_孙汝建.pdf

[19]王远,张玉平。模拟电子技术基础。机械工业出版社2007。

[20]周俊杰。嵌入式C 编程与Atmel AVR。清华大学出版社2003。

27


© 2024 实用范文网 | 联系我们: webmaster# 6400.net.cn