利用AVR的鉛酸蓄電池管理系統原理及設計
1. 引言
本文以嵌入式 S3C2410為核心芯片,設計和實(shí)現了一種高速、高精度且具有一定處理能力的數據采集處理系統,并將其應用于工業(yè)過(guò)程水位和溫度的實(shí)時(shí)監測。
在工業(yè)過(guò)程或實(shí)驗室里,經(jīng)常需要對多種信號進(jìn)行同時(shí)采集及監測,以便實(shí)現性能分析、過(guò)程控制、系統恢復等目的。目前,常用的數據采集裝置,多采用單片機實(shí)現,軟件多采用單任務(wù)順序機制,這使得系統不僅處理能力有限,而且存在穩定性差的問(wèn)題。以嵌入式計算機為核心的嵌入式系統由于具有體積小、性能好、功耗低、可靠性高以及面向行業(yè)應用的突出特征,成為繼 I T網(wǎng)絡(luò )技術(shù)之后,又一個(gè)新的技術(shù)發(fā)展方向 [1]。
2. 系統總體設計
本設計采用以 ARM9為核心的 S3C2410作為數據采集與處理的核心,主要包括以下四個(gè)模塊:信號采集、數據存儲、數據顯示、數據傳輸。模擬信號通過(guò)放大電路再輸入到 S3C2410處理器片內 A/D轉換器,經(jīng)過(guò)處理結果以動(dòng)態(tài)波形的形式顯示在 LCD上,并用觸摸屏控制顯示方式。同時(shí)通過(guò)串口發(fā)送給 PC,在 PC上用 VC++編寫(xiě)的程序對數據進(jìn)行顯示、存儲等后續處理。系統結構如圖 1所示。
3. 硬件電路設計
溫度和水位的測量用的是變送器。以溫度變送器為例,本系統選用的是北京賽億凌科技有限公司的 STY系列一體化溫度變送器,它的測量范圍是 0~150℃,它的輸出是一個(gè)與被測溫度成線(xiàn)性關(guān)系的 4~20mA的恒流信號。
為了滿(mǎn)足測量要求,在溫度變送器的兩個(gè)輸出端之間接一個(gè)電阻,使其輸出的電流信號轉換成電壓信號,考慮到 S3C2410內部 A/D轉換器的輸入范圍是 0~3.3v,因此選用 165 Ω的電阻。電路連接圖如圖 2所示。
由圖 2可知,溫度變送器產(chǎn)生的 4~20mA電流信號,經(jīng)電路轉化變成了 0.66~3.3V的電壓信號,此電壓信號傳遞給 S3C2410內部的 A/D轉換器。采樣溫度值可以這樣計算,設采樣得到的電壓值為UT,單位為 V,對應溫度為 T,單位為℃,則 T的值可由式( 1)求得:4. 系統軟件設計
軟件設計主要是 uC/OS-II移植和任務(wù)的編寫(xiě)。uC/OS-II是一個(gè)免費的、可裁減、源碼開(kāi)放、結構小巧、搶占式的實(shí)時(shí)多任務(wù)嵌入式內核,主要面向中小型嵌入式系統,具有執行效率高、占用空間小、可移植性強、實(shí)時(shí)性能優(yōu)良和可擴展性強等特點(diǎn)[2]。
為了方便移植,絕大部分 uC/OS-II的代碼是用 ANSI C語(yǔ)言編寫(xiě)的;但是仍需要用 C語(yǔ)言和匯編語(yǔ)言寫(xiě)一些與處理器硬件相關(guān)的代碼,這是因為uC/OS-II在讀/寫(xiě)處理器寄存器時(shí),只能通過(guò)匯編語(yǔ)言來(lái)實(shí)現。與處理器相關(guān)的代碼包括 OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C三個(gè)文件,所以移植的主要任務(wù)就是修改這三個(gè)文件。
(1) 在修改 OS_CPU.H中與處理器和編譯器相關(guān)的代碼時(shí)要注意幾點(diǎn) [3]:
(a)不同的處理器有不同的字長(cháng),uC/OS-II為了確保其可移植性,不使用 C的int,short,long等數據類(lèi)型,因為這些數據類(lèi)型是與編譯器相關(guān)的,是不可移植的。
(b)修改 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()兩個(gè)宏。uC/OS-II需要先禁止中斷再訪(fǎng)問(wèn)代碼的臨界區,并且在訪(fǎng)問(wèn)完畢后重新允許中斷。OS_ENTER_CRITICAL()的功能是關(guān)中斷,在 S3C2410上通過(guò) OS_CPU_A.ASM中的 INTS_OFF()函數來(lái)實(shí)現。OS_EXIT_CRITICAL()用于開(kāi)中斷,通過(guò) OS_CPU_A.ASM中的INTS_ON()函數來(lái)實(shí)現。
(c)OS_STK_GROWTH用來(lái)定義堆棧生長(cháng)方式, 置 0表示堆棧從下往上增長(cháng),置 1表示
堆棧從上向下增長(cháng)。而在本設計中使用的是堆棧從上向下增長(cháng) S3C2410處理器,所以置1。(d)OS_TASK_SW()是一個(gè)任務(wù)切換宏,用于從低優(yōu)先級任務(wù)切換到高優(yōu)先級任務(wù)。它將任務(wù)切換函數OSCtxSw()封裝起來(lái)。
(2) 修改OS_CPU_C.C中與操作系統相關(guān)的OSTaskStkInit()函數
OSTaskStkInit()用于任務(wù)堆棧初始化,OSTaskCreate()和 OSTaskcreateExt()通過(guò)調用OSTaskStkInit()來(lái)初始化任務(wù)的堆棧結構。圖 3顯示了OSTaskStkInit()在建立任務(wù)時(shí),任務(wù)堆棧初始化的形式。
(3) 編寫(xiě)OS_CPU_A.ASM中4個(gè)與處理器相關(guān)的函數
OSStartHighRdy( )在程序中被 OSStart( )函數調用,作用是使就緒任務(wù)中優(yōu)先級最高的任務(wù)開(kāi)始運行。 OSCtxSw()是任務(wù)級的任務(wù)切換函數,通過(guò)執行軟中斷指令,或者依據處理器的不同,執行TPAR(陷阱)指令來(lái)實(shí)現。OSIntCtxSw()是中斷級任務(wù)切換函數,通過(guò)調用它,可以在 ISR中執行任務(wù)切換功能。OSTickISR()為 uC/OS-II提供一個(gè)周期性的時(shí)鐘源,來(lái)實(shí)現時(shí)間的延遲和超時(shí)功能。
5. 應用任務(wù)設計
系統流程圖如圖 4所示。
(1) 初始化uC/OS-II系統環(huán)境
圖 4的左半部分所完成的功能是啟動(dòng)操作系統,并創(chuàng )建 Main_Task和 tch_Task兩個(gè)任務(wù)。右半部分是 Main_Task()和 tch_Task()的主要內容,這是本設計的重點(diǎn)部分。模擬信號的采集,顯示是在 Main_Task()中完成的,而對顯示方式的控制是由tch_Task()來(lái)完成的。
(2) 編程實(shí)現 A/D轉換
模擬數據的采集是在 Main_Task( )中通過(guò)調用函數 void init_ADdevice()和 intGetADresult(int channel)實(shí)現的。模擬信號經(jīng) A/D轉換后的一個(gè) 10位數字量,通過(guò)式(1)
(2)中將其轉換成實(shí)際的數據。式中的 3.3表示模擬量的上限值,1023是經(jīng)(2 10-1)計算得來(lái)的,經(jīng)計算后的數據就是實(shí)際的模擬量值。數據經(jīng)濾波后分別存放在兩個(gè)變量中,用于下面的繪圖部分程序。
(3) 觸摸屏控制程序
這一部分程序的思想是:若有觸摸動(dòng)作,取觸點(diǎn)坐標值,判斷其是否屬于 LCD上顯示的控制按鈕的坐標范圍,若是則做出相應的控制調整,若否則無(wú)動(dòng)作。返回觸點(diǎn)坐標的子函數為 TchScr_GetScrXY(int *x,int *y)。在本設計中,定義了 3個(gè)控制按鍵,它們用于傳遞控制信息。
(4) 繪圖的API函數
在uC/OS-II系統環(huán)境下,繪圖必須通過(guò)使用繪圖設備上下文(DC)來(lái)實(shí)現。繪圖設備上下文(DC)中包括與繪圖相關(guān)的信息,如:繪圖坐標、畫(huà)筆顏色、畫(huà)筆寬度等等。在實(shí)際使用時(shí),使用CreateDC()創(chuàng )建繪圖設備上下文,使用DestoryDC(pdc)刪除繪圖設備上下文,這兩條語(yǔ)句在程序中應該成對出現。通過(guò)使用 LineTo( )、TextOut()、Circle( )、MoveTo( )等函數,可以將采樣值實(shí)時(shí)的顯示到 LCD上。
在 LCD繪圖時(shí)以下兩點(diǎn)值得注意:
(a)在 LCD繪圖時(shí)要反復使用 LineTo( ) 和MoveTo( )兩個(gè)函數,但在使用該函數之前,一定要注意到 LCD的分辨率。只有知道了 LCD分辨率,才能知道 LCD的坐標值的范圍,從而得到正確的設定結果。本設計使用的 LCD分辨率是640*480。也就是說(shuō),初始坐標系的 x值范圍為(0≤x≤640),y值范圍(0≤y≤480)。
(b)由于LCD寬度有限,當橫坐標 x>LCDWidth時(shí),波形就超出顯示范圍了。解決方法是在 LCD上顯示自左至右畫(huà)出的波形,當畫(huà)到 LCD的最右端時(shí),清一次屏幕后,重新從 LCD的左端向右畫(huà)線(xiàn),同時(shí)橫坐標的值也相應的改變。
(5) PC機上數據顯示程序
為了更好的記錄和分析數據,我們在 PC機上用 VC編寫(xiě)了程序,這樣可以很好保存和處理數據,為性能分析和系統故障恢復提供了有利條件。
6.結論
uC/OS-II實(shí)時(shí)操作系統是開(kāi)放源碼且得到實(shí)際驗證的軟件平臺,而ARM處理器具有強大的32位RISC性能?;趗C/OS-II及ARM,能大量減輕研發(fā)任務(wù),提高研發(fā)速度,為在短時(shí)間內設計出控制性能優(yōu)秀的數據采集系統創(chuàng )造了條件。本文數據采集系統已成功應用于工業(yè)場(chǎng)合溫度和水位的實(shí)時(shí)測控,達到了很好的效果。
本文作者創(chuàng )新點(diǎn):摒棄了傳統單片機數據采集,采用移植性好的嵌入式 uC/OS-II系統,具有后續開(kāi)發(fā)簡(jiǎn)單,系統穩定性好,可靠性高等特點(diǎn)。本設計可以很容易得移植到其他數據采集系統當中去。
評論