現在,有許多單片機應用領域,都是用電池供電,節能成為設計工程師普遍關心的問題。希
望大家就這方面展開討論。
以下提供一些討論的方向:
1、如何降低系統功耗?(軟件?硬件?)
2、各位在這方面有何經驗教訓?(可以拿出來與大家分享)
3、各種芯片的功耗比較?
4、SLEEP模式應用的注意事項?
5、一些新型的節能器件的介紹?
6、其它與低功耗設計相關的話題?……
進入掉電模式
現在有很多的低功耗的片子,特別是在進入掉電模式之后,只有1uA的電流。也可以使用電源管理
的方法,在不工作的時候,把系統電源關斷,這樣更省電
我用了很久51芯片,本來對它的功耗非常不滿,但是因為其價格越來越便宜,本身的性價比依舊
很好,所以總也甩不掉。
1、休眠。一般的系統都不會到了忙不過來的地步,適當的休眠還是可以節省一些功耗的,在一些
簡單的系統,多抽時間休眠成了省電的關鍵,你看別的芯片都不耗電,只有單片機了,它就是關
鍵了,在有些時候,提高主頻反而會獲取更多的休眠時間,反而使系統功耗更小了。但是值得注
意的是,經常性的切換休眠和工作狀態會讓電源產生mV級的波動,特別對于很多線性穩壓器只有
100mA以內的輸出能力的情況更明顯,這樣的波動或許會影響系統內的AD和一些其他模擬電路,
值得注意。
2、掉電。如果進入了掉電模式,很多51芯片是無法通過中斷重新開始工作的,可以外加一個微功
耗的單片機來提供復位,這個單片機只負責鍵盤掃描和復位51單片機,以及發送鍵盤編碼到51芯
片。 我以前見過一個手持設備,耗電很小,但是包括了大容量存儲、顯示、輸入、數據輸出、檢
索等功能,平時89C51總是處于掉電狀態,但是有了鍵盤操作后,就復位開始運行,處理完鍵盤送
來的任務之后又自動掉電了。
3、復雜運算。復雜運算(譬如指數運算、浮點乘除)一定會占據更多系統時序,響應減少休眠時
間,可以通過查表方式,這樣用大容量的表格代替了現場計算,更多的時間不就可以睡覺了嗎?
4、如果軟件任務少到一定程度,那么可以考慮把晶體搞到32k去運行,其實這樣更省電,但是這
意味著51軟件基本沒什么高速的事情做,也不需要串行通信,否則,還是老老實實面對現實吧。
我覺得,51芯片用于電池供電的系統不是很合適,但是從開發周期看,它的開發環境很好,畢竟
可以承載8位機的相對大型的應用,有時候又不得不用它。我覺得距離51最靠近的AVR單片機更適
合將來的應用,因為其性能價格比相對其他單片機還是不錯的,除非51芯片可以將來做到在3MIP
下,工作電流小于2mA,休眠電流小于500uA,掉電電流小于10uA。
在很多的設計中,采用線性降壓的方法,電源損耗大,如提高供電電壓,并用高效率的DC-DC電
源,可延長電源使用的時間
89C8252掉電工作,看門狗做“系統運行時鐘”同時把看門狗復位“軟件模擬成看門狗中斷”
“狗”叫一次跳起來看看,“RAM值班室登個記”,同時還登記下當前PC+1的值,然后“睡死”
過去!
平均功耗不大于5V/0。3MA,而且有很強的抗干擾性!
軟件優化很重要!
如64MS一次“狗”叫!起來做40條指令,24MHZ下最多:40*0。5=20US
于是占空比:20/64000=1/3200 即平均電流下降3200倍!!!
外設會受復位改變嗎?當然!但鎖存器干什么?!
如何知道程序能運行多久?下一條運行指令運行到那?
如果任何時刻,你自己編的程序運行在那個片區,你都不知道,那還叫什么搞軟硬件的要天人合
一?!
系統任務不忙的情況下,你的看門狗定時復位方法還可以,但是。。。好多情況下似乎做不到呀
我的51系統只有200微安
省電是個大難題,特別是51,但只有用心還是可以做到的,特別是工作任務少的時候。我的一個
水文遙測系統,用12伏電池供電耗電只有200微安,有8Mbit data flash,一個調制解調器,一
個時鐘,一個485通信口,一個232通信口,還有6個數碼管,是不是夠多的了,但它們平時都不
工作,我也是用看門狗復位來喚醒51單片機的,每1.6秒一次,用的是x25045,可是25045的復位
時間有200毫秒之多,實驗發現,51從掉電返回到正常工作只要有30個毫秒足了,別小看節省的
這一百多毫秒,因為51在每次醒來是只要發現沒有任務就可以馬上POWERDOWN了,所以加了一個
CMOS的單穩來復位。其它的就是口線的狀態一定要注意,不要讓它吸收電流也不要輸出電流,要
是做不到可以試著加一此電路,如反相器.
穩壓電源是個要權衡的事,雖然開關穩壓有較高的效率,但在低功耗設計不一定對,開關電源本
身消耗的電流就是一個大問題,一個微安級的系統也許要特別對待,我用的是max667線性穩壓數
微安靜態電流.我想開關電源做不到
對于外部事務頻繁的應用,無法使用掉電方式
雖然很多51芯片支持外中斷觸發芯片脫離POWER DOWN狀態(如華邦的W78E58、W77E58),但還
是解決不了串行通信的問題,而且對于需要內部精確定時的場合,從POWER DOWN到正常工作需要
很長時間,這個恐怕還是難于讓人接受。莫非沒有一個廠家可以產出高速小功耗的51芯片?沒到
理呀,PHILIPS不是玩了很久嗎?怎么弄出的芯片在12MHz下還是大于10mA,休眠也有幾個mA,這
也吹牛沒下功夫嘛!
用51做低功耗,太累了
低功耗多得是,象PIC、EMC輕松做到20uA以下,51有POWER DOWN,但只能復位喚醒,有少數可
用INT喚醒,太麻煩。有些有雙晶體的單片機,做低功耗最簡單,平時用32768工作也只有20uA,
這種單片機一般帶有LCD。EMC內有PLL單片機做功耗系統很方便,象78565,567,功能強價格低
samgsung的單片機可以做到
565匠人也用過。平時進IDLE模式,功耗只有幾個UA
分級供電和外部喚醒確是一種可行的辦法
在分級供電中要注意的是如果電源是小電流的穩壓器件最好有一個比較大的蓄電電路,要不然
單片機喚醒和上電時可能會起動不了,而且可能會進入一個不希望的振蕩期,比如單片機要起
振,電流增大,這時電源供不起,電壓就下降,引起的是單片機又停振電壓又回升!所以一個合
理的電源管理電路就顯得很關鍵,這方面的專業IC將是未來一個很有前途的產業!這個IC應有一
個內部低速的定時器和一個專門的蓄電管理電路,當電路進入低功耗后應該將蓄電電路沖滿以備
喚醒和大功耗時用,這種電路主要用于小電流供電的環境,它可以為小電流供電環境提供一個短
時間的大電流工作。 另外單片機的耗電除了核本身的耗電外,大多是IO口的耗電,大家可以
通過降低主頻,將IO口置在比較合適的狀態來達到一個比較省心又省力的方式。而且不全理的頻
繁喚醒有時會帶來更多的電耗!
用TI的單片機MSP430系列非常省電。正常工作時幾百微安,掉電時約1微安
87LPC76X低功耗51,32k時20uA
使用雙振的單片機,在系統不忙的時候使用32768的晶振,同時進入SLEEP這樣處理通常耗電都在
幾個uA.在處理SLEEP喚醒后的程序需要小心處理,特別是臺灣的單片機,有時廠家給出的資料都
要小心,我碰到過。
我不知道您是用的哪家的51單片機,功耗能做到這么低。據我所知ATMEL89C52 Powerdown mode
下最少是40微安。您的系統中有這么多的器件,即使都是低功耗可關斷的器件,那你的系統每次
工作時都要啟動所有的器件才能運轉起來,這個啟動過程是多長呢?還有您的單片機不會工作在
12V的,你還需要一個電壓變換器,它平時不用電的嗎?你的CMOS單穩不用電的嗎?據我所知常
用的485,232,modem,flash都不是低功耗可關斷的,如果您都使用的是特殊器件,那實用的意
義何在呢?或者您使用了其他器件來控制這些耗電多的設備,那您一定是硬件高手了?煞裰更c
一二?
高速51: C8051FXXX在1M指令流下,VDD僅僅1.5mA
用IO口控制RC振蕩頻率?
用RC振蕩方式,并將IOSI口接一個電阻到IO口上。通過切換IO口的電平來切換頻率,方法如
下: 功耗,在電池供電的儀器儀表中是一個重要的考慮因素。PIC16C××系列單片
機本身的功耗較低(在5V,4MHz振蕩頻率時工作電流小于2mA)。為進一步降低功耗,在保證滿
足工作要求的前提下,可采用降低工作頻率的方法,工作頻率的下降可大大降低功耗(如PIC16C
××在3V,32kHz下工作,其電流可減小到15μA),但較低的工作頻率可能導致部分子程序(如
數學計算)需占用較多的時間。在這種情況下,當單片機的振蕩方式采用RC電路形式時,可以采
用中途提高工作頻率的辦法來解決。 具體做法是在閑置的一個
I/O腳(如RB1)和OSC1管腳之間跨接一電阻(R1),如圖1所示。低速狀態置RB1=0。需進行快速
運算時先置RB1=1,由于充電時,電容電壓上升得快,工作頻率增高,運算時間減少,運算結束又
置RB1=0,進入低速、低功耗狀態。工作頻率的變化量依R1的阻值而定(注意R1不能選得太小,
以防振蕩電路不起振,一般選取大于5kΩ)。
改用C8051Fxxx,20MHz 僅僅10mA,若降到1MHz,可以做到1~2mA;
2. 或是干脆采用MSP430,一般<1mA,稍稍采取措施,馬上可以接近零功耗!
大家不要以為更換CPU是很難的事情,我們僅僅用2周就更換成功CPU
先天不足,51低功耗沒前途的
msp430,m16等有很多低功耗單片機,功能強,又是精簡指令,全天uA級工作
成本也是關鍵,不一定非要低功耗器件。
我覺得要很好的利用單片機的中斷和休眠功能,單片機盡可能的處于休眠等待狀態,同時注意空
閑IO口的狀態,輸出的最好置低,輸入的要視外圍電路而定,不用的腳要處理好,不是簡單不接
就可以的
另外,外圍電路可以做分區域的電源開關,不用時,關閉電源,并將與其相連的單片機的IO口置
低,減少信號線饋電。
不知說的對不對。
剛開始做電池產品時,只有8031 ,考慮用PSEN什么的控制外部RAM,休眠方式,但是還是在十毫
安級. 現在好了,有許多型號單片機本身就是低功耗,為了減少體積,還要追求更低. 1.系統
設計,好的系統設計是降低功耗的關鍵. 減少外圍器件,降低晶體頻率.可以采用帶lcd,ad,實時
時鐘功能的單片機,即降低成本,又減少了故障率,可謂一舉兩得.HOLTEL,PHILIPS,PIC 都有此類
單片機. 低的主頻也可以降低功耗,如ZILOG的單片機可以程序控制對主頻的分頻,在不忙時把
頻率降低,需要時在提高. HOLTEK的可以采用雙頻率工作,高主頻可以關閉,32768可以提供內部精
確計時,還可以激活休眠的單片機工作. 2.降低系統電壓,可以降低功耗. 3.合理處理不用
的IO口,最好設為輸入態.對外圍電路也要考慮,如光耦,盡量使其導通態<斷開態.驅動三極管的狀
態.還有就是上拉,下拉電阻值,太小也會造成漏電.
Mega8的一個特點是帶有內部的RC振蕩器,別小看他,他與晶振的不同之處在于他的起振時間很
短,只要幾uS,而晶振一般要幾十mS,所以低功耗設計時一定要用,430的宣傳不是也講起動時
間6uS嗎,那一樣是指的RC振蕩開始工作的時間。
我得設計靜態電流50uA,實際只是LCD模塊的電流,單片機平時處在掉電的狀態。每隔1S倍液晶
模塊喚醒一次,作一次顯示的刷新工作,耗時約4mS,正常工作時如果有脈沖來的話,就作一些運
算,脈沖頻率50Hz,每次運算不過200uS,這樣下來,正極的功耗大大降低,加上一些外圍電
路,平均在100uA以下。
低功耗設計
現象一:我們這系統是220V供電,就不用在乎功耗問題了
點評:低功耗設計并不僅僅是為了省電,更多的好處在于降低了電源模塊及散熱系統的成
本、由于電流的減小也減少了電磁輻射和熱噪聲的干擾。隨著設備溫度的降低,器件壽命則
相應延長(半導體器件的工作溫度每提高10度,壽命則縮短一半)
現象二:這些總線信號都用電阻拉一下,感覺放心些
點評:信號需要上下拉的原因很多,但也不是個個都要拉。上下拉電阻拉一個單純的輸入信
號,電流也就幾十微安以下,但拉一個被驅動了的信號,其電流將達毫安級,現在的系統常
常是地址數據各32位,可能還有244/245隔離后的總線及其它信號,都上拉的話,幾瓦的功
耗就耗在這些電阻上了(不要用8毛錢一度電的觀念來對待這幾瓦的功耗)。
現象三:CPU和FPGA的這些不用的I/O口怎么處理呢?先讓它空著吧,以后再說
點評:不用的I/O口如果懸空的話,受外界的一點點干擾就可能成為反復振蕩的輸入信號
了,而MOS器件的功耗基本取決于門電路的翻轉次數。如果把它上拉的話,每個引腳也會有
微安級的電流,所以最好的辦法是設成輸出(當然外面不能接其它有驅動的信號)
現象四:這款FPGA還剩這么多門用不完,可盡情發揮吧
點評:FGPA的功耗與被使用的觸發器數量及其翻轉次數成正比,所以同一型號的FPGA在不同
電路不同時刻的功耗可能相差100倍。盡量減少高速翻轉的觸發器數量是降低FPGA功耗的根
本方法。
現象五:這些小芯片的功耗都很低,不用考慮
點評:對于內部不太復雜的芯片功耗是很難確定的,它主要由引腳上的電流確定,一個
ABT16244,沒有負載的話耗電大概不到1毫安,但它的指標是每個腳可驅動60毫安的負載
(如匹配幾十歐姆的電阻),即滿負荷的功耗最大可達60*16=960mA,當然只是電源電流這
么大,熱量都落到負載身上了。
現象六:存儲器有這么多控制信號,我這塊板子只需要用OE和WE信號就可以了,片選就接地
吧,這樣讀操作時數據出來得快多了。
點評:大部分存儲器的功耗在片選有效時(不論OE和WE如何)將比片選無效時大100倍以
上,所以應盡可能使用CS來控制芯片,并且在滿足其它要求的情況下盡可能縮短片選脈沖的
寬度。
現象七:這些信號怎么都有過沖?只要匹配得好,就可消除了
點評:除了少數特定信號外(如100BASE-T、CML),都是有過沖的,只要不是很大,并不一
定都需要匹配,即使匹配也并非要匹配得最好。象TTL的輸出阻抗不到50歐姆,有的甚至20
歐姆,如果也用這么大的匹配電阻的話,那電流就非常大了,功耗是無法接受的,另外信號
幅度也將小得不能用,再說一般信號在輸出高電平和輸出低電平時的輸出阻抗并不相同,也
沒辦法做到完全匹配。所以對TTL、LVDS、422等信號的匹配只要做到過沖可以接受即可。
現象八:降低功耗都是硬件人員的事,與軟件沒關系
點評:硬件只是搭個舞臺,唱戲的卻是軟件,總線上幾乎每一個芯片的訪問、每一個信號的
翻轉差不多都由軟件控制的,如果軟件能減少外存的訪問次數(多使用寄存器變量、多使用
內部CACHE等)、及時響應中斷(中斷往往是低電平有效并帶有上拉電阻)及其它爭對具體
單板的特定措施都將對降低功耗作出很大的貢獻。