手持式終端設備中電源監(jiān)測技術研究與實現(xiàn)
0 引言
隨著數(shù)字信息技術和網絡技術的高速發(fā)展,各種嵌人式系統(tǒng)已成為了市場的新焦點。鑒于嵌入式系統(tǒng)是對功能、可靠性、成本、體積和功耗等有嚴格要求的專用計算機系統(tǒng),因此降低其系統(tǒng)功耗、提高內置電源持續(xù)工作的能力就成為一項重要的研究內容。
與筆記本電腦類似,嵌入式系統(tǒng)通常配備一個由多只電池串聯(lián)組成的整體式電池包 .當經過反復充電使用而其主要參數(shù)不再滿足整個系統(tǒng)要求時,必須更換整個電池包。一般說來,由于電池包內部各個電池之間的電氣參數(shù)略有差異,很難使得每個單體都得到平衡、充分的放電,進而導致在電池組充電的過程中,電壓過高的電池芯可能提早觸發(fā)電池組過充電保護,而在放電過程中電壓過低的電池芯又可能首先導致電池組的過放電保護,從而使電池組的整體容量明顯下降,使得整個電池組的實際容量常為電池組中性能最差的電池所限。
針對上述問題,目前常用兩種解決方法:
①研究或選用新型電池,盡量減小個體差異并從整體上提高電池的額定容量,例如由最初的鎳鎘、鎳氫電池發(fā)展到現(xiàn)在主流的鋰電池;②提高電池芯的利用率,即利用監(jiān)測技術探察每個電池芯的工作狀況。若有部分電池芯過早地放電結束或者出現(xiàn)問題時,能夠自動檢測并予以提示,此時只需進行個別更換即可同樣保證系統(tǒng)正常工作。
對于普通用戶而言,難以直接涉足前者所屬的相關領域,而后者所述方式能夠較為方便、容易地得到實現(xiàn)。由此一來,可望較好地解決前述問題,同時避免了電池組整體更換時其中的正常電池也連帶報廢的現(xiàn)象,進而提高電池利用率。此外,尚可解決專用電池成本較高、購買不易的問題,以便有效降低系統(tǒng)的維護成本。
1 監(jiān)測系統(tǒng)工作原理與電路設計
結合一個具體的手持/嵌入式超級終端系統(tǒng),文中對其內置電源的監(jiān)測模式進行了較為詳盡的研究。
因其使用通用的五號可充電電池,所以可按第二方法考慮解決電池的使用和更換問題,進而基于LinuX操作系統(tǒng)較好地實現(xiàn)了相應的"電池管理與更換提示"功能。
1.1 監(jiān)測系統(tǒng)工作原理
本系統(tǒng)采用12節(jié)額定電壓為1.2V的鎳氫電池串聯(lián)供電,并通過專門設定的12個監(jiān)測點逐一監(jiān)測。
監(jiān)測點上的模擬電壓值通過多路開關和輔助電路輸入ARM芯片S3C2410x自帶的AD轉換器,再經Linux(驅動程序和GPIO端讀取相應監(jiān)測點的電壓值,傳遞給數(shù)據(jù)處理和圖形顯示等應用程序,從而實現(xiàn)了電源的監(jiān)測。具體方法如圖1所示。
圖1 電源監(jiān)測系統(tǒng)電路圖
1.2 AD轉換與輔助電路
監(jiān)測系統(tǒng)利用S3C2410x自帶的AD轉換器將模擬電壓輸入轉換為應用程序所需要的數(shù)據(jù)。芯片自帶AD轉換器為8路模擬輸入、10bit數(shù)字輸出,最大轉換率為500ksps,轉換時鐘為2.5MHz,模擬輸入范圍為0-3.3V.本系統(tǒng)所需要監(jiān)測的電壓范圍為0~14。
4V,針對這種情況,本系統(tǒng)設汁了分壓電路,在應用程序中只需要利用比例公式就能計算出各個監(jiān)測點的實際電壓值。并且,考慮到監(jiān)測精確度和電路功耗的因素,把分壓電路的總電阻定為4.5kQ.這樣一來,對應的模擬輸人電壓值范圍為0.26-3.2V,以便充分利用的AD轉換器的輸入帶寬。此時電路的耗損功率僅為0.04608W。
1.3 控制電路
利用S3C2410x的GPIO端口控制選通多路門開關電路,監(jiān)測系統(tǒng)可以隨機地提取不同監(jiān)測點的電壓值。選通邏輯通過譯碼實現(xiàn),如表1所示。
表1 選通邏輯
[!--empirenews.page--]
2 電源監(jiān)測系統(tǒng)驅動程序設計
鑒于文中所述的超級終端系在Linux環(huán)境下運行,各個檢測環(huán)節(jié)的驅動程序和相關的實施策略、編寫方法亦多有特點,現(xiàn)詳細描述如下。
2.1 Linux驅動程序工作原理
在Linux內核中,設備驅動程序是作為文件系統(tǒng)的一個模塊存在的,它對下負責與硬件設備的交互,對上通過一個通用的接口掛接到文件系統(tǒng)上,從而和系統(tǒng)的內核等聯(lián)系起來。它是軟件概念和硬件設備間的一個抽象層。系統(tǒng)調用是內核和應用程序之間的接口,而設備驅動程序則是內核和外設之間的接口。
設備驅動程序為應用程序屏蔽了外設硬件的細節(jié),從應用程序角度來看,對于外設的操作方法與普通文件一樣。設備驅動程序與系統(tǒng)外設關系如圖2所示。
圖2 Linux驅動程序與系統(tǒng)外設關系圖
2.2 字符設備
字符設備是Linux系統(tǒng)中最簡單的設備,可以像文件一樣訪問。當字符設備初始化的時候,其驅動程序向Linux核心登記,在chrdevs向量表中增加一個device_STruct數(shù)據(jù)結構條目。這個設備的主設備標識符用作這個向量表的索引。一個設備的主設備標識符是固定的。chrdevs向量表中的device_struct數(shù)據(jù)結構包括一個登記設備驅動程序名稱的指針和一個指向一組文件操作的指針。這組文件操作本身位于這個設備的字符設備驅動程序中,并處理一些特定任務。本電池監(jiān)測系統(tǒng)在Linux下的驅動程序就把外設視為字符設備,在驅動程序里實現(xiàn)了打開、讀、寫和關閉等操作。
2.3 電池監(jiān)測驅動實現(xiàn)策略
系統(tǒng)內部,I/O設備的存取使通過一組固定的入口點來進行的。這組入口點由特定設備的設備驅動程序提供,在數(shù)據(jù)結構file_operatiONs()中定義。該程序定義了一個數(shù)據(jù)結構為file_operations()的變量adc_fops。
2.3.1 adc_open函數(shù)
此函數(shù)打開并初始化設備以待I/O操作。adc_open()子程序必須對其做好必要的準備,如果設備是獨占的,adc_open()子程序必須設置一些標志以表示設備處于忙狀態(tài)。
2.3.2 adc_read函數(shù)
對AD轉換器設備文件進行讀操作時調用adc_read()子程序。電池監(jiān)測系統(tǒng)要求實時讀取外設監(jiān)測點的電壓值。因此,在adc_read()函數(shù)中實時觸發(fā)AD轉換器開始工作,并且利用程序輪詢方式讀取轉換后的數(shù)據(jù)。adc_read()函數(shù)內容如下:
[!--empirenews.page--]
2.3.3 adc_iocd函數(shù)
控制外圍的輔助電路時調用adc_iocd()函數(shù)。對照監(jiān)測點邏輯控制表,從S3C2410x的GPIO端口發(fā)出選擇指令,接著就可以進行讀操作以讀取相應的數(shù)值。在不需要監(jiān)測時,控制監(jiān)測系統(tǒng)進入省電模式。
2.3.4 adc_close()函數(shù)
adc_close()函數(shù)用來關閉外設。當監(jiān)測結束時,應用程序會調用此函數(shù)關閉設備文件。同adc_open()函數(shù)一樣,也可以為NULL.
3 設計Qt/Embedded應用程序和植入Qtopia的方法
QT/Embedded為嵌入式Linux提供了一種友好交互接口,是完整的自包含C++GUI和基于LinuX的嵌人式平臺開發(fā)工具 ,專為高端嵌入式圖形領域應用而設并得以普及。鑒于文中所使用的系統(tǒng)需要按照手動點擊檢查和欠壓自動報警的方式工作,所以,必須遵循相應的規(guī)則和方法,進行高效、美觀的圖形界面設計。
3.1 編寫Qt/Embedded應用程序
在宿主機上編譯Qt for Xll時生成的Qt Designer軟件是一個非常流行的快速應用程序開發(fā)工具,用來設計界面和編制代碼。在Qt Designer中,可以通過拖拉或點擊的方式,在一張空白表單的適當位置上添加一些輸入框和按鈕等窗口組件。這時Designer工具會自動編寫和維護代碼。
使用Qt Designer進行C++程序編制的基本步驟是:首先建立窗體,并根據(jù)應用的需要在窗體中添加控件。Qt會將建立的窗體保存為。ui文件,使用Qt提供的uic工具將文件轉換為。h和。cpp文件,對于控制動作是需要手動添加不同的操作函數(shù)。之后使用progen工具為該應用程序建立。pro工程文件,并通過tmake工具為該工程建立Makefile文件。最后,只需要運行make即可生成可執(zhí)行文件。
在編寫操作函數(shù)時,本系統(tǒng)通過計算相鄰監(jiān)測點的觀測值確定每個電池芯的電壓值。通過查詢選用電池芯的放電結束電壓查找表,得出每個電池芯的剩余電量。當電池組電量降至一定閾值或某個電池芯的儲電量低于3%時,利用應用程序報警,通知用戶予以充電或按照指示的電池編號及時進行個別更換。這樣,既可保證電源的正常工作指標,又能夠提高所有電池的利用率。
3.2 將應用程序植入Qtopia
在Qtopia平臺上發(fā)布自己的應用程序,需要三個文件:一個執(zhí)行文件、一個啟動器文件、一個圖標文件。
執(zhí)行文件就是前面講到編寫并編譯生成的可執(zhí)行文件,需要將該可執(zhí)行文件保存在qtopia/bin目錄下。圖標文件就是為應用程序制作48*48大小的PNG格式的小圖像,它一般存放在qtopia/pics目錄下。同時還需要建立應用啟動器(。desktop)文件,把它保存在qtopia/apps/Applications目錄下。將上述文件分別復制好以后,重新運行Qtopia,就可以看到添加的應用圖標,點擊此圖標便可運行該應用程序了。
4 結束語
降低系統(tǒng)能耗需要嵌入式系統(tǒng)硬件環(huán)節(jié)提供可靠支持,同時也離不開嵌入式操作系統(tǒng)和應用程序對硬件資源的合理管理。現(xiàn)有的Linux提供了電源管理的部分功能,但由于具體進行嵌入式系統(tǒng)設計時的靈活性,一般需要根據(jù)特定需要而定制應用程序對電源電量進行精確的監(jiān)測與提示。通過對手持式終端設備中電源監(jiān)測技術的研究和實現(xiàn),將有助于其它類型嵌入式系統(tǒng)的電源監(jiān)測、管理工作的完成,亦有望對類似系統(tǒng)的建立具有一定的參考和借鑒價值。<