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