4. 传感器选型与功耗分析:常用传感器的功耗特性与数字接口影响
好,咱们进入第四章。这一章我打算聊聊传感器选型,以及它跟功耗之间那些「剪不断理还乱」的关系。
做低功耗物联网设备,传感器往往是耗电大户。你想想看,MCU可以睡大觉,但传感器有时候得一直开着。选错了,整个项目的功耗就崩了。我见过太多人,MCU选了个超低功耗的,结果传感器功耗是MCU的几十倍,白忙活一场。
4.1 常用传感器的功耗特性
咱们先看看几种最常见的传感器,它们的功耗到底什么水平。
4.1.1 温湿度传感器
温湿度传感器,几乎是物联网项目的标配。我个人习惯用SHT30和HDC1080这两款。
- SHT30:测量时电流约800μA,待机时只有0.2μA。单次测量大概7ms搞定。
- HDC1080:测量电流约1.3μA(你没看错,比SHT30低很多),待机电流100nA。
这里有个坑。SHT30虽然测量电流大,但它测得快。如果你每秒只测一次,平均功耗其实不高。HDC1080虽然测量电流小,但转换时间稍长。嗯,具体选哪个,得看你采集频率。
4.1.2 加速度传感器
加速度传感器,低功耗场景下首选是ADXL345和LIS3DH。
- ADXL345:测量模式电流约23μA,待机0.1μA。支持FIFO,这个功能很实用。
- LIS3DH:测量模式电流约11μA,待机0.5μA。同样支持FIFO。
为什么我特别强调FIFO?说白了,就是让传感器自己存数据,MCU不用频繁醒来读。我曾经做一个运动检测项目,MCU每10ms读一次加速度数据,功耗高得吓人。后来启用了FIFO,让传感器攒够32个数据再通知MCU,功耗直接降了70%。
4.1.3 气压传感器
气压传感器,常用的有BMP280和LPS22HB。
- BMP280:测量模式电流约2.6μA,待机0.1μA。精度不错,但启动时间有点长。
- LPS22HB:测量模式电流约4μA,待机0.5μA。启动快,适合需要频繁测量的场景。
我记得有个气象站项目,客户要求每10秒上报一次气压。我一开始用了BMP280,结果发现每次启动都要等10ms才能读数,这10ms里电流高达1mA。后来换成LPS22HB,启动时间缩短到3ms,功耗优化了不少。
4.1.4 气体传感器
气体传感器,这个比较特殊。像CCS811这类VOC传感器,功耗普遍偏高。
- CCS811:测量模式电流约30mA(你没看错,是毫安),待机0.5μA。
- SGP30:测量模式电流约48mA,待机0.5μA。
气体传感器是真正的「电老虎」。我的建议是,能不连续测量就别连续测量。我曾经做过一个空气质量监测器,让CCS811每5分钟才测一次,平时直接断电(用MOS管控制VCC),这样平均功耗才降下来。
4.2 数字接口(I2C/SPI)对功耗的影响
接口选I2C还是SPI,对功耗影响其实不小。很多人觉得无所谓,但实际差别挺大的。
4.2.1 I2C接口的功耗特性
I2C是两根线(SCL、SDA),通过上拉电阻拉到VCC。上拉电阻通常选4.7kΩ或10kΩ。
- 优点:引脚少,接线简单。支持多设备挂载。
- 缺点:上拉电阻会持续耗电。总线空闲时,两根线都是高电平,电流通过上拉电阻流到地?不对,是流到设备引脚。实际上,I2C总线空闲时功耗很小,但通信时每翻转一次,都会消耗能量。
我算过一笔账:在3.3V供电下,4.7kΩ上拉电阻,总线空闲时电流约0.7mA(两根线)。如果总线一直空闲,这个功耗其实可以忽略。但如果你频繁通信,每次SCL翻转都会产生动态功耗。
4.2.2 SPI接口的功耗特性
SPI是四根线(MOSI、MISO、SCLK、CS),没有上拉电阻。
- 优点:通信速度快,没有上拉电阻的静态功耗。适合高速、大数据量传输。
- 缺点:引脚多,占空间。每个设备需要独立的CS引脚。
SPI在空闲时,所有线都是高电平或低电平(取决于配置),几乎没有静态功耗。通信时,SCLK翻转产生动态功耗,但因为SPI速度通常比I2C快,所以总能量消耗反而可能更低。
举个例子:读取一个20字节的数据块。I2C在400kHz下需要约500μs,功耗约2mA。SPI在10MHz下只需要约20μs,功耗约3mA。算下来,SPI消耗的总能量只有I2C的1/10左右。
4.3 传感器选型清单
好了,说了这么多,我整理一个选型清单,方便你对照着选。
| 传感器类型 | 推荐型号 | 测量电流 | 待机电流 | 接口 | 适用场景 |
|---|---|---|---|---|---|
| 温湿度 | SHT30 | 800μA | 0.2μA | I2C | 快速采集,1秒以内间隔 |
| 温湿度 | HDC1080 | 1.3μA | 100nA | I2C | 低功耗,5秒以上间隔 |
| 加速度 | ADXL345 | 23μA | 0.1μA | I2C/SPI | 运动检测,支持FIFO |
| 加速度 | LIS3DH | 11μA | 0.5μA | I2C/SPI | 超低功耗,支持FIFO |
| 气压 | BMP280 | 2.6μA | 0.1μA | I2C/SPI | 高精度,启动慢 |
| 气压 | LPS22HB | 4μA | 0.5μA | I2C/SPI | 快速启动,频繁测量 |
| 气体 | CCS811 | 30mA | 0.5μA | I2C | VOC检测,需预热 |
| 气体 | SGP30 | 48mA | 0.5μA | I2C | VOC+CO2检测,需预热 |
4.4 选型时的几个关键原则
最后,我总结几条选型原则,都是血泪教训换来的。
- 先看待机电流,再看测量电流。 因为大部分时间传感器都在待机。待机电流差一个数量级,整机续航就差很多。
- 能选数字接口就别选模拟接口。 模拟传感器需要ADC,ADC本身也耗电。而且模拟信号容易受干扰,后期调试很麻烦。
- 优先选带FIFO的传感器。 这个前面说过了,FIFO能大幅减少MCU的唤醒次数,是低功耗设计的利器。
- 注意启动时间。 有些传感器启动慢,启动期间电流很大。如果你频繁开关,启动功耗可能比测量功耗还高。
- 气体传感器要谨慎。 功耗高、预热时间长,不是所有场景都适合。能用其他方式替代(比如用MOS管控制供电),就别让它一直开着。
好,这一章就到这里。下一章咱们聊聊电源管理芯片的选型,那又是一个大坑。到时候我讲讲怎么选DCDC和LDO,以及怎么避免「电源纹波把传感器搞死」这种尴尬事。