淺談單片機低功耗處理

淺談單片機低功耗處理

一、什麼是低功耗處理
我們在研發電子產品的時候,經常會涉及到功耗的問題。因爲電子產品肯定是要供電的,供電的方式最常用的幾種是:220V交流直插供電、用直流適配器供電和電池供電。無論是哪種供電方式,只要用到單片機,最終都是要轉成低壓直流給單片機供電的。而單片機如果不做好低功耗處理的話,電量的消耗會大很多,續航能力也會大大縮短。如果是220V或者適配器供電,那還好點,最多是電費多一點,而如果是用電池供電的,續航能力差的話就需要頻繁更換電池。像煙霧報警,紅外報警,智能門鎖這些產品,一般都是用電池供電的,因爲使用和觸發的頻率不是很高,安裝的位置也不適合用適配器供電。這個時候,低功耗處理就顯得尤爲重要了。
而功耗雖然指的是功率,但是我們常常用電流去衡量,因爲單片機的工作電壓是有範圍的,因此,正常工作的情況下,電壓是基本固定的,而在相同的電壓下,電流的大小直接決定了功耗的大小,電流越大功耗就越大。因此,我們做低功耗處理最終的目標就是要把電流降下來。
再說一些題外話,很多電子產品,特別是那種不是一直在高速工作,大多數情況下都是在休眠狀態,只有觸發了某些特定條件纔會喚醒工作的產品,比如上面說到的報警器和門鎖。這些產品在電池滿電量的情況下能用的時間,是可以估算的。一般的做法是,直接把電池的容量除以休眠時的電流,因爲在不觸發的時候,整個電路工作的電流都是很小的,比如智能門鎖,只有在開門喚醒的時候,需要發射和接受無線信號,需要驅動電機的時候電流會比較大,大部分時間這些模塊都是不工作的,消耗的電流其實很小。所以,用這種估算的方式,也是有一定的合理性的,很多公司發佈產品的時候說這個東西能用多久,其實也是這樣算出來的。再說說電池容量,電池容量的單位是毫安時,理論上來說,如果工作電流是1mA,那它能工作多少個小時,就是多少毫安時,而實際上,容量的減少會使得電壓降低,當電壓低於某個值的時候,單片機就不能工作。因此,一個電池的額定容量往往不是能用的容量。

二、單片機要怎樣做才能把整個電路的電壓降到最小
如果一個電路里面只有一個單片機以及單片機最基本的外圍電路,那麼它的功耗是很低的,特別是一些專門用於低功耗產品的單片機,比如stm8L系列,stm32L系列,TI430系列等等。但是如果你以爲你用了超低功耗的單片機就一定能降低功耗的話那你就錯了,無論是用什麼單片機,在程序上和電路上都是要一些處理才能把功耗控制在比較低的範圍。
程序的處理方法主要有以下幾點:
1、 單片機進入睡眠狀態。這個是最基本的,只有睡眠的狀態下,功耗纔是最低的。但是要注意的是單片機睡眠的方式不止一種,根據需要選擇合適的。
2、 所有懸空的IO口都設成推輓低速輸出低。注意,是懸空的IO口。也有人說設成浮空輸入,我試過幾款ST的單片機,都是設成輸出低的功耗更小。別的單片機你可以先測試一下,再選擇最好的配置方式。
3、 在單片機睡眠之前把不需要用到的時鐘關掉。如定時器時鐘,串口時鐘等。這裏說的不需要指的是睡眠的時候不需要用到,但是喚醒狀態下需要用到的。如果是一直都沒用到的,不初始化也不會打開。
4、 有連接外設的IO口根據實際情況配置引腳。不是所有引腳拉低都能降低功耗的,需要根據情況來定,這一點比較複雜,我講一些最常見的情況吧。比如有連接LED燈,把燈關掉纔是功耗最小的。比如輸入引腳,如果睡眠的時候,外設輸出的是低電平,單片機最好是用浮空輸入,不要用上拉,因爲上拉的時候,相當於內部有個電阻一直在工作,會消耗電流。如果外部輸入的高電平,根據情況而定,我試過一次,就一個引腳,用浮空和上拉居然相差了一百多uA,我的天,可能跟那個模塊的內部電路有關吧。也可以把輸入改成輸出,有時候也有奇效。比如串口,如果休眠的時候可以考慮把引腳都設成輸出低,特別是兩個單片機通過串口通訊,如果一邊拉高一邊拉低,那麼中間的限流電阻就會導通,最好是兩邊都拉低。還有串口有時候不能直接拉低引腳,我之前就試過用stm8,程序上把引腳拉低了,實際上並沒有拉低,找了好久才知道是沒有反串口初始化,也就是DeInit,在庫函數裏面是能找到這個函數的,反初始化之後,再配置成普通IO口才能輸出低。
5、 控制外設進入睡眠模式或低功耗工作模式。很多外設模塊都是有低功耗模式的,如果不需要一直工作,單片機需要讓它也進入睡眠模式,如果是需要一直工作的,儘量選擇低功耗工作模式。還有一些外設的中斷引腳觸發極性是可以自己配置的,最好選擇上升沿觸發。
6、 降低晶振頻率。這個我覺得效果不是很大,不知道是我用的單片機本身的頻率就不高還是怎樣,理論上來說降低頻率是可以降低功耗的。
在電路上,降低功耗的方法就比較複雜了,我本身也是更擅長軟件方面,硬件上不能給大家更多的建議,我就是說說我知道的一些比較簡單的關於IO口的處理方法吧。
電路的處理方法主要有以下幾點:
1、 單片機的IO口的電阻選型和電路設計要合理。如果單片機的IO口需要用到電阻,要根據實際情況,選擇合適的。其實核心的思想都是儘量不要讓電阻處於導通狀態,或者導通的時候電流盡量減到最小。比如單片機的IO口如果大部分時間都是處於低點平,又必須要上拉電阻的話,儘量選擇阻值大一點的電阻。如果處於高電平的話,儘量不要用下拉電阻。這一點無論是輸入還是輸出都是一樣的。能不加電阻就最好了,但是還有一點需要注意的是有些單片機沒有下拉輸入,比如stm8,如果一些引腳設成外部中斷的時候引腳懸空,會使得單片機不斷進入中斷,這時候就需要上拉或者下拉電阻穩定IO口的電平。
2、 芯片IC的選型要合理。做低功耗產品的時候,芯片的選型是很重要的,無論是單片機還是其他外設,在預算範圍內都應該儘量選擇工作電流小的IC。
3、 電路的佈局要合理。電路設計也是很關鍵的一點,不合理的佈局可能會造成額外的阻抗,包括外形、散熱等問題也是,可能會造成功耗的增加。具體就不多說了,我懂的可能還沒你們多。

好了,關於單片機低功耗處理的方法就講到這裏,這些都是在我最近在做項目的時候,因爲功耗問題搞得死去活來之後得出的結論。如果還有什麼問題或者文中有錯誤的地方,可以聯繫我。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章