TMP512/513温度传感器

1. DESCRIPTION

The TMP512 (dual-channel )and TMP513triple-channel)are system monitors that includeremote sensors, a local temperature sensor, and aigh-side current shunt monitor. These systemmonitors have the capability of measuring remotetemperatures, on-chip temperatures, and systemoltage/power/current consumptionThe remote temperature sensor diode-connectedtransistors are typically low-cost, NPN- or Pnp-type transistors or diodes. no calibration needed. 

TMP512/513作为系统检测器使用。可以监控远程温度、本地温度和电压电流。

远程温度传感器连接的晶体管通常是低成本的NPN或PNP晶体管。并且无需校准。

2. Typical Application Circuit

上图是一个典型应用电路图。

1)DXP1/DXN1 - 3 远程温度传感器

DXP1/DXN1 - 3是远程温度传感器的 3组对外接口,分别接到三极管的两端。

同时接了一对串行电阻(见图18)和一个差分电容(见图20)。下图中展示了参考连接方式和阻容值要求,按照他的来 | 具体为啥这样做暂不关心……

2)温度测量

三路远程温度传感器和一路本地温度传感器,经过“Low pass filter”低通滤波器,输入到ADC测量电路,芯片再根据控制寄存器参数将结果传输到只读温度寄存器

3)总线电压

V+和Filter C作为BUS测量电路的输入送到ADC,用于测量总线电压,输入电压范围是0~26V。

如下引用和下图,展示了手册提供的三种不同连接配置。

Configuration 1 has V + and VIN + tied together . V +supplies the subregulator , which in turn supplies the3 . 3V to the Filter C pin and the internal die . With theV + supply range of 4 . 5V to 26V connected to theshunt voltage , the bus voltage range cannot go tozero and is limited to 4 . 5V to 26V.

Confiquration 2 has V + to the subrequlator withoutany other connections . Under this confiquration . thebus voltage range can go from 0V to 26V , because itis not limited to 4.5 as in Configuration 1.

Configuration 3 has the subregulator V + and Filter Cpins shorted together . V + is limited to 3V to 5 . 5Vbecause the Filter C pin supplies the internal die ; itcannot exceed this voltage range . The bus voltagerange can go from 0V to 26V , because it is not limitedto 4 . 5V as in Confiquration.

4)Shunt分流器测量

分流电阻为建议最大不超过0.5欧姆的电阻。

ADC测量电阻两端的电压和电流,进而得到分流器电压值、电流值以及功率值。

3. Register Table

00/01为通用的配置寄存器,02为状态配置寄存器。

实际使用过程中,如果不需要芯片输出报警状态,则用默认值即可。具体要查看00和01的每个16bit寄存器值的每一个bit定义。

 1E和1F为ID寄存器,可用于验证芯片是否正常工作。

08为本地温度传感器结果。理论上,只要芯片正常工作,其寄存器值的转换结果就应该是与真实环境温度相符合

09/0A/0B为远程温度传感器结果。只要芯片正常+外部接法正确,结果值就应该是正常的,否则就要查看外部接法和芯片工作状态

04/05为分流器和总线电压,也是只需要芯片正常+外部接法正确。

05/06则为电流测量值和功率值,该值不仅需要芯片正常+外部接法正确,还要进行软件配置。否则读到的都是0。

即配置Shunt Calibration Register 15寄存器 ,该寄存器是“根据最大电流值计算得到的测量最大值”。具体转换规则参考手册 “ Calibration Register and Scaling ”部分。

如下提供一段简单的校准寄存器设置代码:

const int vshunt_max = 8*40;//分流器最大电压:毫伏
const int shunt_uohms = 20000;//分流器电阻:微欧姆
Tmp513.curr_lsb_ua = (vshunt_max*1000*1000/shunt_uohms) *1000/32767;

//PGA=8 "/1000"<=>uohms=1000
Tmp513.pwr_lsb_uw = Tmp513.curr_lsb_ua *20;
Temp = Tmp513.curr_lsb_ua/1000;
Temp = (Temp==0)?40960:40960/Temp;

if( Tmp513_Write(TMP513_SHUNT_CAL, Temp) != 0)
    goto TMP513_ERROR_INIT;

4. 其它

1、本篇文章参考了 TMP513 的芯片手册,立创商城上就能搜到。

2、参考 github上 linux源码的驱动文件中的tmp51x.c 

[v8,2/2] hwmon: Add driver for Texas Instruments TMP512/513 sensor chips. - Patchwork (kernel.org)

3、I2C驱动

与正常的I2C驱动完全一样。

遇到的I2C驱动简单分为3类:

1)没有寄存器地址,只需要写数据

如一般的IO扩展芯片,先写地址,再写入8bit数据,分别控制8个IO输出的高低电平。

2)有寄存器地址,数据为8bit

先写8bit地址,收到ack后,再写入8bit 寄存器地址 等待ACK,然后再写入8bit数据。

3)有寄存器地址,数据为16bit

TMP513就是16bit。

先写8bit地址,收到ack后,再写入8bit 寄存器地址 等待ACK,然后再写入8bit高字节,再再写入8bit低字节。

//参考程序

static uint8_t mI2C_Read_2byte(uint8_t reg, uint16_t *pData)
{
    uint8_t byte[2];
    
    if(HAL_I2C_Mem_Read(&hi2c3, TMP513_DEV_ADDR, reg, I2C_MEMADD_SIZE_8BIT, byte, 2, 1000) == 0)
    {
        *pData = byte[0]*256+byte[1];
        return TMP513_OK;
    }
    else
        return TMP513_ERROR;
}
static uint8_t mI2C_Write_2byte(uint8_t reg, uint16_t data)
{
    uint8_t byte[2];
    
    byte[0] = data>>8;
    byte[1] = data&0x00FF;
    
    return HAL_I2C_Mem_Write(&hi2c3, TMP513_DEV_ADDR, reg, I2C_MEMADD_SIZE_8BIT, byte, 2, 1000);
}

猜你喜欢

转载自blog.csdn.net/weixin_38743772/article/details/131969722