新型電動(dòng)汽車(chē)鋰電池管理系統的研究與實(shí)現----系統的總體設計(二)
3.4單總線(xiàn)系統簡(jiǎn)介及溫度測量方法
3.4.1概述
美國Dallas公司近年來(lái)推出了單總線(xiàn)技術(shù)及相應的集成芯片,它的一系列電池管理芯片能方便地組成分布式管理系統,極大地減輕了系統布線(xiàn),從而提高系統可靠性和抗干擾性,滿(mǎn)足電動(dòng)車(chē)多點(diǎn)測量的要求。
單總線(xiàn)技術(shù)是只有一個(gè)總線(xiàn)命令者和一個(gè)或多個(gè)從器件組成的計算機應用系統,總線(xiàn)命令者通常是PC機或單片機,系統由硬件配置、處理次序和單總線(xiàn)信號三部分組成。系統按照單總線(xiàn)協(xié)議規定的時(shí)序和信號波形進(jìn)行初始化、識別器件和進(jìn)行數據交換。
單總線(xiàn)技術(shù)可用于環(huán)境狀態(tài)檢測系統、實(shí)時(shí)氣象檢測系統(自動(dòng)氣象站)、倉庫監控系統、樓宇監管系統、停車(chē)收費、考勤管理等。應用中主控計算機根據要求,既可以采用PC機也可以采用單片機。
3.4.2硬件配置
單總線(xiàn)系統定義了一根信號線(xiàn),總線(xiàn)上的每個(gè)器件都能夠在合適的時(shí)間驅動(dòng)它,相當于把計算機的地址線(xiàn)、數據線(xiàn)、控制線(xiàn)合為一根信號線(xiàn)對外進(jìn)行數據交換。為了區分這些芯片,廠(chǎng)家在生產(chǎn)每個(gè)芯片時(shí),都編制了唯一的序列號,通過(guò)尋址讀出序列號碼,就能把芯片識別出來(lái)。這樣就能使這些器件掛在一根信號線(xiàn)上進(jìn)行碼分多址、串行分時(shí)數據交換,組成一個(gè)自動(dòng)測控系統或自動(dòng)收費系統,甚至還可以用單總線(xiàn)組成一個(gè)微型局域網(wǎng)。
廠(chǎng)家對每個(gè)芯片用激光刻錄一個(gè)64位二進(jìn)制ROM代碼。從最低位開(kāi)始,前8位是族碼,表示產(chǎn)品的分類(lèi)編號;接著(zhù)的48位是一個(gè)唯一的序列號;最后8位是前56位的CRC校驗碼。CRC(Cyclic Redundancy Check)稱(chēng)為循環(huán)冗余碼檢測,是數據通信中校驗數據傳輸是否正確的一種方法。在使用時(shí),總線(xiàn)命令者讀入ROM中64位二進(jìn)制碼后,將前56位按CRC多項式(這里是X8+X5+X4+1)計算出CRC值,然后同ROM中高8位的CRC值比較,若相同則表明數據傳輸正確,否則要求重傳。48位序列號是一個(gè)15位的十進(jìn)制編碼,這么長(cháng)的編碼完全可為每個(gè)芯片編制一個(gè)全世界唯一的號碼,也稱(chēng)為身份證號,可以被尋址識別出來(lái)。此外,芯片內還含有收發(fā)控制和電源存儲電路,其示意圖如圖3.5。
這些芯片采用CMOS技術(shù),耗電量都很?。臻e時(shí)幾μW,工作時(shí)幾mW),故一般不用另附電源。單總線(xiàn)上通常處于高電位(5V左右),每個(gè)器件都能在需要時(shí)驅動(dòng)它。因此,掛在總線(xiàn)上的每個(gè)器件必需是漏極開(kāi)路或者是三態(tài)輸出的,這樣,不工作時(shí)不會(huì )給總線(xiàn)增加功耗。
單總線(xiàn)的數據傳輸有兩種模式,通常以16.3kb/s的速度通信,超速模式可達142kb/s.因此,只能用于對速度要求不高的場(chǎng)合,一般用于100kb/s以下速度的測控或數據交換系統中。
以上內容是單總線(xiàn)技術(shù)協(xié)議所要求的,各種芯片都具備這些基本內容,系統首先識別器件號,確認后才進(jìn)入某種具體芯片功能,如A/D轉換器、溫度計等。
單總線(xiàn)同單片機的最簡(jiǎn)單接口如圖3.6,
根據單總線(xiàn)器件手冊,單總線(xiàn)技術(shù)作用距離在單片機I/O直接驅動(dòng)下可達200m,經(jīng)擴展可達1000m以上,允許掛上百個(gè)器件,能滿(mǎn)足一般測控系統要求。
3.4.3處理時(shí)序
處理時(shí)序是軟件設計的任務(wù)。在單總線(xiàn)系統中,軟件設計是技術(shù)的關(guān)鍵,簡(jiǎn)潔的硬件配置是依靠復雜的軟件來(lái)支撐的。在PC機作為主控機時(shí),單總線(xiàn)軟件設計基于Dallas公司授權的軟件開(kāi)發(fā)商提供的成套開(kāi)發(fā)工具,為軟件開(kāi)發(fā)應用帶來(lái)很大的便利。而用單片機作為主控機時(shí),得由自己依據單總線(xiàn)協(xié)議,用匯編語(yǔ)言和C語(yǔ)言來(lái)編寫(xiě)全部軟件,給開(kāi)發(fā)應用增加了一定難度。
處理時(shí)序保證數據可靠的傳送,任何時(shí)刻單總線(xiàn)上只能有一個(gè)控制信號或數據。每次操作時(shí),一般有以下四個(gè)過(guò)程:
①初始化;
②傳送ROM命令;
③傳送RAM命令;
④數據交換。
單總線(xiàn)上所有處理都從初始化開(kāi)始。初始化時(shí)序由總線(xiàn)命令者發(fā)出的復位脈沖和一個(gè)或多個(gè)從器件發(fā)出的應答脈沖組成。“應答脈沖”是從器件讓總線(xiàn)命令者知道該器件是在總線(xiàn)上,并已經(jīng)準備好接收命令開(kāi)始工作。
當總線(xiàn)命令者檢測到某器件的存在,就會(huì )發(fā)出傳送ROM功能命令,它用來(lái)選擇某個(gè)或一些從器件,同他們建立握手信號,以便同它進(jìn)行具體功能操作。單總線(xiàn)協(xié)議規定其層次結構如圖3.7.
單總線(xiàn)命令者首先必須發(fā)送7個(gè)ROM功能命令中的一個(gè)命令:
①讀ROM(總線(xiàn)上只有一個(gè)器件時(shí),如讀DS2401的序列號);
②匹配ROM(總線(xiàn)上有多個(gè)器件時(shí),尋址某個(gè)器件);
③查找ROM(系統首次啟動(dòng)后,須識別總線(xiàn)上各器件);
④跳過(guò)ROM(總線(xiàn)上只有一個(gè)器件時(shí),可跳過(guò)讀ROM命令直接向器件發(fā)送命令,以節省時(shí)間);
⑤超速匹配ROM(超速模式下尋址某個(gè)器件);
⑥超速跳過(guò)ROM(超速模式下跳過(guò)讀ROM命令);
⑦條件查找ROM(只查找輸入電壓超過(guò)設置的報警門(mén)限值的某個(gè)器件);這些操作在手冊中都有具體的命令碼供編程使用。
成功執行上述命令之一后,總線(xiàn)命令者可發(fā)送任何一個(gè)可使用的命令來(lái)訪(fǎng)問(wèn)存儲部分和實(shí)現控制功能,進(jìn)行數據交換。所有數據的讀寫(xiě)都是從最低位開(kāi)始的。
3.4.4單總線(xiàn)信號
單總線(xiàn)傳送數據或命令是由一系列的時(shí)序信號組成的,單總線(xiàn)上共有4種時(shí)序信號:1.初始化信號;2.寫(xiě)0信號;3.寫(xiě)1信號;4.讀信號。
各器件的應用手冊中對這4種波形參數(如脈沖上升時(shí)間、寬度和間隙等)都作了具體的要求,設計中應保證指令執行時(shí)間小于或等于時(shí)序信號中的最小時(shí)間。這里應該嚴格遵循時(shí)序關(guān)系,并注意當單片機工作頻率不同時(shí),單片機的延時(shí)值是不同的。圖3.8給出了常規模式下這4種波形的示意圖。
3.4.5單總線(xiàn)器件
單總線(xiàn)系統中配置的各種器件是由Dallas等公司提供的專(zhuān)用芯片來(lái)實(shí)現的。這里簡(jiǎn)單介紹我們使用的芯片。
1.數值溫度計DS18B20
該溫度計采用了與眾不同的原理,它利用溫敏振蕩器的頻率隨溫度變化的關(guān)系,通過(guò)對振蕩周期的計數來(lái)實(shí)現溫度測量的。為了擴大測溫范圍和提高分辨率,使用了一個(gè)低溫系數振蕩器和一個(gè)高溫系數振蕩器分別進(jìn)行計數,并采用了非線(xiàn)性累加器等電路來(lái)改善線(xiàn)性,故DS18B20具有下列良好的特性,而且價(jià)格低廉。
①溫度測量范圍:-55~+125℃;
②分辨率:±0.5℃(-10~+85℃時(shí));
③溫度值輸出:9~12位可選擇的二進(jìn)制數值量;
④轉換時(shí)間:750ms(最大值);
⑤用戶(hù)可設置報警溫度的上下限;
⑥不需外圍電路,電源可由單總線(xiàn)提供;
2. A/D轉換器
在單總線(xiàn)上直接掛上A/D轉換器,會(huì )使系統的檢測功能大大增強。各種物理量只要通過(guò)傳感器變?yōu)殡妷毫?,就可由A/D采集后經(jīng)單總線(xiàn)送到計算機進(jìn)行處理。Dallas公司推出的DS2450就是這樣的A/D轉換器,其主要特性為:
①4路模擬輸入通道,兩種模擬輸入量程0~2.56V和0~5.12V;
②未用做輸入的通道可作為輸出通道使用;
③逐次逼近的變換原理,可選擇的8位轉換精度;
④響應模擬電壓超門(mén)限報警設置;
3.4.6系統中用到的溫度測試方法
CPU的I/O口連接單總線(xiàn)器件,并通過(guò)一個(gè)上拉電阻連到+5V.需要注意的是單總線(xiàn)器件的布局應該是盡量簡(jiǎn)單,并保證匹配電阻出現在單總線(xiàn)拓撲結構的兩端。系統連接圖如圖3.9:
3.5總電流、總電壓測量
在以前系統中,總電流、總電壓測量電路如圖3.10,充電時(shí)電流傳感器在采樣電阻R1上的電壓為“+”,經(jīng)過(guò)運放后,AD0為“-”,AD1為“+”;放電時(shí)電流傳感器在采樣電阻R1上的電壓為“-”,AD0為“+”,AD1為“-”。電壓傳感器在采樣電阻R6上的壓降AD2和AD0、AD1同時(shí)送往80C552的A/D口進(jìn)行A/D轉換,再經(jīng)過(guò)標度變換即可測得總電路、總電壓。程序中,通過(guò)AD0和AD1的值,就可判斷出電池是處于充電狀態(tài)還是放電狀態(tài)。
80C552的A/D轉換是10位的,這對于電池的功率強度估計略顯不夠,并且需要調整A1、A2運放的工作點(diǎn)。在BMS-Ⅲ系統中,總電流、總電壓測量采用16位A/D轉換芯片AD976,下面是AD976的主要特性:
- 16位ADC;
- 100kSPS速率;
- 5V供電,±10V輸入電壓范圍;
- 低功耗:100mW;
- 內部2.5V或外部參考電壓選擇;
- 高速并行接口;
- 片內時(shí)鐘。
由于A(yíng)D976的輸入電壓范圍是±10V,總電流的測量不需要運放進(jìn)行正負電壓轉換,從而免去了調整運放工作點(diǎn)問(wèn)題,另外,AD976提供內部參考電壓,這給系統調試也帶來(lái)方便,下圖3.11是AD976測量總電壓、電流框圖:
3.6顯示系統
在系統中,顯示采用精電蓬遠公司生產(chǎn)的320×240點(diǎn)陣的液晶顯示模塊DMF-50174,液晶控制器是SED1335.DMF-50174分為兩個(gè)區,第一區對應ASCII字符顯示方式,即一個(gè)字符對應一個(gè)8×8的點(diǎn)陣,故整個(gè)第一區需要(320×240)/64=1200個(gè)字節,而第二區對應點(diǎn)陣顯示方式,在第二區中,一個(gè)字節對應8點(diǎn)陣,故第二區需要(320×240)/8=9600個(gè)字節,液晶屏的點(diǎn)陣是和顯示RAM一一對應的,DMF-50174一共需要10800個(gè)字節的顯示RAM.
液晶控制器SED1335由振蕩器、功能邏輯電路、顯示管理電路、字符庫及其管理電路以及產(chǎn)生驅動(dòng)時(shí)序的時(shí)序發(fā)生器組成,振蕩器工作頻率可在1M~10MHz范圍內選擇。SED1335能在很高的工作頻率下迅速地解譯MPU發(fā)來(lái)地指令代碼,將參數置入相應的寄存器內,并觸發(fā)相應的邏輯功能電路運行??刂撇靠梢怨芾?4K顯示RAM ,管理內藏的字符發(fā)生器及外擴的字符發(fā)生器。
SED1335將64K顯示RAM可分為以下幾種顯示特區:
1.文本顯示特性
具有此特性的顯示RAM區專(zhuān)用于文本方式顯示,在該顯示RAM區中每個(gè)字節的數據都認為是字符代碼。SED1335將使用該字符代碼確定字符庫中字符首地址,然后將相應的字模數據傳送到液晶顯示模塊上。在液晶上出現該字符的8×8點(diǎn)陣塊。也就是文本顯示RAM的一個(gè)字節對應顯示屏上的8×8點(diǎn)陣。
2.圖形顯示方式
具有此特性的顯示RAM區專(zhuān)用于圖形方式顯示。在該顯示RAM區中每個(gè)字節的數據直接被送到液晶顯示模塊上,每個(gè)位的電平狀態(tài)決定顯示屏上一個(gè)點(diǎn)顯示狀態(tài),“1”為顯示,“0”為不顯示。所以圖形顯示RAM的一個(gè)字節對應顯示屏上的8×1點(diǎn)陣。
SED1335中專(zhuān)有一組寄存器來(lái)管理這兩種特性的顯示區,SED1335可以單獨顯示一個(gè)顯示區,也可把兩個(gè)特性的顯示區通過(guò)某種邏輯關(guān)系合成顯示,這些顯示方式及特性的設置都是通過(guò)軟件指令設置實(shí)現的。
SED1335有13條指令,多數指令帶有參數,一共分為下面四類(lèi)指令:系統控制指令、顯示操作指令、繪制操作指令及存儲操作指令。圖3.12是80C552和SED1335的接口電路:
在顯示程序上,BMS-Ⅲ設計了以下幾個(gè)子程序供其他程序調用,所有的顯示畫(huà)面都是通過(guò)調用它們完成的。
initlcdreg1()初始化液晶顯示區1;
initlcdreg2()初始化液晶顯示區2;
dispascii(BYTE x,BYTE y,BYTE c)在第一區的(x,y)處顯示ASCII值為c的字符;
dispstr(BYTE x,BYTE y,BYTE len,BYTE *str)在第一區的(x,y)開(kāi)始處顯示長(cháng)度為len的ASCII字符串;
disphz(WORD x,WORD y,WORD c)在第二區的(x,y)處顯示16×16點(diǎn)陣的漢字;
disphzstr(WORD x,WORD y,BYTE len,BYTE *str)在第二區的(x,y)開(kāi)始處顯示長(cháng)度為len的漢字串;
disphz8_16(WORD x,WORD y,WORD c)在第二區的(x,y)處顯示8×16點(diǎn)陣的字符;
dispbitmap(BYTE x,BYTE y,BYTE lenth,BYTE height,BYTE *str)在第二區的(x,y)處顯示長(cháng)度為lenth、高度為height的位圖。
以上16×16點(diǎn)陣漢字是在ucdos下通過(guò)一種漢字提取程序得到的字模代碼,由于單片機的內存有限,我只是把需要顯示的漢字提取出來(lái),放到一個(gè)雙下標數組中,需要顯示某一漢字時(shí),只需調用該漢字的下標序號即可。
8×16點(diǎn)陣字符及其它位圖則是通過(guò)去掉*.bmp位圖文件的文件頭而得到的。
評論