基于DSP的压力传感器信号采集与处理系统覃博彬,赖康生(大连理工大学,物理与光电工程学院,辽宁大连116024)摘要:介绍一种以TI公司生产的数字信号处理器TMS320F2812为核心,用于压阻式压力传感器的数据采集与处理系统。由于温度变化会使压力传感器产生零位温度漂移和灵敏度温度漂移。为了消除温度变化产生的误差,除了采用恒流源补偿法,还根据数字温度传感器DS18B20提供的温度参数,对测量结果进行软件数字补偿算法处理。给出了系统硬件和软件设计方案。该系统已经应用于实际测试,并取得良好效果。关键词:DSP;压力传感器;数据采集与处理;数字补偿;恒流源DataAcquisitionandProcessingSystemofPressureSensorBasedonDSPQinBo-bin,LaiKang-sheng(SchoolofPhysicsandOptoelectronicTechnology,DalianUniversityofTechnology,Dalian116024,China)Abstract:Adataacquisitionandprocessingsystemforpiezoresistivepressuresensorisintroduced,andtheDSPchipTMS320F2812producedbyTICompany,isusedinthissystem.Thepressuresensorcanbeaffectedbytemperature,whichbringsthermalzerodriftandthermalsensitivitydrift.Besidesusingconstantcurrentsourcecompensationforreducingtheerrorcausedbytemperaturechange,softwaredigitalcompensationisappliedtocompensatetheresultsbasedonthetemperatureparameter,whichofferedbythedigitaltemperaturesensorDS18B20.Thedesignsofhardwarecircuitandsoftwareprogramarepresented.Thesystemhasbeenappliedtothepracticaltest,andtheresultisexcellent.Keywords:DSP;Pressuresensor;Dataacquisitionandprocessing;Digitalcompensation;Constantcurrentsource1引言由于半导体的特性参数易受温度的影响,压阻式压力传感器将会产生很大的零位温度漂移和灵敏度温度漂移,从而增加了测量结果误差。本文设计的压力传感器数据采集与处理系统,以TMS320F2812为处理器。除了采用恒流源补偿法,同时依靠DSP芯片强大的计算处理能力,利用软件程序,以数字温度传感器提供的实时环境温度参数为依据,对测量结果进行温度误差数字补偿计算,以提高测量结果的精度。2压力传感器误差补偿原理2.1恒流源补偿法IsR1R2R3R4UoutIsIs/2Is/2图1压力传感器测量电桥电路本系统采用恒流源为压力传感器供电,图1为恒流源供电的电桥电路。设4个扩散电阻初始值都是R,恒流源电流为sI,电阻因压力的变化量为R,因温度的变化量为TR,则通过每个电桥臂的电流均为12sI。若1R和3R处于正应力区,阻值增加,2R和4R处于负应力区,阻值减小,则电桥输出电压为:11()()22outsTsTUIRRRIRRR整理后为:outsUIR从上式可以看出,电桥输出电压与电阻变化量R成正比,也与电流源电流成正比,但与温度无关,即不受温度的影响,这就是恒流源供电电路的优点。2.2温度误差数字补偿算法因为组成电桥的4个电阻阻值不可能制作得完全相等,所以压力为零时,电桥输出不为零。由于扩散电阻阻值随温度变化,这种零位输出也将随温度变化产生漂移,这就是零位温度漂移。灵敏度温度漂移是由于硅材料的压阻系数随温度变化引起的。当温度升高时,压阻系数变小;温度降低时,压阻系数变大。因此传感器的灵敏度,当温度升高时降低,温度降低时升高。即压力传感器的灵敏度温度系数为负。零位温度漂移和灵敏度温度漂移会使测量结果产生很大的误差,因此我们需要对测量结果进行误差补偿处理。本系统采用软件补偿法,软件补偿是将DSP处理器与压力传感器结合起来,充分利用DSP的强大的软件和硬件功能,通过一定的补偿算法,对测量结果因温度产生的误差进行修正。软件补偿效果比硬件补偿要好,达到精度更高,也便于对系统维护升级。根据压阻式压力传感器原理,所测压力大小与传感器输出电压U是线性关系。即两个参数关系为:PaUb。由于传感器的零位和灵敏度会随温度漂移,因此系数a,b也会随温度变化而变化,即系数a,b是温度函数。为了消除温度带来的误差,我们可以通过多次采样定标实验,由标准压力源提供分组压力,记录一定温度下传感器的输出电压值,即多组(,)iiPU,0,1......in。然后利用最小二乘法对(,)iiPU进行直线拟合。具体为,为使总误差20()niiiQPaUb最小,可用Q对a,b求偏导数,令这两个偏导数为零,求解方程得出相应的系数a,b。由于系数a,b是温度的函数,因此我们需要多次采样定标实验,测出不同温度下多组(,)iitPU,0,1......in,然后进行直线拟合,求出相应系数(,)ttab,其中t-10,0,10…….50℃。即压力大小P与输出电压U关系为:ttPaUb,t-10,0,10…….50℃(1)在进行软件数字补偿时,我们首先通过温度传感器提供的温度参数,确定下当时的环境温度,然后查询此温度所对应的系数(,)ttab,然后代入上式ttPaUb,对测量结果进行修正。这种软件数字补偿算法很容易在DSP芯片上用C语言编程实现,并且由于DSP计算能力强、处理速度快,可以保证快速地对测量结果进行修正,同时不影响对压力传感器信号的实时采集。这种温度误差数字补偿实现简单,精度高,实用性强。3系统硬件设计3.1系统硬件结构系统硬件结构如图2所示,主要包括:数字信号处理器TMS320F2812,数字温度传感器DS18B20,恒流源,集成运放AM467,A/D转换器AD977A,D/A转换器AD8522,CAN总线通信模块以及用于存储参数的EEPROM。IsR1R2R3R4UoutIsIN+IN-OUT+-AM467压力传感器100pF50KΩ125KΩ/BUSYDATADCLKR/CADREF50KΩ100KΩAoutBoutCLKSDILDAD977AAD8522IRQSOMISPI_CLKI/OI/OI/OI/OI/OI/OCANTXI/OI/ODQVDDVCCGNDCLK5KΩCANRXTXRXCANHCANLCAN总线TMS320F2812温度传感器DIDOEEPROM图2系统硬件结构图整个系统以数字信号处理器TMS320F2812为核心,由DSP控制ADC定时采样和转换、数据传输、测量结果处理以及与主控PC机的通信。压力传感器输出的微弱电压信号需要通过集成运放AM467进行信号放大。AM467是高精度、低温度漂移,专用于处理几个毫伏大小电桥差分信号的集成运放芯片,适用于压力传感器信号放大处理。AD977A是16位、转换速率为200kSPS的A/D转换器。通过AD977A完成对电压信号的模数转换,并将转换结果传送到DSP。利用DSP片内定时器中断,定时启动A/D转换。当AD977A转换结束,其/BUSY引脚会由低电平变为高电平。我们把/BUSY引脚作为DSP的外部中断,这将会触发中断,通知DSP可以读取转换结果,并由中断服务转入读取数据程序。利用DSP片内集成的SPI接口可以实现数据的同步串行传输。AD977A的工作时序如图3所示:图3AD977A工作时序图采用双路输出,误差小于1mV/LSB的12位D/A转换器AD8522作为参考电压源,为AD977A提供参考电压调整和AM467提供零点调整。由于不同的压力传感器,AD8522的调整参数不一样,则需要用EEPROM存储对应传感器的电压调整参数。由于CAN总线具有传输速度快,数据出错率低,可靠性高等优点,利用TMS320F2812片内增强型CAN总线通信模块,可以实现信号采集处理系统与主控PC机的实时通信。3.2数字温度传感器在整个电路系统中为了进行有效的误差补偿,使用集成温度传感器DS18B20读取环境温度参数,提供给DSP作为进行软件数字补偿的依据。DS18B20是单线数字式测温集成元件,该器件将半导体温敏元件、A/D转换器、存储器等集成于单个芯片,与DSP接口仅占用一个I/O端口。它测温范围为-55℃至+125℃,在-10℃至+85℃范围内,精度为0.5℃,可以直接将温度转换为二进制数字输出,进行温度转换需要200ms。因此特别适合用于为温度误差补偿提供温度参数的场合。需要注意的是,从DS18B20读取的数字值是一个16位二进制补码,因此需要经过取补和十进制转换,才能得到实测的温度值。3.3恒流源设计根据2.1节所述,采用恒流源给压力传感器供电,有电桥输出信号不受温度影响的优点,故本系统使用三端可调电流源LM234作为恒流源。恒流源模块接口电路如图4所示:R1R2+VIN1N457IBIASI1I2ISETV-V+RLM234VRVD图4LM234恒流源电路图上图所示LM234构成的恒流源,具有将近零的温度系数,即可以将温度对恒流源输出电流的影响基本消除。输出电流SETI满足关系:1212RRDSETBIASVVVIIIIRR如果1R和2R的比例关系确定,则恒流源输出电流大小也将确定。在这里我们设定2110RR,则输出电流为:1211167.767.70.60.13410RRDSETVVVmVmVVVIRRRRR即可以由1R和2R确定输出电流大小,范围为1uA到10mA。详细情况请参考LM234数据手册。4系统软件设计系统软件开发采用C语言编程。数据采集处理流程图如图5所示:开始DSP初始化,从EEPROM读电压参数,设置D/A启动定时器,开中断定时器中断产生?启动AD977A采集信号等待/BUSY引脚触发中断启动SPI传输数据通过CAN总线与PC通信检测结束?从温度传感器读温度参数,对转换结果进行修正N结束NYYYN图5数据采集处理流程图在程序运行开始,首先对DSP相关模块进行初始化,设定各寄存器和I/O口的状态。然后从EEPROM读出电压参数,以此设置D/A转换器AD8522的两路输出电压值,对电路参考点进行微调。开定时器中断,启动定时器定时采样。当AD977A转换完成,其/BUSY引脚上升沿的跳变,将会触发外部中断,通知DSP可以读取AD977A的转换结果。数据传输至DSP后,DSP根据温度传感器DS18B20提供的温度参数,查询该温度所对应的系数(,)ttab,然后代入式ttPaUb,以此对压力数据进行数字补偿,修正测量结果。最后,通过CAN总线通信模块,发送压力数据至PC机,实现远距离监控。如果需要连续采集信号,可一直保持开定时器中断,由定时器控制定时采样转换。有个细节需要注意:因为DS18B20进行温度转换需要200ms时间,而环境温度是变化较慢的物理量,所以在软件设计上,我们没必要每次对测量结果进行修正时,都查询一次温度传感器。而是每隔一段时间查询一次,例如每10分钟一次,以提高整个系统采集信号的效率。5实验数据分析将本文所设计的压力传感器数据采集处理系统置于恒温箱,在不同温度条件下,由标准压力源提供压力,所测得实验数据如下:温度T(℃)压力P(MPa)-100102030500.00000.00010.00000.00010.000