基于单片机的智能水平仪设计.docx
- 文档编号:20111972
- 上传时间:2023-04-25
- 格式:DOCX
- 页数:64
- 大小:818.76KB
基于单片机的智能水平仪设计.docx
《基于单片机的智能水平仪设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的智能水平仪设计.docx(64页珍藏版)》请在冰豆网上搜索。
基于单片机的智能水平仪设计
摘要
电子水平仪是一种非常普遍的测量小角度的量具。
用它可测量对于水平位置的倾斜度。
基于传感器、数字信号处理、单片机技术的数字水平仪是当前倾角测试仪器数字化发展的方向。
本毕业设计就是采用STC89C52单片机和ADI公司生产的三轴加速度传感器ADXL345相结合,利用ADXL345三轴加速度传感器感应水平倾角,通过单片机的控制以及运算将倾角以数值的形式直接在LCD显示屏上进行显示、处理,从而使角度测量变得方便、快捷,实现了倾角的高精度测量。
通过ADXL345三轴加速度传感器原理,提出了使用软件和硬件结合的自动校正技术进行测量角度,最大限度简化了电路,提高了系统的稳定性和可靠性。
通过对本课题的研究,让我对水平仪有了一定的了解,在未来水平仪将在建筑方面起着重要作用,并且随着时代发展,水平仪对角度的测量将越来越精细,随着光学应用领域的不断扩展,也相应的产生了一些基于光电原理的光电式水平仪和激光式水平仪,光电原理的应用将是未来水平仪的发展方向。
关键词:
智能水平仪;单片机;ADXL345;角度
Abstract
Electroniclevelgaugeisaverycommonsmallanglemeasurement.Measurementforthehorizontalpositionoftheinclinationtouseit.Basedonthedigitallevelsensor,digitalsignalprocessing,computertechnologyisthecurrentdevelopmentofdigitalinstrumenttilttestinginstrumentinthedirectionof.
ThisgraduationdesignistheuseofthreeaxisaccelerometerADXL345microcontrollerSTC89C52andADIcompanyproductionofcombination,usingtheADXL345threeaxisaccelerationsensorlevelangle,processingthroughtheMCUcontrolandoperationwilldipinnumericalformdirectlyintheLCDscreendisplay,,sothattheanglemeasuringisconvenient,quick,realizehighprecisionmeasurementofangle.TheprincipleoftheADXL345threeaxisaccelerometer,andproposestousethecombinationofhardwareandsoftwareoftheautomaticcalibrationtechniqueformeasuringtheangle,themaximumsimplifiesthecircuit,improvesthestabilityandreliabilityofthesystem.
ThisgraduationdesignistheuseofthreeaxisaccelerometerADXL345microcontrollerSTC89C52andADIcompanyproductionofcombination,usingtheADXL345threeaxisaccelerationsensorlevelangle,processingthroughtheMCUcontrolandoperationwilldipinnumericalformdirectlyintheLCDscreendisplay,,sothattheanglemeasuringisconvenient,quick,realizehighprecisionmeasurementofangle.TheprincipleoftheADXL345threeaxisaccelerometer,andproposestousethecombinationofhardwareandsoftwareoftheautomaticcalibrationtechniqueformeasuringtheangle,themaximumsimplifiesthecircuit,improvesthestabilityandreliabilityofthesystem.
Keywords:
Intelligentlevel;MCU;ADXL345;angle
1绪论1
1.1课题研究背景和意义1
1.2国内外水平仪发展现状和趋势1
1.3系统设计的主要工作1
1.4论文结构及安排2
2三轴加速度传感器感应原理3
2.1ADXL345工作原理3
2.2ADXL345寄存器映射5
2.3ADXL345主要寄存器定义介绍6
2.4测量倾斜角度原理8
2.4.1加速度传感器进行倾角测量简介8
2.4.2ADXL345测量角度原理9
3水平仪总体设计12
3.1水平仪硬件设计12
3.1.1单片机模块13
3.1.2LCD液晶显示模块14
3.1.3ADXL345接口设计16
3.1.4ADXL345加速度传感器模块18
3.2水平仪软件设计20
3.2.1I2C总线协议分析21
3.2.2液晶显示驱动程序设计25
3.2.3ADXL345加速度传感器软件模块28
3.2.4ADXL345加速度传感器误差校准28
4实验数据及总结30
结论33
致谢34
附录A英文原文37
附录B汉语翻译41
附录C主程序44
附录D电路原理图55
1绪论
1.1课题研究背景和意义
在高楼桥梁等建筑行业,对建筑物自身在水平面倾斜度的测量和处理,需要一个能连续工作几个月甚至一年以上采样进度很高的数字水平仪系统,这就要求该系统必须具有高精度微功耗的功能。
水平仪从过去简单的气泡水平仪到现在的电子水平仪已经历经多次更新。
电子水平仪是一种非常急需的测量小角度的量具。
随着精密制造技术的发展,已有的电子水平仪不能满足精度要求,国内数显式电子水平仪灵敏度,反应时间等与国外相比,差距较大。
研究分辨率更高,性能更好的智能电子水平仪具有重要意义。
为了提高水平仪的测量精度,摆脱传统水平仪智能化程度低、数据处理能力差、抗震能力差等缺点,必须利用现代科技设计一种新的水平仪。
基于MEMS传感器、数字信号处理、单片机的智能水平仪是今后水平仪的发展方向,可以应用于建筑、石油、煤矿和地质勘探等领域。
本毕业设计将STC89C52单片机和ADI公司生产的三轴加速度传感器ADXL345相结合,实现了高精度数显智能水平仪的设计。
1.2国内外水平仪发展现状和趋势
目前国内已有的水平仪不能很好的满足生产和应用的需求,国内电子水平仪的生产和研制能力与国外相比相对落后。
尤其是存在着智能化程度不高,对数据缺乏处理能力,无法一次性测量出被测面倾斜角和方位角等缺点。
近年来,国内在水平仪的研制开发方面取得了不少进展。
国外蒸蒸日上,厂家繁多,种类齐全,速度越来越快,功耗越来越低,性能越来越强,国内除台湾做的比较好外,大陆也有几家具备研发和生产能力,如上海华虹、海尔等,只不过大陆产品占的市场份额太小了
1.3系统设计的主要工作
本毕业设计的主要目标是利用单片机和三轴加速度传感器,设计一种高精度、大角度测量范围、实时显示、便携式的智能水平仪。
该水平仪测量的角度显示在90º以内,并且能通过三个轴的加速度正负值,判断角度的倾斜方向,同时,由于本系统是基于
MEMS技术,因此即使在恶劣的现场工业环境中,仍能表现出优秀可靠的性能。
经过文献的翻阅和芯片资料的对比,选择了一套可行的方案。
在硬件方面,可以用于测量倾角的芯片有三种类型,分别是ADXL345三轴加速度传感器、mma7455三轴加速度传感器、三轴陀螺仪。
通过对比,ADXL345具备数字输出,高精度(3.9mg/LSB),误差小等优点,因此选择了ADXL345芯片作为测量倾角的传感器。
同时选择了集成了单片机、LCD液晶显示屏和一些基本元件的开发板,减少设计的时间和复杂度。
在软件方面,采用C语言在Keil软件中编程,使用I2C通信方式实现单片机和传感器的数据传输;利用数学方法推倒出的角度计算公式计算角度大小;最后经过实际测量角度,计算出传感器的测量误差,在偏移寄存器中进行校准。
1.4论文结构及安排
本文将围绕设计一个完整的电容式传感器信号处理系统的过程展开,包括角度转换模块和数据处理模块。
本文主要内容如下:
第1章,绪论,阐述了选题背景和意义,分析了国内外相关技术的发展动态及研究现状,并对本论文的主要工作进行了介绍。
第2章,通过对角度转换中涉及的三轴加速度传感器以及数据处理中涉及的A/D转换、数码显示等各部分综合分析,确定本系统的总体方案,并给出系统总体结构框图,为后续设计做准备。
第3章,先简单介绍了智能水平仪的硬件设计、软件技术,并对其选型和性能进行分析。
第4章,设计结果实现,分析数据。
2三轴加速度传感器感应原理
2.1ADXL345工作原理
ADXL345是一款小而薄的超低功耗三轴加速度测量系统(如图2.1所示),分辨率高达13位,可选择的测量范围有±2g,±4g,±8g或±16g。
数字输出数据格式为16位二进制补码。
ADXL345非常适合应用在移动设备中,它既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,使得器件可作为倾斜传感器使用。
其高分辨率(3.9mg/LSB)能够测量不到1.0º的倾斜角度变化。
ADXL345的主要特性如下:
超低功耗:
Vs=2.5V时(典型值),测量模式下为23μA,待机模式下为0.1μA;
用户可以选择不同的量程和分辨率,±2g(10bit),±4g(11bit),±8g(12bit),±16g(13bit);
(1)电源电压范围:
2.0V至3.6V;I/O电压范围:
1.7V至3.5VS;
(2)SPI模式(3线和4线)和I2C模式数字接口;
(3)通过串行命令可选测量范围和带宽;
(4)32级FIFO缓冲器;
(5)使用温度范围:
-40℃至+85℃;
(6)抗冲击能力:
10000g;
(7)小而薄:
3mm*5mm*1mm,LGA封装;
(8)应用范围:
手机、医疗仪器,工业仪器、仪表、个人导航设备等。
图2.1ADXL345芯片
该加速度传感器提供多种特殊检测功能。
活动和非活动检测功能通过比较任意轴
上的加速度与用户设置的阈值来检测有无运动发生以及在各个轴上的加速度值是否超过用户设置的阀值。
敲击检测功能可以检测任意方向的单振和双振动作。
自由落体检测功能可以检测器件是否正在掉落。
这些功能可以独立映射到两个中断输出引脚中的一个。
芯片内部集成式存储器管理系统采用一个32级先进先出(FIFO)缓冲器,可用于存储32个X、Y和Z轴的数据样本集,从而将主机处理器负荷降至最低,并降低整体系统功耗。
同时,低功耗模式支持基于运动的智能电源管理,从而以极低的功耗进行阀值感测和运动加速度测量。
ADXL345为多晶硅表面微加工结构,置于晶圆顶部。
由于应用加速度,多晶硅弹簧悬挂于晶圆表面的结构之上,提供力量阻力。
差分电容由独立固定板和活动质量连接板组成,能对结构偏转进行测量。
加速度使惯性质量偏转、差分电容失衡,从而传感器输出的幅度与加速度成正比。
相敏解调用于确定加速度的幅度和极性。
ADXL345的工作原理是:
首先有前端感应器感测加速度大小,然后感应电信号器件将它转换成可识别的电信号,此时的信号还是模拟信号。
在芯片内部集成了AD转化器,因此模拟信号经过转化器变为数字信号输出。
与计算机系统数字信号输出类似,AD转换器输出的也是16位的二进制补码。
数字信号经过数字滤波器的滤波处理后,在控制和中断逻辑单元的控制下访问32级FIFO,单片机通过串行接口读取三个轴的加速度数据。
单片机通过对寄存器的操作,发送对串口的读写命令实现对ADXL345的控制。
芯片内部的功能框图如图2.2所示。
图2.2ADXL345芯片功能框图
2.2ADXL345寄存器映射
表2.1寄存器映射
地址
名称
类型
复位值
描述
十六进制
十进制
0x00
0
DEVID
R
11100101
器件ID
0x01-0x1C
1-28
保留
-
-
保留不操作
0x1D
29
THRESH_TAP
R/
00000000
敲击阈值
0x1E
30
OFSX
R/
00000000
X轴偏移
0x1F
31
OFSY
R/
00000000
Y轴偏移
0x20
32
OFSZ
R/
00000000
Z轴偏移
0x21
33
DUR
R/
00000000
敲击持续时间
0x22
34
Latent
R/
00000000
敲击延迟
0x23
35
Window
R/
00000000
敲击窗口
0x24
36
THRESH_ACT
R/
00000000
活动阈值
0x25
37
THRESH_INACT
R/
00000000
静止阈值
0x26
38
TIME_INACT
R/
00000000
静止时间
0x27
39
ACT_INACT_CTL
R/
00000000
轴使能控制活动和静止检测
0x28
40
THRESH_FF
R/
00000000
自由落体阈值
0x29
41
TIME_FF
R/
00000000
自由落体时间
0x2A
42
TAP_AXES
R/
00000000
单击/双击轴控制
0x2B
43
ACT_TAP_STATUS
R
00001010
单击/双击源
0x2C
44
BW_RATE
R/
00000000
数据速率及功率模式控制
0x2D
45
POWER_CTL
R/
00000000
省电特性控制
0x2E
46
INT_ENABLE
R/
00000000
中断使能控制
ADXL345共有30个寄存器(如表2.1所示),其中包括29个功能寄存器和1个识别设备标识的只读寄存器DEVID的,地址分别为0x1D至0x39和0x00。
单片机对ADXL345的控制操作主要是通过对其寄存器的读写来实现的,在访问寄存器之前要先发送一个字节的读写地址信息。
第7位是操作类型位,“1”表示读操作,“0”表示写操作;第6位是读写类型位,“1”表示多值读写,“0”表示单值读写。
字节第5位至第1位是寄存器地址,根据需要可以选择30个寄存器中的任意一个进行读写操作,实现对加速度传感器的初始化和不同功能的控制。
2.3ADXL345主要寄存器定义介绍
寄存器OFSX、OFSY、OFSZ(0x1E、0x1F、0x20)都是8位寄存器,在二进制补码格式中提供用户设置偏移调整,比例因子为15.6mg/LSB。
通过实际测量,确定各个轴平均的偏移量,储存在这三个寄存器中,然后偏移寄存器的存储值会自动添加到加速度数据上,结果值存储在输出数据寄存器中。
速率位(0x2C)能选择器件带宽和输出数据速率,如表2.2所示。
默认值为0x0A,转换后为100Hz的输出数据速率。
在本毕业设计中,选择了适合I2C通信协议和频率的输出数据速率12.5Hz,十六进制为0x08,若选择太高的输出数据速率和过低的通信速度会导致采样的丢失,数据传输失败。
FIFO_CTL,设置缓存器具体的工作模式,比如Bypass、FIFO、Stream、Trigger模式,各种模式区别如下:
在Bypass模式中,FIFO缓存器是退化的,仅FIFO[0]存储一次采样结果,无论是否被读取,新数据到来时将旧数据覆盖;在FIFO模式中,FIFO缓存器不停地收集数据直到缓存器满,此时如果没有及时读数据,新到样本数据将被丢弃,而当FIFO被读取后,它将继续收集新到数据;在Stream模式中,FIFO缓存器不停地收集数据,当缓存器满,自动丢弃FIFO[0],其他样本值向前移位填充,最新数据填入FIFO[31];在Trigger模式中,FIFO开始工作与Stream模式类似,收集样本值直到FIFO缓存器满,然后丢弃最旧的数据,一旦触发事件发生(由FIFO_CTL寄存器中TRIG_SOURCE位所定义),FIFO将保留最后n采样值(其中n在FIFO_CTL寄存器中指定),然后像FIFO模式一样运行,即FIFO不满时,继续收集新的样本值。
表2.2输出数据速率
输出数据速率(Hz)
带宽(Hz)
速率代码
IDD(μA)
3200
1600
1111
140
1600
800
1110
90
800
400
1101
140
400
200
1100
140
200
100
1011
140
100
50
1010
140
50
25
1001
90
25
12.5
1000
60
12.5
6.25
0111
50
6.25
3.13
0110
45
3.13
1.56
0101
40
1.56
0.78
0100
34
0.78
0.39
0011
23
0.39
0.2
0010
23
0.2
0.1
0001
23
0.1
0.05
0000
23
寄存器INT_ENABLE(0x2E)字节格式如表2.3所示。
寄存器设置位值为1,使能相应功能,生成中断;设置为0时,阻止这些功能产生中断。
DATA_READY位、水印位和溢出位仅使能中断输出;这些功能总是处于使能状态,在本毕业设计中,在其输出前进行了中断配置,然后读取寄存器内部数据。
表2.3寄存器INT_ENABLE字节格式
D7
D6
D5
D4
DATA_READY
SINGLE_TAP
DOUBLE_TAP
Activity
D3
D2
D1
D0
Inactivity
FREE_FALL
Watermark
Overrun
范围位(0x31)可以设置g范围,如表2.4所述。
在本设计中,选择了±16g范围,全分辨率13位。
表2.4范围设置
设置
g范围
D1
D0
0
0
±2g
0
1
±4g
1
0
±8g
1
1
±16g
寄存器DATAX0、DATAX1、DATAY0、DATAY1、DATAZ0和DATAZ1(0x32至0x37)都是8位字节,保存各个轴的输出数据。
寄存器0x32和0x33保存x轴输出数据,寄存器0x34和0x35保存y轴输出数据,寄存器0x36和0x37保存z轴输出数据。
输出数据为二进制补码,DATAx0为最低有效字节,DATAx1为最高有效字节,其中x可代表X、Y或Z。
DATA_FORMAT寄存器(地址0x31)控制数据格式。
在本设计中所有寄存器都执行多字节读取,防止相继寄存器读取之间的数据变化。
2.4测量倾斜角度原理
2.4.1加速度传感器进行倾角测量简介
目前常用的确定平面系统倾斜的方法是对陀螺仪的输出求积分。
尽管这种方法简单明了。
但随着积分周期的增加,与零偏稳定性相关的误差也可能快速增大,即使当器件处于静止状态时也可能导致明显的旋转。
在某些净加速度或者重力加速度的应用中,可以利用加速度传感器来测量静态倾斜角,这样克服了陀螺仪的缺点。
目前加速度传感器测量角度的方法广泛应用于数码相机水平检测,以及工业和医学应用中检测器件方向等。
利用加速度传感器进行倾斜检测的基本假设是:
加速度只与重力相关。
实际上,可以对信号输出进行信号处理,以消除其中的高频组分,因而可以接受一定的交流加速度。
倾斜角度检测是利用重力矢量及其在轴上的投影来确定倾斜角由于重力是直流加速度,因此任何额外加入的直流加速度都会破坏输出信号并且导致计算错误。
造成直流加速度的因素包括车辆以恒定速率加速时的时间,以及在加速度传感器上导致向心加速度的旋转器件。
另外,当目标轴上的重力投影发生变化时,通过重力旋转加速度会导致明显的交流加速度。
在计算角度之前对加速度信号进行的任何过滤都会影响输出达到新静态值的速度。
综上所述,在本毕业设计中,测量平面倾斜角度时,要让加速度传感器在平面上保持一段时间的静止,以保证角度测量的准确性。
下面来介绍下ADXL345三轴加速度传感器通过X、Y、Z轴上的重力加速度换算成倾斜角的基本原理。
2.4.2ADXL345测量角度原理
通过ADXL345测量出X、Y、Z轴上的重力加速度分量大小,分别能得到X轴与水平面的夹角α,Y轴与水平面的夹角β,Z轴与水平面的夹角δ。
设X轴的加速度分量为Ax,Y轴的加速度分量为Ay,Z轴的加速度分量为Az。
对重力进行力学分析可得如下公式:
(2.1)
(2.2)
(2.3)
图2.3水平仪的测量数学模型示图
水平仪测量倾角的数学模型如图2.3所示。
如图所示,DA代表X轴,DB代表Y轴,DG代表Z轴,DA⊥DB,假设X轴与水平面的夹角为α,Y轴与水平面的夹角为β,X轴与Y轴所组成的平面DAB与水平面的夹角为γ。
过D点做水平面的垂线,垂足为点E,那么∠DAE=α。
∠DBE=β。
过E点做AB的垂线与AB交于C点,由立体几何知识可知∠DCE就是平面EAB与水平面的夹角γ,即使水平仪要测量并显示的角度。
下面是推导α、β、γ之间关系的过程,假设DE=1,由DE⊥AE,DE⊥BE可知:
(2.4)
因为△ADB为直角三角形,所以:
(2.5)
将AB代入式
(2)得:
(2.6)
又因为△DEC为一直角三角形,所以可得:
(2.7)
将式
(1)代入式(5)得:
(2.8)
因为
,
,所以:
(2.9)
由
,推出:
(2.10)
即可得出被测面与水平面间的夹角γ:
(2.11)
由图2.4.1的数学模型可知,角γ就是加速度传感器Z轴与自然坐标系Z轴间夹角。
同理可得,加速度传感器X轴与自然坐标系X轴的夹角α为:
(2.12)
加速度传感器Y轴与自然坐标系Y轴的夹角β为:
(2.13)
综上分析,因为单片机能计算简单的反三角函数,所以在程序中利用公式(2.10)就能计算出需要的倾斜角度(弧度值),再将其进行转
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 智能 水平仪 设计