您现在的位置是:首页 > 传感器

简化微控制器与温度传感器的接口

2020-05-14 01:00:38

简化微控制器与温度传感器的接口

温度是一个模拟量,但数字系统经常用到温度来完成测量、控制和保护等功能。如果使用合适的技术和器件,从模拟温度到数字信息所必需的转换将很容易。本文讨论了温度比较器、PWM输出温度传感器以及远端二极管(或温度二极管)温度传感器。

温度是一个模拟量,但数字系统经常用到温度来完成测量、控制和保护等功能。如果使用合适的技术和器件,从模拟温度到数字信息所必需的转换将很容易。

用微控制器(µC)读取温度值在理论上很简单。利用模数转换器(ADC)将热敏电阻分压器、模拟输出温度传感器或其它模拟温度传感器的输出转换为数码,然后由µC读取即可(图1)。对于有些内置ADC的控制器能够简化一些设计。ADC需要一个基准电压,可由一个外部元件产生。例如,用于热敏电阻传感器的基准电压通常与加在电阻-热敏电阻分压器顶端的电压相同。然而,这类系统存在下述问题:
 

  • 传感器输出电压范围远小于ADC输入电压范围。这种用途的典型ADC一般具有8位分辨率和一个2.5V的基准电压(该电压通常等于输入电压范围)。如果在所测温度范围内传感器的最大输出只有1.25V,那么有效分辨率实际只有7位。为了能够达到8位分辨率,或者外加运放来提高增益,或者降低ADC的基准电压(这可能会使某些ADC的精度受损)。
  • 误差分配紧张。将热敏电阻或模拟传感器的误差与来自于ADC、放大器失调、增益设置电阻容差和电压基准等的误差贡献综合起来考虑,可能会发现总误差已经超出了系统所允许的容限。
  • 想获得线性的温度-代码传递函数,而你正在使用热敏电阻。热敏电阻的传递函数具有很严重的非线性,不过,如果只需在很窄的温度范围内应用的话,它还可满足要求。当然还可以通过查表方式进行线性补偿,但系统可能无法满足这种方案的资源需求。
  • ADC输入通道有限。多点温度测量时,如果需要测量的点数超过了ADC的输入通道数,就要添加多路复用器,这将增加成本和开发时间。
  • µC的I/O引脚数有限。对于内置ADC的微控制器不存在这个问题,但当采用外部串行ADC时则需要2至4个I/O引脚与µC接口。

图1. 在这个简单接口中,ADC的基准电压取自电源电压。可用模拟温度传感器取代热敏电阻–电阻分压器。在此情况下,ADC (有可能内置于?C)需要一个足够精度的电压基准。
图1. 在这个简单接口中,ADC的基准电压取自电源电压。可用模拟温度传感器取代热敏电阻-电阻分压器。在此情况下,ADC (有可能内置于µC)需要一个足够精度的电压基准。

如果采用数字接口的温度传感器,上述设计问题将得以简化。同样,当ADC输入通道和µC的I/O引脚短缺时,采用时间或频率输出的温度传感器也能够解决上述测量问题(图2)。以MAX6576温度传感器为例,它输出的方波信号具有正比于绝对温度的周期。采用6引脚SOT23封装,仅占很小的电路板空间。该器件通过一个I/O引脚与µC接口,利用µC的内部计数器测出周期后就可计算出温度。

图2. MAX6576输出方波的周期正比于绝对温度,MAX6577的输出频率正比于绝对温度。比例常数通过TS0和TS1引脚在四种值中选择其一,无需外围元件。
图2. MAX6576输出方波的周期正比于绝对温度,MAX6577的输出频率正比于绝对温度。比例常数通过TS0和TS1引脚在四种值中选择其一,无需外围元件。

将两个逻辑输入引脚分别接地或正电源电压,可以从四个介于10µs/°K到640µs/°K之间的周期/温度比例常数中选择一个适当参数。

另外一种类似的温度传感器(MAX6577)输出方波信号,其频率/温度系数能够在0.0675Hz/°K和4Hz/°K之间设定。这两种器件不仅简化了温度的测量,而且节省了PCB的实际成本、元件数目和模拟/数字I/O资源。它们能够通过单个数字I/O引脚将温度数据传递至µC,并且只需增加一个光电隔离器就可以实现传感器和CPU之间的隔离,使它们非常适合于要求电气隔离的应用。

对于要求测量多点温度的应用,方案选择更为复杂。将热敏电阻或传统的模拟传感器放置在合适的位置,并连接至ADC输入端,前提是ADC必须具备足够的输入端。作为另外一种选择,MAX6575能够直接将温度数据传给µC,并且最多可以将八个MAX6575挂在同一条µC的I/O输入上。只需一条简单的I/O线将8只MAX6575连接至µC即可(图3)。测量温度时,µC短暂地拉低I/O线,经过短时间延时后,第一片MAX6575拉低I/O线。这个延时正比于绝对温度值,比例常数可通过MAX6575的两个引脚设定。

图3. 采用延时方式编码温度信息,最多至8片MAX6575可通过一条数字I/O线将温度信息传送给?C。
图3. 采用延时方式编码温度信息,最多至8片MAX6575可通过一个数字I/O引脚将8个温度信息传送给µC。

第一个传感器将信号线拉低,并保持一个正比于温度(5µs/°K)的间隙后释放。第二片MAX6575通过编程引脚选择为更大的延时系数,经过第二个延时时间后拉低I/O线并保持一段由5µs/°K常数决定的间隔。按照这种方式,四片MAX6575被连接到一条I/O线上。除此之外,还可在同一条I/O线上加挂另外四片更长延时的MAX6575。MAX6575L的延时系数介于5µs/°K至80µs/°K,MAX6575H的延时系数介于160µs/°K至640µs/°K之间。这样,多达8片MAX6575能够安装在系统周围的不同位置,通过一条I/O线连接至µC。

对于有些系统,并不需要知道精确的温度值,只要了解温度是否高于或低于某特定值即可。该信息用来触发风扇、空调、加热器或其它环境控制单元。在系统保护应用中,“过温位”用来触发有序的系统停机,避免系统电源切断造成数据丢失。当然,这个单位信息也可以通过上例所述的温度测量来得到,但相对于这个简单功能来讲上述方法所需的软件和硬件开销过多。

用一个电压比较器取代图1中的ADC,产生的1位输出可驱动µC的一个I/O引脚(图4)。同样,图中的热敏电阻也可以由模拟电压输出的温度传感器代替。大多数此类器件的输出电压与温度的关系与电源电压无关。为避免电源电压变化的影响,将比较器的电阻分压器顶端连接至电压基准而非电源电压。

图4. 将传感器和比较器相结合,产生的1位数字输出能够警告?C温度变化超出了预先规定的门限值。
图4. 将传感器和比较器相结合,产生的1位数字输出能够警告µC温度变化超出了预先规定的门限值。

如果将传感器-比较器组合电路替换为温度开关,如MAX6501,则系统得到进一步简化。这种单片器件结合了传感器、比较器、电压基准和外部电阻等多种功能。当温度超过预设门限时,漏极开路输出变低。该系列中还有一些器件在温度低于设定门限时开漏输出变低(MAX6503),另外一些为推/挽式输出,在温度高于或低于设定门限时输出变高(MAX6502,图5,或MAX6504)。此外,通过一个引脚接V+或接地,可设置2°C或10°C的滞回。现有的门限温度介于-45°C至+115°C之间,间隔10°C。

图5. 当温度超出预设的门限值时,MAX6502产生逻辑高输出。
图5. 当温度超出预设的门限值时,MAX6502产生逻辑高输出。

正如MAX6575一样,也可以将多片MAX6501或MAX6503连接到单条I/O线上,当一点或多点的温度越过门限时通知µC。如果系统必须知道哪些位置温度越限,则每个开关必须连接到单独的I/O引脚。

上述传感器测量的是其自身管芯的温度,由于管芯温度接近于引线温度,所以每个传感器必须安置在与被监视元件有良好热耦合的位置。然而,有些情况下,必须监测的温度无法紧耦合至传感器—例如功率ASIC,其管芯要比四周电路板热得多。采用一个内置的温度传感器可以使ASIC出现过热故障时关断,但这种方法仍然不够精确,并且不能在故障出现前给系统提供警告信息。

给ASIC管芯增加一个可外部连接的p-n结就能够直接测量管芯温度,只需给其施加两种或两种以上的正向电流,并分别测出结电压。两电压之差正比于管芯绝对温度:

式1

其中,I1和I2是施加于p-n结的正向电流,V1和V2是相应的正向结电压,k是波耳兹曼常数,T是绝对结温(单位为开尔文),q是电子电荷。

但是,这种测量方法需要产生精密电流比和测量微小电压差的精密电路,同时还要克服功率ASIC管芯因大幅电平跳变带来的噪声。令人欣慰的是,Maxim的远端结温传感器已将这些精密的模拟单元和简单灵活的数字接口集成起来了。

以MAX6654为例,它能够以8位分辨率(1°C)测量远端结温,并通过SMBus接口将结果传给µC (图6)。该器件最初被设计用来监测PC机内CPU的温度,它还具有其它一些能够减轻控制器负担的特性。例如,MAX6654采用窗口比较器监测远端结温,当温度高于或低于预先从µC寄存器中下载的门限值时中断µC。µC一旦在启动时设定好温度门限后,就可以放手MAX6654,直到温度出现异常,需要µC处理为止,而不需要不断对MAX6654进行查询。

图6. 通过施加电流并测量正向结电压,MAX6654能够测出一个外部P-N结(位于分立晶体管、ASIC或CPU内)的温度。
图6. 通过施加电流并测量正向结电压,MAX6654能够测出一个外部P-N结(位于分立晶体管、ASIC或CPU内)的温度。

MAX6654采用10引脚µMAX®封装,可靠近待测结放置。缩短待测结和MAX6654之间的连线长度有助于降低噪声干扰。