一種鉛酸蓄電池管理系統(tǒng)的設計和實現(xiàn)-設計應用_第1頁
一種鉛酸蓄電池管理系統(tǒng)的設計和實現(xiàn)-設計應用_第2頁
一種鉛酸蓄電池管理系統(tǒng)的設計和實現(xiàn)-設計應用_第3頁
一種鉛酸蓄電池管理系統(tǒng)的設計和實現(xiàn)-設計應用_第4頁
一種鉛酸蓄電池管理系統(tǒng)的設計和實現(xiàn)-設計應用_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精品文檔-下載后可編輯一種鉛酸蓄電池管理系統(tǒng)的設計和實現(xiàn)-設計應用

1.引言

鉛酸蓄電池行業(yè)與電力、交通、信息等產(chǎn)業(yè)發(fā)展息息相關,在汽車、叉車等運輸工具和大型不間斷供電電源系統(tǒng)中處于控制地位,是社會生產(chǎn)經(jīng)營活動和人類生活中不可或缺的。我國蓄電池行業(yè)規(guī)模相當龐大,應用也非常廣泛,鑒于鉛酸蓄電池的使用不當帶來的問題(如硫化、容量減小、使用壽命縮短等),實現(xiàn)蓄電池的智能化管理顯得非常必要,而國內目前應用于該領域的嵌入式系統(tǒng)產(chǎn)品很少。

本文以嵌入式S3C2410為芯片,設計和實現(xiàn)了一種高速、高精度且具有一定處理能力的數(shù)據(jù)采集處理系統(tǒng),并將其應用于工業(yè)過程水位和溫度的實時監(jiān)測。

2.系統(tǒng)總體設計

AVR單片機是1997年由ATMEL公司研發(fā)出的增強型內置Flash的RISC(ReducedInstructionSetCPU)精簡指令集高速8位單片機。AVR的單片機可以廣泛應用于計算機外部設備、工業(yè)實時控制、儀器儀表、通訊設備、家用電器等各個領域。1997年,由Atmel公司挪威設計中心的A先生和V先生,利用Atmel公司的Flash新技術,共同研發(fā)出RISC精簡指令集高速8位單片機,簡稱AVR.

本設計采用以ARM9為的S3C2410作為數(shù)據(jù)采集與處理的,主要包括以下四個模塊:信號采集、數(shù)據(jù)存儲、數(shù)據(jù)顯示、數(shù)據(jù)傳輸。模擬信號通過放大電路再輸入到S3C2410處理器片內A/D轉換器,經(jīng)過處理結果以動態(tài)波形的形式顯示在LCD上,并用觸摸屏控制顯示方式。同時通過串口發(fā)送給PC,在PC上用VC++編寫的程序對數(shù)據(jù)進行顯示、存儲等后續(xù)處理。系統(tǒng)結構如圖1所示。

3.硬件電路設計

溫度和水位的測量用的是變送器。以溫度變送器為例,本系統(tǒng)選用的是北京賽億凌科技有限公司的STY系列一體化溫度變送器,它的測量范圍是0~150℃,它的輸出是一個與被測溫度成線性關系的4~20mA的恒流信號。

為了滿足測量要求,在溫度變送器的兩個輸出端之間接一個電阻,使其輸出的電流信號轉換成電壓信號,考慮到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.系統(tǒng)軟件設計

軟件設計主要是uC/OS-II移植和任務的編寫。uC/OS-II是一個的、可裁減、源碼開放、結構小巧、搶占式的實時多任務嵌入式內核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高、占用空間小、可移植性強、實時性能優(yōu)良和可擴展性強等特點[2].

為了方便移植,絕大部分uC/OS-II的代碼是用ANSIC語言編寫的;但是仍需要用C語言和匯編語言寫一些與處理器硬件相關的代碼,這是因為uC/OS-II在讀/寫處理器寄存器時,只能通過匯編語言來實現(xiàn)。與處理器相關的代碼包括OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C三個文件,所以移植的主要任務就是修改這三個文件。

(1)在修改OS_CPU.H中與處理器和編譯器相關的代碼時要注意幾點[3]:

(a)不同的處理器有不同的字長,uC/OS-II為了確保其可移植性,不使用C的int,short,long等數(shù)據(jù)類型,因為這些數(shù)據(jù)類型是與編譯器相關的,是不可移植的。

(b)修改OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()兩個宏。uC/OS-II需要先禁止中斷再訪問代碼的臨界區(qū),并且在訪問完畢后重新允許中斷。OS_ENTER_CRITICAL()的功能是關中斷,在S3C2410上通過OS_CPU_A.ASM中的INTS_OFF()函數(shù)來實現(xiàn)。OS_EXIT_CRITICAL()用于開中斷,通過OS_CPU_A.ASM中的INTS_ON()函數(shù)來實現(xiàn)。

(c)OS_STK_GROWTH用來定義堆棧生長方式,置0表示堆棧從下往上增長,置1表示

堆棧從上向下增長。而在本設計中使用的是堆棧從上向下增長S3C2410處理器,所以置1.(d)OS_TASK_SW()是一個任務切換宏,用于從低優(yōu)先級任務切換到高優(yōu)先級任務。它將任務切換函數(shù)OSCtxSw()封裝起來。

(2)修改OS_CPU_C.C中與操作系統(tǒng)相關的OSTaskStkInit()函數(shù)

OSTaskStkInit()用于任務堆棧初始化,OSTaskCreate()和OSTaskcreateExt()通過調用OSTaskStkInit()來初始化任務的堆棧結構。圖3顯示了OSTaskStkInit()在建立任務時,任務堆棧初始化的形式。

(3)編寫OS_CPU_A.ASM中4個與處理器相關的函數(shù)

OSStartHighRdy()在程序中被OSStart()函數(shù)調用,作用是使就緒任務中優(yōu)先級的任務開始運行。OSCtxSw()是任務級的任務切換函數(shù),通過執(zhí)行軟中斷指令,或者依據(jù)處理器的不同,執(zhí)行TPAR(陷阱)指令來實現(xiàn)。OSIntCtxSw()是中斷級任務切換函數(shù),通過調用它,可以在ISR中執(zhí)行任務切換功能。OSTickISR()為uC/OS-II提供一個周期性的時鐘源,來實現(xiàn)時間的延遲和超時功能。

5.應用任務設計

系統(tǒng)流程圖如圖4所示。

(1)初始化uC/OS-II系統(tǒng)環(huán)境

μC/OS和μC/OS-II是專門為計算機的嵌入式應用設計的,絕大部分代碼是用C語言編寫的。CPU硬件相關部分是用匯編語言編寫的、總量約200行的匯編語言部分被壓縮到限度,為的是便于移植到任何一種其它的CPU上。uC/OS是一種公開源代碼、結構小巧、具有可剝奪實時內核的實時操作系統(tǒng),商業(yè)應用需要付費。

圖4的左半部分所完成的功能是啟動操作系統(tǒng),并創(chuàng)建Main_Task和tch_Task兩個任務。右半部分是Main_Task()和tch_Task()的主要內容,這是本設計的重點部分。模擬信號的采集,顯示是在Main_Task()中完成的,而對顯示方式的控制是由tch_Task()來完成的。

(2)編程實現(xiàn)A/D轉換

A/D轉換亦稱模擬一數(shù)字轉換,與數(shù)/模(D/A)轉換相反,是將連續(xù)的模擬量(如象元的灰階、電壓、電流等)通過取樣轉換成離散的數(shù)字量。例如,對圖象掃描后,形成象元列陣,把每個象元的亮度(灰階)轉換成相應的數(shù)字表示,即經(jīng)模/數(shù)轉換后,構成數(shù)字圖象。通常有電子式的模/數(shù)轉換和機電式模/數(shù)轉換二種。

模擬數(shù)據(jù)的采集是在Main_Task()中通過調用函數(shù)voidinit_ADdevice()和intGetADresult(intchannel)實現(xiàn)的。模擬信號經(jīng)A/D轉換后的一個10位數(shù)字量,通過式(1)

(2)中將其轉換成實際的數(shù)據(jù)。式中的3.3表示模擬量的上限值,1023是經(jīng)(210-1)計算得來的,經(jīng)計算后的數(shù)據(jù)就是實際的模擬量值。數(shù)據(jù)經(jīng)濾波后分別存放在兩個變量中,用于下面的繪圖部分程序。

(3)觸摸屏控制程序

這一部分程序的思想是:若有觸摸動作,取觸點坐標值,判斷其是否屬于LCD上顯示的控制按鈕的坐標范圍,若是則做出相應的控制調整,若否則無動作。返回觸點坐標的子函數(shù)為TchScr_GetScrXY(int*x,int*y)。在本設計中,定義了3個控制按鍵,它們用于傳遞控制信息。

(4)繪圖的API函數(shù)

在uC/OS-II系統(tǒng)環(huán)境下,繪圖必須通過使用繪圖設備上下文(DC)來實現(xiàn)。繪圖設備上下文(DC)中包括與繪圖相關的信息,如:繪圖坐標、畫筆顏色、畫筆寬度等等。在實際使用時,使用CreateDC()創(chuàng)建繪圖設備上下文,使用DestoryDC(pdc)刪除繪圖設備上下文,這兩條語句在程序中應該成對出現(xiàn)。通過使用LineTo()、TextOut()、Circle()、MoveTo()等函數(shù),可以將采樣值實時的顯示到LCD上。

在LCD繪圖時以下兩點值得注意:

(a)在LCD繪圖時要反復使用LineTo()和MoveTo()兩個函數(shù),但在使用該函數(shù)之前,一定要注意到LCD的分辨率。只有知道了LCD分辨率,才能知道LCD的坐標值的范圍,從而得到正確的設定結果。本設計使用的LCD分辨率是640*480.也就是說,初始坐標系的x值范圍為(0≤x≤640),y值范圍(0≤y≤480)。

(b)由于LCD寬度有限,當橫坐標xLCDWidth時,波形就超出顯示范圍了。解決方法是在LCD上顯示自左至右畫出的波形,當畫到LCD的右端時,清屏幕后,重新從LCD的左端向右畫線,同時橫坐標的值也相應的改變。

(5)PC機上數(shù)據(jù)顯示程序

為了更好的記錄和分析數(shù)據(jù),我們在PC機上用VC編寫了程序,這樣可以很好保存和處理數(shù)據(jù),為性能分析和系統(tǒng)故障恢復提供了有利條件。

6.結論

uC/OS-II實時操作系統(tǒng)是開放源碼且得到實際驗證的軟件平臺,而ARM處理器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論