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