<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 電源與新能源 > 設計應用 > 如何延長微控制器設備的電池壽命

          如何延長微控制器設備的電池壽命

          作者: 時間:2012-05-10 來源:網(wǎng)絡 收藏

          供電,不管是電動牙刷、剃須刀、手機、個人數(shù)字助理(PDA)、MP3播放器,還是手無法夠到的遙控,都成為人們?nèi)粘I畹囊徊糠?。因此,電源管理對當今的嵌入式設計工程師來說是一件相當重要的的事。普遍存在的微在許多的應用中為設計工程師提供了大量管理電源要求的方法。不同種類的MCU自身就擁有一系列節(jié)省電流消耗及許多節(jié)能特性。但是,在基于微的設計中,對電源的管理不僅僅是選擇一個正確的微這么簡單。

          本文引用地址:http://www.ex-cimer.com/article/177292.htm

            電源管理同樣也需要最有效地使用MCU自身的降低電流消耗及節(jié)能特性的發(fā)展策略。在系統(tǒng)層面上,即使你所選擇的MCU是獨立的,同樣能夠使用許多策略來進一步您的應用設備的。

            應用實例:無線自行車里程表

            接下來,我們將以無線自行車里程表為例,來展示有效的電源管理。該里程表由三部分模塊組成:一個位于車把上的控制面板,一個位于車輪中的速度傳感器及一個位于騎車者頭盔上的顯示器。

            速度傳感器將自行車的轉(zhuǎn)速反饋給控制面板,控制面板則計算諸如:行車速度、行車里程、行車時間及能量消耗此類信息,并將計算好的信息傳達給顯示器。下方圖1為一個自行車里程表控制面板的方框圖。

            


            圖1:無線自行車里程表控制面板方框圖,顯示了當今MCU不斷增強的電源管理特性。

            低功耗模式數(shù)量的增加

            MCU幾何形狀趨小型化,以減小芯片面積,這會導致晶體管無法承受3V或3V以上電壓的直接作用。因此,就要在內(nèi)部邏輯中使用電壓調(diào)整器來降低電壓。

            遺憾的是,這些電壓調(diào)整器會加大MCU的電流消耗。但是,由于功率大小等于電壓乘以電流,因此一個帶有調(diào)整器的1.8V至3V的系統(tǒng)功耗仍比一個不帶調(diào)整器的5V的系統(tǒng)功耗要低。

            MCU很強地依賴于電源管理模式,在降低整體的工作電流的同時仍能支持調(diào)節(jié)電源和加快時鐘速度。新型MCU能夠提供許多低功耗模式來滿足這 些要求,同時保持系統(tǒng)靈活性。飛思卡爾公司的MC9S08GB60 MCU有四種低功耗模式:深度停止狀態(tài)(stop1)、中度停止狀態(tài)(stop2)、輕度停止狀態(tài)(stop3)和等待模式。

            在等待模式下,通過關閉CPU時鐘來降低功耗,但是系統(tǒng)時鐘由其它MCU外設來支持工作,如:模-數(shù)(A-D)轉(zhuǎn)換器、計時器或串行通信模塊。該模式在外設需要工作的情況下用于降低功耗是相當有效的,但是CPU在外設完成任務之前不能工作。

            在我們的例子中,等待模式在串行外設接口(SPI)用于與射頻(RF)收發(fā)器通信情況下使用。

            要想更進一步降低功耗,可使用三種停止模式。Stop1、Stop2、Stop3分別提供不同級別的降低功耗操作。

            Stop3是三種停止模式中功能性最強的一個。在Stop3模式下,片上電壓調(diào)整器處于省電模式,但仍能提供最低限度的調(diào)節(jié)來保留隨機存儲器(RAM)和輸入/輸出(I/O)寄存器的內(nèi)容。幾個中斷源和復位能夠?qū)CU從Stop3模式下喚醒。Stop3 是三種停止模式中唯一一個低電壓抑制(LVI)模塊和晶振仍能工作的模式。

            在我們的例子中,在從速度傳感器讀取速度值之間的一段時間里,MCU處于等待狀態(tài),此時可使用Stop3模式。Stop3模式下工作的實時接口(RTI)功能可用于及時喚醒MCU以進行下次讀取。

            Stop2的功能性較之Stop3要弱些,但其功耗更低。在Stop2模式下,電壓調(diào)整器處于節(jié)電(powered down)狀態(tài)。但是,RAM內(nèi)容仍然保存著。I/O寄存器也處于節(jié)電狀態(tài),并且當它從停止模式被喚醒時需要進行重新配置。在Stop2中,能夠喚醒 MCU的中斷源更少,但是仍具有RTI功能?;氐轿覀兊睦又衼砜?,Stop2可取代Stop3來更進一步降低功耗。由于該模式下RTI功能和RAM仍在 工作,所以速度讀取之間的時間仍可被測得。

            Stop1是MCU中功耗最低的模式。在該模式下,電壓調(diào)整器及所有外設、CPU、RAM和I/O都完全進入節(jié)電狀態(tài)。只有復位和IRQ中斷腳能夠喚醒MCU。當MCU能夠進入節(jié)電狀態(tài),但在外部激勵下,如按下按鈕的情況下仍需做出反應時可用Stop1模式。

            在自行車里程表這個例子中,當里程表處于節(jié)電狀態(tài)時可進入Stop1模式。節(jié)電狀態(tài)下的Stop1模式是MCU中可能存在的功耗最小的模式,而不需從芯片上切斷電源。為什么不從芯片上將電源徹底切斷呢?因為從芯片上切斷電源需要使用一個更為昂貴的撥動開關。

            同樣的,MCU可使用一個與中斷腳相連的按鈕開關來實現(xiàn)許多不同的作用。這些不同的作用取決于系統(tǒng)當前的狀態(tài)。因此,Stop1模式能夠保持設計簡單、成本低廉、并且?guī)缀醪幌碾娏?,堪稱完美。

            時鐘管理

            許多設計師將低功耗與低時鐘頻率等同起來。而事實上,根據(jù)MCU正在進行的不同操作及MCU可使用何種低功耗模式,以最高的速度工作事實上能夠降低功耗。

            如果MCU擁有一個有效的低功耗模式,那么使它最長時間地處于該模式下能夠最大限度地降低功耗。因此,如果CPU在返回睡眠模式之前需要執(zhí)行代碼,那么以可能的最高速度完成代碼執(zhí)行,然后返回低功耗模式比持續(xù)以低速度工作消耗的電流少。

            讓我們再來看看自行車里程表這個例子,假設控制面板每秒鐘更新速度一次,并且需要循環(huán)16,000個總線周期來計算數(shù)據(jù)并在顯示器上顯示出 來。由典型的32kHz晶體工作,并且假設有一個普通的一分為二的總線時鐘,我們就能夠擁有16KHz的總線,在這種情況下,需要使用整整一秒鐘來完成計 算。

            現(xiàn)在,如果我們可以使用8MHz的總線時鐘,就可以僅花費2毫秒來完成計算,剩余的998毫秒可處于低功耗模式下。

            當然,并非MCU須執(zhí)行的每項任務都會得益于高速性能。在我們的例子中,如果數(shù)據(jù)速度相當?shù)穆?,無線通信所需的時間可能不需要8MHz的總線速率。因此,在這種情況下,要想將功耗最小化,我們就應該盡可能慢地運行MCU,直至無線通信結(jié)束。

            因此,我們需要一個時鐘靈活的MCU,如飛思卡爾公司的MC9S08GB60 MCU。擁有該設備,您可以使用高頻晶體、低頻晶體或內(nèi)部振蕩器。

            擁有任一此類時鐘源,就可以隨意地使用片上頻率鎖定環(huán)(FLL)使總線速度成倍地升高或降低,來滿足任務需求并且使功耗達到最小化。圖2為自行車里程表例子中不同操作模式下功耗的改變情況。

            

            圖2:在自行車里程表例子中,通過高活性短脈沖及時間更長的非活性低功耗模式之間的轉(zhuǎn)化來進行電源管理的圖。

          pid控制器相關文章:pid控制器原理



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術(shù)專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();