對于使用電池供電的產品,特別是有些要求用一節(顆 )電池工作1年,甚至幾年的 產品。這種產品平均電流要求很低,基本在uA或nA級別。
我在之前公司做過很多用電池供電的產品,這些產品有一個共同的特性: 待機時 電流非常低。
下面我就結合自己工作經驗以及市面上相關產品,描述關于低功耗設計注意事項,以及實現低功耗的方法。
一、待機產品及情況
低功耗產品通常是要求待機功耗低,有的產品待機時0功耗,有的產品待機時多個外設模塊交替,或者同時工作。
1.待機0功耗
待機時0功耗的產品,只要保證在工作時的功耗即可。如果工作的時間也很短,那么這種產品 在低功耗方面需要投入的研發其實相對不多。
比如電視機 (按鍵 )遙控板:
這種產品待機時0功耗,通過按鍵喚醒,喚醒之后工作幾毫秒(不同型號時間有差異)又進入待機狀態。
實現原理:
通過按鍵上電,啟動MCU,執行工作,執行完任務,通過MCU控制總電源斷電。
也就是:通過外部開啟電源,通過內部控制斷電的機制實現。
2.間歇待機
有些產品是間歇性待機,比如:工作1ms,待機499ms。
比如IC卡設備:
IC卡設備如果一直處于尋卡工作狀態,電流其實相對較大,而很多時候都沒有IC來感應。
實現原理:
這種產品,可以間隔0.25s,或者0.5s來感應(尋卡)一次,同時不會給人帶來“卡頓”的感覺。(尋卡工作的時間其實很短)
(圖片來自網絡)
同理,類似的產品還有很多,比如無線遙控天然氣、水表等。
這種做法目的是為了讓產品功耗更低,但人看起來產品一直在工作。
3.長期待機
有些產品的MCU是通過外圍設備喚醒,比如通過觸摸按鍵喚醒產品。
這種產品相對上面兩種難度更大,要同時保證MCU內部資源,以及外部資源在工作和待機時功耗都要盡量低。
二、實現低功耗的方法
結合上面產品的描述可以總結幾點實現低功耗的方法。
1.控制電源開關
通過控制系統總電源、(高功耗)外圍模塊電源的開關,特別是使用頻率低、功耗大的外圍模塊,在需要時才開啟。
2.控制MCU內部外設
有些MCU產品的外設在上電時默認 是開啟的(比如STM8S ),不用的外設一定要關閉,在需要時才開啟。
3.控制時鐘頻率
這里說的控制時鐘頻率不單純是降頻, 是根據實際工作情況(工作模式、時長等)調整頻率。
有些產品它在執行任務A時,要求快速處理(不如跑一段算法),則需要調整到更高的頻率;
而在執行 任務B時,處理簡單事情(比如控制LED亮滅),則需要將時鐘調整到很低狀態。
同時,還需要結合工作時長,比如上面任務A,如果時間很長,這個頻率也需要綜合考慮。
4.控制IO狀態
現在MCU基本都有多種狀態:
模擬輸入
浮空輸入
下拉輸入
上拉輸入
開漏輸出
推挽輸出
復用開漏輸出
復用推挽輸出
在低功耗狀態、工作過程都需要設置成合理狀態。比如通常在待機時,將不用的引腳設置成模擬輸入。
5.檢查硬件
檢查是否存在漏電流,比如不合格電容、電阻等器件。
還有虛焊或板卡上存在殘留焊錫等情況,都會導致功耗增加。