4、热传感器选型:NTC热敏电阻、PTC热敏电阻、热电偶、数字温度传感器
做逆变器热管理,第一步就是选对温度传感器。这玩意儿要是选错了,后面所有算法都是白搭。我这些年踩过的坑,有一半都跟传感器选型有关。
今天咱们把四种主流方案掰开揉碎了讲。NTC、PTC、热电偶、数字传感器,各有各的脾气。你想想看,一个IGBT模块的结温测量,跟散热器表面温度监测,用的能是同一个东西吗?
4.1 NTC热敏电阻:最常用的温度探头
NTC,负温度系数。温度越高,电阻越小。这玩意儿在逆变器里用得最多,说白了就是便宜、皮实、精度够用。
工作原理:半导体陶瓷材料,温度每升高1℃,电阻大约下降4%-6%。这个变化率比铂电阻大得多,所以灵敏度高。
典型参数:
- 标称阻值:10kΩ @ 25℃(最常见)
- B值:3435K 或 3950K
- 精度:±1% 或 ±3%
- 工作温度:-40℃ ~ +125℃
选型核心:B值决定曲线的陡峭程度。B值越大,灵敏度越高,但线性度越差。我个人习惯在-20℃~100℃范围内用B=3950K的,这个区间内精度表现最好。
电路设计:
// 典型分压电路
// VCC -- NTC -- R_ref -- GND
// ADC采样点 = NTC与R_ref之间
// 温度计算(Steinhart-Hart方程简化版)
float calcTemp_NTC(float adc_voltage, float r_ref) {
float r_ntc = r_ref * (adc_voltage / (3.3 - adc_voltage));
float steinhart;
steinhart = log(r_ntc / 10000.0); // 10000是25℃时的阻值
steinhart /= 3950.0; // B值
steinhart += 1.0 / (25.0 + 273.15);
steinhart = 1.0 / steinhart;
return steinhart - 273.15;
}
避坑指南:我曾经在批量生产时发现,同一批NTC在85℃以上偏差达到±5℃。后来查出来是分压电阻的温漂问题。记住,R_ref一定要用低温漂电阻(25ppm/℃以下),别省这个钱。
4.2 PTC热敏电阻:过温保护的利器
PTC,正温度系数。温度超过某个阈值后,电阻会急剧上升。这玩意儿不是用来精确测温的,而是做保护用的。
两种类型:
- 陶瓷PTC:开关型,温度到了Curie点,电阻跳变3-4个数量级
- 聚合物PTC:自恢复保险丝,过流过热时保护
在逆变器里,我通常把PTC贴在IGBT的散热器上。一旦散热器温度超过90℃,PTC电阻从几十欧姆跳到几百千欧,直接触发硬件保护。这个响应速度比软件快得多。
注意:PTC的恢复时间很长。触发保护后,需要等温度降下来、断电冷却,电阻才会恢复。所以别指望它做频繁的过温保护,那是NTC的活。
4.3 热电偶:高温场景的唯一选择
热电偶,利用塞贝克效应。两种不同金属的接点,温度不同时会产生热电势。这玩意儿能测到1000℃以上,逆变器里一般用K型(镍铬-镍硅)。
为什么逆变器要用热电偶?
- IGBT模块内部结温,有时候会超过150℃
- 母线电容附近,环境温度可能到105℃
- NTC在125℃以上精度急剧下降
冷端补偿:这是热电偶最坑的地方。你测的是热端和冷端的温差,冷端温度必须知道。我见过有人直接把热电偶接到ADC上,读出来的数据完全不对。
// K型热电偶温度计算(简化版)
// 需要冷端温度(比如用DS18B20测量)
float calcTemp_Thermocouple(float voltage_mV, float cold_junction_temp) {
// 查表法或多项式拟合
// 这里用线性近似(0-200℃范围内)
float temp = voltage_mV * 25.0; // K型约40μV/℃
return temp + cold_junction_temp;
}
我的经验:热电偶的引线不能太长,超过10米就得用补偿导线。我曾经在实验室里用普通铜线延长,结果测出来的温度差了15℃。嗯,这个教训挺深刻的。
4.4 数字温度传感器:DS18B20与TMP117
数字传感器,把模拟信号处理、ADC转换、校准全集成在芯片里。你直接读寄存器就行,省心。
DS18B20:便宜、灵活、但慢
- 分辨率:9-12位可调(0.5℃ ~ 0.0625℃)
- 通信:单总线(1-Wire),一根线可以挂多个
- 转换时间:最慢750ms(12位模式)
- 精度:±0.5℃(-10℃ ~ +85℃)
DS18B20最大的优点是便宜,而且可以并联。我在一个逆变器里挂过8个,分别测散热器、电感、电容、环境温度。但要注意,单总线的时序要求很严格,中断多了容易丢数据。
// DS18B20读取温度(伪代码)
uint16_t ds18b20_read_temp(void) {
// 1. 复位脉冲
// 2. 发送跳过ROM命令 (0xCC)
// 3. 发送温度转换命令 (0x44)
// 4. 等待转换完成(至少750ms)
// 5. 复位脉冲
// 6. 发送跳过ROM命令 (0xCC)
// 7. 发送读暂存器命令 (0xBE)
// 8. 读取2字节温度数据
// 9. 计算:temp = (raw & 0x07FF) * 0.0625;
}
避坑指南:DS18B20的寄生供电模式我劝你别用。曾经有个项目为了省一根线,结果在低温-20℃时传感器不工作。老老实实用外部供电,VDD接3.3V,别省那点事。
TMP117:高精度、低功耗、但贵
- 精度:±0.1℃(-20℃ ~ +50℃)
- 分辨率:0.0078℃(16位)
- 通信:I2C
- 转换时间:15.5ms(最高精度模式)
TMP117是TI的明星产品,精度比DS18B20高一个数量级。我一般在需要精确测量IGBT壳温时用它。比如做热模型校准,或者做结温估算的参考点。
// TMP117读取温度(I2C)
float tmp117_read_temp(void) {
uint16_t raw = i2c_read_register(0x48, 0x00); // 温度寄存器
// 16位有符号数,LSB = 0.0078125℃
int16_t temp_raw = (int16_t)raw;
return temp_raw * 0.0078125;
}
选型建议:
| 场景 | 推荐传感器 | 理由 |
|---|---|---|
| IGBT结温估算 | TMP117 | 高精度,做参考点 |
| 散热器温度 | NTC (10kΩ, B=3950) | 成本低,精度够 |
| 过温保护 | PTC | 响应快,硬件触发 |
| 多点温度监测 | DS18B20 | 一根线挂多个 |
| 高温环境(>150℃) | K型热电偶 | 唯一选择 |
最后说一句,传感器选型没有绝对的好坏。你想想看,一个消费级逆变器跟一个工业级逆变器,成本差10倍,传感器方案能一样吗?关键是搞清楚你的需求:精度要求多少?温度范围多少?成本预算多少?
我个人习惯是:能用NTC的地方绝不用数字传感器,除非精度实在不够。但做热模型标定时,TMP117是必须的。嗯,这就是工程上的取舍。