基于单片机的数字水平仪设计
- 格式:doc
- 大小:1.31 MB
- 文档页数:34
基于STC12C5A16S2单片机电子水平仪设计摘要基于传感器、数字信号处理、单片机技术的数字水平仪是当前倾角测试仪器数字化发展的方向.利用角度传感器感应水平倾角,通过信号处理和STC12C5A16S2单片机的控制、运算将倾角以数值的形式直接在LCD1602的上显示或上传到计算机进行显示、处理,从而使角度测量变得方便、快捷,实现了倾角的高精度测量.本文提出了差动式倾角电容传感器在分辨力为0.001mm/m 的智能电子水平仪的应用方案,差动输出信号通过交流放大、整流滤波、直流放大后被送到A/D转换器.采用ICL8038集成芯片作为差动电容电桥的激励电源,使用ADC0809对所得信号进行A/D转换.关键词智能电子水平仪;差动电容传感器;A/D; STC12C5A16S2单片机目录摘要 (1)1 绪论 (3)2 方案论证 (8)2.1系统设计方案论证 (8)2.2各模块的方案选择和论证 (5)2.2.1控制器模块 (5)2.2.2显示模块 (6)3电子水平仪的总体设计 (8)3.1方案的确定 (18)3.2传感器的选择 (9)3.2.1电容传感器.................................................. 错误!未定义书签。
3.2.2本课题所采用的传感器类型 (13)3.3A/D转换器的选择 (14)3.3.1 AD转换器的分类及介绍 (14)3.3.2本课题中对AD转换器的选择 (16)4系统的硬件设计 (18)4.1倾角传感器的设计 (18)4.1.1差动电容传感器测角原理 (18)4.1.2 差动电容传感器结构设计 (18)4.2角度转换模块的设计 (19)4.2.1测量电桥...................................................... 错误!未定义书签。
4.2.2 第一级放大电路 (22)4.2.3整流滤波电路 (24)4.2.4第二级放大电路 (28)4.3信号采集与A/D转换 (29)4.4主电路 (32)5系统的软件设计 (33)5.1总体流程图 (33)5.2程序清单 (30)总结 (43)致谢 (43)参考文献 (44)1.绪论1.1概述电子水平仪是一种非常急需的测量小角度的量具.用它可测量对于水平位置的倾斜度、两部件相互平行度和垂直度,机床、仪器导轨的直线度,工作台平面度,以及平板的平面度等.已成为桥梁架设、铁路铺设、土木工程、石油钻井、航空航海、工业自动化、智能平台、机械加工等领域不可缺少的重要工具.在机械测量及光机电技术一体化技术应用中占有重要地位.国外许多国家很早就开始了电子水平仪的研制和制造,但随着精密制造技术的发展,已有的电子水平仪不能满足精度要求,国内数显式电子水平仪灵度、反应时间等比国外差距较大.水平仪从过去简单的气泡水平仪到现在的电子水平仪已经历经多次更新.电子水平仪是一种非常急需的测量小角度的量具.用它可测量对于水平位置的倾斜度、两部件相互平行度和垂直度,机床、仪器导轨的直线度,工作台平面度,以及平板的平面度等.在机械测量及光机电技术一体化技术应用中占有重要地位.随着精密制造技术的发展,已有的电子水平仪不能满足精度要求,国内数显式电子水平仪灵敏度、反应时间等与国外相比,差距较大.研究分辨率更高、性能更好的智能电子水平仪具有重要意义.随着计算机应用技术的不断发展,微控制器在工业测量和控制领域内的应用越来越广泛;在很多计量检测仪器中应用了单片机,使计量检测仪器具有了一定程度的智能,但在电子水平仪中微控制器的应用尚不多见.在自动控制和工程设计中,常常需要对某一个平面或基准进行倾角测量,或进行自动水平调节,特别是在自动控制中,经常需要对某一物体进行动态水平控制,这就要求仪器能对水平倾角进行自动动态跟踪测量;在某些高精度的测量系统中,还要求对系统进行快速调平或对某些装置与水平面的倾斜角进行快速高精度的测量.这些都是传统倾角测量系统和水平仪很难做到的.以电子倾角器为传感器而设计的数字倾角测量系统或数字水平仪不仅能满足自动测量与控制的要求,而且能使测量的精度和速度大大提高.2.方案论证2.1系统设计方案论证方案1:采用光学反射放大镜和传感器(PSD)在VB平台上设计一种应用程序,通过计算机与电子水平仪的串行通信,实现计算机对电子水平仪的的控制.由于采用VB设计,而且设计较复杂,需要光学以及测绘知识的应用,电路程序繁琐.方案2:采用单片机STC12C5A16S2为核心,利用倾角器作为倾角传感器,其输出的模拟电压与倾斜角正弦成比例.将该模拟电压进行A/D转换后送入单片机,通过编制好的计算程序进行计算,将计算结果通过串口中断方式传送到上位计算机.单片机只要用于工业过程控制及智能控制仪器中,特别是在传感器智能仪器发展中,已显示出巨大的优越性.单片机编程灵活,控制简单,能够很好的控制水平仪实现精度检测和角度的显示.比较以上两种方案,方案2所设计的测量精度高、使用方便,具有很好的实用价值.因此采用方案2.2.2各模块的方案选择和论证2.2.1.控制器模块方案一:采用FPGA(现场可编程门阵列)作为系统的控制器.FPGA 可以实现系统的各种复杂的逻辑功能,规模大,密度高,它将所有的器件集成在一块芯片上,减小了体积,提高了稳定性,并且可以利用EDA 软件仿真、调试,易于进行功能扩展.FPGA 采用并行的输入方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心.但是由于本设计对数据处理的速度要求不是很高,FPGA 高速处理的优势得不到充分的体现,并且由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的操作.方案二:采用单片机STC12C5A16S2作为系统的控制器.单片机算术运算功能强,软件编程灵活,自由度大,可用软件编程实现各种算法,并且具有功耗低,体积小,技术成熟,成本低廉等有点,使其在各个领域应用广泛.综上所述,选择方案二,采用单片机STC12C5A16S2构成系统控制部分.2.2.2显示模块方案一:使用传统的数码管显示.传统数码管具有:低能耗,低损耗,寿命长,防火,防潮,对外界环境要求低,易于维护等优势.但显示资源有限.方案二:使用液晶显示屏显示计时值.液晶显示屏(LED)具有轻薄短小,低耗电量,无辐射危险,平面直角显示以及影像稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点.所以我们选择LCD1602作为显示器.3. 电子水平仪的总体设计3.1 方案的确定电子水平仪的测量系统主要由机械系统、倾角传感器、AD转换、微处理器、数码显示五部分构成.进行测量时,水平仪发生微小倾斜,传感器探头与摆盘的相对位置发生变化,于是传感器输出与探头、摆盘间距成正比的电压信号,该电压信号经过AD转换送入单片机,按照测量算法就可得到倾斜角,结果通过LED数码显示器显示出来.其系统的总体结构框图如图2-l所示.图2-1水平仪系统设计原理框图设计的智能电子水平仪的分辨力达到0.001mm/m,传感电容的变化量仅有几个或几十个皮法,屏蔽环境干扰、导线布置、温度等引起的寄生电容比传感电容大得多,例如屏蔽电缆电容一般为100PF/m,多路开关输入电容一般为8pF,而传感器的电容约为1pF,杂散电容将待测电容传感器信号淹没,如何消除寄生电容的影响,把有用的微小信号拾取出来成为难点之一.本设计除在电容式传感器的设计中采取措施外,根据已有的小电容测量电路原理[7],设计了一种高分辨力的信号调理电路.选择检测电路时主要从输出信号的稳定性和精度两方面分别进行对比.而运算检测电路的优点不仅可以保证输出的稳定性,而且其输出与变极距型传感器的极距成正比,可以保证测量精度会大大高于其它测量电路.因此,本课题采用运算放大器检测电路作为本课题的电容检测电路.3.2 传感器的选择传感器的分类方法多种多样,按照其测量原理可分类为电阻式传感器、电感式传感器和电容式传感器.在本课题中,若采用电阻式传感器作为倾角传感器,由于电阻式传感器是接触式测量,所以将传感器的一端固定在上端盖,探头与摆盘固连在一起.当壳体倾斜时,传感器输出并不灵敏,输出值的误差也相当大,原因是要驱动电阻式传感器需要比较大的力,而机械系统无法提供那么大的力,因此电阻式传感器不适于本课题,本课题中的倾角传感器采用非接触式的比较合适.在非接触式位移测量方面,与电感传感器相比,电容式传感器测量精度更高,灵敏度也更好,因此在本课题中选用电容式位移传感器.3.2.1 电容传感器(1)电容传感器的优点电容式传感器具有一系列突出的优点,如结构简单、体积小、分辨率高、可非接触式测量等.这些优点,随着电子技术的迅速发展,特别是集成电路的高速发展,将得到进一步的体现,而它存在的分布电容、非线性等问题以又将不断地得到克服,因此电容式传感器有着非常好的应用前景.电子水平仪采用一个具有可变参数的电容作为传感器,有两个平行板组成的电容器的电容量为:AC d ε= (2-2)当被测参数使得A 、d 或ε发生变化时,电容量C 也随之变化. 电容传感器的分类按照变化参量的不同,电容式传感器可分为变极距型、变面积型和变介质型三种类型,以下对这三种类型的电容传感器分别予以介绍.1.变极距型电容传感器如图2-3变极距型电容传感器原理图所示.传感器的ε和A 为常数,初始极距为0d .由式(2-2)可知其初始电容量00AC d ε=,当动极板因被测量变化而向上移动使0d 减小d ∆,电容量增大C ∆则有:000011AC C C d d d d ε+∆==-∆⎛⎫∆- ⎪⎝⎭ (2-3)图2-3变极距型电容传感器原理图d可见,传感器输出特性()C f d =是非线性的.由式(2-3)可知: 电容相对变化量为10001C d d C d d -⎛⎫∆∆∆=- ⎪⎝⎭ (2-4) 上式按级数展开为23000001C d d d d C d d d d ⎡⎤⎛⎫⎛⎫∆∆∆∆∆⎢⎥=++++ ⎪ ⎪⎢⎥⎝⎭⎝⎭⎣⎦(2-5) 略去式(2-5)中的高次(非线性)项,可得近似的线性关系和灵敏度S 分别为00C d C d ∆∆≈ (2-6) 和 0200C C A S d d d ε∆===∆ (2-7) 如果考虑式(2-5)的线性项及二次项,则0001C d d C d d ⎛⎫∆∆∆=+ ⎪⎝⎭(2-8) 因此,以式(2-6)作为传感器的特性使用时,其相对非线性误差f e 为 ()()20000000100100f d d e d d d d ∆=⨯=∆⨯∆ (2-9)由上讨论可知:1)变极距型电容传感器只有在0d d ∆很小(小测量范围)时,电容才有近似的线性输出;2)灵敏度S 与初始极距0d 的平方成反比,故可以用减小0d 的办法来提高灵敏度.由于变极距型的分辨力很高,可测小至0.01m μ的线位移,故在微位移检测中应用很广.2.变面积型电容传感器如图2-4变面积型电容传感器原理图所示.它与变极距型不同的是,被测量通过动极板移动,引起两极板有效覆盖面积A 改变,从而得到电容的变化.设动极板相对定极板沿长度0l 方向平移l ∆时,则电容为:()00000r l l b C C C d εε-∆=-∆= (2-10) 式中00000r l b C d εε=为初始电容,相对变化量为:00C l C l ∆∆= (2-11) 很明显,这种传感器的输出特性呈线性.因而其量程不受线性范围的限制,适合于测量较大的直线位移和角位移.它的灵敏度为000r b C S l d εε∆==∆ (2-12) 3.变介质型电容传感器如图2-5变介质型电容传感器原理图所示,两平行极板固定不动、极距为0d ,相对介电常数为2r ε的电介质以不同深度插入电容器中,从而改变两种介质的极板覆盖面积.传感器的总电容量C 为两个电容1C图2-4变面积型电容传感器原理图和2C 的并联结果.由式(2-2)得()12001200r r b C C C l l l d εεε⎡⎤=+=-+⎣⎦ (2-13) 式中0l 、0b 为极板长度和宽度,l 为第二种介质进入极间的长度. 若电介质l 为空气()11r ε=,当0l =时传感器的初始电容00000r C l b d εε= (2-14)当介质2进入极间l 后引起电容的相对变化为()()000201r C C C C C l l ε∆=-=- (2-15)可见,电容的变化与电介质2的移动量l 成线性关系.3.2.2 本课题所采用的传感器类型针对本课题对传感器测量倾角的要求,变介质型传感器并不适合角度测量,变面积型传感器虽然可以用于角度的测量,但精度不高,普通单片式变极距型传感器存在灵敏度较低,输出电容非线性误差较大的缺点.差动电容式传感器的灵敏度高、非线性误差小,同时还能减小静电引力给测量带来的影响,并能有效地改善由于温度等环境影响所造成的误差,因而在许多测量控制场合中,用到的电容式传感器图2-5变介质型电容传感器原理图 2r ε定极板大多是差动式电容传感器.然而,电容式传感器的电容值十分微小,必须借助信号调理电路,将微小电容的变化转换成与其成正比的电压、电流或频率的变化,这样才可以显示、记录以及传输.本课题采用差动式变极距型倾角传感器.3.3 A/D转换器的选择实现模数转换的方法有很多,不同的电路结构的ADC的工作原理差异很大,性能上的差异也可能很大.本节主要按转换电路和工作原理的不同对ADC进行粗略的分类介绍.3.3.1 AD转换器的分类及介绍实现AD转换的方法有很多,常见的有逐次逼近法、计数法、积分法、电压频率转换法、Σ-Δ转换法等.1.逐次逼近型这种ADC是用一个电压比较器将模拟输入电压与一个n位DAC 的输出电压进行比较,这个n位DAC的数字输入是由一个逐次逼近寄存器提供的.逐次逼近寄存器在转换器的控制电路控制下,从高位到低位逐位被置1或清0,使DAC的输出电压逐步逼近模拟输入电压,经过n次比较和逼近,最终逐次逼近寄存器中的数字(即DAC的输入)就是模数转换的结果.在中低速场合得到广泛的应用.2.跟踪计数器跟踪计数型与逐次逼近型有相似之处,但转换器包含一个电压比较器和一个n位DAC,一个可逆计数器代替了逐次逼近寄存器和控制逻辑,可逆计数器在时钟脉冲作用下不停的计数,计数器的值作为DAC的输出不停地跟踪模拟输入电压,计数器的值即为ADC的数字输出值.跟踪计数型ADC的电路结构比逐次逼近型简单,计数器能及时跟踪模拟输入电压,特别适用于需要快速跟踪的伺服系统.3.积分型从转换型号的关系来说,积分型ADC属于间接转换型.转换器中的积分器把模拟输入电压转换成与之成比例的时间间隔,在这时间间隔内一个n位计数器对频率固定的时钟脉冲计数,最终的计数值与时间间隔成正比,反映了输入平均电压的大小.为了减小积分器的元件参数和参考电压对积分精度的影响,通常要对输入电压和参考电压各进行一次积分,因此又称为双积分型ADC.积分器和计数器结构简单,成本低,此外积分器具有低通特性,能抑制高频噪声,但工作速度低,因此积分型ADC被广泛用于低频、高精度的数字仪表电路中.4.压频转换型压频转换又称为VF转换,首先把模拟电压转换成频率与该电压成正比的脉冲信号,然后在单位时间内用计数器对脉冲计数,计数值与频率成正比,反映了模拟电压的大小.显然,VF型也属于间接转换型,中间变量是频率.专用的VF转换芯片已非常成熟,再与计数器配合可以构成高分辨率、低成本的ADC.5.Σ-Δ型Σ-Δ型ADC以很低的采样分辨率(1位)和很高的采样速率将模拟信号数字化,利用过采样计数、噪声整形和数字滤波计数增加有效分辨率.近年来Σ-Δ模数转换计数发展很快,转换分辨率可以高达24位,在各类模数转换器中分辨率是最高的,因此在低成本、高分辨率的低频信号处理场合得到了广泛的应用,有取代双积分型ADC的趋势. 3.3.2 本课题中对AD转换器的选择由于本课题设计的水平仪精度较高,所以需要选用高分辨率的AD转换器,考虑转换速度、成本等因素选用逐次逼近式AD转换器ADC0809.ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器.其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换.是目前国内应用最广泛的8位通用A/D 芯片.ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成.1.ADC0809主要特性1)8路输入通道,8位A/D转换器,即分辨率为8位.2)具有转换起停控制端.3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)4)单个+5V电源供电5)模拟输入电压范围0~+5V,不需零点和满刻度校准.6)工作温度范围为-40~+85摄氏度7)低功耗,约15mW.2. 外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,如图所示.下面说明各引脚功能.IN0~IN7:8路模拟量输入端.2-1~2-8:8位数字量输出端.ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效.START:A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换).EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平).OE:数据输出允许信号,输入,高电平有效.当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量.CLK:时钟脉冲输入端.要求时钟频率不高于640KHZ.REF(+)、REF(-):基准电压.Vcc:电源,单一+5V.GND:地.4. 系统的硬件设计4.1 倾角传感器的设计4.1.1 差动电容传感器测角原理差动电容传感器越来越广泛地应用于诸如压力、加速度、直线位移、转角等物理量的测量,其电路结构依测量要求不同而不同,但其基本原理都是利用比例信号处理法以传感器电容容量的变化来反映被测量的变化,电容变化可以是线性或非线性的.所谓比例信号处理法即用传感器中两电容之差与两电容之和的比值来线性地反映被测量.因此需要专门的信号处理电路将传感器电容变化转换为易于检测的电量,已经出现的技术方法有开关-电容(S/C)法,模数转换(A/D)法、电容/频率转换法、电容/相位转换法等,其中适用于CMOS集成电路的S/C法由于时钟馈线的影响精度较低,C/F法可以达到很高的精度,但由于需要微处理器来进行比例运算而难以满足时实、快速的要求.近年来,人们在提高精度和速度方面不断探索,提出了各种提高精度和速度的方法,本设计采用A/D转换法.4.1.2 差动电容传感器结构设计设计采用倾角传感器为专门设计定制的差动电容式传感器,其结构简图如图3-1所示.固定极板与水平仪底座和测量平面固定在一起,动极板由悬丝悬挂,当被测平面有一定倾角时,由于重力作用,动极板始终保持竖直状态,与一固定极板的极距减小,而与另一极板极距增大,形成差动输出.由几何关系可知:2d lθ≈∆ (3-1) 由于所测倾角变化极小,可认为动极板与固定极板始终平行.由式(3-1)可以看出θ与Δd 之间成线性关系.图3-2测角模型图图3-1差动电容传感器结构简图底座动极板4.2 角度转换模块的设计角度转换模块就是将传感器敏感的角度信号转换为电信号,然后经过调理、放大、滤波、运算分析等的加工处理,以抑制有害干扰噪声、提高信噪比,便于进一步的传输和后续处理.电路结构主要由传感器角度测量和电信号调理2部分组成,其工作原理如图4-3所示:图4-3 角度转换模块工作原理框图4.2.1 测量电桥采用温度特性良好的精密电阻与差动电容传感器来组成阻容电桥,两个精密电阻的参数选择尽量完全匹配,如图4-7所示.图4-7 电桥电路图电桥的不平衡输出电压u2与激励源电压u1之间的关系为11211111u R u R u R R s s j j d d d dj su R d d j R s d d j R s εεωωωεωεωε=-+++∆-∆⎛⎫=- ⎪+∆+-∆+⎝⎭(3-2) 其中R 为桥臂电阻;d 为电容两极板之间的距离;Δd 为电容两极板间距离的变化量;ω为激励源角频率;ε为电介质常数;s 为电容极板面积; u1为激励源电压;u2为电桥不平衡电压输出.令d j R s K ωε+=,则j R s K d ωε=-,则上式变为()()21122112u K d u K d K d d K d u K d ⎛⎫=-- ⎪+∆-∆⎝⎭∆=---∆ (3-3)因为22K d >>∆,所以上式简化为()2122du K d u S d K ∆=--=∆ (3-4) 式中()122S K d u K =--为灵敏度.由式(3-4)可以看出,在激励源不变的条件下,电桥不平衡输出电压u2与Δd 成一简单的线性关系,由式(3-1)可知与倾角θ也成一简单的线性关系.对正弦波形输出电压及放大后的交流电桥输出电压同时采样由式(3-4)可以看出,电桥不平衡电压输出u2,与激励源电压ul 之比在△d 一定的情况下为常数.设计中对ul 及u2同时进行采样,并将两路信号与温度信号(共三路信号)送人AD7706进行AD 转换.用u2与ul 的比值作为最终的采样值,再以此比值进行标定,这样就可以消除干扰信号产生的激励源波形的失真.4.2.2 第一级放大电路从电桥输出的信号为交流信号,为便于后续处理先对其进行信号放大.在精度要求不是太高的情况下采用通用运放组成的信号放大电路是可行的,但是由于通用运放放大电路的外接电阻很难精密匹配,由分立原件组成的放大电路共模抑制比不高,会影响到检测精度.有鉴于此,在本课题中采用了集成仪用放大器.美国AD公司开发了许多性能优良的仪表专用放大器芯片,如:AD521、AD524、AD620、AD624等,这些芯片现在已经广泛应用到各种电路设计中.由于AD620具有精度高、增益选择范围大和高性价比等特点,本课题采用该芯片作为放大器芯片,其主要特点见表3-1:为了正确地使用AD620,发挥其固有的性能,在使用中应该注意AD620的输入过载能力,两个输入端应分别串联一只400Ω的薄膜电阻,这样可以安全地承受长达几小时的输入高达+15V或+6mA 的过载,这种保护功能对所有增益均有效,当信号源和放大器分别供电时更为重要.如图4-8所示为AD620引脚图,图4-9为AD620电路原理图.只要在l 、8针脚之间加入一个外部增益控制电阻RG ,就可以灵活的调节增益,增益方程式为49.41GK G R Ω=+,由此可以得出,对于所需要的增益,则外部控制增益电阻值为49.41G R K G =Ω-.为了减小输人端的噪声干扰采用屏蔽电缆方法.对屏蔽给予适当的驱动,可减小电缆电容和杂散电容造成的差分相移,保证交流共模抑制比不下降,图3-9为差分屏蔽驱动接法.图4-9 AD620电路原理图图4-8 AD620引脚图Rc -IN +IN -Vs TOP VIEW4.2.3 整流滤波电路1.交直流转换电路经过交流放大后的交流信号还需要被转换成直流信号才能进行AD转换.美国MAXIM公司的产品MAX536A可以有效的实现交流/直流有效值的转换.该集成芯片外围电路简单,性能优越.它可以计算出包含交流和直流成分的任何复杂输入波形的有效值,并能转换成直流信号出口.MAX536A可以接受的输入信号在0-7V(按有效值计算)之间,输入信号电压的极限峰值在±25V之间,可以采用单电源供电和双电源供电两种工作模式,单电源供电时电源电压最大值是+36V,双电源供电时电源电压最大值是±18V.如图3-10所示为MAX536引脚图,MAX536A采用双电源供电模式,供电电压为±15V.连接在4和14针脚的电容CA V是一个重要的参数,CA V越大转换精度越高,但是输出稳定时间越长,由于水平仪为静态测量,对输出稳定时间要求不高,因此经查阅取CA V=5μF,信号稳定时间约为0.5S,精度约为0.1%.MAX536A的转换精度可以通过外围的器件来改善,R4用以调整偏移量,通过调整R4保证当信号输入端Vm输入为零时信号输出端V out输出也为零;通过调整R1可以对输出信号进行校正.。
9作为一种小角度测量仪器,常用的水平仪有气泡式和数字式两种。
随着科技发展进步,广泛应用于机械工程、工作台调平、导轨平直度、电力系统以及建筑设计等角度测量中[1]。
由于外部测量环境的影响,要求水平仪有较好的抗干扰能力,设计出一种具有精度高、稳定性好、性价比高、使用简易的高性能数字式倾角测量仪,具有很大的实际应用价值。
1 系统概述本设计主要由电源模块、倾角测量模块、STC15单片机控制模块和液晶显示模块等部分组成。
其中,电源模块采用两节干电池作为电源,为水平仪供电;倾角测量模块使用6轴传感器MPU6050芯片为主芯片完成倾角测量;控制模块采用S T C 15系列单片机IAP15W4K61S4芯片作为主控芯片,完成读取倾角数据与数据滤波融合,并将处理后的数据送至显示模块显示;显示模块采用液晶显示,可在屏幕同时显示三个角度数据。
本设计介绍了数字倾角仪的软硬件设计,采用卡尔曼滤波算法提高测量精度和稳定性,采用低功耗元件降低整机功耗,可延长倾角仪的工作时间。
如图1所示。
2 倾角仪硬件电路设计倾角仪硬件电路主要由电源模块、倾角测量模块、单片机控制模块和液晶显示模块等部分组成。
倾角仪各模块芯片的工作电压不同,主控芯片工作电压是2.5V~5.5V,倾角传感器工作电压是2.5V~3.3 V,液晶显示屏的工作电压是3.3 V~5.5V。
考虑到倾角仪便携式的特点,采用两节干电池作为供电电源,比纽扣电池更合适,电池容量更大,更换更为方便[2]。
倾角仪的主控芯片,选用STC公司生产的IAP15W4K61S4芯片,具有宽电压供电,内置高数时钟和可靠复位电路,功耗非常低,掉电模式可由外部中断唤醒。
主控电路,主要是负责接收倾角传感器的获取的倾角数据并且进行数据处理,再将处理好的数据送至液晶显示器显示。
倾角传感器采用InvenSense公司推出的一款低成本的6轴传感器MPU6050模块,包括三轴加速度,三轴角速度, 免除了组合陀螺仪与加速器时间轴之差的问题,减少了大量的封装空间,体积小巧,用途非常广。
基于ATMega16单片机的数字式水平测量仪设计作者:梁小椿王庆泉来源:《科技视界》 2012年第7期梁小椿王庆泉(嘉兴学院机电工程学院浙江嘉兴314001)【摘要】设计了以ATMega16单片机为主控制器的数字式水平测量仪。
该系统采用双轴SCA100T倾角传感器,实现了对一定范围内任意平面水平角度的测量。
实验结果表明,所设计系统的误差为0.001°,性能稳定可靠,在建筑、桥梁、地质勘查等工程领域具有良好的应用价值。
【关键词】ATMega16单片机;双轴的SCA100T;任意平面;水平角度;系统误差0 引言目前市场上出售的水平仪种类很多,有气泡式和数字式的水平仪。
气泡式的水平仪可读性不是很好,而市场上出售的数字式水平仪,大多都是专业的水平仪且价格昂贵。
设计一种适合一线工程人员使用的高性价比实用水平测量仪是很有必要的,可以极大的方便广大工程人员。
1 水平仪测量的原理前人多采用差动变压器式传感器LVDT和CCD线列传感器等传感器来测量倾斜度[1],但这类传感器的精度、抗干扰等都赶不上MEMS技术开发生产的高精度双轴倾角传感器。
本文在设计中使用了MEMS技术的双轴的SCA100T倾角传感器来测量角度。
该传感器是芬兰VTI公司在2005年推出[2],是一种静态加速度传感器,当它静止时作用在它上面的只有重力加速度,重力方向和传感器敏感轴间的夹角就是倾斜角。
该传感器具有两个模拟信号输出和一个数字SPI接口,模拟输出能提高信号的灵敏度并大大的减小共模噪声。
SCA100T输出的模拟电压v0的范围是0.5V到4.5V,电压转换成角度|?鄣|的公式为:由上式可以很方便的计算出SCA100T倾角传感器的单个敏感轴与水平面的夹角。
下面讨论如何通过双轴倾角传感器的两个敏感轴测量出的角度来计算SCA100T倾角传感器与水平面之间的任意角度。
通过几何知识的理解和双轴倾角传感的两个模拟输出得到几何立体图形图1:图1中OX代表敏感轴X轴,OY代表敏感轴Y轴,由传感器的原理可以知道OX⊥OY,及△OXY是直角三角形,平面OXY代表的是倾角传感器所在的平面。
目录1.引言 (1)2.设计方案及原理 (2)3.模拟量数字仪表设计原理 (3)4.硬件设计 (4)4.2 ADC0804的功能介绍 (4)4.3 LED显示器 (5)4.3.1 4位数码管的驱动方式 (7)4.3.2 LED显示器的选择 (8)4.3.3 LED显示器与单片机接口设计 (8)5.总体电路设计 (11)6.软件设计 (12)7.总结 (13)8.参考文献 (15)1.引言本文介绍了一种基于单片机的简易数字显示仪器仪表的设计,该设计主要由三个模块:A\D模数转换器,数据处理模块及显示模块。
A\D模数转换器主要由ADC0804来完成,他负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。
数据处理则由芯片8751来完成,其负责把ADC0804传来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着ADC0804芯片的工作。
20世纪50年代初,世界上出现了第一台数字显示仪表。
近五十年来,随着现代科学技术的迅猛发展,尤其是数字化测量技术、半导体技术、大规模集成电路技术及计算机技术在仪表中的应用,使数字仪表很快地从电子管式、晶体管式发展到目前集成电路式和带有微处理哭的数字仪表。
数字仪表的出现适应了科学技术及自动化生产过程中高速、高准确度测量的需要,它具有模拟仪表无法比拟的优点。
该系统的数字显示仪表电路简单,所用原件较少,成本低,测量精度和可靠性较高,最终结果通过四位一体共阴极八段数码显示管显示出来。
2.设计方案及原理硬件电路设计有3个部分组成:A/D转换电路,8751单片机系统以及LED显示系统。
P0口作为与A/D转换电路的数据口,P3口部分接口作为A/D 转换电路的控制口,P0口作为LED显示系统的段选码输入口,P1口部分接口作为LED显示系统的位选控制端。
硬件电路设计框图如图1所示:图1 模拟量数字仪表系统硬件设计框图3.模拟量数字仪表设计原理利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式现实出来。
毕业设计(论文)题目:基于单片机技术的RCL数字测试仪设计学号:2姓名:专业:电子信息工程(本科)指导教师::1、一、二、三、四、五项由指导教师在毕业设计(论文)开始前填写并交由学生保管;2、成绩评定由指导教师、评阅人、答辩委员会按《武汉工程大学本科生毕业论文(设计)工作条例》、院毕业设计(论文)工作细则严格执行;基于单片机技术的RCL数字测试仪设计摘要:综观现在的电阻,电容和电感测试仪,一般是和专门的函数信号发生器捆绑在一起,大多价格昂贵,体积较大,不适宜用于需要移动测量的场合和野外作业。
本文主要介绍了高精度智能RCL测试仪的一种系统设计方案。
以AT89C51单片机为核心,利用555定时器及三点振荡电路产生测量电阻,电容和电感的振荡信号,利用单片机卓越的记数功能测量所产生的频率量,再利用编程设计将其转换为要测量的物理量,从而得到三种元件的实际值大小,最后通过键盘和LED实现数字显示。
整个系统采用单片机智能控制,进行数据的分析处理和运算,能够对数据做出快速正确的处理,并且有利于其他功能的扩展和实现。
它成本低廉,体积小,便于携带,几乎能满足大多数的应用场合。
关键词:频率单片机测量振荡。
Based on single chip microcomputer technology RCL numeral reflectoscope reflector designABSTRACT:The comprehensive survey present resistance, the electric capacity and the inductance reflectoscope reflector, are generally and the special function signal generating device ties up in the same place, mostly price expensive, the volume is big, is not suitable uses in needing to move the survey the situation and the field work. This article mainly introduced the high accuracy intelligence RCL reflectoscope reflector one kind of system design plan. Take AT89C51 single chip microcomputer as the core, uses 555 timers and three oscillating circuits has the survey resistance, the electric capacity and the inductance vibration signal, has the frequency quantity using the single chip microcomputer remarkable register function survey, again transforms using the programming design it into the physical quantity which must survey, thus obtains three kind of parts the actual value sizes, finally through keyboard and LED realization numeral demonstration. The overall system uses the monolithic integrated circuit intelligence control, carries on the data the analysis to process and to operate, can make fast correct processing to the data, and is advantageous to other functions expansions and the realization. Its cost inexpensive, the volume is small, is advantageous for carries, can satisfy the majority application situation nearly.KEY WORDS:Frequency single chip microcomputer survey vibration.目录一.课题背景 (10)1.概述........................................................................................... 错误!未定义书签。
摘要电子水平仪是一种非常普遍的测量小角度的量具。
用它可测量对于水平位置的倾斜度。
基于传感器、数字信号处理、单片机技术的数字水平仪是当前倾角测试仪器数字化发展的方向。
本毕业设计就是采用STC89C52单片机和ADI公司生产的三轴加速度传感器ADXL345相结合,利用ADXL345三轴加速度传感器感应水平倾角,通过单片机的控制以及运算将倾角以数值的形式直接在LCD显示屏上进行显示、处理,从而使角度测量变得方便、快捷,实现了倾角的高精度测量。
通过ADXL345三轴加速度传感器原理,提出了使用软件和硬件结合的自动校正技术进行测量角度,最大限度简化了电路,提高了系统的稳定性和可靠性。
通过对本课题的研究,让我对水平仪有了一定的了解,在未来水平仪将在建筑方面起着重要作用,并且随着时代发展,水平仪对角度的测量将越来越精细,随着光学应用领域的不断扩展,也相应的产生了一些基于光电原理的光电式水平仪和激光式水平仪,光电原理的应用将是未来水平仪的发展方向。
关键词:智能水平仪;单片机;ADXL345;角度AbstractElectronic level gauge is a very common small angle measurement. Measurement for the horizontal position of the inclination to use it. Based on the digital level sensor, digital signal processing, computer technology is the current development of digital instrument tilt testing instrument in the direction of.This graduation design is the use of three axis accelerometer ADXL345 microcontroller STC89C52 and ADI company production of combination, using the ADXL345 three axis acceleration sensor level angle, processing through the MCU control and operation will dip in numerical form directly in the LCD screen display,, so that the angle measuring is convenient, quick, realize high precision measurement of angle. The principle of the ADXL345 three axis accelerometer, and proposes to use the combination of hardware and software of the automatic calibration technique for measuring the angle, the maximum simplifies the circuit, improves the stability and reliability of the system.This graduation design is the use of three axis accelerometer ADXL345 microcontroller STC89C52 and ADI company production of combination, using the ADXL345 three axis acceleration sensor level angle, processing through the MCU control and operation will dip in numerical form directly in the LCD screen display,, so that the angle measuring is convenient, quick, realize high precision measurement of angle. The principle of the ADXL345 three axis accelerometer, and proposes to use the combination of hardware and software of the automatic calibration technique for measuring the angle, the maximum simplifies the circuit, improves the stability and reliability of the system.Keywords: Intelligent level; MCU; ADXL345; angle目录1 绪论 (1)1.1 课题研究背景和意义 (1)1.2 国内外水平仪发展现状和趋势 (1)1.3 系统设计的主要工作 (1)1.4 论文结构及安排 (2)2 三轴加速度传感器感应原理 (3)2.1 ADXL345工作原理 (3)2.2 ADXL345寄存器映射 (5)2.3 ADXL345主要寄存器定义介绍 (6)2.4 测量倾斜角度原理 (8)2.4.1 加速度传感器进行倾角测量简介 (8)2.4.2 ADXL345测量角度原理 (9)3 水平仪总体设计 (12)3.1 水平仪硬件设计 (12)3.1.1 单片机模块 (13)3.1.2 LCD液晶显示模块 (14)3.1.3 ADXL345接口设计 (16)3.1.4 ADXL345加速度传感器模块 (18)3.2 水平仪软件设计 (20)3.2.1 I2C总线协议分析 (21)3.2.2 液晶显示驱动程序设计 (25)3.2.3 ADXL345加速度传感器软件模块 (28)3.2.4 ADXL345加速度传感器误差校准 (28)4 实验数据及总结 (30)结论 (33)致谢 (34)附录A 英文原文 (37)附录B 汉语翻译 (41)附录C 主程序 (44)附录D 电路原理图 (55)1 绪论1.1 课题研究背景和意义在高楼桥梁等建筑行业,对建筑物自身在水平面倾斜度的测量和处理,需要一个能连续工作几个月甚至一年以上采样进度很高的数字水平仪系统,这就要求该系统必须具有高精度微功耗的功能。
基于单片机的智能仪器综合设计实验一、实验目的在实验一~实验三的基础上,完成综合设计实验,学会信号采集、数据处理、键盘控制、LCD或LED显示等功能的智能仪器设计。
二、复习与参考实验一~实验三三、设计指标利用K分度号热电偶进行温度检测,测温范围为500-1200ºC,室温为20ºC,用LCD或LED显示室温和测量温度。
具有4路温度信号循环检测功能,通道切换时间可调;具有任意指定通道显示功能。
四、实验要求1.选择传感器,设计硬件电路,包括检测电路、信号调理电路、AD转换电路、单片机最小系统、LED显示(单号)、LCD显示(双号)、独立式按键,画出电路原理图。
2.画出软件流程图。
3.用Keil C51编写程序。
3.实验结果在LCD或LED上显示出来。
4.实验前完成第1、2项备查。
五、实验仪器设备和材料清单PC机;单片机实验板、连接导线、ST7920图形液晶模块Keil c51软件六、实验成绩评定方法实验成绩包括预习、实验完成质量、实验报告质量3部分组成,各部分所占比例分别为30%、40%、30%。
八、实验报告要求实验报告格式:●实验名称●实验目的●实验内容●硬件设计●软件设计●调试过程●参考文献●附1:电路原理图●附2:程序清单附录:实验程序源代码如下:(陈寅)#include "reg51.h"#define THC0 0xee //5ms时间常数设置#define TLC0 0x00sbit ADWR=P3^6; /***WR*****/sbit ADRD=P3^7; /***RD*****/sbit ADCS=P2^7; /***CS*****/sbit EOC=P3^3; /***EOC****/sbit ADA=P1^3; //通道选择引脚sbit ADB=P1^4;sbit ADC=P1^5;sbit CS =P1^0; /****************/sbit SID=P1^1; /**液晶引脚定义**/sbit SCLK=P1^2; /****************/sbit MODE=P2^0; /*************************/sbit UP=P2^1; /*四个按键接口,0表示按下*/sbit DOWN=P2^2; /*************************/sbit LED1=P2^3; /**4个LED灯引脚定义**/sbit LED2=P2^4; /********************/sbit LED3=P2^5; /********************/sbit LED4=P2^6; /********************//***************500~1200°C范围的K分度表,间隔10*******************/ unsigned int code K_TABLE[71]={20644,21066,21493,21919,22346,22772,23198,23624,24050,24476,24902,25327,25751,26176,26599,27022,27445,27867,28288,28709,29128,29547,29965,30383,30799,31214,31629,32042,32455,32866,33277,33686,34095,34502,34909,35314,35718,36121,36524,36925,37325,37725,38122,38519,38915,39310,39703,40096,40488,40897,41296,41657,42045,42432,42817,43202,43585,43968,44349,44729,45108,45486,45863,46238,46612,46985,47356,47726,48095,48462,48828}; unsigned char GetAdData[10]={0}; //存放获得AD值的数组变量unsigned char ViewTemperature[4]={"0000"}; //显示温度缓冲数组变量unsigned MODESelect=1;int ChangeTime=2; //通道切换时间,单位Sint TongDao=1;void delay(unsigned int j){unsigned char i;do{for(i=0;i<100;i++);}while(j--);}void send_command(unsigned char command_data) //发送命令{unsigned char i;unsigned char i_data;i_data=0xf8; //操作命令,可以查看资料delay(10);CS=1;SCLK=0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data&=0xf0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data=i_data&0x0f;i_data<<=4;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}CS=0;}void send_data(unsigned char command_data) //发送数据{unsigned char i;unsigned char i_data;i_data=0xfa; //操作命令,可以查看资料delay(10);CS=1;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data&=0xf0;for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}i_data=command_data;i_data=i_data&0x0f; //取低四位i_data<<=4; //左移四位,从而变成高四位for(i=0;i<8;i++){SID=(bit)(i_data&0x80);SCLK=0;SCLK=1;i_data=i_data<<1;}CS=0;}void InitLCD() //液晶初始化{send_command(0x30); //功能设置:一次送8位数据,基本指令集send_command(0x06); //点设定:显示字符/光标从左到右移位,DDRAM地址加1send_command(0x0c); //显示设定:开显示,显示光标,当前显示位反白闪动send_command(0x04); //显示设定:开显示,显示光标,当前显示位反白闪动send_command(0x01); //清DDRAMsend_command(0x02); //DDRAM地址归位send_command(0x80); //把显示地址设为0X80,即为第一行的首位}/* x,y为起始座标x(0<=x<=3),y(0<=y<=7),x为行座标,y为列座标;how为要显示汉字的个数;style为显示字符的类型,0表汉字,1表字母;str是要显示汉字的地址*/void Display(unsigned char x,unsigned char y,unsigned char how,bit style,unsigned char *stri) //液晶显示{unsigned char hi=0;if(x==0) send_command(0x80+y);else if(x==1) send_command(0x90+y);else if(x==2) send_command(0x88+y);else if(x==3) send_command(0x98+y);if(style==0){for(hi=0;hi<how;hi++){send_data(*(stri+hi*2));send_data(*(stri+hi*2+1));}}elsefor(hi=0;hi<how;hi++) send_data(*(stri+hi));}float LvBo(void)//复合滤波{unsigned char max,min,i;unsigned int sum=0;float U1;max=GetAdData[0];min=GetAdData[0];for(i=0;i<10;i++){sum=sum+GetAdData[i];if(max<GetAdData[i]) max=GetAdData[i];if(min>GetAdData[i]) min=GetAdData[i];}sum=sum-max-min;U1=(float)sum/8;U1=10.0*((U1*5.0)/255); //换成mvreturn U1;}void search (void)//查表子函数{unsigned int da=0,max,min,mid,j;unsigned int var;da=LvBo()*1000; //u1扩大1000倍da=da+798; //20度max=71;min=0;var=0;while(1){mid=(max+min)/2; //中心元素位置if(K_TABLE[mid]==da) {var=mid*10;break;} //中心元素等于查表元素,计算相应温度else if(K_TABLE[mid]>da) max=mid-1;else min=mid+1;if(max-min==1) /*线性插值计算温度值*/{j=(K_TABLE[max]-K_TABLE[min])/10; /*表中相邻两值对应温度相差10°C*/j=(da-K_TABLE[min])/j;var=10*min+j;break;}if(max==min){if(da>=K_TABLE[min]){j=(K_TABLE[min+1]-K_TABLE[min])/10;j=(da-K_TABLE[min])/j;}else if(da<K_TABLE[min]){j=(K_TABLE[min]-K_TABLE[min-1])/10;j=(da-K_TABLE[min-1])/j;min=min-1;}var=10*min+j;break;}}var=var+500;ViewTemperature[0]=var/1000+0x30;ViewTemperature[1]=var/100%10+0x30;ViewTemperature[2]=var/10%10+0x30;ViewTemperature[3]=var%10+0x30;}void LcdDisplay(void){unsigned char ViewMODESelect,ViewTongDao[5]={"0 "},ViewChangeTime[5]={"00(S)"};ViewMODESelect=MODESelect+0x30;ViewTongDao[0]=TongDao+0x30;if(MODESelect==1||MODESelect==2){if(MODESelect==1) Display(0,3,5,0,":自动切换");else if(MODESelect==2) Display(0,3,5,0,":手动切换");Display(0,0,2,0,"模式"); //液晶显示Display(0,2,1,1,&V iewMODESelect);Display(1,0,5,0,"温度通道:");Display(1,5,5,1,V iewTongDao);Display(2,0,4,0,"温度值:");Display(2,4,4,1,V iewTemperature);Display(2,6,2,1,"℃");}else if(MODESelect==3){ViewChangeTime[0]=ChangeTime/10+0x30;ViewChangeTime[1]=ChangeTime%10+0x30;Display(0,0,2,0,"模式");Display(0,2,1,1,&V iewMODESelect);Display(0,3,5,0,":设置时间");Display(1,0,5,0,"切换时间:");Display(1,5,5,1,V iewChangeTime);Display(2,0,14,1," "); //本行清屏}}void TDSelect(void) //AD通道设置{if(TongDao>=5) TongDao=1;if(TongDao<=0) TongDao=4;if(TongDao==1) {ADC=0;ADB=0;ADA=0;}else if(TongDao==2) {ADC=0;ADB=0;ADA=1;}else if(TongDao==3) {ADC=0;ADB=1;ADA=0;}else if(TongDao==4) {ADC=0;ADB=1;ADA=1;}}main(){unsigned char AdCount=0; //用来存放AD采集次数InitLCD();TMOD=0x11; //定时器0初始化TH0=THC0;TL0=TLC0;TR0=1;ET0=1;EA=1;P2|=0x07; //按键初始为高while(1){ADWR=1; /************/ADCS=0; /************/ADWR=0; /**AD初始化**/ADWR=1; /************/while(!EOC); //等待转换结束ADRD=0;GetAdData[AdCount]=P0; //读取转换结果AdCount++;if(AdCount>=10) //连续采集10次值{AdCount=0;search(); //查表LED1=!LED1;LcdDisplay(); //显示}}}void Timer0() interrupt 1{static unsigned char count=0,UPFlag=1,DOWNFlag=1; //按键标志位static unsigned int TimeCount=0;TH0=THC0;TL0=TLC0;if(MODE==0||UP==0||DOWN==0){count++;if(count>=30) //消抖处理{count=0;if(MODE==0) //按键按下{MODESelect++;if(MODESelect>=4) MODESelect=1;}else if(UP==0){UPFlag=0;if(MODESelect==2){TongDao++;TDSelect();}}else if(DOWN==0){DOWNFlag=0;if(MODESelect==2){TongDao--;TDSelect();}}}}else count=0;if(MODESelect==1){TimeCount++;if(TimeCount>=(ChangeTime*1000/5)){TimeCount=0;TongDao++;TDSelect();}}else if(MODESelect==3){if(UPFlag==0) {UPFlag=1;ChangeTime++;}else if(DOWNFlag==0){DOWNFlag=1;ChangeTime--;if(ChangeTime<=0) ChangeTime=1;}}}。
基于单片机的多功能数字测量仪设计编号本科生毕业设计基于单片机的多功能数字测量仪Design of Digital MultipurposeMeter Based on Single Chip Microcomputer学生姓名房虎专业电气工程及其自动化学号110432319指导教师孙荣春学院电子信息工程学院2015年6月毕业设计(论文)原创承诺书1.本人承诺:所呈交的毕业设计(论文)《基于单片机的多功能数字测量仪》,是认真学习理解学校的《长春理工大学本科毕业设计(论文)工作条例》后,在教师的指导下,保质保量独立地完成了任务书中规定的内容,不弄虚作假,不抄袭别人的工作内容。
2本人在毕业设计(论文)中引用他人的观点和研究成果,均在文中加以注释或以参考文献形式列出,对本文的研究工作做出重要贡献的个人和集体均已在文中注明。
3.在毕业设计(论文)中对侵犯任何方面知识产权的行为,由本人承担相应的法律责任。
4.本人完全了解学校关于保存、使用毕业设计(论文)的规定,即:按照学校要求提交论文和相关材料的印刷本和电子版本;同意学校保留毕业设计(论文)的复印件和电子版本,允许被查阅和借阅;学校可以采用影印、缩印或其他复制手段保存毕业设计(论文),可以公布其中的全部或部分内容。
以上承诺的法律结果将完全由本人承担!作者签名:• 年•• 月•••日摘要本次设计用单片机芯片AT89S52设计一个多功能数字测量仪,实现电压、电流、电阻、温度等测量,并配有计时功能,具有按键与显示功能。
此系统由分流电阻、分压电阻、基准电阻、单片机最小系统、显示部分、报警部分、A/D 转换和控制等部分组成。
为使系统更加稳定,使系统整体精度得以保障,本电路使用了AD0809数据转换芯片,单片机系统设计采用AT89S52单片机作为主控芯片,配以RC上电复位电路和11.0592MHZ震荡电路,显示采用LCD1602液晶显示屏,程序每次执行周期耗时缩到最短,这样保证了系统的实时性。
题目基于单片机的数字水平仪设计学生姓名杨哲学号********** 所在学院物理与电信工程学院专业班级电子1204班指导教师秦伟完成地点物理与电信工程学院实验室2016年6 月12日基于单片机的数字水平仪设计作者:杨哲(陕西理工学院 ,物理与电信工程学院, 电子信息工程系2012级4班,陕西汉中723000)指导老师:秦伟[摘要]数字水平仪是一种普遍的角度测量工具。
用它可以测量被测平面相对于水平面的夹角。
基于传感器、数字信号处理、单片机技术的数字水平仪是当前倾角测试仪器数字化发展的方向。
本次毕业设计采用三轴加速度传感器感应静态加速度值,通过STC89C52单片机读取其加速度并计算出倾角值,再将倾角值直接在LCD平面上显示出来,另外加上一些辅助按键的控制,可以使角度测量更方便、快捷。
本文提出了使用软件和硬件相结合的自动校正技术进行角度测量,最大限度简化了电路,提高了系统的稳定性和可靠性。
[关键词]数字水平仪;单片机STC89C52;加速度传感器;高精度The Design of Digital Level Based on Single ChipMicrocomputerAuthor:Yang Zhe(Grade 12,Class 4,Major electronics and information engineering, School of Physics and Electronic Information Engineering, Shaanxi University of Technology, Hanzhong Shaanxi)Tutor:Qin Wei[Abstract]: Digital level is a Angle measuring tool. Use it measured plane relative to horizontal plane Angle can be measured. Based on the technology of sensor, the digital signal processing, single chip microcomputer digital level is the current Angle measuring instrument digital development direction.This graduation design using three-axis accelerometer sensing static acceleration value, through the STC89C52 microcomputer reads the acceleration and calculate the Angle value, then the Angle values directly displayed on the LCD flat, plus a few auxiliary button control, Angle measurement can be more convenient and quick,. Is proposed in this paper using the software and hardware combination of automatic correction technology of Angle measurement. Simplify the circuit to the greatest extent, to improve the stability and reliability of the system.[Key words]: Digital level; Microntroller STC89C52; Acceleration transducer; High precision目录1.引言 (1)1.1 课题研究背景和意义 (1)1.2 国内外的发展现状和趋势 (1)1.3 系统设计 (1)2.方案论证 (2)2.1系统方案选择 (2)2.2模块设计方案 (2)3.水平仪总体设计 (3)3.1硬件设计 (3)3.1.1数据采集模块 (3)3.1.2单片机模块 (12)3.1.3 LCD液晶显示模块 (13)3.2软件设计 (14)3.2.1 I2C总线协议分析 (15)3.2.2液晶显示驱动 (16)3.2.3 ADXL345软件模块 (17)3.2.4 ADXL345误差校准 (17)4.实验结果 (18)5.总结 (20)致谢 (21)参考文献 (22)附录 A 源程序 (23)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)加速度传感器进行角度测量原理目前常用的确定平面系统倾角倾斜的方法是对陀螺仪的输出求出积分,虽然这种方法简单,但是随着积分周期的增加,与零偏稳定型相关的误差也有可能快速增大,即使当器件处于静止状态时也可能导致明显的旋转。
在某些重力加速度的应用中,可以利用加速度传感器来测量静态倾斜角,这样就克服了陀螺仪的缺点。