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