實現產品低功耗設計-以Microchip 8 bit MCU為例
功耗計算的基本知識
在電池供應電源的產品設計過程,最常見的問題就是裝置上的電池可以使用多久,所以產品供電時間與總消耗功率息息相關。
在介紹之前我們先以下列公式來簡單的了解一些基本知識;
- W (瓦特) = V (伏特) x I (安培)<\li>
- J (焦耳) = V (伏特) x I (安培) x T (秒)<\li>
- Q (庫倫) = I (安培) x T (秒)<\li>
針對功耗可分為動態及靜態兩種狀態數據,故:
平均功耗 = (動態功耗x動態時間 + 靜態功耗x靜態時間)/(動態時間+靜態時間)
可以由圖一來了解MCU內部功耗與時間的關係
電池容量單位為mAh,所以1mAh= 0.001安培x3600秒 = 3.6安培秒=3.6Q (庫倫);以電池容量為1000mAh為例,如果平均功耗為50mA,那所能供應的電源可以工作的時間約為1000mAh/50mA = 20h(小時)。 所以依據上述公式及關係圖,可以對於一個產品所能運作的時間有個初步的認知。
MCU省電模式介紹
以Microchip 8 bit MCU為例,省電模式有三種,DOZE mode 和IDLE mode 及SLEEP mode,其中SLEEP mode的消耗電流為最低:
1. 2DOZE 模式:
下達DOZEN=1來進入DOZE mode,可以透過減少CPU運作和內存,而達到省電效果,但系統震盪器仍繼續運作,所以還是有存在基本功耗,如圖二所示。
2. IDLE模式:
不同於DOZE與SLEEP 模式,IDLE 模式會將CPU和存儲器關閉,下達IDLEN=1後如再執行SLEEP()指令會關閉系統震盪源,故CPU此時停止運作;但IDLE模式不會執行SLEEP()指令,所以會呈現一個低速運作模式。
3. SLEEP 模式:
CPU與大部分的裝置會被設為關閉,所以是最省電的模式,下達IDLEN=0之後再下達SLEEP()後即進入休眠狀態,如圖三所示。
週邊電路設計與消耗電流
1. ADC與VR:
以圖四為例,當VDD=5V時,可變電阻使用10K歐姆時,此時基本的功耗為I=5V/10K=0.5mA,但如果可變電阻選用1K歐姆時,耗電流就會提升到5mA,所以在選擇設計電阻值時可能就會影響總消耗電流。
2. 將不使用的GPIO設定為輸入模式,可減少MCU電流消耗,MCU內部方塊圖如圖五。
3. LDO靜態消耗電流:
LDO主要在供應系統或者週邊電路的電源,此時須注意選用較低靜態電流的規格,以MCP1711為例,規格如圖六所示。
4. 其他週邊電路供電:
當MCU需進入SLEEP模式之前,一定要將週邊不需要再休眠狀態下工作的電路進行斷電,如此相對可以減少電流的消耗,並提高裝置可運作時間。
參考文獻
1.徐進, 實現MCU的低功耗設計,
2.Microchip, Low Quiescent Current LDO Regulators, https://www.microchip.com/en-us/products/power-management/dc-dc-converters-and-voltage-regulators/linear-ldo-voltage-regulators/low-quiescent-current-ldo-regulators
3.Microchip, Power saving technology in 8-bit and 16-bit PIC devices: XLP (eXtreme Low-Power) devices (Sleep, Idle, Doze), https://microchipsupport.force.com/s/article/Power-saving-technology-in-8-bit-and-16-bit-PIC-devices--XLP--eXtreme-Low-Power--devices--Sleep--Idle--Doze