整个系统由MCU,传感器(温度,湿度,加速度,高度等),存储器(EEPROM),RTC芯片(DS3231M),电源和显示设备(OLED)组成。所以系统的功耗主要由这几类器件消耗。下面我们逐个分析其功耗,以及降低功耗的方法。
1. 首先是MCU的功耗。选用的MSP430FR5969本身是一款非常出色的低功耗MCU,但是它的实际功耗和很多因素相关。
a 。在active mode下,功耗和MCU的主频有关,主频越高,功耗越大。这个比较好理解。另外,如果代码在FRAM中执行,也和cache的命中率有关,cache的命中率越高,功耗越小。代码在RAM中执行的话,同等条件下功耗会更低一些。
从这个角度看,降低主频,提高cache的命中率都可以有效地降低功耗。
b。在低功耗模式下,我们可以看到其功耗和主频有关,也和供电电压有关。主频越低,功耗越小;供电电压越低,功耗越小。
从手册上我们可以很清楚的看到MCU在不同工作模式下的功耗。
对于本系统,实际应用中,当有数据处理的时候,唤醒MCU,处理数据,数据处理完毕,重新进入低功耗模式以降低功耗。降低主频的话,虽然功耗也相应的降低了,但是数据处理的时间会增加。这个需要利用软件进一步进行分析,才能选择最合适的工作主频。
另外,降低MCU的工作电压也可以降低功耗,但是由于整个系统其它元器件的工作电压所限,如果采用多个电源对系统进行供电,势必增加BOM成本,而且由于LDO自身的功耗,效率,所以采用多个电压的方法也不适合本系统。
所以,对于MCU的功耗,比较简单的办法就是采用合适的主频,让其在Active Mode和Low Power Mode的状态下工作。尽量降低Active Mode的工作时间;可以从代码上进一步优化,提高代码的效率。
2. 传感器的功耗
系统选择的传感器,均可以在不工作的时候进入休眠状态,以降低系统功耗。
温湿度传感器:实际工作中,可以每5S唤醒一次,进行温湿度采样,采样完毕,重新进入低功耗状态。
从其电气特性上可以看到,测量状态和休眠状态的功耗相差要3个数量级。所以对于这个传感器来说,大部分时间处于休眠状态可以显著的将其其功耗。
压力传感器也可以采用类似的工作状态。
通过手册我们可以看到过采样精度越高,ADC的转换时间越长,功耗也越大。
对于加速度传感器,系统选用其的一个目的是用来唤醒OLED。他可以设置不同的精度,还有采样周期以降低功耗。我们可以其闲置的过程中,降低采样精度,延长两次采样间隔。当感知到加速度后,通过外部中断,唤醒MCU,同时切换到较高精度,较高采样率的模式下,以便于正常响应。
这个传感器,9轴全开的时候绝对是耗电大户,好在大部分时间都是只用3轴加速度传感器,其余时间进入低功耗模式。
OLED的功耗:
SSD1306的DC特性表
实际测试(FLUKE 17B):3.6V供电电压
1. 屏幕全开 亮度 电流
0xFF 22.54mA
0x80 20.17mA
0x10 12.35mA
0x00 10.70mA
2. 屏幕全关 亮度 电流
0xFF 6.1uA
0x80 4.8uA
0x10 4.2uA
0x00 5.3uA
测量环境搭建比较简陋,通过杜邦线将OLED板与Exp430FR5969连接,
直接将万用表串接到OLED的GND端,改变OLED亮度,测量其电流。
亮度最大全开的时候耗电最大,改变亮度降低工作电流。
屏幕关闭的时候由于万用表的uA档精度问题,电流一直飘动,所以这个值不准确。
实际显示若干字符的时候,工作电流也会减小很多。这个未作详细测试。
通过这个简单的测试可以得出耗电大户OLED的功耗与其亮度设置和显示的字符
数量有关。为了减少OLED的功耗,字符数量和GUI相关,无法减少,但是可以通过
调整亮度和缩短点亮时间的方式来降低其功耗。
本帖最后由 azhiking 于 2015-1-5 23:02 编辑