一:首先了解芯片的內部功耗
開發一個手持設備,有一個設計重點問題是必須要重視和解決的。那就是在待機狀態下如何做到最省電,即在待機狀態下如何做到盡可能的低功耗,比如用芯唐科技的Cortex-M0內核的NUC100做手持電臺的開發,那么
1、首先要了解的就是該芯片在深度休眠或睡眠模式下功耗是多少(即該模式下的工作電流時多大,注一般的芯片都是uA級別的)。
通過查看NUC100芯片資料(在每個芯片手冊電氣特性或DC電氣特性一節會有說明)了解到該芯片的工作最大電流(即最大功耗)和深度休眠模式下的最低功耗 (最低功耗有Ipwd1,Ipwd2,Ipwd3,Ipwd4,表示NUC100內部的模塊工作需要外部提供四個VDD接口,計算功耗時要把他們累加起來,這里給出了每個VDD接口的休眠模式下最低功耗值,當然如果芯片可以關閉某個模塊的對應的VDD,那就可以降低更多不必要的功耗了)
2、首先要了解的就是該芯片在深度休眠或睡眠模式下功耗是多少(即該模式下的工作電流時多大,注一般的芯片都是uA級別的)。
通過查看NUC100芯片資料(在每個芯片手冊電氣特性或DC電氣特性一節會有說明)了解到該芯片的工作最大電流(即最大功耗)和深度休眠模式下的最低功耗 (最低功耗有Ipwd1,Ipwd2,Ipwd3,Ipwd4,開始理解是:表示NUC100內部的模塊工作需要外部提供四個VDD接口,計算功耗時要把他們累加起來,這里給出了每個VDD接口的休眠模式下最低功耗值,當然如果芯片可以關閉某個模塊的對應的VDD,那就可以降低更多不必要的功耗了,其實不是這樣的。后來發現Ipwd1,Ipwd2,Ipwd3,Ipwd4分別代表4種情況下測得的功耗電流,后來也芯片廠商客服也確認過,他們說NUC100在深度休眠的情況下可以做到25uA以下。)
二:電路供電系統的功耗分析
下圖是7R手臺控制電路(用2個端口做開關機判斷處理,按鍵開關機時波形圖(開/關機波形一樣))
上圖的工作原理是這樣的:
當POWER_KEY按下不,TP1點就持續高電平(下面示波器波形圖的下面一個通道的波形圖),
由于C1兩端電平不能突變,所以C1在POWER_KEY按下瞬間其兩端都是高電平(其實C1起到加速作用),這樣三極管Q1的由于基極出現高電平會瞬間導通,然后,TP2點出現低電平,然后C1會通過Q1的基--Q1發射--R1--C1構成一個回路進行放電(整個過程波形如同下圖示波器截圖的上面那個通道波形:開始出現2ms低電平,后來按照指數形式放電,Q1就從導通,然后慢慢截止,最后TP2的電平穩定為高電平),注意C2電容的容量相比C1很小,0.1u=100000p,估計C2在此電路的作用就是濾除高頻成分的目的。
(這里容易糊涂:C1不能突變,POWER_KEY按下瞬間C1兩端不能突變,可是C2兩端也不能突變,所以C2兩端都是低電平,那C1和C2的交點電壓就打架了?,因為C2電容量相比C1的電容量很小,幾乎對C1不會產生影響,當然如果C1和C2都是0.1uf,這POWER_KEY1導通瞬間,由于C1 C2兩端電壓都不能突變,則他們的交點電壓應該是2.5V)
(電容相關理解:[深入理解電容的工作特性總結] )
下面用一個端口實現的開關機功能(因為INT0和PB14功能可以做程序中作改變):
程序控制流程稍好加上:
》》》
一:首先了解芯片的內部功耗
開發一個手持設備,有一個設計重點問題是必須要重視和解決的。那就是在待機狀態下如何做到最省電,即在待機狀態下如何做到盡可能的低功耗,比如用芯唐科技的Cortex-M0內核的NUC100做手持電臺的開發,那么
1、首先要了解的就是該芯片在深度休眠或睡眠模式下功耗是多少(即該模式下的工作電流時多大,注一般的芯片都是uA級別的)。
通過查看NUC100芯片資料(在每個芯片手冊電氣特性或DC電氣特性一節會有說明)了解到該芯片的工作最大電流(即最大功耗)和深度休眠模式下的最低功耗 (最低功耗有Ipwd1,Ipwd2,Ipwd3,Ipwd4,表示NUC100內部的模塊工作需要外部提供四個VDD接口,計算功耗時要把他們累加起來,這里給出了每個VDD接口的休眠模式下最低功耗值,當然如果芯片可以關閉某個模塊的對應的VDD,那就可以降低更多不必要的功耗了)
2、首先要了解的就是該芯片在深度休眠或睡眠模式下功耗是多少(即該模式下的工作電流時多大,注一般的芯片都是uA級別的)。
通過查看NUC100芯片資料(在每個芯片手冊電氣特性或DC電氣特性一節會有說明)了解到該芯片的工作最大電流(即最大功耗)和深度休眠模式下的最低功耗 (最低功耗有Ipwd1,Ipwd2,Ipwd3,Ipwd4,開始理解是:表示NUC100內部的模塊工作需要外部提供四個VDD接口,計算功耗時要把他們累加起來,這里給出了每個VDD接口的休眠模式下最低功耗值,當然如果芯片可以關閉某個模塊的對應的VDD,那就可以降低更多不必要的功耗了,其實不是這樣的。后來發現Ipwd1,Ipwd2,Ipwd3,Ipwd4分別代表4種情況下測得的功耗電流,后來也芯片廠商客服也確認過,他們說NUC100在深度休眠的情況下可以做到25uA以下。)
二:電路供電系統的功耗分析
下圖是7R手臺控制電路(用2個端口做開關機判斷處理,按鍵開關機時波形圖(開/關機波形一樣))
上圖的工作原理是這樣的:
當POWER_KEY按下不,TP1點就持續高電平(下面示波器波形圖的下面一個通道的波形圖),
由于C1兩端電平不能突變,所以C1在POWER_KEY按下瞬間其兩端都是高電平(其實C1起到加速作用),這樣三極管Q1的由于基極出現高電平會瞬間導通,然后,TP2點出現低電平,然后C1會通過Q1的基--Q1發射--R1--C1構成一個回路進行放電(整個過程波形如同下圖示波器截圖的上面那個通道波形:開始出現2ms低電平,后來按照指數形式放電,Q1就從導通,然后慢慢截止,最后TP2的電平穩定為高電平),注意C2電容的容量相比C1很小,0.1u=100000p,估計C2在此電路的作用就是濾除高頻成分的目的。
(這里容易糊涂:C1不能突變,POWER_KEY按下瞬間C1兩端不能突變,可是C2兩端也不能突變,所以C2兩端都是低電平,那C1和C2的交點電壓就打架了?,因為C2電容量相比C1的電容量很小,幾乎對C1不會產生影響,當然如果C1和C2都是0.1uf,這POWER_KEY1導通瞬間,由于C1 C2兩端電壓都不能突變,則他們的交點電壓應該是2.5V)
(電容相關理解:[深入理解電容的工作特性總結] )
下面用一個端口實現的開關機功能(因為INT0和PB14功能可以做程序中作改變):
程序控制流程稍好加上:
》》》
當在待機情況下要求極低功耗時的電路
低功耗設計問題:如何實現一個MCU系統在待機狀態下0uA的低功耗?(在待機模式下不能工作。如何通過長按按鍵開啟系統,并能夠在釋放按鍵后系統也能正常工作?)
分析:
根據系統功耗要求,MCU在待機模式下不能工作。如何通過長按按鍵開啟系統,并能夠在釋放按鍵后系統也能正常工作?然后在開機后,再次長按按鍵后又可以進入0uA的超低功耗下面待機。
解決:
系統在待機狀態(關機)時,當POWER_KEY1按鍵被長按。Q2導通,電池輸入電壓的高電平信號直接供到MCU芯片電源端,然后MCU一個GPIO端口立即輸出一個高電平使Q2的基極持續高電平,目的是鎖住Q2持續工作,這樣MCU就持續有電供電,這樣,按鍵即使被釋放后,也能保證系統一直處于工作狀態。
當需要關閉系統時,還是長按POWER_KEY1按鍵,這樣會通過INT0中斷檢測到這個中斷,然后GPIO不在輸出高電平鎖存Q2的基極,這樣松口當POWER_KEY1就可以關閉系統了。這樣關閉系統后,也沒什么功耗了,
注:下圖只是提供一個思路,這個電路還有待完善,GPIO這樣連接是否安全,比如Q2換用MOS管,各個電阻的值也要根據實際電路選區,或增加電阻,電容等器件,這個系統才能完美工作!
三:設計低功耗常用思路
如何利用萬用表測試一臺機器在穩定電壓下的功耗:把FLUK萬用表跳到電流檔(注意表筆的插頭搖換到電流檔)的紅表筆接到電源的正極(用黑表筆接正也不會有危險),然后用黑表筆接到機器的正極,然后把電源的負極接到機器的地端,就可以測電流了。
四:設計低功耗常用思路
降低功耗不光能夠大大的節約電能還能簡化電源部分的設計,甚至可以用于手持設備上面使用,這些都已經越來越成為未來產 品的設計方向了^_^
1 降低功耗從MCU選型開始,一開始選型的時候就應該考慮選擇低功耗的MCU比如MSP430一類的為低功耗設計的CPU。 強烈不建議使用51一方面是因為51速度慢,另外一方面是因為51的IO是有上拉電阻的,雖然當IO為高電平是上拉電阻不費電,但是下拉電流的時候卻也有不小的功耗產生。還有一點就是51的運算速度實在是太慢了,很多運算用51都需要很高的 主頻而主頻高了就意味著高的功耗。
2 選擇器件用電電壓,很明顯降低器件的用電電壓能夠明顯的降低器件的耗電比如說ATmega8和ATmega88雖然芯片大致內部結構 一致但是后者可以工作在1.8V的超低電壓下而前者就不行,綜合考慮下當然還是選擇后者。
3 盡量降低器件的工作頻率,大家都知道CMOS電路的工作電流主要來此于開關轉換時對后一級輸入端的電容充放電,如果能夠 降低MCU的工作頻率自然耗電也就下來了。要知道當AVR工作在32.768Hz時和工作在20Mhz時的工作電流差異可不是一般的小啊 。
4 盡量使用中斷讓處理器進入更深的睡眠,眾所周知睡眠模式和掉電模式能夠大大的降低MCU的工作電流,聰明的單片機設計師能夠充分的利用MCU的中斷功能讓MCU周期性的工作和睡眠從而大大的降低MCU的工作電流。
5 盡量關閉MCU內部不用的資源,這個嗎,地球人都知道的好處,我說這個有點像廢話一樣,不用的東西你干嗎開著呢 ?比如ATmega8內部的模擬比較器,默認是開著的還有ATmega88內部的大多數資源都可以在不用的時候用軟件關閉。
6 盡量使用VMOS做為外部功率擴展器件,道理很簡單VMOS驅動的時候是電壓行器件驅動是幾乎不產生功耗,要比普通的晶體管 省電多了。而且由于VMOS的導通內阻低通常只有幾十個毫歐,在小電流的時候器件自身發熱也小,尤其是小電流是效率遠比 傳統晶體管要高的多的多。這里還是建議使用高速VMOS,因為高速VMOS在開關速度相當高的PWM時效率會更高。
7 片外IC的電源最好都能由MCU的IO控制比如說我們常用的24C02,由于它是掉電記憶的,所以我們完全可以在它不工作的時候 對它關電源,以節約電流還有比如說我們常用的6116的SRAM我們完全可以用單片機來控制它的片選端口來控制它的工作與休 眠從而節約電流。
8 這招也是最毒辣的一招通常我們驅動一些LED器件,完全可以通過PWM來控制從而省略限流電阻,要知道當器件選定后它的內 阻也就已經確定,而當電源電壓也確定的時候,就可以通過占空比來確定器件上的電壓從而節約了限流電阻同時也就節約了限 流電阻上面的功耗,如果用戶使用的是電池,我們完全還可以不定期的對電池電壓進行檢測然后改變占空比,從而恒定負載上 面的電壓,達到電源的最大利用率。