看一看基于pwm模式输出的温度传感器的测温系统
温度传感器数字式温度传感器主要的输出模式有pwm、spi、i2c、smb等,当今主流的单片机几乎都支持这种接口方式,文中以pwm输出模式为例,讨论了pic单片机对于这种输出模式的测温方案。pwm模式输出的数字温度传感器如tmp0304、tpm0506等,都是将传感器件测得的温度信息数字化后,经过一定的输出编码,调制成占空比与温度成正比的数字脉冲信号单线输出。输出信号接入微处理器后,只需测得数字脉冲信号的占空比就可由软件运算得到相应的温度信息。而对于微处理器来说,输入信号占空比的计算方式多种多样以pci系列单片机为例,在pic16、pic17、pic18中均可由ccp模块的捕捉功能、rb端口电平变化中断功能,外部中断功能等多种方法实现。以下将分别作以介绍。如果流量传感器或线路出现故障,ecu得不到正确的进气量信号,就不能正常地进行喷油量的控制,将造成混合气过浓或过稀,使发动机运转不正常。
2 硬件设计
由于数字式温度传感器直接输出数字脉冲信号,无需后续的ad转换和温度补偿,所以基于数字式温度传感器的测温电路硬件非常简单,仅需要单片机微处理器和传感芯片就可实现。除了个别集电极开路输出的传感芯片在接入单片机时需要外加上拉电阻以外,其余的传感芯片可与单片机直接相连。在此选用pci系列单片机作为微处理器,adi公司的tmp04数字式温度传感器作为传感芯片。
21 pic系列单片机简介
pic系列单片机是美国微芯(m)公司生产的8位coms单片机,它内部采用哈佛总线结构,使得全部指令单字节、单周期化,有利于提高cpu执行搜集的速度,从而提高单片机的运行速度。它的指令系统采用精简指令集(r1sc)技术,寻址方式非常简单,便于程序的编写与调试。它丰富的外部功能模块更是为外设提供了极其方便的接口,使得许多外部设备可以直接与微处理器进行通信。本设计采用的pic18f458具有最大25a的拉灌电流、3个外部中断、4个定时器计数器、2个捕捉比较脉冲调制(ccp)模块、spi和i2c二种工作方式的主同步串行模块(mssp)、可寻址的usart模块、高级10位8通道模数转换器以及集成的can总线模块等多种外围功能模块。
22 数字式温度传感器tmp04简介
tmp04是adi公司生产的一款低功耗、高精度、宽动态输入范围的pwm模式输出的数字式温度传感器。tmp04是三端单线式器件,其总体功能框图如图1所示,测量结果以pwm编码式数字脉冲信号在dout引脚输出,输出信号的占空比与所测温度成正比,其输出编码格式以及具体的温度计算公式如图2所示。其中,t1一般为10,最大不赶12,t2随着温度的变化而变化,输出不同占空比的数字脉冲信号时表示不同的温度
tmp04内部含有一个由输入采样器、模拟求和器、积分器、比较器、1位dac以及数字滤波器构成的-&d;型模数转换器,如图3所示。该模数转换器具有分辨率高、线性度好、抗混叠哭声和量化噪声能力强等诸多优点,非常适用于数字式温度传感器等微传感系统。由于-&d;型模数转换器的作用,tmp04的最大功耗不超过65w,全程线性误差只有05℃,稳定性非常高。同时tmp04的动态输入范围比较大,精度也比较高,在-25℃~125℃温度范围内误差仅为15℃。tmp04还有一个与其结构、功能很类似的同类产品tmp03,二者唯一的区别就是tmp03的输出级采用集电极开路电路,输出电流可达5a,驱动能力强,可驱动光耦实现远程测温,接入单片机时需要外接上拉电阻,而tmp04的输出级采用互补型mosfet电路,其输出电平与comsttl电路兼容,可直接接入单片机。
3 软件设计
由pwm编码的原理可知,要测出pwm数字脉冲信号所携带的温度信号,只要检测出数字脉冲信号的占空比即可,以pic18系列为例,一个单片机有9个不同的端口(2个ccp模块端口、4个rb电平变换中断端口、3个外部中断int端口),可以测出tmp04的输出温度,这为pwm编码式温度数字传感器提供了相当灵活的接口方式和更为广阔的应用空间。
31 由ccp模块的捕捉功能实现
捕捉比较脉宽调制ccp模块是pic单片机特有的外围功能模块,它与tmr1和tmr2配合使用实现输入捕捉、输出比较和脉宽调制输出等功能。其中输入捕捉模式用于测量引脚输入信号的周期、频率、脉宽、信号的到达时刻以及消失时刻等。结合tmp04输出信号的特点,可以利用ccp模块分别测量出tmp04输出信号的高电平脉宽t1和低脉宽t2,然后间接算出信号的占空比,从而得到tmp04输出的温度信息。详细的程序流程图如图4所示。
32 由rb端口电平变化中断实现
与其它单片机不同,pic单片机的rb4-rb7端口具有输入电平变化中断功能,当rb4-rb7任意一个引脚上的输入电平发生变化(由高变低或由低变高)时,都可以引起cpu中断,执行中断处理程序。因此,可以将tmp04的输出信号输入rb4,当输入rb4的信号发生跳变时,利用rb4的电平变换中断调用中断处理程序分别对信号高低电平的脉宽进行测量,从而间接算出信号的占空比,最终得到tmp04输出的温度信息。程序流程图如图5所示。
33 由外部中断int实现
由外部中断int实现与由rb端口电平变化中断实现的设计方案类似,都是由单片机响应电平变化产生中断,再通过中断服务程序计算高低脉宽,从而得到tmp04输出信号的占空比和所携带的温度信息。所以由外部中断int实现和由rb端口电平变化中断实现程序类似,只是将中断源改为int0(int1,int2均可)中断,使能int0中断使能位int0ie,判断int0中断标志位int0if,由于int0输入为rb0引脚,上例中设rb0为输入,并由intedg0判断高低电平即可,注意要启动rb口的弱上拉功能,其总体的程序流程程图类似图5。
4 实验数据对比
利用简单的电路及以上软件程序在室温为241℃时,笔者用三种方法测量温度,为了得到更好的精度,每种分别设计了泄编和c评议二种测温程。