五部門關(guān)于開展2024年新能源汽車下鄉(xiāng)活動(dòng)的通知
一種鉛酸蓄電池管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)
一種鉛酸蓄電池管理系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn) 1. 引言 鉛酸蓄電池行業(yè)與電力、交通、信息等產(chǎn)業(yè)發(fā)展息息相關(guān),在汽車、叉車等運(yùn)輸工具和大型不間斷供電電源系統(tǒng)中處于控制地位,是社會(huì)生產(chǎn)經(jīng)
1. 引言
鉛酸蓄電池行業(yè)與電力、交通、信息等產(chǎn)業(yè)發(fā)展息息相關(guān),在汽車、叉車等運(yùn)輸工具和大型不間斷供電電源系統(tǒng)中處于控制地位,是社會(huì)生產(chǎn)經(jīng)營(yíng)活動(dòng)和人類生活中不可或缺的。我國(guó)蓄電池行業(yè)規(guī)模相當(dāng)龐大,應(yīng)用也非常廣泛,鑒于鉛酸蓄電池的使用不當(dāng)帶來的問題(如硫化、容量減小、使用壽命縮短等),實(shí)現(xiàn)蓄電池的智能化管理顯得非常必要,而國(guó)內(nèi)目前應(yīng)用于該領(lǐng)域的嵌入式系統(tǒng)產(chǎn)品很少。
本文以嵌入式 S3C2410為核心芯片,設(shè)計(jì)和實(shí)現(xiàn)了一種高速、高精度且具有一定處理能力的數(shù)據(jù)采集處理系統(tǒng),并將其應(yīng)用于工業(yè)過程水位和溫度的實(shí)時(shí)監(jiān)測(cè)。
2. 系統(tǒng)總體設(shè)計(jì)
AVR單片機(jī)是1997年由ATMEL公司研發(fā)出的增強(qiáng)型內(nèi)置Flash的RISC(Reduced Instruction Set CPU) 精簡(jiǎn)指令集高速8位單片機(jī)。AVR的單片機(jī)可以廣泛應(yīng)用于計(jì)算機(jī)外部設(shè)備、工業(yè)實(shí)時(shí)控制、儀器儀表、通訊設(shè)備、家用電器等各個(gè)領(lǐng)域。 1997年,由Atmel公司挪威設(shè)計(jì)中心的A先生和V先生,利用Atmel公司的Flash新技術(shù),共同研發(fā)出RISC精簡(jiǎn)指令集高速8位單片機(jī),簡(jiǎn)稱AVR.
本設(shè)計(jì)采用以ARM9為核心的 S3C2410作為數(shù)據(jù)采集與處理的核心,主要包括以下四個(gè)模塊:信號(hào)采集、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)顯示、數(shù)據(jù)傳輸。模擬信號(hào)通過放大電路再輸入到 S3C2410處理器片內(nèi) A/D轉(zhuǎn)換器,經(jīng)過處理結(jié)果以動(dòng)態(tài)波形的形式顯示在 LCD上,并用觸摸屏控制顯示方式。同時(shí)通過串口發(fā)送給 PC,在 PC上用 VC++編寫的程序?qū)?shù)據(jù)進(jìn)行顯示、存儲(chǔ)等后續(xù)處理。系統(tǒng)結(jié)構(gòu)如圖 1所示。
3. 硬件電路設(shè)計(jì)
溫度和水位的測(cè)量用的是變送器。以溫度變送器為例,本系統(tǒng)選用的是北京賽億凌科技有限公司的 STY系列一體化溫度變送器,它的測(cè)量范圍是 0~150℃,它的輸出是一個(gè)與被測(cè)溫度成線性關(guān)系的 4~20mA的恒流信號(hào)。
為了滿足測(cè)量要求,在溫度變送器的兩個(gè)輸出端之間接一個(gè)電阻,使其輸出的電流信號(hào)轉(zhuǎn)換成電壓信號(hào),考慮到 S3C2410內(nèi)部 A/D轉(zhuǎn)換器的輸入范圍是 0~3.3v,因此選用 165 Ω的電阻。電路連接圖如圖 2所示。
由圖 2可知,溫度變送器產(chǎn)生的 4~20mA電流信號(hào),經(jīng)電路轉(zhuǎn)化變成了 0.66~3.3V的電壓信號(hào),此電壓信號(hào)傳遞給 S3C2410內(nèi)部的 A/D轉(zhuǎn)換器。采樣溫度值可以這樣計(jì)算,設(shè)采樣得到的電壓值為UT,單位為 V,對(duì)應(yīng)溫度為 T,單位為℃,則 T的值可由式( 1)求得:
4. 系統(tǒng)軟件設(shè)計(jì)
軟件設(shè)計(jì)主要是 uC/OS-II移植和任務(wù)的編寫。uC/OS-II是一個(gè)免費(fèi)的、可裁減、源碼開放、結(jié)構(gòu)小巧、搶占式的實(shí)時(shí)多任務(wù)嵌入式內(nèi)核,主要面向中小型嵌入式系統(tǒng),具有執(zhí)行效率高、占用空間小、可移植性強(qiáng)、實(shí)時(shí)性能優(yōu)良和可擴(kuò)展性強(qiáng)等特點(diǎn)[2].
為了方便移植,絕大部分 uC/OS-II的代碼是用 ANSI C語言編寫的;但是仍需要用 C語言和匯編語言寫一些與處理器硬件相關(guān)的代碼,這是因?yàn)閡C/OS-II在讀/寫處理器寄存器時(shí),只能通過匯編語言來實(shí)現(xiàn)。與處理器相關(guān)的代碼包括 OS_CPU.H、OS_CPU_A.ASM和OS_CPU_C.C三個(gè)文件,所以移植的主要任務(wù)就是修改這三個(gè)文件。
?。?) 在修改 OS_CPU.H中與處理器和編譯器相關(guān)的代碼時(shí)要注意幾點(diǎn) [3]:
?。╝)不同的處理器有不同的字長(zhǎng),uC/OS-II為了確保其可移植性,不使用 C的int,short,long等數(shù)據(jù)類型,因?yàn)檫@些數(shù)據(jù)類型是與編譯器相關(guān)的,是不可移植的。
?。╞)修改 OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()兩個(gè)宏。uC/OS-II需要先禁止中斷再訪問代碼的臨界區(qū),并且在訪問完畢后重新允許中斷。OS_ENTER_CRITICAL()的功能是關(guān)中斷,在 S3C2410上通過 OS_CPU_A.ASM中的 INTS_OFF()函數(shù)來實(shí)現(xiàn)。OS_EXIT_CRITICAL()用于開中斷,通過 OS_CPU_A.ASM中的INTS_ON()函數(shù)來實(shí)現(xiàn)。
?。╟)OS_STK_GROWTH用來定義堆棧生長(zhǎng)方式, 置 0表示堆棧從下往上增長(zhǎng),置 1表示
堆棧從上向下增長(zhǎng)。而在本設(shè)計(jì)中使用的是堆棧從上向下增長(zhǎng) S3C2410處理器,所以置1.(d)OS_TASK_SW()是一個(gè)任務(wù)切換宏,用于從低優(yōu)先級(jí)任務(wù)切換到高優(yōu)先級(jí)任務(wù)。它將任務(wù)切換函數(shù)OSCtxSw()封裝起來。
?。?) 修改OS_CPU_C.C中與操作系統(tǒng)相關(guān)的OSTaskStkInit()函數(shù)
OSTaskStkInit()用于任務(wù)堆棧初始化,OSTaskCreate()和 OSTaskcreateExt()通過調(diào)用OSTaskStkInit()來初始化任務(wù)的堆棧結(jié)構(gòu)。圖 3顯示了OSTaskStkInit()在建立任務(wù)時(shí),任務(wù)堆棧初始化的形式。
(3) 編寫OS_CPU_A.ASM中4個(gè)與處理器相關(guān)的函數(shù)
OSStartHighRdy( )在程序中被 OSStart( )函數(shù)調(diào)用,作用是使就緒任務(wù)中優(yōu)先級(jí)最高的任務(wù)開始運(yùn)行。 OSCtxSw()是任務(wù)級(jí)的任務(wù)切換函數(shù),通過執(zhí)行軟中斷指令,或者依據(jù)處理器的不同,執(zhí)行TPAR(陷阱)指令來實(shí)現(xiàn)。OSIntCtxSw()是中斷級(jí)任務(wù)切換函數(shù),通過調(diào)用它,可以在 ISR中執(zhí)行任務(wù)切換功能。OSTickISR()為 uC/OS-II提供一個(gè)周期性的時(shí)鐘源,來實(shí)現(xiàn)時(shí)間的延遲和超時(shí)功能。
5. 應(yīng)用任務(wù)設(shè)計(jì)
系統(tǒng)流程圖如圖4所示。
?。?) 初始化uC/OS-II系統(tǒng)環(huán)境
μC/OS 和μC/OS-II 是專門為計(jì)算機(jī)的嵌入式應(yīng)用設(shè)計(jì)的, 絕大部分代碼是用C語言編寫的。CPU 硬件相關(guān)部分是用匯編語言編寫的、總量約200行的匯編語言部分被壓縮到最低限度,為的是便于移植到任何一種其它的CPU 上。u C / O S 是一種公開源代碼、結(jié)構(gòu)小巧、具有可剝奪實(shí)時(shí)內(nèi)核的實(shí)時(shí)操作系統(tǒng),商業(yè)應(yīng)用需要付費(fèi)。
圖 4的左半部分所完成的功能是啟動(dòng)操作系統(tǒng),并創(chuàng)建 Main_Task和 tch_Task兩個(gè)任務(wù)。右半部分是 Main_Task()和 tch_Task()的主要內(nèi)容,這是本設(shè)計(jì)的重點(diǎn)部分。模擬信號(hào)的采集,顯示是在 Main_Task()中完成的,而對(duì)顯示方式的控制是由tch_Task()來完成的。
(2) 編程實(shí)現(xiàn) A/D轉(zhuǎn)換
A/D轉(zhuǎn)換亦稱模擬一數(shù)字轉(zhuǎn)換,與數(shù)/模(D/A)轉(zhuǎn)換相反,是將連續(xù)的模擬量(如象元的灰階、電壓、電流等)通過取樣轉(zhuǎn)換成離散的數(shù)字量。例如,對(duì)圖象掃描后,形成象元列陣,把每個(gè)象元的亮度(灰階)轉(zhuǎn)換成相應(yīng)的數(shù)字表示,即經(jīng)模/數(shù)轉(zhuǎn)換后,構(gòu)成數(shù)字圖象。通常有電子式的模/數(shù)轉(zhuǎn)換和機(jī)電式模/數(shù)轉(zhuǎn)換二種。
模擬數(shù)據(jù)的采集是在 Main_Task( )中通過調(diào)用函數(shù) void init_ADdevice()和 intGetADresult(int channel)實(shí)現(xiàn)的。模擬信號(hào)經(jīng) A/D轉(zhuǎn)換后的一個(gè) 10位數(shù)字量,通過式(1)
?。?)中將其轉(zhuǎn)換成實(shí)際的數(shù)據(jù)。式中的 3.3表示模擬量的上限值,1023是經(jīng)(2 10-1)計(jì)算得來的,經(jīng)計(jì)算后的數(shù)據(jù)就是實(shí)際的模擬量值。數(shù)據(jù)經(jīng)濾波后分別存放在兩個(gè)變量中,用于下面的繪圖部分程序。
(3) 觸摸屏控制程序
這一部分程序的思想是:若有觸摸動(dòng)作,取觸點(diǎn)坐標(biāo)值,判斷其是否屬于 LCD上顯示的控制按鈕的坐標(biāo)范圍,若是則做出相應(yīng)的控制調(diào)整,若否則無動(dòng)作。返回觸點(diǎn)坐標(biāo)的子函數(shù)為 TchScr_GetScrXY(int *x,int *y)。在本設(shè)計(jì)中,定義了 3個(gè)控制按鍵,它們用于傳遞控制信息。
?。?) 繪圖的API函數(shù)
在uC/OS-II系統(tǒng)環(huán)境下,繪圖必須通過使用繪圖設(shè)備上下文(DC)來實(shí)現(xiàn)。繪圖設(shè)備上下文(DC)中包括與繪圖相關(guān)的信息,如:繪圖坐標(biāo)、畫筆顏色、畫筆寬度等等。在實(shí)際使用時(shí),使用CreateDC()創(chuàng)建繪圖設(shè)備上下文,使用DestoryDC(pdc)刪除繪圖設(shè)備上下文,這兩條語句在程序中應(yīng)該成對(duì)出現(xiàn)。通過使用 LineTo( )、TextOut()、Circle( )、MoveTo( )等函數(shù),可以將采樣值實(shí)時(shí)的顯示到 LCD上。
在 LCD繪圖時(shí)以下兩點(diǎn)值得注意:
?。╝)在 LCD繪圖時(shí)要反復(fù)使用 LineTo( ) 和MoveTo( )兩個(gè)函數(shù),但在使用該函數(shù)之前,一定要注意到 LCD的分辨率。只有知道了 LCD分辨率,才能知道 LCD的坐標(biāo)值的范圍,從而得到正確的設(shè)定結(jié)果。本設(shè)計(jì)使用的 LCD分辨率是640*480.也就是說,初始坐標(biāo)系的 x值范圍為(0≤x≤640),y值范圍(0≤y≤480)。
?。╞)由于LCD寬度有限,當(dāng)橫坐標(biāo) x>LCDWidth時(shí),波形就超出顯示范圍了。解決方法是在 LCD上顯示自左至右畫出的波形,當(dāng)畫到 LCD的最右端時(shí),清一次屏幕后,重新從 LCD的左端向右畫線,同時(shí)橫坐標(biāo)的值也相應(yīng)的改變。
?。?) PC機(jī)上數(shù)據(jù)顯示程序
為了更好的記錄和分析數(shù)據(jù),我們?cè)?PC機(jī)上用 VC編寫了程序,這樣可以很好保存和處理數(shù)據(jù),為性能分析和系統(tǒng)故障恢復(fù)提供了有利條件。
6.結(jié)論
uC/OS-II實(shí)時(shí)操作系統(tǒng)是開放源碼且得到實(shí)際驗(yàn)證的軟件平臺(tái),而ARM處理器具有強(qiáng)大的32位RISC性能?;趗C/OS-II及ARM,能大量減輕研發(fā)任務(wù),提高研發(fā)速度,為在短時(shí)間內(nèi)設(shè)計(jì)出控制性能優(yōu)秀的數(shù)據(jù)采集系統(tǒng)創(chuàng)造了條件。本文數(shù)據(jù)采集系統(tǒng)已成功應(yīng)用于工業(yè)場(chǎng)合溫度和水位的實(shí)時(shí)測(cè)控,達(dá)到了很好的效果。
本文作者創(chuàng)新點(diǎn):摒棄了傳統(tǒng)單片機(jī)數(shù)據(jù)采集,采用移植性好的嵌入式 uC/OS-II系統(tǒng),具有后續(xù)開發(fā)簡(jiǎn)單,系統(tǒng)穩(wěn)定性好,可靠性高等特點(diǎn)。本設(shè)計(jì)可以很容易得移植到其他數(shù)據(jù)采集系統(tǒng)當(dāng)中去。
來源:LILI
-
新能源汽車背后被忽視的碳排放2023-11-30
-
甘肅省新能源汽車推廣應(yīng)用實(shí)施方案(2016—2020年)2023-11-30
-
混合動(dòng)力汽車的六大關(guān)鍵技術(shù)2023-11-30
-
混合動(dòng)力車優(yōu)缺點(diǎn)2023-11-30
-
混合動(dòng)力汽車動(dòng)力系統(tǒng)有缺點(diǎn)對(duì)比分析2023-11-30
-
燃料電池汽車前景如何2023-11-30
-
【安全】燃?xì)馄嚰託庹窘ㄔO(shè)的安全要求2023-11-30
-
燃?xì)馄嚨娜粘>S護(hù)2023-11-30