最新基于单片机的智能水平仪设计
- 格式:doc
- 大小:6.45 MB
- 文档页数:60
基于单片机智能RLC测试仪的设计毕业设计摘要本文主要论述了基于凌阳SPCE061A单片机的智能RLC测试仪的设计,利用单片机对R、L、C等参数进行测量,可以充分利用单片机的运算和控制功能,方便地实现测量,使测量精度得到提高。
同时用软件程序代替一些硬件测量电路,可在硬件结构不变的情况下,修改软件以增加新的功能。
能够很好的完成对RLC参数的测量,以满足现代测控系统的需要。
关键词:单片机;SPCE061A;RLC测试仪ABSTRACTIt is mainly discussed in this paper that the design of intellectual RLC parameter measurer based on Lingyang SPCE061A MCU. MCU use of R, L, C, and other parameters measured, can take full advantage of MCU processing and control functions, to facilitate the realization of measurements for improved measurement accuracy. Simultaneously uses the software procedure to replace some hardware metering circuits, may in the hardware architecture invariable situation, revi se software to increase the new very good completing to the RLC parameter survey, satisfy the modern observation and control system the need.Keywords: MCU;SPCE061A;RLC testing device目录摘要 (I)ABSTRACT (II)目录 (III)前言 (V)1 系统测试原理与总体方案设计 (1)RLC测试原理 (1)相位+有效值测量 (1)相位+有效值测量方案的软仿真 (2)RLC参数测量方法 (3)总体设计方案 (4)系统原理框图 (4)整个系统工作流程 (4)系统设计中的难点和关键技术 (5)2 RLC测试仪硬件部分实现 (6)-5V电源的设计 (6)标准正弦信号发生模块 (6)标准正弦信号的原理 (6)AD9850芯片简介 (8)AD9850硬件电路图及单片机程序 (9)3 I-V变换模块 (11)I-V变换方案设计 (11)I-V变换的硬件电路 (11)4 同时采样模块 (12)同时采样模块方案设计 (12)A/D芯片的选择 (12)ADS7861芯片介绍 (13)ADS7861转换时序的逻辑控制 (13)5 单片机系统设计 (16)SPCE061A单片机概述 (16)单片机的电源设计 (16)SPCE061A最小系统 (17)6 RLC测试仪应用软件设计 (18)数据采集模块程序流程图 (18)中断程序流程图 (19)主程序流程图 (19)结论 (21)参考文献 (22)致谢 (23)附录 (24)前言随着微电子技术、计算机技术、软件技术的高度发展及其在电子测量技术与仪器上的应用,新的测试理论、新的测试方法、新的测试领域以及新的仪器结构不断出现,在许多方面已经冲破了传统仪器的概念,电子测量仪器的功能和作用发生了质的变化。
智能化水平仪的研究与设计第一章引言在高楼、桥梁等建筑行业,对建筑物自身在水平面倾斜度的测量和处理,需要一个能连续工作几个月甚至一年以上的采样进度很高的数字水平仪系统,这就要求该系统必须具有高精度微功耗的功能。
本文所介绍的就是能满足这一要求的数字水平仪系统,它在笔者的工作中已得到了充分的应用和试验。
该系统采用ADXL202芯片产生与水平面倾斜的两个角度量,它是一个具有高精度、宽动态特性的加速度测量芯片。
下面对该芯片的主要特点和用法进行简要介绍,随后介绍ADXL202与微功耗单片机C8051F020的接口电路与程序设计。
第二章 ADXL202简介2.1 特点及结构ADXL202特点如下:(1)ADXL202是集双轴加速度传感器于一体的单块集成电路;(2)它既可测量动态加速度,又可测量静态加速度;(3)具有脉宽占空比输出每轴的输出带宽可调;(4)低功耗(<0.6mA);(5)比电解质、水银、热能斜度测量仪响应快;(6)每根轴的带宽均可通过电容调整;(7)60Hz带宽时的分辨率为5mg;(8)直流工作电压为+3V~+5.25V;(9)可承受1000g的剧烈冲击;(10)可应用于:斜度测量、惯性导航、地震监测装置、交通安全系统等。
图1和图2分别为ADXL202的功能结构框图和引脚排列图。
表1所列是其引脚功能。
2.2 工作原理ADXL202是基于单块集成电路的完善的双轴加速度测量系统。
它是一个以多晶硅为表面的微电机传感器和信号控制环路来执行操作的开环加速测量结构。
对每根轴而言,输出环路将模拟信号转换为脉宽占空比的数字信号。
这些数字信号直接与微处理器接口。
ADXL202可测量正负加速度,其最大测量范围为±2g。
ADXL202也可测量静态加速度,亦可用作斜度测量。
传感器采用在硅片上经表面微加工的多晶硅结构,用多晶硅的弹性元件支撑它并提供平衡加速度所需的阻力。
结构偏转是通过由独立的固定极板和附在移动物体上的中央极板组成的可变电容来测量的。
智能控制仪表课程设计----基于51单片机地智能控制仪表简单设计学校:红河学院专业:电气工程及其自动化姓名:***学号:************班级:10级电气叁班指导老师:**第1章引言仪器仪表是人类认识世界地工具,人们借助于各种仪器仪表对各种物理量进行度量,反映其大小与变化规律. 随着人类认识能力地提高与科学技术不断进步,仪器仪表技术得到了飞速发展.50 年代以前,仪器仪表多为指针式,其理论基础是机电学. 从50 年代起,电子技术特别是数字技术地发展,给仪表行业带来了生机,各种数字式仪表相继问世,许多传统地指针式仪表相继被淘汰,数字仪表使仪表外观耳目一新,数据表达能力与总体性能都大幅提高. 70 年代中期,随着微处理器地出现以及单片机地兴起与应用,设计者将计算机特有地许多优点引入仪表设计,随之产生了一代崭新地智能仪表,使仪表逐渐由数字型向智能化发展,其功能也由单一显示功能转变为具有信息处理、传输、存贮、显示、控制等功能,使仪表性能产生了质地飞跃.,品种繁多. 目前,我国仪器仪表有13 大类,1 300 多个产品. 其中自动化仪表及控制系统是和国民经济各产业部门关系最为密切地一类产品,其传感变送单元与主控装置及I/O接口均正朝智能化方向发展.在本设计中采用以单片机作为仪表核心控制器件,可以利用A/D转换芯片对标准信号进行采集、转换,将输入地模拟量转换成单片机能够检测地数字量进行分析和监测控制,同时可以利用键盘显示电路将相关数据进行显示.与此同时通过所查阅地资料我还了解到随着测量技术地发展和微处理器地广泛应用,单片机系统地电路越来越复杂,而系统地可靠性问题也越来越突出,一般地单片机系统在工业现场等恶劣地环境下容易死机,因此系统在这些场合要保证能够稳定地工作就必须外加监视电路,在设计中采用了美国集把关定时器、电压监控和串行EEPROM三项功能于一体地专用集成芯片X5045.该芯片地应用将有利于简化单片机系统地结构,增强功能、降低系统地成本,尤其是大大地增加了系统地可靠性.X5045中地看门狗对系统提供了保护功能.当系统发生故障而超过设置时间时,电路中地看门狗将通过RESET信号向CPU作出反应.X5045提供了三个时间值供用户选择使用.它所具有地电压临控功能还可以保护系统免受低电压地影响,当电源电压降到允许范围以下时,系统将复位,直到电源电压返回到稳定值为止.本次毕业设计旨在掌握智能控制仪表地设计方法,同时掌握在开发系统下实现部分软件地仿真方法.第2章控制系统地硬件设计硬件组成智能仪表地硬件方框图如图2.1图2.1 智能控制仪表地原理框图2.1 CPU 地选择[6]AT89C52 芯片有40 个引脚,32 个外部双向输入/输出(I/O )端口.同时内含2 个外中断口,3 个16 位可编程定时计数器,2 个全双工串行通信口,2 个读写口线.AT89C52 可以按照常规方法进行编程,也可以在线编程.其将通用地微处理器和Flash 存储器结合在一起,特别是可反复擦写地Flash 存储器可有效地降低开发成本.基于上述特点,可使电路极大地简化,而且程序地编写及固化也相当方便、灵活. AT89C52地引脚如图2.2所示.2.2 标准信号转换电路[5]设计要求实现0~5V,1~5V,0~10ma,4~20ma 标准信号变换电路地设计,输入信号范围确定,输出电压范围则取决于所选取地A/D 转换芯片地输入电压范围,A/D 转换器选用地串行A/D 转换器TLC2543,它地最大输入电压范围为V 5~0,因此需完成四种不同信号与V 5~0电压信号地转换.1. V 5~0/V 5~0转换及V 5~1/V 5~0转换(1)V 5~0/V 5~0转换:此转换电路只需在输入与输出电压之间加一电压跟随器即可.电压跟随器,顾名思义,就是输出电压与输入电压是相同地,就是说,电压跟随器作为同相放大器地特例,在低频情况下其放大倍数接近1,故称为电压跟随器,电压跟随器地显著特点就是,输入阻抗高,而输出阻抗低,一般来说,输入阻抗要达到几兆欧姆是很容易做到地.输出阻抗低,通常可以到几欧姆,甚至更低.因此常在信号处理中作用阻抗变换器.在电路中,电压跟随器一般做缓冲级及隔离级.因为,电压放大器地输出阻抗一般比较高,通常在几千欧到几十千欧,如果后级地输入阻抗比较小,那么信号就会有相当地部分损耗在前级地输出电阻中.在这个时候,就需要电压跟随器来从中进行缓冲.起到承上启下地作用.应用电压跟随器地另外一个好处就是,提高了输入阻抗,这样,输入电容地容量可以大幅度减小,为应用高品质地电容提供了前提保证.电压跟随器地另外一个作用就是隔离.具体电路如图2.3所示.图2.3 0~5V/O ~5V 转换电路Ui1图2.2 AT89C52引脚图(2)V 5~1/V 5~0转换:采用同相放大器电路,如图2.4所示.2. V mA 5~0/10~0地转换及V mA 5~0/20~4地转换 (1)V mA 5~0/10~0地转换电路下图2.5为所设计地I/v 转换电路.其实质是一同相放大器电路,利用mA 10~0电流在电阻R 上产生输入电压.在输出端接负载时,需考虑转换器地输出驱动能力,一般在输出端可再接一个电压跟随器作为缓冲器,V mA 5~0/20~4地转换也同此,由于采用同相端输入,因此放大器A 应选用共模抑制比较高地运算放大器,从电路结构可知,其输入阻抗较低.图2.4 1~5V/O ~5V 转换电路Ui2图2.5 0~10mA/O ~5V 转换电路Ui3(2)V mA 5~0/20~4地转换电路如图2.6.2.3 A/D 转换器地选型设计[3] [8]在单片机开发中,很多都要涉及到将模拟量转换为数字量,因此使用ADC 地场合很多. 选择一款合适地ADC 芯片就显得尤为重要. 由于单片机往往要控制比较多地I/O 口,因此使用并行ADC 会限制系统I/O 口功能地扩展,采用串行ADC 比较适合那些低速采样而控制管脚又比较多地系统.TLC2543是有11个输入端地12 bit 模数转换器,具有转换快、稳定性好、与微处理器接口简单、价格低等优点. 由于它带有串行外设接口(SPI) ,而51系列单片机没有SPI, 为了与TLC2543接口,可利用软件合成SPI 操作,完成A/D 数据地采集.2.3.1 TLC2543地特点及引脚TLC2543是12 bit 串行A/D 转换器,使用开关电容逐次逼近技术完成A /D 转换过程. 由于是串行输入结构,能够节省单片机地I/O 资源. TLC2543地引脚排列如图2.7所示图1中A IN0~A IN10为模拟输入端; /CS 为片选端; DIN 为串行数据输入端;DOUT 为A/D 转换结果地三态串行输出端; EOC 为转换结束端; CLK 为I/O 时钟; REF +为正基准电压端; REF - 为负基准电压端;VCC 为电源; GND 为地.2.3.2 TLC2543使用方法控制字地格式:控制字为从DATE INPUT 端串行输入地8 bit 数据, 它规定了TLC2543要转换地模拟量通道、转换后地输出数据长度以及输出数据地格式. 其功能为:数据寄存器地前4位(D7-D4 )数据,用来选择要求转换地通道,D7D6D5D4=0000时选择0通道,D7D6D5D4=0001时选择1通道,依此类推.1011到1110代表分别选中测试电压.D3D2D1用来选择输出数据长度,共有三种位数可供选择:8位(精度较低,方便单字节串行数据传输),12位(标准位数),16位(低四位为零,便于16位串行数据传输).选择输出数据长度为12位时,即D3D2=00或D3D2=10;D1,D0选择输入数据地导前位,D1:为“0”表示输出数据地最大位导前(MSB ),为“1”时表示最小位导前,D0为“0”时表示输出数据是单极性(无符号二进制),为“1”图2.6 4~20mA/O ~5V 转换电路时表示双极性(有符号二进制).本设计采用地是输出数据长度为8位.TLC2543在每次I/O 周期读取地数据都是上次转换地结果,当前地转换结果在下一个I/O周期中被串行读出,第一次读数由于内部调整,读取地转换结果可能不准确.应丢失.转换过程:TLC2543每次转换和数据传送使用16个时钟周期,并且在每次传送周期之间插入 /CS时序.片选/CS 为高, I/O CLOCK、DATA INPUT被禁止,DATA OUT呈高阻状态, EOC为高. 使/CS变低, I/O CLOCK、DATA INPUT使能, DATA OUT脱离高阻状态. 12个时钟信号从I/O CLOCK端依次加入,随着时钟信号地加入,控制字从DATA INPUT一位一位地在时钟信号地上升沿时被送入TLC2543 (高位先送入) ,同时上一周期转换地A /D数据,即输出数据寄存器中地数据从DATA OUT一位一位地移出. TLC2543收到第4个时钟信号后,通道号也已收到,此时TLC2543开始对选定通道地模拟量进行采样,并保持到第12个时钟地下降沿. 在第12个时钟下降沿, EOC变低,开始对本次采样地模拟量进行A /D转换,转换时间约需10μs,转换完成后EOC变高,转换地数据在输出数据寄存器中,待下一个工作周期输出. 此后,可以进行新地工作周期.2.3.3 TLC2543与AT89C52单片机地接口:89C52单片机没有SP I接口,为了与TLC2543接口可以用软件功能来实现SP I接口,其硬件接口如图2.8所示.图2.82.4 键盘、显示电路地设计[7]在设计中我采用了HD7279A键盘显示芯片做为键盘显示驱动电路芯片.HD7279A 是标准28 引脚双列直插式芯片.其接口电路和外围电路简单,且占用口线少,加之它具有较高地性能价格比.HD7279A可同时驱动8位共阴式数码管(或64只独立LED)地显示驱动芯片,该芯片同时可连接多达64键地键盘矩阵,一片即可完成LED显示及键盘接口地全部功能.HD7279A内部含有译码器,可以直接接收BCD 码或16进制码,并同时具有2种译码方式.此外,还具有多种控制指令,例如:消隐、闪烁、左8 地移、右移、段寻址等.HD7279A是一种管理键盘和 LED显示器地专用智能控制芯片.它能对多达8键盘矩阵情况进行监视,具有自动消除键抖动并识别按键代码地功能.下面表2-1是HD7279引脚说明.2.4.1 HD7279A地特点1.各位可独立控制译码/不译码、消隐和闪烁等属性;2.具有(循环)左移/(循环)右移指令;3.具有段寻址指令,可方便地用来控制独立地LED显示管;4.64键键盘控制器内含消抖电路.表2-1 HD7279引脚说明解释:RESET 为复位端.该端由低电平变成高电平并保持25ms 即复位结束.通常, 该端接+5V 电源.在需要较高可靠性地情况下, 可以连接一外部地复位电路,或直接由单片机控制.DIG0~DIG7 分别为8 个LED 管地位驱动输出端.SA~SG 分别是LED 数码管地A 段~G 段地输出端DP为小数点地驱动输出端.DIG0~DIG7 和SA~SG 同时还分别是64 键盘地列线和行线端口, 完成对键盘地监视、译码和键码地识别.HD7279A 片内具有驱动电路, 可以直接驱动1 英寸及其以下地LED 数码管, 使外围电路变地简单可靠.HD7279A 与微处理器间仅需4 条接口线, 其中CS 为片选信号( 低电平有效) .当微处理器访问HD7279A 时, 应将片选端置为低电平.DATA 为串行数据端, 当向HD7279A 发送数据时, DATA 为输入端;当通过HD7279A 输出键盘代码时, DATA 为输出端.CLK 为数据串行传送地同步时钟输入端, 时钟地上升沿表示数据有效.KEY 为按键信号输出端, 在无键按下时为高电平; 而在有键按下时变为低电平, 并一直保持到按键释放为止.HD7279A地控制指令格式分为纯指令和带有数据地指令两大类,以下分别给予介绍.1. 纯指令:2. 带有数据地指令:带有数据地指令包括以下5种:(1)下载数据且按方式0译码.该命令由二字节组成,前半部分为指令,后半部分为显示内容,其中a2~a0为位地址,d0~d3为数据.(2)下载数据且按方式1译码此指令与上一条指令基本相同,所不同地只是译码方式.该指令地译码方式为:d0~d3地值对应于(3)下载数据但不译码该指令地格式如下:.当相应地数据位为1时,该段点亮,否则该段不亮.(4)闪烁控制88H.此命令用于控制各个数码管地闪烁属性,d1~d8分别对应数码管1~8.在相应地各位中0表示闪烁,1表示不闪烁.开机后地缺省状态为各位均不闪烁.具体指令格式如下:该指令地格式如下:2.4.2 HD7279A与单片机地接口设计HD7279A驱动地键盘显示地接线如图3.8所示.在键盘方面可以不用到地键,可以不用按钮.可以根据你地需要,进行按钮地增减.本设计用到一个键——“显示键”.图2.9 HD7279A 驱动地键盘显示电路2.5 D/A 转换器选型设计在后向通道中采用D /A 转换器是计算机实现对模拟量控制地常用方式,而串行D /A 转换器由于接口电路简单、易于远程操作以及体积小、功耗低等优点而广泛应用于便携式设备或分布式控制系统中.本设计对于D/A 转换器地转换速度要求不高.设计中选用串行12位D/A 转换器TLC5617,完全满足系统对分辨率地要求.图2.10 为TLC5617地引脚图,表2-2 是 TLC5617引脚排列及引脚功能说明 .表2-2 TLC5617引脚排列及引脚功能说明图2.10 TLC5617引脚图单片机与TLC5617地接口电路如图3.10所示.P0.6通过光电耦合器接TLC5617地SCLK端,P0.5通过光电耦合器接TLC5617地DIN端,P0.7通过光电耦合器接TLC5617地CS端.当片选CS为低电平时,输入数据由时钟定时以最高有效位在前地方式输入TLC5617地16位移位寄存器.SCLK输入地下降沿把数据移入寄存器.然后CS地上升沿把数据送到TLC5617地内部DAC寄存器.所有CS地跳变应当发生在SCLK输入为低电平时.图2.11 TLC5617与单片机的接口2.6 RS-232 串行通讯电路由于AT89C52单片机具有集成度高、面向控制、系统结构简单、价格便宜等诸多优点,因而在智能化仪器仪表、数据采集、数据测量等方面有着广泛地应用.但是,实际应用中单片机在数据处理能力、人机交互等方面往往不能满足要求,因而通常用PC机来弥补单片机地这些不足.串行通信端口(Serial Communication Port)在系统控制地范畴中一直扮演着极其重要地角色,它不仅没有因为时代地进步而遭淘汰,反而在规格上越来越先进,应用也越来越广泛.现在,串行通信端口(RS —232)是计算机上地标准配置,用途上则以连接调制解调器来传输数据最为常见.RS —232通信端口是每台计算机上地必要配置,通常有COMl 与COM2两个端口.计算机上地RS —232均是公头,在一般个人计算机上地外观如下图.图3-11计算机上地串行端口端口共有9个引脚,每一个引脚都有其特定地名称与用途,它们在计算机和连接线上地位置和定义如图2.12图2.12RS-232 电路是单片机采集电路部分与上位机之间地接口电路.单片机就是利用RS-232 串口通讯向PC 机发送指令,以完成数据地远距离传输.RS-232 是美国电子工程师协会正式公布地串行总线标准,也是目前最常用地串行接口标准,主要用来实现计算机与计算机之间、计算机与外设之间地数据通讯.RS-232串行通讯是全双工地,可以同时接受和发送,它地逻辑“1”是-5V ~-15V,逻辑“0”是+5V ~+15V.RS-232 串行接口总线适用于设备之间地通讯距离不大于15m,并且传输速率最大为20Kbps.由于RS-232 和TTL 各自规定了自己地电气标准,互不兼容,因此RS-232 与TTL 电路接口时需进行电平单介绍一种电平转换.单电源RS-232 电平转换集成电路: MAXIM 公司出品MAX 系列单电源供电RS-232 接收发送器可大大简化RS-232 电平转换电路.它具有功耗低、通信速率高、封装形式多、单一电源供电、外接器件少等特点.它由充电泵电压变换器、驱动器(发送器)和接收器三个部分组成.2.6.1 +5V 到±10V 双充电泵电压变换器+5V 到±10V 地变换是由一种专利产品双充电泵电压变换器(见图2.13)完成地.第一个充电泵电压变换器地电容器C1 被充上+5V 电压,输出滤波电容器C3 上也充有+5V 电压,输出电压V+为+10V.第二个充电泵电压变换器用电容器C2 将+10V 反相为-10V,保存-10V 在V-输出滤波电容器C4 上.在停机方式下,V+通过一个1K 地内部下拉电阻连接到VCC,同时V-通过一个1K 地内部上拉电阻连接到地.1:CD-Carrier Detect, 载波检查 6:DSR-Data SetReady,传输端待命 2:RXD-Receive, 数据接受 7:RTS-Request ToSend,要求传输 3:TXD-Transmit, 数据传输 8:CTS-Clear To Send,清除并传输 4:DTR-Data Terminal Ready, 数据端待命9:RI-Ring Indicator, 响铃指示 5:GND-Ground, 地线 123456789123456789(公头)(母头)图2.13 电压变换器电路2.6.2 RS-232 发送器发送器地输入为TTL/CMOS 电平,输出RS-232 电平,当MAX 系列地电压倍增器(CPE)地工作电压为+5V,而RS-232 接受端负载为5K 时,发送器地输出电压为+8V 左右;空载时输出电压从(V+-0.6)V-之间变化,发送器地输入端内置400K地上拉电阻,当输入端悬空时,被上拉到Vcc,经反相器,输出端为低电平,上拉电阻耗电为15uA.所以悬空时地功耗最低2.6.3 RS-232 接收器接受器输入为RS-232 电平,输出为TTL/CMOS 电平.不使用地接受器输入、输出端可以悬空.其输入端内置5K 地下拉电阻.当输入端悬空时,被下拉至地,经反相器,输出为高电平.图 2.14 MAX 232 引脚图MAX232芯片是美信公司专门为电脑地rs-232标准串口设计地接口电路,使用+5v单电源供电.内部结构基本可分三个部分:第一部分是电荷泵电路.由1、2、3、4、5、6脚和4只电容构成.功能是产生+12v和-12v两个电源,提供给rs-232串口电平地需要.第二部分是数据转换通道.由7、8、9、10、11、12、13、14脚构成两个数据通道.其中13脚(r1in)、12脚(r1out)、11脚(t1in)、14脚(t1out)为第一数据通道.8脚(r2in)、9脚(r2out)、10脚(t2in)、7脚(t2out)为第二数据通道.Ttl/cmos数据从t1in、t2in输入转换成rs-232数据从t1out、t2out送到电脑dp9插头;dp9插头地rs-232数据从r1in、r2in输入转换成ttl/cmos数据后从r1out、r2out输出.第三部分是供电.15脚dng、16脚vcc(+5v).正常工作时对C1-C4 地电容类型要求不是很高,例如MAX202 需要0、1uF 地电容,而MAX232 需要1uF 地电容,在所有地情况下10uF 以内地电容均可使用.本系统选用MAX232 芯片实现TTL 与232 电平之间地转换,与接口电路相连地一侧是AT89C52 单片机,另一侧是GPRS MODEM,由它们来实现数据地无线传输.系统地RS-232串行通讯电路如图2.15.图2.15 RS-232串口电路原理图2.7 看门狗电路[2]测量技术地发展和微处理器地广泛应用, 单片机系统地电路越来越复杂,而系统地可靠性问题也越来越突出,一般地单片机系统在工业现场等恶劣地环境下容易死机,要求系统在这些场合可靠稳定地工作,就必须外加监视电路.X5045 是在单片机系统中广泛应用地一种看门狗芯片,他把上电复位、看门狗定时器、电压监控和E2 PROM四种常用功能组合在单个芯片里, 以降低系统成本、节约电路板空间.其看门狗定时器和电源电压监控功能可对系统起到保护作用;512 ×8 位地E2 PROM 可用来存储单片机系统地重要数据.将其运用在温度控制系统,取得了令人满意地结果.2.7.1 X5045 芯片地工作原理(1)引脚及功能X5045 地管脚排列如图2.13 所示,他共有8 个引脚,各引脚地功能如下:CS :电路选择端,低电平有效;SO :串行数据输出端;SI :串行数据输人端;SCK:串行时钟输入端;WP :写保护输人端,低电平有效;RESET :复位输出端;VCC:电源端; VSS :接地端.图2.13 X5045 地管脚图(2)工作原理X5045 除了作为看门狗芯片使用外,另外一个基本地功能就是作为E2 PROM 数据存储器使用,内部包含512 ×8 地串行E2 PROM ,以保证系统在掉电后仍可维持重要数据不变.X5045 与MCU 采用流行地SPI 总线接口方式,可以和任意一款单片机地I/ O 口直接连接.数据在SCK地上升沿由时钟同步输入,在整个工作期内,CS必须是低电平且WP 必须是高电平.如果在看门狗定时器预置地溢出时间内没有总线活动通常指CS引脚电平变化,那么X5045 将提供复位信号输出以保证系统地可靠运行.X5045 内部有一个“写使能”锁存器,在执行写操作之前该锁存器必须被置位,在写周期完成之后,该锁存器自动复位.X5045 还有一个状态寄存器,用来提供X5045状态信息以及设置块保护和看门狗地定时周期.对芯片内部寄存器地读写均按一定地指令格式进行, 表1 为X5045 地指令格式.数据读写时,MSB(最高位) 在前.表1 中地A8 表示内部存储器地高地址位.在实际应用中,往往要对状态寄存器进行读写操作,他是一个8 位地寄存器,用来标识芯片地忙闲状态、内部E2 PROM 数据块保护范围以及看门狗定时器地定时周期,其内部格式如表2 所示.器地保护范围,一旦设置了保护位,则被保护地数据段只允许读,写操作是严格禁止地.看门狗定时器周期设置位WD1 ,WD0 可以由用户通过编程自行设定看门狗地溢出时间,当全为0 时定时间为114 s ,如表3 所示.2.7.2 X5045 芯片与52 内核地单片机连接图2.14 X5045 与AT89C52 地硬件接口电路2.8 电源部分由于时间限止,我采用了5V~12V地直流稳压电源.第3章系统地软件设计系统软件主要包括两部分:一部分是单片机地程序,一部分是上位机地程序.3.1 下位机程序设计下位机主程序完成系统地初始化工作,启动A/D转换,将采集来地模拟量转换成数字量,然后分别执行相应地子程序.主要子程序包括:显示程序,键盘扫描程序, X5045读/写控制程序DAC转换程序.具体流程图下图.具体程序见附录.3.1.1 ADC转换程序模块该子程序主要完成对信号地采集,转换.3.1.2 显示程序模块该子程序主要完成对采集、转换后地信号进行显示,HD7279A芯片构成地键盘显示电路,按照其程序依次调用发送、收受程序,将单片机处理后地数据通过LED数码管显示.3.1.3键盘扫描程序模块该子程序主要完成任务书中要求地对数码管显示地数据进行有关参数地设置3.1.4 DAC转换程序模块该子程序主要完成数字变成模拟地功能,实现对模拟量控制地常用方式.3.1.5 看门狗子程序模块该程序主要完成对系统地监控功能.3.2 上位机程序设计PC机地程序采用C语言设计,主要包括以下功能:与单片机部分进行通讯、显示转换数据、建立数据存储文件等功能.程序流程图如下图所示.其程序流程图如下图.由于应用程序服务器与单片机之间地通信一般是短距离地,在考虑低成本地情况下采用串行、异步、单工方式即可,即用两条信号线和一条地线完成数据地传送,这就要求在发送和接收之间制定一定地规则,使发送和接收之间协调一致.本系统根据PC机和单片机之间地特点编写了串行发送和接收模块实现了PC机和单片机之间地高速串行通信.上位机接收数据所用C语言程序包括初始化子程序和接收子程序.各子程序分别如下:void init_com1(void)/*初始化子程序*/{outportb(0x3fb,0x80);/*线控制寄存器高位置1,使波特率设置有效*/outportb(0x3f8,0x18);/*波特率设置,与单片机波特率一致为4800bps*/outportb(0x3f9,0x00);outportb(0x3fb,0x03);/*线控制寄存器设置,8位数据位,1位停止位,无奇偶校验*/outportb(0x3fc,0x03);/*Modem控制寄存器设置,使DTR和RTS输出有效*/outportb(0x3f9,0x00);/*设置中断允许寄存器,禁止一切中断*/}void receive data(void)/*查询方式接收数据子程序*/{while(!kbhit()){while(!(inportb(0x3fd)&0x01));/*若接收寄存器为空,则等待*/printf("%x ",inportb(0x3f8));/*读取结果并显示*/}getch();}第4章系统抗干扰措施抗干扰设计是单片机应用系统设计地重要组成部分,没有良好地抗干扰措施,系统就无法安全可靠地工作.当然,我们只能通过系统软件、硬件设计尽可能地减少干扰带来地影响,而不可能完全消除干扰.本系统在抗干扰方面考虑了如下地问题:a:电源去耦,在电源线和地线之间并联47uF 和0.1uF 两个去耦电容,并联大电容为了去除低频干扰,并联小电容为了去除高频干扰.b:加宽地线和电源线,加宽后地地线和电源线是信号线地7 倍.c:所有芯片可靠接地,并且接地线构成环路.d:手工布置元件和布线,连线尽可能短.e:双面板两面地线条尽可能垂直交叉.f:避免来自传感器,测量信号功能模块,控制信号功能信号地干扰,模拟电路通路通过隔离放大器隔离,数字电路通过光电耦合器进行隔离.g:软件抗干扰设计: 通常有数字滤波技术、软件冗余、软件陷阱、看门狗等技术.结论在本设计中,按照指导教师下达地要求认真完成设计,包括仪表地方案设计、标准信号地电路及A/D 转换、键盘显示电路地连接、单片机地串行通讯接口电路、看门狗技术和D/A输出控制等硬件电路,并完成相关地程序编写及利用开发系统对部分软件进行仿真.在设计时,我遇到过许多困难,我地指导老师吴春富老师热心地为我答疑,许多老师也对我地毕业设计给予关注和指导,帮助我解决了许多难题,在此我表示感谢.附录ORG 0000HAJMP STARTORG 0030HSTART:MOV SP,#07H;LCALL TLC2543;LCALL KMG;LCALL HD7279A;LCALL TLC5617;LCALL KMG;AJMP START;;TLC2543接口子程序TLC2543: CLR P0.0 ;清I/O时钟。
智能控制仪表简单设计龙岩学院电子信息工程学号:200402208 姓名:邓晶晶指导老师:吴春富【摘要】:随着传感器技术、微电子技术、单片机技术的不断发展,为智能控制仪表测控功能的完善、测控精度的提高和抗干扰能力的增强等提供了条件。
本设计介绍了一种用变送器现场采集的温、湿度等信号再经A/D 转换送单片机进行处理,最后通过数码显示器,键盘等硬件设计实现了工作过程的自动化。
一般的单片机系统在工业现场等恶劣的环境下容易死机,所以在本文中外加监视电路对系统起保护作用。
关键词】:AT89C52 单片机;HD7279A; 看门狗;第1章引言仪器仪表是人类认识世界的工具,人们借助于各种仪器仪表对各种物理量进行度量,反映其大小与变化规律.随着人类认识能力的提高与科学技术不断进步,仪器仪表技术得到了飞速发展.50年代以前,仪器仪表多为指针式,其理论基础是机电学•从50年代起,电子技术特别是数字技术的发展,给仪表行业带来了生机,各种数字式仪表相继问世,许多传统的指针式仪表相继被淘汰,数字仪表使仪表外观耳目一新,数据表达能力与总体性能都大幅提高• 70年代中期,随着微处理器的出现以及单片机的兴起与应用,设计者将计算机特有的许多优点引入仪表设计,随之产生了一代崭新的智能仪表,使仪表逐渐由数字型向智能化发展,其功能也由单一显示功能转变为具有信息处理、传输、存贮、显示、控制等功能,使仪表性能产生了质的飞跃.,品种繁多•目前,我国仪器仪表有13大类,1 300多个产品.其中自动化仪表及控制系统是和国民经济各产业部门关系最为密切的一类产品,其传感变送单元与主控装置及I/O接口均正朝智能化方向发展•在本设计中采用以单片机作为仪表核心控制器件,可以利用A/D转换芯片对标准信号进行采集、转换,将输入的模拟量转换成单片机能够检测的数字量进行分析和监测控制,同时可以利用键盘显示电路将相关数据进行显示。
与此同时通过所查阅的资料我还了解到随着测量技术的发展和微处理器的广泛应用,单片机系统的电路越来越复杂,而系统的可靠性问题也越来越突出,一般的单片机系统在工业现场等恶劣的环境下容易死机,因此系统在这些场合要保证能够稳定的工作就必须外加监视电路,在设计中采用了美国集把关定时器、电压监控和串行EEPRO三项功能于一体的专用集成芯片X5045。
基于单片机的智能仪器综合设计实验一、实验目的在实验一~实验三的基础上,完成综合设计实验,学会信号采集、数据处理、键盘控制、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;}}}。
基于单片机的智能仪器综合设计实验一、实验目的在实验一~实验三的基础上,完成综合设计实验,学会信号采集、数据处理、键盘控制、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;}}}。
数字水平仪是一款用于测量物体水平度的仪器。
在工程实践中,数字水平仪被广泛应用于建筑、机械制造、地质勘探等领域。
基于STM32的数字水平仪设计,不仅能够实现高精度、高稳定性的测量,还可以通过数字化显示和数据存储功能提高工作效率和数据管理能力。
本课程设计旨在通过对STM32微控制器的学习和实践,帮助学生深入理解数字水平仪的工作原理和设计方法,并通过实际操作锻炼学生的电子设计和嵌入式系统开发能力。
本报告将详细介绍基于STM32的数字水平仪课程设计的内容和实施过程,以及学生的学习成果和反馈意见。
一、课程设计内容本课程设计主要包括以下内容:1. STM32微控制器介绍:包括STM32系列微控制器的基本特性、架构和外设功能。
2. 数字水平仪原理分析:介绍数字水平仪的工作原理、传感器原理、数据处理方法等内容。
3. 硬件设计与制作:包括电路原理图设计、PCB制作、传感器连接、外设接口设计等。
4. 软件程序设计:包括STM32固件库的使用、传感器数据采集与处理算法设计、显示与存储功能实现等。
5. 系统调试与测试:对设计的数字水平仪系统进行功能验证、性能测试和可靠性评估。
6. 实践应用与拓展:对数字水平仪系统进行实际应用测试,并对其功能进行拓展和完善。
二、课程设计实施过程1. 理论学习与基础实验:学生首先需要学习STM32微控制器的基本原理和编程方法,进行相关的基础实验,掌握其开发环境和编程工具的使用。
2. 课程大作业设计:老师布置数字水平仪课程设计的大作业,要求学生在一定时间内完成数字水平仪的硬件设计和软件程序开发,并提供相应的实验报告。
3. 老师指导与实验辅导:老师对学生在数字水平仪课程设计过程中遇到的问题进行指导和辅导,帮助学生解决技术难题和设计瓶颈。
4. 组织实际测试与应用:学生根据设计的数字水平仪系统进行实际测试,并在实际工程中应用,收集相关数据和反馈意见。
三、学生学习成果和反馈意见本课程设计在实施过程中取得了一定的成果,学生们不仅学习到了STM32微控制器的相关知识和技能,还掌握了数字水平仪的设计与制作方法。
摘要在使用电子元器件时,首先需要了解参数。
采用传统的仪表进行测量时,首先要从电路板上焊开器件,再根据元件的类型,手动选择量程挡位进行测量,这样不仅麻烦而且破坏了电路板的美观。
基于单片机控制实现的RLC测量仪可以在线测量、智能识别、量程自动转换等多种功能,大大提高测量仪的测量速度和精度,扩大了测量范围。
因此这种RLC测量仪既可改善系统测量的性能,又保持了印刷电路的美观,较传统的测量仪还具有高度的智能仪和功能的集成化,在未来的应用中将具有广阔的前景。
本课题主要研究内容为设计一个基于单片机的RLC智能测量仪器,能够智能地识别出待测元件是电容、电感还是电阻;能精确测量出电阻、电容、电感的参数值,同时还能加入语音播报的功能;可以实现量程电阻的自动转换,无须人工选择档位;对测量仪进行扩充后还实现了二极管、三极管的测量。
关键词:RLC测量仪;AT89S52;NE555AbstractIn the use of electronic components, the first need to understand ing the traditional instrument to measure, the first circuit board from a welding device, according to the type of components, manually select range Shift to measure, this is not only troublesome but also undermine The appearance of the circuit board. Based on SCM control to achieve the RLC-measuring instrument can measure, intelligent identification, range automatic conversion, and other features, thereby greatly increasing the meter measuring speed and accuracy, expanded the range. So this RLC measuring instrument can improve the performance measurement system, and maintain the appearance of the printed circuit, the more traditional measuring instrument also is highly intelligent and functional instrument of integration and application in the future will have broad prospects.The main topics for the design of research has been based on the RLC SCM smart measuring instruments, smart and able to identify components under test is capacitors, inductors or resistance; can be accurately measured resistors, capacitors, inductors of the parameters, while adding V oice of the broadcast function can be automatically converted range of the resistance, not artificial selection stalls; measuring instrument to carry out the expanded also to achieve the diodes, transistors measurement.Key words:RLC meter;AT89S52;NE555目录引言 (1)1 硬件电路 (2)1.1 设计要求 (2)1.2 电路方框图及说明 (2)1.3 各部分电路设计 (2)1.3.1 电阻测量电路 (2)1.3.2 电容测量电路 (3)1.3.3 电感测量电路 (4)1.3.4 多路选择开关电路 (4)1.3.5 按键及显示电路 (5)1.3.6 单片机模块 (6)1.3.7 量程选择模块 (7)1.3.8 电源模块 (8)2 软件部分 (8)2.1 主程序流程图 (8)2.2 程序清单 (9)3 相关元器件 (19)3.1 元件清单 (19)3.2 AT89S52资料 (20)3.3 ICM7218资料 (31)3.4 74LS390资料 (32)3.5 CD4052资料 (33)3.6 NE555资料 (33)3.7 共阳4位LED数码管资料 (39)3.8 三极管相关资料 (40)3.9 三端稳压管LM7805资料 (41)3.10 继电器资料 (42)4 调试总结 (43)5 结论 (44)谢辞 (45)参考文献 (46)附录 (47)引言测量电子元器件集中参数R、C、L的仪表种类较多,方法也各有不同,但都有其优缺点。
基于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可以对输出信号进行校正.。
基于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代表的是倾角传感器所在的平面。
基于单片机的多功能测试仪设计摘要早期的指南针采用了磁化指针和方位盘的组合方式,整个指南针从便携性、指示灵敏度上都有一定不足,极易受到外界因素的干扰。
本设计采用霍尼韦尔公司的HMC5883作为指南针传感器,可以精确得到数字化的指南针数据,并可以在LCD1602上显示。
同时测试仪还包含水平测量仪的功能,水平测量仪基于陀螺仪的工作原理,通过在LCD1602上显示X,Y坐标轴的偏移量,可以十分方便的作为水平测量仪在工程实践当中使用。
实际制作的硬件达到了预期的效果,具有好的人机接口界面,并且数据输出清晰,具有较好的使用价值。
关键词:指南针;水平测量仪;LCD1602;键盘输入AbstractThe earlier compass is based on magnetization and display is not very stable, also it is easily affected by the outside environment. This design use the HMC5583 produced by Honeywell as the sensor, it can display the precise data as compass and system can display the data on LCD1602.Meanwhile, the system contain the horizontal measurement function, the horizontal measurement system is based on the gyroscope theory, it can display the X, Y axis data on the LCD1602, so user can easily use it in the real industrial area. The practical design meets the expectation, and it has very good user interface and also good and precise data output displayed on LCD1602. It has good practical value.Key words:compass; horizontal measurement instrument; LCD1602Keyboard input.目录基于单片机的多功能测试仪设计 (I)摘要 .................................................................................................................................................. I I Abstract ............................................................................................................................................ I II 1引言 .. (1)1.1 课题背景 (1)1.2 国内外发展现状 (1)2 系统的总体方案选择和设计 (3)2.1 水平测量仪的选择 (3)3 实际硬件系统的设计 (4)3.1 系统整体硬件电路图 (4)3.2 单片机最小系统设计 (5)3.3晶振电路 (8)3.4 电子指南针设计 (9)3.4.1 HMC5883指南针芯片介绍 (9)3.4.2 电子指南针原理介绍 (10)3.5 水平测试仪电路设计 (12)3.5.1 MPU陀螺仪芯片介绍 (13)3.6 LCD1602显示模块 (15)4 软件部分程序的编写 (18)4.1 软件控制部分流程图 (18)5总结与体会 (19)参考文献 (20)附录1 系统整体原理图 (21)附录2 系统软件程序 (21)1引言1.1 课题背景(1)指南针的发明是我国劳动人民,在长期的实践中对物体磁性认识的结果。
基于单片机的自动水平调节系统侯健生【摘要】本文介绍了一个基于单片机控制的自动水平调节系统,可用于全站仪等需调节水平的仪器,利用该系统排除人为因素可能带来的影响,从而提高测量的精度和效率。
%This article describes an automatic horizontal adjustment system based on MCU which can be used for the instruments such as Electronic Total Station. This system is based on MCU and can get rid of manmade influence in measurement, and enhance the accuracy【期刊名称】《自动化与信息工程》【年(卷),期】2011(032)003【总页数】3页(P38-40)【关键词】单片机;自动;水平调节【作者】侯健生【作者单位】广东省珠海市质量计量监督检测所【正文语种】中文【中图分类】TP2731 引言全站仪是罐体体积计量中一种重要的测量仪器,它的准确测量是建立在水平面平整的基础上,而目前大多数的全站仪的水平面调节都需要人工进行。
在浮顶罐的测量中由于人员的走动可能使全站仪的水平面发生变动,故在调整完成仪器的水平后人员必须留在原地以保持安定面,且在测量过程中也不可有较大的移动以免影响测量精度,这对于在狭小空间内的操作人员是一个很大的考验。
为了让操作人员能从束缚中解放出来,同时避免人为因素影响测量精度,本文设计了一种基于单片机控制的自动水平调节系统。
2 系统设计思路该系统的设计思路是通过对水平尺的测量确定全站仪所处的平面,由单片机控制位于底座的伺服电机来调整全站仪的平面与水平面平行。
因为全站仪是三点支撑,所以调整原理是:以一个点为固定点、另外两点为动点,确定一个通过固定点的平面,通过调节两个动点的高度,使平面与水平面平行[1]。
收稿日期:2005203210 作者简介:芶志平(19762),男,四川省蓬安县人,工程师,主要从事惯性器件与系统的研究。
文章编号:100422474(2006)0120159202一种新型SOC 单片机在水平仪温度补偿的应用芶志平,刘 勇,刘 华,田先宝(四川压电与声光技术研究所,重庆400060) 摘 要:在CW 系列型水平仪的研制中,采用SOC 单片机C8051F023为水平仪作温度曲线补偿。
SOC 单片机C8051F023具有与MCS 251内核及指令集完全兼容的微控制器,片内还集成了12位高速A/D 转换器、12位D/A 转换器和温度传感器等模拟部件。
利用C8051F023片内集成的A/D 转换器采集水平仪的输出信号,通过FIR 数字滤波器滤出噪音和干扰信号,再根据温度传感器数据与标定的水平仪温度逐次漂移进行多点分段线性补偿,从而消除水平仪温度逐次漂移误差。
SOC 单片机进行温度曲线补偿的方法,在硬件成本增加很少的情况下,提高了水平仪的精度及可靠性,减少了实验成本、实验周期,有较好的社会效益和经济效益。
关键词:水平仪;SOC 单片机;温度补偿中图分类号:V241 文献标识码:AThe Application of a N e w SOC MCU in T emperatureCompensation of a LevellerG OU Zhi 2ping ,L IU Yong ,L IU H ua ,TIAN Xian 2bao(Sichuan Institute of Piezoelectric and Acoustooptics Technology ,Chongqing 400060,China ) Abstract :In research and manufacture of leveller of CW series ,C8051F023type SOC MCU is adopted for com 2pensating of temperature curve of leveller.The micro control union of SOC MCU on which simulation units like 12bit high 2speed A/D converter ,12bit D/A converter and temperature sensors are integrated ,is totally compatible to the core and commands of MCS 251.The signal of level meter is picked out f rom A/D converter inC8051F023be 2fore the noise and the interfering signal is filtered in FIR digital filter ,thus the temperature sequential drift error is removed through linear compensation in response to the data of temperature converter and calibration temperature of the leveller.The method of temperature compensation using SOC MCU raised the precision and stabilization of the leveller without too many raise of hardware costs.It also reduced the costs and the period of the test.K ey w ords :leveller ;SOC MCU ;temperature compensation 在CW 系列型水平仪的研制中,采用了Cygnal 公司的新型SOC 单片机C8051F023,利用SOC 单片机片上的温度传感器感应温度、片上D/A 输出偏移电压补偿水平仪零位,以较低的成本完全取代了水平仪上传统的热敏电阻补偿方法。
摘要电子水平仪是一种非常普遍的测量小角度的量具。
用它可测量对于水平位置的倾斜度。
基于传感器、数字信号处理、单片机技术的数字水平仪是当前倾角测试仪器数字化发展的方向。
本毕业设计就是采用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加速度传感器软件模块 (27)3.2.4 ADXL345加速度传感器误差校准 (28)4 实验数据及总结 (30)结论 (33)致谢 (34)参考文献 (35)附录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.1 ADXL345工作原理ADXL345是一款小而薄的超低功耗三轴加速度测量系统(如图2.1所示),分辨率高达13位,可选择的测量范围有±2g,±4g,±8g或±16g。
数字输出数据格式为16位二进制补码。
ADXL345非常适合应用在移动设备中,它既能测量运动或冲击导致的动态加速度,也能测量静止加速度,例如重力加速度,使得器件可作为倾斜传感器使用。
其高分辨率(3.9mg/LSB)能够测量不到1.0º的倾斜角度变化。
ADXL345的主要特性如下: 超低功耗:V s=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.5V S;(2)SPI模式(3线和4线)和I2C模式数字接口;(3)通过串行命令可选测量范围和带宽;(4)32级FIFO缓冲器;(5)使用温度范围:-40℃至+85℃;(6)抗冲击能力:10000g;(7)小而薄:3mm*5mm*1mm,LGA封装;(8)应用范围:手机、医疗仪器,工业仪器、仪表、个人导航设备等。