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