传感器选型与原理:电压、电流、温度传感器的实战对比
做电池监测,传感器选型是第一步。选错了,后面代码写得再漂亮也白搭。我这些年踩过的坑,十有八九都出在传感器选型上。今天咱们就把电压、电流、温度这三类传感器掰开揉碎了讲清楚。
一、电压传感器:分压电阻 vs ADS1115
测电压,听起来最简单。但电池电压不是5V就是12V,甚至更高。而单片机ADC输入范围通常是0-3.3V或0-5V。怎么办?
1. 分压电阻方案
原理就是电阻分压。两个电阻串联,中间抽头接ADC。公式很简单:Vout = Vin * R2 / (R1 + R2)。
优点:便宜、简单、零延迟。
缺点:精度受电阻误差影响,而且会持续消耗电流。
⚠ 注意:分压电阻会一直耗电。比如用10k+10k分压12V,静态电流就是12V/20k=0.6mA。电池监测设备如果长期运行,这个电流不能忽略。我曾经有个项目,就是因为没算这个静态功耗,导致待机时间少了整整两天。
分压电阻的选型要点:
- 电阻精度选1%或更高,别用5%的
- 总阻值尽量大(100k以上),减少静态功耗
- 注意电阻的耐压和功率
2. ADS1115方案
ADS1115是TI出品的一款16位ADC,I2C接口。它内部有可编程增益放大器(PGA),可以直接测量±0.256V到±6.144V的电压。
为什么我推荐它?
- 16位分辨率,比单片机内置的10位或12位ADC强太多
- 内置参考电压,精度有保障
- 可编程数据速率,最高860SPS
- 4个单端通道或2个差分通道
核心对比:
| 参数 | 分压电阻+单片机ADC | ADS1115 |
|---|---|---|
| 分辨率 | 10-12位 | 16位 |
| 精度 | 受电阻和参考电压影响 | 内置参考,典型0.1% |
| 成本 | 几毛钱 | 10-15元 |
| 功耗 | 持续耗电 | 可关断,待机0.5μA |
| 接口 | 直接ADC引脚 | I2C |
我个人习惯是:如果只是粗略监测(比如看电池有没有电),分压电阻就够了。但要做精准的充放电曲线分析,必须上ADS1115。我记得有一次做锂电池容量标定,用单片机ADC测出来的数据波动有20mV,换成ADS1115后直接降到1mV以内。
二、电流传感器:ACS712 vs INA219
测电流比测电压麻烦。因为电流不能直接测,得转换成电压信号。
1. ACS712 霍尔效应电流传感器
ACS712内部有霍尔元件,电流流过时产生磁场,霍尔元件输出对应的电压。它不需要串联采样电阻,是隔离测量。
选型要点:
- 有5A、20A、30A三个量程版本
- 输出灵敏度分别为185mV/A、100mV/A、66mV/A
- 带宽80kHz,响应快
- 输出偏置电压2.5V(即0电流时输出2.5V)
💡 实战技巧:ACS712的输出有2.5V偏置,意味着你测的是2.5V±某个值。如果单片机ADC是0-3.3V,那正负电流都能测。但要注意,2.5V偏置本身有误差,最好在代码里做零点校准。
2. INA219 高侧电流检测芯片
INA219是TI的电流/功率监测芯片。它通过测量采样电阻两端的压降来计算电流。内置12位ADC和I2C接口。
为什么我更喜欢INA219?
- 精度高:最大误差0.5%
- 分辨率高:最大0.1mA(取决于采样电阻)
- 直接输出电流值和功率值
- 可编程量程:±320mV的差分输入范围
说白了,ACS712适合测大电流(几安到几十安),INA219适合测小电流(毫安级)。我做过一个太阳能充电项目,充电电流10A,用ACS712没问题。但后来做电池自放电测试,电流只有几毫安,ACS712根本测不出来,换成INA219才搞定。
⚠ 注意:INA219需要外接采样电阻。电阻的功率要算好。比如测3A电流,用0.1Ω电阻,功率就是P=I²R=9*0.1=0.9W。至少选1W的电阻,最好留50%余量。
三、温度传感器:DS18B20 vs NTC热敏电阻
电池对温度很敏感。充电温度过高会爆炸,放电温度过低容量会下降。所以温度监测必须做。
1. DS18B20 数字温度传感器
DS18B20是Dallas的经典产品。单总线接口,每个传感器有唯一64位ID,可以一条线上挂多个。
优点:
- 数字输出,抗干扰强
- 精度±0.5℃(-10℃到+85℃)
- 分辨率可配置:9-12位
- 测量范围-55℃到+125℃
缺点:
- 响应慢:12位分辨率下转换时间750ms
- 单总线时序要求严格,代码稍微写错就读不到数据
我记得第一次用DS18B20时,死活读不到数据。折腾了半天,发现是上拉电阻没加。单总线必须加4.7k上拉,这个坑很多人踩过。
2. NTC热敏电阻
NTC是负温度系数热敏电阻。温度升高,阻值下降。通过测量阻值变化来推算温度。
选型要点:
- B值:决定温度-阻值曲线的陡峭程度,常用3950K
- R25:25℃时的阻值,常用10kΩ
- 精度:通常±1%或±5%
NTC的使用需要配合一个固定电阻组成分压电路,然后用ADC测量。温度计算公式是Steinhart-Hart方程,比较复杂。不过网上有现成的库,直接调用就行。
对比总结:
| 参数 | DS18B20 | NTC热敏电阻 |
|---|---|---|
| 输出类型 | 数字(单总线) | 模拟(电阻值) |
| 精度 | ±0.5℃ | ±1℃(取决于校准) |
| 响应速度 | 慢(750ms) | 快(几十ms) |
| 成本 | 5-10元 | 0.5-2元 |
| 接线 | 3线(VCC/GND/DQ) | 2线 |
| 多点测量 | 容易(一线多挂) | 需要多路ADC或模拟开关 |
我的建议是:如果只需要测1-2个点,而且对响应速度要求不高,用DS18B20省事。如果需要快速响应(比如监测电池充电时的温升),或者要测很多点,用NTC更灵活。
四、传感器选型决策流程
说了这么多,到底怎么选?我画了个流程图,帮你快速决策。
五、实战选型建议
最后,我根据实际项目经验,给几个具体的选型组合建议:
- 低成本方案:分压电阻 + ACS712 + NTC。总成本不到10元,适合DIY项目。
- 高精度方案:ADS1115 + INA219 + DS18B20。总成本约40元,适合科研或产品开发。
- 综合方案:ADS1115测电压 + INA219测电流 + NTC测温度。这个组合我用的最多,精度和成本平衡得最好。
💡 我的经验:不管选什么传感器,一定要在电路板上预留校准接口。比如加一个精密电阻分压点,或者留一个跳线用来短接电流采样电阻。这样后期调试时,你可以用万用表实测值来校准传感器读数。我曾经因为没留校准点,硬生生用软件补偿了一个星期,那叫一个痛苦。
好了,传感器选型这块就讲到这里。记住一句话:没有最好的传感器,只有最合适的传感器。根据你的精度要求、成本预算和开发周期来选,准没错。
公众号:蓝海资料掘金营,微信deep3321