新聞中心

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

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

        作者: 時間:2012-05-10 來源:網絡 收藏

        的系統硬件策略

        本文引用地址:http://www.104case.com/article/177292.htm

          除了低功耗模式及時鐘管理以外,想要使功耗最小化還應在設計時考慮許多硬件和軟件方面的因素。從硬件角度來看,控制好MCU內外的外設功耗能夠在很大程度上降低整體功耗。

          禁止片上外設使用MCU控制寄存器是一個很直接的方法,但該方法的效果可能沒有直接禁用MCU外部外設那么明顯。使用通用的I/O引腳,可以控制外部電路的功耗。

          里程表例子中是通過速度傳感器來測量車輪的速度。這可以通過將LED和光傳感器安裝于車架上,并將槽盤安裝于車輪中來實現。持續工作的LED和光傳感器將會消耗大量的電流。而使用I/O引腳,使LED和光傳感器只在進行速度測量時工作,就將會大大降低電流。

          當前,分立元器件,如LED和光傳感器可以明顯地控制I/O,但僅限于能夠以類似模式控制的電路。如果這些器件需要的電流大于MCU能夠直接提供的電流,就可以使用緩沖器作為這些電路的電源開關。在某些情況下,將幾個I/O腳并聯在一起就能夠提供足夠的電流。

          速度傳感器同樣有另一方法可以降低電流。如果持續讀取光傳感器來檢查光線是否穿過槽盤,那么MCU必須一直處于更高電流的工作模式。由于我 們所關心的僅僅是從亮到暗或從暗到亮的轉變點,因此可以使用中斷來代替持續輪詢。中斷使MCU進入一個低功耗的等待模式。MCU的計時器可以持續計數,并 且通過使用與光傳感器輸出相連的一個輸入捕捉特性,我們很容易就能夠測出速度傳感器的亮/暗時間,進而算出每分鐘轉速(RPM)。

          如果配置不當的話,MCU的I/O腳自身就會成為過載電流源。不用的引腳應即時關閉,避免浮動輸入造成一個大的電流路徑。在使用采取多種封裝形式的MCU時,這一點常常會被忽略。

          我們常常容易忘記最高引腳數版本的封裝中,可用引腳仍在較低引腳數版本的封裝硅片上。任何浮動的輸入引腳都會阻礙過載電流源電流的流出,在 某些情況下阻礙作用會高許多倍,如溫度變化的情況下。在這些情況下,應啟動內部上拉或者如果該引腳是I/O引腳,可將其配置成輸出引腳(如果該引腳驅動的 是開路,則與數據無關)。

          的系統軟件策略

          從軟件角度來看,有一些明顯的降低功耗的竅門。如前所述,保存能量的最佳方法就是盡可能長時間地處于最低功耗狀態。

          由于在工作狀態下,CPU活躍地執行各種指令,永遠不會處于最低功耗狀態中。因此,我們必須將CPU需要執行的工作量最小化。這就應該使CPU更快地完成其任務,讓MCU迅速返回低功耗模式中。

          這兒有一些降低CPU工作時間的技巧。盡量使用最短的數據類型。當寫入C代碼時,我們很容易忘記一點,即普通的整數常常被定義為16位或32位的數字,即使是在8位MCU的編譯器中亦是如此。

          對于8位的器件,應默認使用8位字符類型,除非必須使用更長的字節。即使字節長度需要更長,同樣可以通過將16位或32位數字分解成幾個8位片段,只在數據處理最后階段才將其連接起來的方法就可以降低代碼長度。

          如果有額外的內存來使用直接插入碼,就應避免使用短循環或子程序調用。每個循環和子程序都會使用額外的CPU周期來確認循環是否完成,或者是將程序計數器推入堆棧和彈出堆棧。

          如果你知道一個短循環只會執行四次,那么就在一行之內寫入四次相同的代碼,而避免使用for-next或while-loop循環語句。如果一個子程序只有10或20比特的代碼,考慮將其直接插入以取代使用子程序。在簡單的任務中,這種方法將大大降低CPU負載。

          在適當的時候將數值預先計算好?;氐轿覀兊淖孕熊嚴锍瘫砝又?,根據主控制面板是與顯示器還是與速度傳感器進行對話,假設RF鏈路分別采用兩種波特率。當寫入C代碼時,將實際波特率代替串行接口所需的實際預算數值傳輸給串行接口設置程序可能更好。

          畢竟這會使代碼的可讀性更強些。但是,這同樣也導致串行接口程序不得不在波特率每次發生改變時都根據新的波特率計算出預算數值。將預算數值預先算好并傳輸給串行設置程序將會減少CPU周期和代碼長度。

          要考慮使用查表方法取代復雜的計算。如飛思卡爾公司HCS08家族的MCU就擁有非常有效的訪問表格數據的指令和尋址模式。根據計算的復雜 性,該方法能夠節省一些CPU的計算。如果計算仍不可避免,那么就應在程序開始之前確保盡早退出計算。 簡單的例子是通過“1”或“0”搜索乘法運算。

          本文小結

          當今的多功能微能夠為供電應用的設計工程師提供許多此類的方法。多種低功耗模式和靈活的時鐘源讓設計工程師能夠 對節能和所需的性能進行管理,以實現設計目標。當CPU要求高時進行高速運作,反之則進行低速運作。要在任何可能的時候轉入低功耗模式。

          除了對MCU自身功耗進行管理之外,通過深謀遠慮的系統規劃可使MCU管理整個系統的功耗。MCU能夠在需要時使系統內的和電路開始運作或停止運作,幾乎如同MCU管理其片上外設一樣簡單。

          不可忽視的是,軟件工程師們可以通過建立CPU周期意識來延長電池使用壽命。CPU所執行的指令越少,MCU就能夠越快地進入低功耗模式。 創造許多簡單的函數可以縮短代碼長度,但是卻斷送了縮短電池壽命的努力。另一方面,盡可能使用最短的數據類型會在縮短代碼長度的同時延長電池壽命。

          因此,下次選用電池供電系統設計時,別忘了對您的MCU做出明智的選擇,同時使用MCU能夠提供的所有功能來管理整個系統的功耗。

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



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 安泽县| 巴楚县| 大洼县| 祁阳县| 繁昌县| 游戏| 赤壁市| 绥棱县| 临潭县| 七台河市| 靖西县| 安康市| 临城县| 团风县| 宁远县| 绥宁县| 永顺县| 禹州市| 荥阳市| 张家界市| 丰都县| 海丰县| 卫辉市| 扶余县| 屏边| 平昌县| 即墨市| 襄垣县| 噶尔县| 鸡东县| 墨玉县| 德格县| 邳州市| 普兰县| 桐城市| 红安县| 旬邑县| 安国市| 右玉县| 平潭县| 鱼台县|