传感器采集系统软件设计与实现Word下载.docx
《传感器采集系统软件设计与实现Word下载.docx》由会员分享,可在线阅读,更多相关《传感器采集系统软件设计与实现Word下载.docx(40页珍藏版)》请在冰豆网上搜索。
AD7705;
STC89C52RC;
LCD12864
SoftwaredesignandImplementationofsensordataacquisitionsystem
ABSTRACT
Previousindustrialfielddataarereadingandrecordingbyhand.It’salwaysstayinmanualandthelevelinstrument.Butalongwiththetimeprogress,industrialsiterequirestheacquisitionandanalysisofthedatamoreandmorebymanpower,hasbeenunabletomeetthedemandofindustrialcontrol,inthiscontext,sensordataacquisitionsystemwillemergeasthetimesrequire.Inrecentyears,sensordataacquisitionanditsapplicationtechnologyhasattractedmoreandmoreattention,sensordataacquisitionsystemhasbeendevelopingrapidlyinchemicalproduction,mining,scientificresearch,disasterprevention,medical,defenseandotherfieldshaveawiderangeofapplications.
Thedesignofsensordataacquisitionsystemconsistsofpressuresensor,AD7705,STC89C52RCandLCD1286.Pressuresensorsubjectedtopressure,thepressuresignalisconvertedintoalowanalogvoltagesignal,thentheanalogsignalafteramplificationandfiltering,andthenusetheAD7705convertstheanalogsignaltodigitalsignal,andthentransmitstotheSTC89C52RCmicrocontroller,Themicrocontrollerreceivethedatatoanalysisprocessing,sendingthedatatotheLCD12864.
Thispapermainlytothecompletionofsensordataacquisitionsysteminthesoftwarepartofthedesignandimplementation,includingthemainfunctionmodule,datasamplingmodule,keyboardmoduleanddisplaymodule.Afterthetest,verifythecorrectnessofthesensordataacquisitionsystemfunction.
KEYWORD:
Dataacquisitionsystem;
AD7705;
STC89C52RC;
.
第一章绪论
1.1课题背景
以往工业现场的各种数据都是采用人工读数和记录,一直停留在手工和数字仪表的水平。
但是随着时代的进步,工业现场需要采集和分析的数据越来越多,靠人力已经无法满足工业控制的需求,在此背景下,传感器数据采集系统便应运而生并正在飞速的发展着。
现如今很多工业控制领域和家用自动化都必须进行现场数据采集,然后根据现场采集的数据进行自动分析计算,判断现场状况,然后对现场进行处理,这对传感器采集系统的性能提出了更高的要求[1]。
1.2课题的目的和意义
近年来,数据采集及其应用技术受到人们越来越广泛的关注,数据采集系统也迅速地得到应用。
在生产过程中,应用这一系统可对生产现场的工艺参数进行采集、监视和记录,为提高产品质量、降低成本提供信息和手段。
在科学研究中,应用数据采集系统可获得大量的动态信息,是研究瞬间物理过程的有力工具,也是获取科学奥秘的重要手段之一。
总之不论在哪个应用领域中,数据采集与处理越及时,工作效率就越高,取得的经济效益就越大。
现如今,科技发展速度日新月异,随着计算机被广泛运用,数据采集在许多领域有着十分重要的应用。
它是连接计算机与外部物理世界的桥梁。
利用各种通信方式,实现对现场环境的实时监控及数据参数分析,通过制订上位机(主机)与数据采集器(从机)的通信协议,实现两者之间阻塞式通信交互过程。
在矿业、工业、农业等各种行业,尤其是在对信息实时性能要求较高或者恶劣的数据采集环境中更突出其应用的必要性[2]。
例如:
在矿井井下环境检测、工业生产、现代农业生产和科学技术研究的各行业中,常常利用计算机对各种数据进行采集分析。
这其中有很多地方需要对各种数据进行采集,如压力、流速、液位、温度、频率等。
通过对采集到的数据进行分析,将有极大的实际价值。
通过对化工生产过程的压力和温度数据进行数据采集和分析,这对于提高原料利用率、减少成本、增加产量和实现安全生产都有十分重要的作用;
通过对室内湿度和温度数据进行数据采集和分析,空调可以自动调节温度和湿度,这样更节能并且使得室内环境更舒适;
通过对矿井井壁压力、矿井周围水流流速等数据进行监测,将有利于建立矿难预警机制,减少矿难造成的损失[3]。
此外在该系统的基础上,可以进一步扩展其它的模块,如远程数据采集、温度测控等模块,以便广泛应用于电力、交通等系统中,实现远程监控。
本次设计采用单片机作为控制器,通过传感器对压力进行采集,再利用液晶显示屏显示数据,从而在实现数据采集。
在本次设计中,主要完成系统软件部分的设计和实现,经过一段时间的努力,软件部分已经基本满足了要求。
1.3论文章节安排
本文共分五章,具体结构安排如下:
第一章,绪论,主要介绍论文课题研究的目的和意义、课题的研究背景、本次设计的设计简介以及论文章节的安排。
第二章,系统整体设计,主要阐述传感器采集系统的功能和系统的整体设计方案。
第三章,系统软件模块设计,在这个模块,将对系统的软件部分进行解释说明。
第四章,系统的调试,主要阐述所设计调试中所遇到的问题以及其解决的方法。
第五章,结论。
在结论里对本次论文进行技术和心得总结。
第二章系统总体设计
2.1系统概述
传感器采集[4]是指将温度、压力、流量、位移等模拟量采集转换成数字量后,再由计算机进行存储、处理、显示或打印的过程。
相应的系统被称为传感器采集系统。
传感器采集的主要任务就是采集传感器输出的模拟信号并转换为计算机能识别的数字信号,然后送入计算机进行相应的计算和处理,得出所需要的数据。
与此同时,将计算机得到的数据进行显示或打印,以便对某物理量的测量和监视,其中一部分数据还将被生产过程中的计算机控制系统用来控制某些物理量。
本次设计的传感器采集系统则对传统的系统作了简化,要求将采集到的数据传到单片机进行相应的计算和处理,得出所需要的数据再通过显示器显示出来。
2.2系统功能要求
本次设计需要实现的功能及要求有如下几点:
1)能够高精度采集传感器数值;
2)对传感器数值能够实时显示;
3)系统数据采集时间间隔能够现场自由设定。
2.3系统总体设计
依据以上功能要求以及硬件要求,本设计主控芯片采用STC89C52RC单片机,键盘采用4*4矩阵键盘。
整个系统可以分为传感器模块、数据采集模块、键盘模块、输出模块和主控模块来实现[5]。
系统框图如图1所示。
图1系统整体框图
首先传感器模块接收外部信号,然后将外部信号传给数据采集模块。
数据采集模块接收到信号后进行放大滤波并进行AD转化变成数字信号,之后数据采集模块把转化而来的数字信号传给主控模块。
主控模块将收到的数字信号进行分析处理,再通过输出模块输出。
而4*4矩阵键盘输入模块用来设置采样间隔时间的。
从键盘输入数据传给主控模块,主控模块根据输入的数据来控制采样间隔时间[6]。
第三章系统软件设计
3.1主控模块程序设计与实现
主控模块需要实现的功能有两点。
一是将从键盘处接收到的数据经过函数处理来设置系统采样间隔时间;
二是将AD7705处传来的数据进行处理,并传送给LCD12864将数据显示出来。
系统主程序流程图如图2所示。
图2系统主控模块程序流程图
主函数主要作用是将12864程序、AD7705程序、4*4矩阵键盘程序组合起来,使他们共同完成所要求的功能。
经测试,电路连接好后,压力传感器在0压力是在LCD12864上显示的初始值为1040,满值为65535。
所以先将AD输出数值赋值给
,然后在数据处理时要用
得到初始值0。
处理后读数与所受压力成真比,经多次测试验证得公式:
N遂得到压力值。
将这个数据传送给12864便可显示出压力值。
由于任务书里要求能够自由设定采样时间间隔,所以采用了延迟程序,其作用是使系统采样间隔设定为
。
主控模块含有delay01ms()函数、delay100ms()函数和主函数main()。
delay01ms()是利用for循环语句实现的1*tms的延时函数,它将用来防止键盘抖动干扰,delay100ms()是for循环语句实现的100*tms的延时函数,delay100ms()中的参数将由键盘输入的数据决定。
此函数将用来设定系统数据采集时间间隔。
main()函数主要有两个动作:
其一是将由AD传来的数据进行处理并将它们转化并显示到12864上去;
其二是读键盘数据,用来设定系统数据采集时间间隔。
首先调用lcdinit()函数将12864液晶显示屏初始化。
然后调用lcdstring()函数分别在显示屏的第一行和第三行显示“压力:
”和“采样间隔时间”字样,接着就是读键盘的程序,其从键盘读入两个数经过处理后将两个数从显示屏上显示出来,显示范围为0.0S到9.9S。
接着调用Reset7705()函数将AD7705初始化,再调用Adc7705Init(8)返回一次采样值。
while
(1)是一个无限循环函数,在while
(1)内主要完成的是AD实时采样显示功能。
先调用延时函数delay100ms(),产生一个100ms*n3ms的延时,再利用x=AverAdc7705()读取AD采样数值,在将数据进行处理,写入12864使数据显示出来。
主函数程序见附录一。
3.2数据采集模块设计与实现
3.2.1AD7705芯片
AD7705是应用于低频测量的2通道的模拟前端[7]。
该器件可以接受直接来自传感器的低电平的输入信号,然后产生串行的数字输出。
利用Σ-Δ转换技术实现了16位无丢失代码性能。
选定的输入信号被送到一个基于模拟调制器的增益可编程专用前端。
片内数字滤波器处理调制器的输出信号。
通过片内控制寄存器可调节滤波器的截止点和输出更新速率,从而对数字滤波器的第一个陷波进行编程。
AD7705只需2.7~3.3V或4.75~5.25V单电源。
AD7705是双通道全差分模拟输入,当电源电压为5V、基准电压为2.5V时,这二种器件都可将输入信号范围从0~+20mV到0~+2.5V的信号进行处理。
还可处理±
20mV~±
2.5V的双极性输入信号,对于AD7705是以AIN(-)输入端为参考点,当电源电压为3V、基准电压为1.225V时,可处理0~+10mV到0~+1.225V的单极性输入信号,它的双极性输入信号范围是±
10mV~±
1.225V。
AD7705可以实现2通道系统所有信号的调理和转换。
AD7705是用于智能系统、微控制器系统和基于DSP系统的理想产品。
其串行接口可配置为三线接口。
增益值、信号极性以及更新速率的选择可用串行输入口由软件来配置。
该器件还包括自校准和系统校准选项,以消除器件本身或系统的增益和偏移误差。
AD7705的引脚图如图3所示。
图3AD7705芯片引脚图
AD7705片内包括8个寄存器,这些寄存器通过器件的串行口访问。
第1个是通信寄存器,它管理通道选择,决定下一个操作是读操作还是写操作,以及下一次读或写哪一个寄存器。
所有与器件的通信必须从写入通信寄存器开始。
上电或复位后,器件等待在通信寄存器上进行一次写操作。
这一写到通信寄存器的数据决定下一次操作是读还是写,同时决定这次读操作或写操作在哪个寄存器上发生。
所以,写任何其它寄存器首先要写通信寄存器,然后才能写选定的寄存器。
所有的寄存器(包括通信寄存器本身和输出数据寄存器)进行读操作之前,必须先写通信寄存器,然后才能读选定的寄存器。
此外,通信寄存器还控制等待模式和通道选择,此外DRDY状态也可以从通信寄存器上读出。
第2个寄存器是设置寄存器,决定校准模式、增益设置、单/双极性输入以及缓冲模式。
第3个寄存器是时钟寄存器,包括滤波器选择位和时钟控制位。
第4个寄存器是数据寄存器,器件输出的数据从这个寄存器读出。
最后一个寄存器是校准寄存器,它存储的是通道校准数据[8]。
1、通讯寄存器控制字
表1通讯寄存器控制字
0/DRDY(0)
RS2
RS1
RS0
R/W
STBY
CH1
CH0
0/DRDY对于写操作,必须有一个“0”被写到这位,以便通信寄存器上的写操作能够准确完成。
如果“1”被写到这位,后续各位将不能写入该寄存器。
它会停留在该位直到有一个“0”被写入该位。
一旦有“0”写到0/DRDY位,以下的7位将被装载到通信寄存器。
对于读操作,该位提供器件的DRDY标志。
该位的状态与DRDY输出引脚的状态相同。
RS2-RS0是寄存器选择位。
这3个位选择下次读/写操作在8个片内寄存器中的哪一个上发生,见表2(附寄存器大小)。
当选定的寄存器完成了读/写操作后,器件返回到等待通信寄存器下一次写操作的状态。
它不会保持在继续访问原寄存器的状态。
表2寄存器的选择
寄存器
寄存器位数
通信寄存器
8
1
设置寄存器
时钟寄存器
数据寄存器
16
测试寄存器
无操作
偏移寄存器
24
增益寄存器
R/W是读/写选择位。
这个位选择下次操作是对选定的寄存器读还是写。
“0”表示下次操作是写,“1“表示下次操作是读。
STBY控制AD7705的等待模式。
此位上写“1”,则处于等待或掉电模式。
在这种模式下,器件消耗的电源电流仅为10μA。
在等待模式时,器件将保持它的校准系数和控制字信息。
写“0”,器件处于正常工作模式。
CHI-CH0控制通道选择。
这2个位选择一个通道以供数据转换或访问校准系数,如表3所示。
器件内的3对校准寄存器用来存储校准系数。
如表7和8所示指出了哪些通道组合是具有独立的校准系数的。
当CH1为逻辑1而CH0为逻辑0时,由表可见对AD7705是AIN1(-)输入脚在内部自己短路。
这可以作为评估噪声性能的一种测试方法(无外部噪声源)。
在这种模式下,AIN1(-)/COMMON输入端必须与一个器件允许的共模电压范围内的外部电压相连接。
表3通道的选择
CH2
AIN(+)
AIN(-)
校准寄存器对
AIN1(+)
AIN1(-)
寄存器对0
AIN2(+)
AIN2(-)
寄存器对1
寄存器对2
2、设置寄存器控制字
设置寄存器是一个8位寄存器,它既可以读数据又可将数据写入。
表4为设置寄存器控制字。
表4设置寄存器控制字
MD1
MD0
G2
G1
G0
B/U
BUF
FSYNC
MD1MD0为01时AD工作在自校准模式。
在通信寄存器的CH1和CH2选中的通道上激活自校准。
这是一步校准完成此任务后,返回正常模式,即MD1和MD0皆为0。
开始校准时DRDY输出脚或DRDY位为高电平,自校准后又回到低电平,这时,在数据寄存器产生一个新的有效字。
零标度校准是在输入端内部短路(零输入)和选定的增益下完成的;
满标度校准是在选定的增益下及内部产生的VREF/选定增益条件下完成的G2G1G0是增益选择位,当为111时增益128倍。
B/U决定AD7705处于单极性/双极性工作状态。
“0”表示选择双极性操作,“1”表示选择单极性工作。
BUF是缓冲器控制。
“0”表示片内缓冲器短路,缓冲器短路后,电源电流降低。
此位处于高电平时,缓冲器与模拟输入串联,输入端允许处理高阻抗源。
FSYNC是滤波器同步。
该位处于高电平时,数字滤波器的节点、滤波器控制逻辑和校准控制逻辑处于复位状态下,同时,模拟调制器也被控制在复位状态下。
当处于低电平时,调制器和滤波器开始处理数据,并在3*(1/输出更新速率)时间内(也就是滤器的稳定时间)产生一个有效字。
FSYNC不影响数字接口,也不使DRDY输出复位(如果它是低电平)。
3、时钟寄存器控制字
表5时钟寄存器控制字
ZER0
CLKDIS
CLKDIV
CLK
FS1
FS0
ZER0位上必须全部写上零,以确保AD7705/7706正确操作。
否则,会导致器件的非指定操作。
CLKDIS是主时钟禁止位。
逻辑“1”表示阻止主时钟在MCLKOUT引脚上输出。
禁止时,MCLKOUT输出引脚处于低电平。
这种特性使用户可以灵活地使用MCLKOUT引脚,例如可将MCLKOUT做为系统内其它器件的时钟源,也可关掉MCLKOUT,使器件具有省电性能。
当在MCLKIN上连一个外部主时钟,AD7705继续保持内部时钟,并在CLKDIS位有效时仍能进行正常转换。
当在MCLKIN和MCLKOUT之间接一个晶体振荡器或一个陶瓷谐振器,则当CLKDIS位有效时,AD7705时钟将会停止,也不进行模数转换。
CLKDIV是时钟分频器位。
CLKDIV置为逻辑1时,MCLKIN引脚处的时钟频率在被AD7705使用前进行2分频。
例如,将CLKDIV置为逻辑1,用户可以在MCLKIN和MCLKOUT之间用一个4.9152MHz的晶体,而在器件内部用规定的2.4576MHz进行操作。
CLKDIV置为逻辑0,则MCLKIN引脚处的频率实际上就是器件内部的频率。
CLK是时钟位。
CLK位应根据AD7705的工作频率而设置。
如果转换器的主时钟频率为2.4576MHz(CLKDIV=0)或为4.9152MHz(CLKDIV=1),CLK应置“0”。
如果器件的主时钟频率为1MHz(CLKDIV=0)或2MHz(CLKDIV=1),则该位应置“1”。
该位为给定的工作频率设置适当的标度电流,并且也(与FS1和FS0一起)选择器件的输出更新率。
如果CLK没有按照主时钟频率进行正确的设置,则AD7705的工作将不能达到指标。
FS1,FS2是滤波器选择位,它与CLK一起决定器件的输出更新率。
在本次软件设计中SCLK引脚被定义与单片机的P3^0口相连,DIN接P3^1,DOUT接P3^2,DRDY接P3^3。
SCLK为串行时钟,施密特逻辑输入。
将一个外部的串行时钟加于这一输入端口,以访问AD7705的串行数据。
该串行时钟可以是连续时钟以连续的脉冲串传送所有数据。
反之,它也可以是非连续时钟,将信息以小批型数据发送给AD7705。
DIN引脚是串行数据输入端。
向片内的输入移位寄存器写入的串行数据由此输入。
根据通讯寄存器中的寄存器选择位,输入移位寄存器中的数据被传送到设置寄存器、时钟寄存器或通讯寄存器。
DOUT引脚是串行数据输出端。
从片内的输出移位寄存器读出的串行数据由此端输出。
根据通讯寄存器中的寄存器选择位,移位寄存器可容纳来自通讯寄存器、时钟寄存器或数据寄存器的信息。
DRDY引脚是逻辑输出。
这个输出端上的逻辑低电平表示可从AD7705的数据寄存器获取新的输出字。
完成对一个完全的输出字的读操作后,DRDY引脚立即回到高电平。
如果在两次输出更新之间,不发生数据读出,DRDY将在下一次输出更新前500×
tCLKIN时间返回高电平。
当DRDY处于高电平时,不能进行读操作,以免数据寄存器中的数据正在被更新时进行读操作。
当数据被更新后,DRDY又将返回低电平。
DRDY也用来指示何时AD7705已经完成片内的校准序列。
AIN1(+)差分模拟输入通道1的正输入端;
AIN1(-)差分模拟输入通道1的负输入端;
AIN2(+)差分模拟输入通道2的正输入端;
AIN2(-)差分模拟输入通道2的负输入端[9]。
至于通道1与2的选择是通过软件来实现的。
3.2.2数据采集模块软件设计与实现
在本次设计中我们选用的是通道1,即AIN1,所以写入XXXXXX00。
因为采用自校准;
单极性;
接缓冲,允许处理高阻电源,非复位,128倍放大,所以需要写入0x7e。
AD7705驱动程序流程图如图4所示。
图4AD7705驱动程序流程图
此程序为AD7705的驱动程序,定义了Reset7705()、Write()、Read()、Adc7705Init()、Adc7705()共5个函数。
Reset77