基于ARM的数字式温度采集系统研究
2019-02-11贾文涛蔡锦达罗小洪
贾文涛 蔡锦达 罗小洪
摘要:工业生产的快速发展对温度采集提出了更高的要求。本文基于ARM设计了一种的数字式温度采集系统,设计了高动态范围、高信噪比、高带宽和可程控放大的信号调理电路,以ARM为核心,设计相应的软件模块。最后对系统进行了测试验证,结果表明所设计的温度采集系统精度在+/-0.2 ?C以内。
关键词:ARM;温度采集;数字式
1 引言
本文基于ARM设计一个高精度的数字式温度采集系統,来获取高精度的采集数据,使数据分析更有意义。同时由于测量的数据是来自多种不同类型的传感器,本文采用多通道的数据采集模块对这些传感器输出的模拟数据量进行采集,使得数据结果更加精确,稳定可靠。
2 数据采集模块硬件设计
2.1 信号调理电路设计
2.1.1电流转电压信号电路设计
本文使用采样电阻转换法。将石英传感器输出的电流信号流过采样电阻之后,可得到与电阻值成正比的电压信号,故采样电阻的性能将会直接影响到采样结果的稳定性与精度。本设计要达到高精度采样的目标,在电路设计中需尽量减少噪声的引入。噪声系数是衡量不同材质的电阻噪声的大小,一般绕线采样电阻和金属箔的噪声系数比碳膜等材质采样电阻的噪声系数要相对较小。
2.1.2程控放大电路设计
在测量时有些信号不能完全符合数据采集模块的采样范围,为使测试信号结果能达到指标所要求的精度,需对输入的模拟信号进行一定范围的放大或衰减,使得该模拟电压能满足模数转换输入的电压范围[4]。在信号采集时,后级 ADC 具有一定的噪声误差,将输入信号调理到接近满刻度测量时,才能将该误差降到最低。
2.2模数转换电路设计方案
模数转换电路设计的核心是 ADC(Analog to Digital Converter)电路设计。该部分设计将直接关系到采集模块的精度能否达到指标要求,实现模数转换的核心器件为 ADC 芯片,ADC 选型的将直接影响数据采集模块性能。本课题使用的是Σ-Δ型 ADC,为能更好的理解该采样技术来设计模数转换电路。
通过高阶调制器对噪声频谱进行调整之后,降低信号频段中的量化噪声,将大部分的噪声移到目标频段之外。若采用更多积分与求和环节,则可提供更高阶数的量化噪声成形。
ADC 的信噪比 SNR(Singnal to Noise Ratio)是输入模拟信号和噪声的功率比,计算公式如(1)所示[5]:
(1)
式中,PSignal为信号功率,PNoise为噪声功率。当两者经过的电阻相同时,上式等同于:
(2)
式中,USignal是信号电压,UNoise是噪声电压。从理论上看 ADC 的 SNR 是取决于其采样分辨位数的,理想上的N位 ADC 的理论信噪比计算如下[6]:
(3)
在实际采样中,模数转换芯片有量化噪声以及其他的失真情况的存在,在计算 ADC的实际信噪比的时候,理想的N位将被实际所达到的位数所代替。根据本课题的指标要求,计算出本次 ADC 的理想有效位 15 位,计算的实际信噪比是不能低于 93.26dB。
3 数据采集模块软件设计
3.1 模数转换驱动设计
在ARM中通过判断数据标头位来检测读到的数据是否有效,若为无效数据则发送数据错误应答帧,上位机在接收到应答帧后分情况进行处理。若是有效数据,则将数据存储到RAM中,等RAM中数据存满再发送到上位机中。
根据上述程控放大电路设计,可知增益倍数的选择是在 STC15 芯片上完成的,在电路连接上是将八组差分通道分为四组来进行控制。在设计对采样通道增益倍数控制程序时,可通过上位机发送初始化命令的形式来完成该部分的设置。命令格式设置如下表[7]:
在程控放大控制命令协议帧中命令字长为 5,第一个命令字来表示对程控放大器的初始化,其后跟着的四个命令字分别为对四组程控放大器的增益倍数。在程序中先对控制项命令进行解析,以判断控制命令为设置程控放大倍数。然后分别对另外四个命令字进行解析,先判断放大倍数是否有效,若有效则分别进行放大倍数的设置;若命令字无效,则发送命令错误应答帧。
3.2温湿度传感器驱动程序设计
本模块要实现采集外部工作环境的温度信息,是通过驱动温湿度芯片HDC1080 实现温度转换,并读取相关数值。该温度值可用来反映当前工作状态,也可在下一步工作中用于对整个数据采集模块进行温度补偿提供温度值,以实现温漂校正,提高数据采集模块的采集性能。HDC1080 传感器通过两线制的 I2C 通信接口与控制芯片进行信号传输,并通过C8051F350实现对该传感器的控制与数据读取。在本课题中HDC1080为从设备,C8051F350 为主设备。I2C 总线通过数据线(SDA)和时钟线(SCK)两根线实现双向传输数据,该传感器的 I2C
通信地址是七位为 1000000。HDC1080 为低功耗的温湿度传感器,上电后不能主动进行测量,在设计驱动程序时需发送相关指令来触发测量[8]。触发测量后,转换的数据存放在相应寄存器中,通过主设备发送读指令来读取相应寄存器中的转换值。
系统在上电后,先进行一个自检过程,确保该部分功能工作正常。通过读取设备 ID来检查 I2C 通信是否正常,若通信错误,则串口发送特定格式的数据帧表示 I2C 通讯错误。若通信正常,则配置 HDC1080 的工作模式。本课题选用的工作模式为按照温度在前湿度在后的原则依次采集,选择最高分辨率14 位。在配置结束后,系统进入工作状态。在通过串口接收到温度测量命令后,发送相关指令触发 HDC1080 进入测量温湿度工作状态。HDC1080 在 14 位分辨率下温度转换时间为 6.5ms,湿度转换时间为 6.35ms,测量一次所需要的转换时间为 12.85ms,本设计在触发测量后延时 15ms 再读取相关数值。读取的数据为十六进制的数,需要通过对数据处理转为温度值。转换公式如下:
(4)
其中Thcx为温度寄存器中读取到的十六进制的值。
4数据采集模块调试与验证
4.1功能模块调试
4.1.1电源模块调试
对数据采集模块进行调试时,先调试电源模块。电源是模块能正常工作的首要条件,电源的正常稳定工作在一定程度上决定了整个数据采集模块性能的稳定性。本文的电源是通过外部接入±9V 电压值,经过电源转换模块之后得到其他所需的电压值,转换之后的电压值测试结果如表2 所示。
在本设计中,C8051F350的供电范围为 3.0V±0.6V,STM32 的供电范围为 2.0V~3.6V,参考电压 ADR4540的供电要求大于 4.396V。对比上表电源电压测量结果分析,供电电压误差在芯片的供电电压范围之内,电源电路能正常工作。
(1)温度采集驱动程序调试
通过逻辑分析仪抓取控制时序,将抓取到的 I2C 时序和给出的标准时序要求进行对比,检查是否满足时序要求。通过计算可知,该传感器在进行温湿度转换时间最少为 12.5ms,在触发测量后,最少要延时 13ms 再进行数据读取。
4.2温度采集系统测试
将标准温度计和本文设计的温度采集系统放置在温箱内,通过调节温箱温度,进行对比实验,实验数据表3:
由表3可知,本文设计的温度采集系统误差在+/-0.2℃以內。
5总结
本文基于ARM设计了高精度的温度数据采集模块,制定了可实现的总体方案,完成了硬件电路设计,软件模块设计,并通过对相关性能的指标进行详细研究,以及对相关参考电压值的选取与模数转换精度之间的关系进行了分析,给出了各部分功能电路的实现方案。最后对采集到的数据与测试指标进行对标分析,测试结果表明本文设计的温度采集系统误差在+/-0.2℃以内,可以满足工业生产的需要。
参考文献:
[1]李波.基于ARM11的一体化无线数据采集仪设计[J].世界电子元器件,2012 (3):57-59
[2]王旭东.基于PCI总线的数据采集系统的设计与实现[D].哈尔滨工程大学,2009
[3]Su S J,Zhang H L.The Study and Achieving of High-precision Data-acquisition Based onΣ-ΔADC[J].Telkomnika Indonesian Journal of Electrical Engineering,2013,11 (8)
[4]徐飞.基于32位ADC的高精度数据采集系统设计[D].吉林大学,2017
[5]胡银肖.适用于 sigma_delta ADC的分辨率可配置数字抽取滤波器设计[D].华中科技大学,2015
[6]宋晓波.基ARM的通用高精度数据采集装置的研究[D].哈尔滨理工大学,2011
[7]郑伟.基于FPGA 数据采集及控制系统的研究[D].武汉理工大学,2010
[8]李强,梁莉,刘桢,等.具有温度补偿功能的智能压力传感器系统[J].仪器仪表学报,2008