基于单片机的数字水平仪设计.docx
- 文档编号:26072615
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:53
- 大小:1.29MB
基于单片机的数字水平仪设计.docx
《基于单片机的数字水平仪设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字水平仪设计.docx(53页珍藏版)》请在冰豆网上搜索。
基于单片机的数字水平仪设计
题目基于单片机的数字水平仪设计
学生姓名学号
所在学院物理与电信工程学院
专业班级电子1204班
指导教师
完成地点物理与电信工程学院实验室
2016年6月12日
基于单片机的数字水平仪设计
作者:
(陕西理工学院,物理与电信工程学院,电子信息工程系2012级4班,陕西汉中723000)
指导老师:
[摘要]数字水平仪是一种普遍的角度测量工具。
用它可以测量被测平面相对于水平面的夹角。
基于传感器、数字信号处理、单片机技术的数字水平仪是当前倾角测试仪器数字化发展的方向。
本次毕业设计采用三轴加速度传感器感应静态加速度值,通过STC89C52单片机读取其加速度并计算出倾角值,再将倾角值直接在LCD平面上显示出来,另外加上一些辅助按键的控制,可以使角度测量更方便、快捷。
本文提出了使用软件和硬件相结合的自动校正技术进行角度测量,最大限度简化了电路,提高了系统的稳定性和可靠性。
[关键词]数字水平仪;单片机STC89C52;加速度传感器;高精度
TheDesignofDigitalLevelBasedonSingleChipMicrocomputer
Author:
(Grade12,Class4,Majorelectronicsandinformationengineering,SchoolofPhysicsandElectronicInformationEngineering,ShaanxiUniversityofTechnology,HanzhongShaanxi)
Tutor:
[Abstract]:
DigitallevelisaAnglemeasuringtool.UseitmeasuredplanerelativetohorizontalplaneAnglecanbemeasured.Basedonthetechnologyofsensor,thedigitalsignalprocessing,singlechipmicrocomputerdigitallevelisthecurrentAnglemeasuringinstrumentdigitaldevelopmentdirection.Thisgraduationdesignusingthree-axisaccelerometersensingstaticaccelerationvalue,throughtheSTC89C52microcomputerreadstheaccelerationandcalculatetheAnglevalue,thentheAnglevaluesdirectlydisplayedontheLCDflat,plusafewauxiliarybuttoncontrol,Anglemeasurementcanbemoreconvenientandquick,.IsproposedinthispaperusingthesoftwareandhardwarecombinationofautomaticcorrectiontechnologyofAnglemeasurement.Simplifythecircuittothegreatestextent,toimprovethestabilityandreliabilityofthesystem.
[Keywords]:
Digitallevel;MicrontrollerSTC89C52;Accelerationtransducer;Highprecision
1.引言
1.1课题研究背景和意义
随着科学技术的发展,电子水平仪已经成为一种发展趋势。
而伴随着计算机技术的不断更新,微控制器在工业测量和应用中越来越广泛,从而使计量检测仪器越来越数字化,微型化,准确化,智能化。
由于数字水平仪的优点显著,目前已经广泛应用于路线水平测量、变形监测、水位基准测量、工业测量等各个领域。
而伴随着精密仪器制造技术的发展,已有的水平仪不能满足精度要求,性能更好的智能电子水平仪具有重要意义。
为了提高水平仪的测量精度,摆脱传统水平仪数字化程度低,数据处理能力差,抗震能力差等缺点,需要利用现代科技设计一种新的水平仪。
基于MEMS传感器,数字信号处理,单片机的智能水平仪是今后的发展方向,它可以应用于建筑、石油、煤矿和地质勘探等领域。
在本次毕业设计中,将STC89C52单片机和ADI公司生产的加速度传感器ADXL345相结合,实现了高精度数显智能水平仪的设计。
1.2国内外的发展现状和趋势
我国是在90年代的中后期才开始引进数字水平仪的,虽然数字水平仪在国内使用的时间比较短,但是使用范围和数量正在逐年扩大。
近年来,我国在水平仪的研制和开发上面取得了很大的进展。
目前来看,广泛应用的水平仪在原理上都是以铅垂线为基准,这种水平仪主要有电容式和电感式两类。
而当前广泛应用于各个领域的数字式电子水平仪中几乎采用的都是电容式传感器[1]。
目前来看,国内发展的已有的水平仪已经不能很好的满足生产和应用的需求,而且国内数字水平仪的生产和制造能力与国外相比比较落后。
尤其是存在着数字化程度不高,对数据缺乏处理能力,无法一次性准确的测量出被测面倾斜角和方位角等缺点。
近年来,国内在水平仪的开发方面取得了不少进展。
国外的生产厂家繁多,种类齐全,所生产的产品也测量速度越来越快,功耗越来越低,国内除台湾做的比较好外,大陆也有几家具备研发和生产能力,如上海华虹、海尔等。
1.3系统设计
本次的毕业设计利用单片机和三轴加速度传感器,设计一种高精度、大角度测量范围,并且可以实时显示的便携式智能水平仪。
该水平仪的测量角度显示在90度以内,并且可以通过三个轴的加速度正负值,判断角度的倾斜方向。
在硬件方面,通过对比,ADXL345三轴加速度传感器具备数字输出,高精度,误差小等优点,因此选择了ADXL345芯片作为倾角的传感器,同时选择了集成的单片机STC89C52、LCD液晶显示屏和一些基本元件,用过按键锁定屏幕上所显示的角度,且当角度大于0度小于5度时二极管闪烁,当角度等于0时二极管亮,这样给人更直观的指示。
在软件方面,本次设计采用C语言在Keil软件中编程,使用I2C通信方式实现单片机和传感器之间的的数据传输;利用数学方法推出的角度计算公式来计算角度的大小;最后经过实际测量角度,计算出传感器的测量误差,在偏移寄存器中进行校准。
2.方案论证
2.1系统方案选择
方案1:
利用光学反射放大镜和传感器在VB平台上设计一种应用程序,通过计算机与电子水平仪的串行通信,实现计算机对数字水平仪的控制。
由于采用VB设计,所以设计较复杂,需要光学以及测绘知识的应用,而且电路程序比较繁琐。
方案2:
采用三轴加速度传感器感应水平倾角,将所测得的数据使用I2C的通信方式传给单片机,通过STC89C52单片机编译好的程序进行计算,然后将倾角直接在LCD屏幕上显示出来,并辅助按键锁定屏幕显示角度,用LED发光二极管指示灯来指示所测角度的大小。
单片机主要用于工业过程控制及智能控制仪器中,已经显示出了巨大的优越性。
单片机的编程灵活,控制简单,能够很好地控制水平仪来实现精度检测和角度显示。
综上所述,选择方案二,采用单片机STC89C52构成系统控制部分。
2.2模块设计方案
(1)数据采集模块
用于测量倾角的芯片有三种类型,分别是ADXL345三轴加速度传感器、mma7455三轴加速度传感器、三轴陀螺仪。
通过对比,ADXL345具备数字输出,高精度(3.9mg/LSB),误差小等优点,因此选择了ADXL345芯片作为测量倾角的传感器。
(2)控制模块
采用单片机STC89C52作为系统的控制器。
单片机算术运算功能强,软件编程灵活,自由度大,可以用软件编程实现各种算法,并且具有功耗低,体积小,技术成熟,成本低廉等优点,使其在各个领域应用广泛。
(3)显示模块
使用液晶显示屏显示即时值。
液晶显示屏(LCD)具有短小轻薄,耗电量低,没有辐射危险,可以平面直角显示以及稳定不闪烁等优势,并且其可视面积大,画面效果好,分辨率比较高,抗干扰能力比较强等优点。
所以我选择了LCD12864作为显示器。
3.水平仪总体设计
水平仪的测量系统主要由单片机、ADXL345三轴加速度传感器、数码显示屏以及电源四部分组成。
进行测量时,水平仪发生微小倾斜,传感器的相对位置发生改变,按照测量算法就可以得到倾斜角,结果通过LCD液晶屏显示出来。
其原理框图设计如图3-1所示:
图3-1系统原理框图
本设计在传感器方面,选用了误差小、精度高的ADXL345三轴加速度传感器。
在单片机方面使用了STC89C52单片机,以及液晶12864显示屏共同完成本次设计。
3.1硬件设计
硬件是一套系统的“躯体”,是系统能够成功运行的基础。
没有一个稳定而且可靠的硬件系统,就无法保证系统的正常运行。
硬件设计的主要任务是根据总体设计所确定方案的要求,选择符合设计指标所要求功能、精度、处理速度并且价格合理的器件,并在所选用元器件的基础上确定系统硬件的基础之上确定系统硬件扩展所需用到的I/O接口电路以及外围设计电路,然后设计系统的原理图,根据原理图设计出PCB电路图,完成器件的焊接和电器特性测试。
3.1.1数据采集模块
3.1.1.1角度测量原理
(1)加速度传感器进行角度测量原理
目前常用的确定平面系统倾角倾斜的方法是对陀螺仪的输出求出积分,虽然这种方法简单,但是随着积分周期的增加,与零偏稳定型相关的误差也有可能快速增大,即使当器件处于静止状态时也可能导致明显的旋转。
在某些重力加速度的应用中,可以利用加速度传感器来测量静态倾斜角,这样就克服了陀螺仪的缺点。
加速度传感器测量角度的方法广泛应用于数码相机水平检测,以及工业和医学器材应用中等。
利用加速度传感器进行测量角度的方法是:
加速度只与重力有关。
实际上,可以对输出信号进行数据分析处理,以消除其中的高频组分,因而可以接受一定的交流加速度。
倾斜角度检测是利用重力矢量及其在各轴上的投影来确定的倾斜角,由于重力是直角加速度,任何外来加入的直流加速度都会破坏输出信号,从而导致计算错误。
另外,当目标轴上的重力投影发生变化时,通过重力旋转加速度会导致明显的交流加速度。
在计算角度之前对加速度信号进行的任何过滤都会影响输出达到新静态值的速度。
综上所述,在本次毕业设计中,要让加速度传感器在平面上保持一段时间的静止,这样可以保证角度测量的准确性。
(2)ADXL345角度测量原理:
Ax=g*cos(90-α)=g*sinα(3.1)Ay=g*cos(90-β)=g*sinβ(3.2)
Az=g*cos(90-δ)=g*sinδ=g*cosγ(3.3)
图3-2水平仪测量角度数学模型
水平仪测量角度的数学模型如图3-2所示。
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可知:
DA=1/sinαDB=1/sinβ(3.4)
因为ΔADB为直角三角形,所以:
AB^2=DA^2+DB^2(3.5)
将AB带入(3.5)式得:
(3.6)
又因为ΔDEC为直角三角形,所以:
(3.7)
将(3.1)式代入(3.5)式得:
(3.8)
因为sinα=Ax/g,sinβ=Ay/g,所以:
(3.9)
由cosγ=Az/g,得:
(3.10)
即可得出被侧面与水平面的夹角:
(3.11)
由图上的数学模型可知,角就是加速度传感器Z轴与自然坐标系Z轴间夹角。
同理可得,加速度传感器X轴与自然坐标系X轴的夹角为:
(3.12)
加速度传感器Y轴与自然坐标系Y轴的夹角为:
(3.13)
综上分析,因为单片机能计算简单的反三角函数,所以在程序中利用公式(3.10)就能计算出需要的倾斜角度,再将其进行转化就能显示直观的角度值。
在本次毕业设计中,为了达到老师要求,无论Z轴的加速度是正还是负,都将所测值取在0-90度之间。
3.1.1.2ADXL345简介
ADXL345是ADI(AnalogDevices,Inc.)公司在2009年推出的的一种数字式的加速度传感器,这也是该公司的第一款输出数码信号的三轴加速度传感器。
这款芯片最大量程能达到±16g,可以进行较高分辨率(13位)的测量。
其数字输出数据为一个16位的二进制的补码,可以通过SPI(3线或4线)或者I2C数字接口访问。
ADXL345可以在倾斜感测方面测量静态的重力加速度,也可以从振动或者运动中生成动力加速度。
其分辨率(4mg/LSB)能够分辨到仅为0.25°的倾角变化。
静态和动态的感测功能可以检测是否有运动发生,或者在X、Y、Z轴上的加速度有没有超过用户设置的水平[2]。
图3-3ADXL345的外形封装
ADXL345的性能指标如下:
(1)超低功耗,测量模式电流为40μA,2.5V(典型值)供电等待模式下电流仅为0.1μA;
(2)量程可以选择在±2g(10bit),±4g(11bit),±8g(12bit),±16g(13bit),精度达到了4mg/LSB;
(3)供电范围2.0V-3.6V;
(4)SPI模式或者I2C模式通信接口;
(5)有32级FIFO协调与处理器通信;
(6)带宽可以达到1.6KHz;
(7)使用温度范围-40℃-85℃;
(8)可以接受10000g的冲击;
(9)适用于手持设备、工业监控、医疗器械、个人导航设备等[3]。
ADXL345的工作原理是:
首先由前端感应器感测加速度大小,然后感应电信号器件将它转换成可识别的电信号,此时的信号还是模拟信号。
在芯片内部集成了A/D转换器,因此模拟信号经过转换器变为数字信号输出。
与计算机系统数字信号输出类似,A/D转换器输出的也是16位的二进制补码。
数字信号经过数字滤波器的滤波处理后,在控制和中断逻辑单元的控制下访问32级FIFO,单片机通过串行接口读取三个轴的加速度数据。
单片机通过对寄存器的操作,发送对串口的读写命令实现对ADXL345的控制。
芯片功能框图如图3-4所示:
图3-4芯片功能框图
3.1.1.3ADXL345寄存器映射
ADXL345共有30个寄存器(如表3-1所示[4])。
单片机对ADXL345的控制操作主要是通过对其寄存器的读写来实现的,在访问寄存器之前先发送一个字节的读写地址信息。
第7位是操作类型位,“1”表示读操作,“0”表示写操作;第6位是读写类型位,“1”表示多值读写,“0”表示单值读写。
字节第5位至第1位是寄存器的地址,根据需要可以选择30个寄存器中的任意一个进行读写操作来实现对加速度传感器的初始化和不同功能的控制。
表3-1ADXL345寄存器
地址
名称
类型
复位值
描述
十六进制
十进制
0x00
0x01-0x1C
0x1D
0x1E
0x1F
0x20
0x21
0x22
0x23
0x24
0x25
0x26
0x27
0x28
0x29
0x2A
0x2B
0x2C
0x2D
0x2E
0
1-28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
DEVID
保留
THRESH_TAP
OFSX
OFSY
OFSZ
DUR
Latent
Window
THRESH_ACT
THRESH_INACT
TIME_INACT
ACT_INACTT_CTL
THRESH_FF
TIME_FF
TAP_AXES
ACT_TAP_STATUS
BW_RATE
POWER_CTL
INT_ENABLE
R
-
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
R/
11100101
-
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00001010
00000000
00000000
00000000
器件ID
保留不操作
敲击阈值
X轴偏移
Y轴偏移
Z轴偏移
敲击持续时间
敲击延迟
敲击窗口
活动阈值
静止阈值
静止时间
轴使能控制活动
自由落体阈值
自由落体时间
单击/双击轴控制
单击/双击源
数据速率
省电特性控制
中断使能控制
3.1.1.4ADXL345主要寄存器介绍
寄存器OFSX、OFSY、OFSZ(0x1E、0x1F、0x20)都是8位寄存器,在二进制补码格式中提供用户设置偏移调整,比例因子为15.6mg/LSB。
通过实际测量,确定各个轴平均的偏移量,储存在这三个寄存器中,然后偏移寄存器的存储值会自动添加到加速度数据上,结果值存储在输出数据寄存器中。
速率位(0x2C)能选择器件带宽和输出数据速率,如下表所示。
默认值为0x0A,转换后为100HZ的输出数据速率。
在本毕业设计中,选择了适合I2C通信协议和频率的输出数据速率12.5HZ,十六进制为0x08,若选择太高的输出数据速率和过低的通信速度会导致采样的丢失,数据传输失败。
表3-2ADXL345主要寄存器
输出数据速率(Hz)
带宽(Hz)
速率代码
I(uA)
3200
1600
800
400
200
100
50
25
12.5
6.25
3.13
1.56
0.78
0.39
0.2
0.1
1600
800
400
200
100
50
25
12.5
6.25
3.13
1.56
0.78
0.39
0.2
0.1
0.05
1111
1110
1101
1100
1011
1010
1001
1000
0111
0110
0101
0100
0011
0010
0001
0000
140
90
140
140
140
140
90
60
50
45
40
34
23
23
23
23
寄存器INT_ENABLE(0x2E)字节格式如表3-3所示。
寄存器设置值为1,使能相应功能,生成中断;设置为0时,阻止这些功能产生中断。
DATA_READY位、水印位和溢出位仅使能中断输出;这些功能总是处于使能状态,在本次毕业设计中,在其输出前进行了中断配置,然后读取寄存器内部数据。
表3-3寄存器INT_ENABLE(0x2E)字节格式
D7
DATA_READY
D6
SINGLE_TAP
D5
DOUBLE_TAP
D4
Activity
D3
Inactivity
D2
FREE_FALL
D1
Watermark
D0
Overrun
范围位(0x31)可以设置g范围,如表3-4所示。
在本次设计中,选择了16g范围,全分辨率13位。
表3-4范围位
设置
g范围
D1
D0
0
0
1
1
0
1
0
1
2g
4g
8g
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)控制数据格式。
在本次设计中,所有寄存器都执行多字节读取,防止相继寄存器读取之间的数据变化。
3.1.1.5ADXL345接口设计
ADXL345为用户提供了两种通信方式:
SPI和I2C。
本次设计的加速度数据采集通过I2C方式来完成。
首先来介绍这两种工作方式:
(1)SPI通信方式
SPI的最高时钟为5MHZ,通信开始时主MCU选择CS位置,CS复位则通信结束,SCLK由主MCU提供串行时钟。
SDI与SDO是串行数据输入与输出,它们分别在时钟的上升沿获取数据。
一次通信过程中读写多字节必须要设定MB位,在读完第一个寄存器的数据后ADXL345会自动将地址指向下一个寄存器。
(2)I2C通信方式
简单性和有效性是I2C总线的主要优点。
一方面,由于接口在组件之上,因此它占用的空间很小,减少了电路板的空间和芯片管脚数量。
另一方面,总线的长度最长可以达到7.6米,能够支持40个组件并以10KBPS的最大传输速率传输数据。
I2C另一个优点是支持多主控,其中任何能够进行发送和接受的设备都可以成为主总线,并控制信号的传输和系统时钟频率。
ADXL345的I2C通信过程:
将CS引脚拉高至VDDI/O,通过简单的2线式连接,ADXL345便处于I2C模式。
连线方式如图3-5所示。
如果满足I2C总线协议规定和用户手册,便能支持标准100kHz和快速400kHz数据传输模式。
同时它还支持单个或者多个字节的读取/写入。
当ALTADDRESS引脚处于高电平时,ADXL345的7位I2C地址是0x1D,读写地址分别为0x3B和0x3A。
当ALTADDRESS接地时,可以选择备用的I2C地址0x53,读写地址分别为0xA7和0xA6。
使用该方式时,CS引脚必须连接至VDDI/O,ALTADDRESS引脚必须连接至任意VDDI/O或接地,否则任何已知状态或默认状态将不存在。
图3-5I2C通信连接方式
3.1.1.6ADXL345加速度传感器模块
ADXL345芯片共有14个管脚,管脚图如图3-6所示:
图3-6ADXL345芯片管脚图
前面已经详细叙述了I2C通信的基本原理,以及ADXL345与单片机I2C通信的连线方式,按照其方式和引脚说明,就能进行ADXL345的接口设计,如图3-7所示:
图3-7ADXL345的接口连接
由于ADXL345的正常工作电压是2.0-3.6V,而89C52单片机的工作电压是5V,为了使ADXL345连接到系统电路中能正常工作,必须设计一个电平转换电路。
在本次毕业设计中,利用RT9161将5V输入电压转换成3.3V输出电压,电路图如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 水平仪 设计