基于PIC單片機(jī)的軌道壓力測試儀的實(shí)現(xiàn)
軌道電路是信號聯(lián)鎖的室外重要設(shè)備,起著保證行車和調(diào)車作業(yè)安全的作用。它能監(jiān)督檢查某一固定區(qū)段內(nèi)的線路(包括站線)是否有列車運(yùn)行、調(diào)車作業(yè)或車輛占用的情況,并能顯示該區(qū)段內(nèi)的鋼軌是否完整。它是以鋼軌為導(dǎo)線,軌縫間用接續(xù)線連續(xù)起來,一端接電源,另一端連接受電器,通過軌道電流來工作。
軌道電路能否正常工作直接影響到列車的安全行駛,因此,對軌道電路的檢測尤為重要,目前市場上的檢測設(shè)備還很少,而且普遍存在功耗大,價(jià)格昂貴,體積大等不足。為此,本文通過對軌道電路分析研究,設(shè)計(jì)一種高精度的壓力測試儀器來模擬火車對軌道的壓力,從而驗(yàn)證軌道電路的性能。
系統(tǒng)的組成及其工作原理
本系統(tǒng)以PIC16F876A單片機(jī)為核心,通過軟件編程實(shí)現(xiàn)其對數(shù)據(jù)處理、系統(tǒng)實(shí)時(shí)控制。系統(tǒng)框圖如圖1所示,由主控MCU模塊、A/D采樣模塊、電源管理模塊、顯示模塊和傳感器組成。
圖1 系統(tǒng)結(jié)構(gòu)圖
本系統(tǒng)各部分的主要功能是:電源管理主要負(fù)責(zé)對電池電壓進(jìn)行檢測和升壓穩(wěn)壓,當(dāng)電壓低于3V,系統(tǒng)停止工作,并進(jìn)行欠壓報(bào)警。主控MCU負(fù)責(zé)對采集來的壓力信號進(jìn)行數(shù)學(xué)計(jì)算,將電壓信號轉(zhuǎn)換為壓力值,在數(shù)碼管上顯示,并可以進(jìn)行手動(dòng)調(diào)零及滿量程調(diào)整。系統(tǒng)精度要求是±0.1kN;可以進(jìn)行超量程報(bào)警和未接傳感器報(bào)警。為了達(dá)到低功耗的目的,在軟件中做了休眠和關(guān)機(jī)的功能。
系統(tǒng)硬件設(shè)計(jì)
1 電源管理電路設(shè)計(jì)
電源管理主要是對電池電壓進(jìn)行升壓和穩(wěn)壓,同時(shí)還能夠進(jìn)行過壓保護(hù)和低壓報(bào)警功能。采用TPS60230芯片組成升壓電路,TPS60230是TI公司生產(chǎn)的一種新型電荷泵DC/DC轉(zhuǎn)換器。其應(yīng)用原理如圖2所示。電池的電壓2~5.4V接入TPS60230輸入腳IN,圖中C1、C2為電荷泵電容,采用等效電阻小的電容。R1、R2分壓來確定低電壓報(bào)警門限,當(dāng)?shù)陀赗1、R2的分壓值時(shí),LBO輸出低電平,單片機(jī)查詢到有低電平后就控制模擬開關(guān)切斷后續(xù)電路電源;輸出5V接后面的模擬開關(guān)和單片機(jī)。
圖2 電源管理電路
2 單片機(jī)與采樣電路設(shè)計(jì)
根據(jù)精度要求,本系統(tǒng)采用ADI公司的16位A/D芯片AD7705,AD7705芯片將放大、濾波和A/D轉(zhuǎn)換單元集于一體,是一種低成本、寬動(dòng)態(tài)范圍、高分辨率的A/D轉(zhuǎn)換芯片。AD7705與單片機(jī)通過SPI進(jìn)行數(shù)據(jù)通信,連接如圖3所示,其中,CH1和CH2為差模輸入通道,REF為滿量程電平,通過調(diào)節(jié)RP1來設(shè)置滿量程電平。單片機(jī)作為主機(jī),通過四線(CS、SCLK、DI、DO)SPI與AD7705相連,DRDY為數(shù)據(jù)轉(zhuǎn)換完成信號,低電平有效,與單片機(jī)RC2口相連,單片機(jī)查詢到RC2口有低電平時(shí),就開始向AD7705發(fā)讀寄存器指令來獲取AD值。CH1+和CH1-為來自壓力傳感器的壓力信號,CH2+和CH2-為調(diào)零電位器送來的信號。
圖3 采樣電路
3 顯示與報(bào)警電路設(shè)計(jì)
顯示與報(bào)警電路如圖4所示,顯示部分采用7段4位數(shù)碼管顯示,PORTB口連接數(shù)碼管的段碼,RC0、RC1、RC6、RC7口經(jīng)過三極管驅(qū)動(dòng)放大控制數(shù)碼管的選擇端。當(dāng)單片機(jī)檢測到RA1口有低電平信號后,控制模擬開關(guān)切斷后續(xù)電路的電源,與此同時(shí),D1和蜂鳴器B發(fā)出報(bào)警信號。當(dāng)壓力超過系統(tǒng)量程時(shí),D2和蜂鳴器報(bào)警。為了區(qū)分低壓報(bào)警和超量程報(bào)警,D1和D2采用不同的顏色,蜂鳴器在等間隔內(nèi)響的次數(shù)不同。
圖4 顯示與報(bào)警電路
系統(tǒng)軟件設(shè)計(jì)
1 采樣和數(shù)據(jù)處理
?、貯D7705的讀寫時(shí)序
AD7705通過四線SPI與單片機(jī)通信,其讀寫時(shí)序圖如圖5(a)、(b)所示,讀寫過程中串行數(shù)據(jù)高位在前,低位在后。DRDY為低電平說明A/D已經(jīng)轉(zhuǎn)換完畢,數(shù)據(jù)已準(zhǔn)備好,可以啟動(dòng)讀寫指令。任何時(shí)候要對AD7705進(jìn)行讀寫操作都須檢查DRDY是否為低。
圖5 AD7705讀寫時(shí)序圖
?、贏D7705的寄存器
第一個(gè)是通信寄存器(communication Register),選擇采集通道、下一次操作是讀還是寫,以及下一次讀寫哪一個(gè)寄存器。
第二個(gè)是設(shè)置寄存器(Setup Register),決定校準(zhǔn)模式、增益設(shè)置、極性設(shè)置以及緩沖模式。
第三個(gè)是時(shí)鐘寄存器(CLOCK Register),設(shè)置濾波器記憶時(shí)鐘控制位。
軟件編程思路也是按這個(gè)順序?qū)懙?,先設(shè)置通信寄存器,其次寫設(shè)置寄存器,最后設(shè)置時(shí)鐘寄存器。設(shè)置完之后,只要檢測到DRDY為低電平,就可以啟動(dòng)時(shí)鐘來讀取AD7705數(shù)據(jù)寄存器中已轉(zhuǎn)換好的數(shù)據(jù)。
2 數(shù)據(jù)處理算法思路
數(shù)據(jù)處理主要是將電壓信號轉(zhuǎn)換成壓力值,將采集來的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。已知:傳感器的參數(shù)為10mV對應(yīng)的是30kN,A/D的滿量程電壓為1.5V,設(shè)采集的A/D值為K,設(shè)換算后的壓力為X,10mV對應(yīng)的A/D值為D,增益為64,則由以上參數(shù)可求出:
(1)
(2)
式(2)就是轉(zhuǎn)換后的壓力值和采集的A/D值的關(guān)系。
因?yàn)閱纹瑱C(jī)不支持浮點(diǎn)運(yùn)算,為了能精確的顯示結(jié)果,用軟件模擬浮點(diǎn)除法運(yùn)算,其主要思想是:定義一整型變量INTD,將除的結(jié)果存入INTD中,因?yàn)槭钦妥兞?,所以除法的結(jié)果只取了整數(shù)部分,例如5/4=1,模擬除法的算法主要依據(jù)這一特性。
第一步,如果采集來的值K大于932,K/932存入整型變量中即可得到整數(shù)部分。
第二步,用K對932取余得到R,顯然R小于932,然后得到小數(shù)點(diǎn)后第一位,再用R×10對932取余得到R1,小數(shù)點(diǎn)后第二位,以此類推,得到小數(shù)點(diǎn)后第三位dec3。
第三步,如果采集來的值K小于932,直接進(jìn)行第二步操作。
第四步,與邏輯零點(diǎn)進(jìn)行比較,得到理論壓力值,并進(jìn)行BCD轉(zhuǎn)換在數(shù)碼管上顯示。
圖6 軟件流程圖
3 程序編程思路及流程圖
系統(tǒng)軟件編程采用狀態(tài)機(jī)機(jī)制,上電之后進(jìn)行各個(gè)模塊的初始化,包括I/O口初始化、定時(shí)器初始化、SPI初始化等。初始化完后進(jìn)入系統(tǒng)循環(huán),在循環(huán)體中根據(jù)任務(wù)標(biāo)志位進(jìn)行任務(wù)處理,主要任務(wù)有:欠壓處理、數(shù)據(jù)采集、睡眠、關(guān)機(jī)等。在數(shù)據(jù)處理時(shí),先采集通道2的值,然后采集通道1,如果傳感器未接,則采集來的值為零或者近似零,系統(tǒng)報(bào)警等待。如果采集來的值大于零,則參與運(yùn)算。求出理論值顯示。
評論