目前,國內(nèi)外使用的車輪定位儀主要采用接觸式的定位方式,由于其測量原理的局限性,其檢測操作過程十分復(fù)雜,無法實(shí)現(xiàn)快速檢測,使之難以在火車制造廠和火車檢測線中廣泛使用。針對這些不足,本文提出并設(shè)計(jì)了一種以ARM芯片LPC2214為核心的新型測量儀。
1 總體設(shè)計(jì)
1.1 性能要求
本設(shè)計(jì)的任務(wù)是設(shè)計(jì)一款手持式的火車車輪參數(shù)測量儀,用來檢測車輪的磨損程度,確定車輪的工作狀況,保證車輛的正常和安全運(yùn)行。設(shè)計(jì)的基本原理是使用激光傳感器測量車輪相應(yīng)的參數(shù),將其傳給測量儀,實(shí)現(xiàn)數(shù)據(jù)的處理、存儲和顯示等。根據(jù)設(shè)計(jì)要求,需要測量的車型包括貨車、客車和動車3種,車輪型號有20種,并有以下具體的要求:
(1)在存儲和顯示測量數(shù)據(jù)時(shí)提供時(shí)間、地點(diǎn)編號、測量員編號等相關(guān)信息;
(2)測量范圍10 mm~100 mm,精度0.01 mm,并存儲一定數(shù)量的測量數(shù)據(jù);
(3)良好的人機(jī)交互界面;
(4)體積小,重量輕,低功耗。
1.2 電路總體設(shè)計(jì)
根據(jù)性能指標(biāo),本設(shè)計(jì)采用NXP公司的ARM芯片LPC2214作為核心處理器件,外圍器件包括實(shí)時(shí)時(shí)鐘PCF8563、FLASH存儲器SST25VF016B、RS232/485串口驅(qū)動芯片和電源芯片,以及液晶屏和小鍵盤等,如圖1所示。
?
LPC2214是一款性能優(yōu)異的微處理器,其基于一種支持實(shí)時(shí)仿真和跟蹤的32 bit ARM7TDMI-STM CPU,帶有256 KB片內(nèi)FLASH存儲器、2個(gè)UART串口、SPI接口、外部存儲器接口等,具有高達(dá)60 MHz的操作頻率,完全滿足設(shè)計(jì)需要[1,4].
本系統(tǒng)有5個(gè)外部傳感器,其中3個(gè)位移傳感器、2個(gè)激光傳感器,具體參數(shù)的獲取由這5個(gè)傳感器實(shí)現(xiàn)。在數(shù)據(jù)測量中,根據(jù)車型不同,可以簡要?dú)w結(jié)為如下測量方式:(1)動車型的測量,獲取連在RS485線的3個(gè)位移傳感器值和激光傳感器4和激光傳感器5值;(2)普通客車和貨車的測量,先獲取連在RS485線的3個(gè)位移傳感器值和激光傳感器4值,再用繼電器閉合電磁線圈,延時(shí)2 s,讀取激光傳感器4值。
2 各部分軟硬件設(shè)計(jì)
2.1 實(shí)時(shí)時(shí)鐘設(shè)計(jì)
實(shí)時(shí)時(shí)鐘的縮寫是RTC(Real_Time Clock)。 RTC 是集成電路,通常稱為時(shí)鐘芯片。RTC通常為8PIN,有SOP8、MSOP8、TSSOP8等多種封裝。其中有6個(gè)I/O口的功能是一樣的,分為:晶體接口2PIN、MCU接口2PIN、主電源1PIN、地1PIN.這樣就剩下2個(gè)I/O的功能定義被區(qū)分開了。所以會有許多的RTC型號。例如 荷電科技的H1208、H8563、H1302、H1307、H1381等等。大家看到后會發(fā)現(xiàn)許多RTC在I/O口的定位上有明顯的區(qū)別,所以PCB設(shè)計(jì)時(shí)需要多注意
實(shí)時(shí)時(shí)鐘的任務(wù)流程圖如圖2所示。
?
由于在保存測量數(shù)據(jù)時(shí),需要同時(shí)保存測量時(shí)的時(shí)間,這樣便于日后檢查統(tǒng)計(jì),而LPC2214內(nèi)部自帶的實(shí)時(shí)時(shí)鐘是掉電易失的,故在設(shè)計(jì)中采用實(shí)時(shí)時(shí)鐘芯片PCF8563設(shè)計(jì)了外部時(shí)鐘電路。PCF8563是低功耗的CMOS 實(shí)時(shí)時(shí)鐘/日歷芯片,具有16個(gè)8 bit寄存器,采用I2C接口,通過SDA和SCL 2條線與LPC2214相連,使用非常簡便。在其電源端接了一個(gè)1 F的電容(也可改用紐扣電池),在測量儀斷電時(shí)為PCF8563提供電壓,從而實(shí)現(xiàn)實(shí)時(shí)計(jì)時(shí)功能。
另外,其第10~12個(gè)寄存器(09H~0BH)為分鐘、小時(shí)和日報(bào)警寄存器,此處不用報(bào)警功能,而將其改為存儲測量次數(shù),節(jié)省了外部存儲空間,也保證了數(shù)據(jù)的安全性。需要存儲的測量次數(shù)為16 bit,考慮到3個(gè)報(bào)警寄存器并非所有位數(shù)都是有效的,實(shí)際分配為09H取8 bit,0AH和0BH取后4 bit,這樣正好16 bit,滿足測量數(shù)據(jù)的存儲范圍。
2.2 外部存儲器設(shè)計(jì)
本測量儀是一種手持式設(shè)備,對體積要求比較嚴(yán)格。為減小電路板面積和簡化布線,外部存儲器采用只有8個(gè)管腳的小封裝SST25VF016B.SST25VF016B是一款16 Mbit(000000H~1FFFFFH,2 MB)SPI接口串行FLASH,其采用的CMOS SuperFlash工藝保證更低的功耗,并具有4 KB、32 KB、64 KB以及Chip-Erase等4種靈活的擦除方式。SST25VF016B的連接如圖3所示。
?
SST25VF016B的操作包括擦除和讀寫等,由于對速度的要求不嚴(yán)格,所以在設(shè)計(jì)中采用GPIO口模擬SPI接口。發(fā)送和接收數(shù)據(jù)的2個(gè)子程序如下:
/*******************************************
* 名稱:Send_Byte()
* 功能:模擬SPI向SST25發(fā)送數(shù)據(jù),在SCK的
* 上升沿發(fā)送1 bit的數(shù)據(jù),共發(fā)送8個(gè)
*******************************************/
void Send_Byte(uint8 byte_OUT)
{
uint8 i;
for(i=0;i<8;i++)
{
IO0CLR=SCK; //SCK=0
if((byte_OUT & 0x80)==0x80) //輸出1
{
IO0SET=SI; //SI=1;
}
else
{
IO0CLR=SI; //SI=0
}
byte_OUT=(byte_OUT《1); //輸出0
IO0SET=SCK; //SCK=1
}
}
/*******************************************
* 名稱:Get_Byte()
* 功能:模擬SPI接收數(shù)據(jù),在SCK的下降沿接收
* 1 bit的數(shù)據(jù),共接收8個(gè)
*******************************************/
uint8 Get_Byte(void)
{
uint8 i;
uint16 byte_IN=0;
for(i=0;i<8;i++)
{
IO0CLR=SCK; //SCK=0
if((IO0PIN》5)&0x01) //判斷是否輸入1
{
byte_IN++;
}
IO0SET=SCK; //SCK=1
byte_IN=(byte_IN《1);
}
byte_IN=(byte_IN》1);
return(byte_IN);
}
在對外部FLASH存儲空間的分配中,前80 KB用來存儲20組設(shè)定的參數(shù),用輪型編號進(jìn)行索引,每組占4 KB;剩下的空間用來存儲測量數(shù)據(jù),每組測量數(shù)據(jù)分配40 B,用存儲在實(shí)時(shí)時(shí)鐘報(bào)警寄存器內(nèi)的測量次數(shù)進(jìn)行索引,理論可存儲50 380組,可滿足長時(shí)間使用的需要。另外,在設(shè)置和測量的數(shù)據(jù)中,有一部分參數(shù)是小數(shù),可將其轉(zhuǎn)化為整數(shù)后存儲,讀取時(shí)再轉(zhuǎn)化為小數(shù)即可。外部存儲器的讀寫流程如圖4所示。
![](/uploads/allimg/110819/11045aL9-0.gif)
?
2.3 液晶屏驅(qū)動設(shè)計(jì)
液晶顯示器件的基本結(jié)構(gòu)是由兩片玻璃基板制成的薄形盒。這種結(jié)構(gòu)最利于用作顯示窗口,而且它可以在有限的面積上容納最大量的顯示內(nèi)容,顯示內(nèi)容的利用率最高。此外,這種結(jié)構(gòu)不僅可以作得很小,如照相機(jī)上所用的顯示窗,而且作的很大,如大屏幕液晶電視及大型液晶廣告牌。
液晶屏型號為P160128,由于其沒有自帶的漢字庫,故根據(jù)需要顯示的漢字通過相關(guān)的軟件來完成制作漢字庫[3].設(shè)計(jì)成的字庫和ASCII字符約有8 KB,存儲在LPC2214的內(nèi)部FLASH中。此液晶屏為160×128點(diǎn)陣,而每個(gè)漢字占用點(diǎn)陣為16×16,故此屏可以顯示8行漢字,每行10個(gè),因此對于某些需要顯示較多參數(shù)的地方,可以考慮分多屏顯示。
2.4 鍵盤掃描程序設(shè)計(jì)
根據(jù)應(yīng)用需要,設(shè)計(jì)中采用4×5矩陣鍵盤,共計(jì)20個(gè)按鍵。鍵盤掃描程序是整個(gè)軟件的核心程序,通過使用者對鍵盤的操作調(diào)用相應(yīng)的子程序,完成相應(yīng)的設(shè)置和控制.
3 軟硬件調(diào)試
本設(shè)計(jì)中需要顯示設(shè)置、測量、查詢3個(gè)界面,根據(jù)屏幕的大小,設(shè)置和查詢分為2屏顯示,測量界面為1屏顯示。
系統(tǒng)開機(jī)時(shí)默認(rèn)進(jìn)入設(shè)置界面,設(shè)置界面1和界面2可以通過"→""←"進(jìn)行切換,其中實(shí)時(shí)時(shí)鐘的設(shè)定就是在設(shè)置界面2進(jìn)行的。在設(shè)置界面可以對20種輪型進(jìn)行參數(shù)的設(shè)置和查看,每組輪型參數(shù)的有效長度為40 B,實(shí)際分配4 KB,這樣做的原因,就是在對某種輪型參數(shù)進(jìn)行修改時(shí),需要先對修改區(qū)域進(jìn)行擦除,可通過調(diào)用擦除4 KB子程序Block_Erase4k()來實(shí)現(xiàn),而不會影響到其他組。
測量界面負(fù)責(zé)顯示經(jīng)處理后的數(shù)據(jù)信息。在測量前半部分可以設(shè)定6個(gè)相關(guān)的參數(shù)。當(dāng)檢測到"確認(rèn)"鍵按下時(shí),系統(tǒng)自動調(diào)用子函數(shù)save_test_para()來保存測量數(shù)據(jù)和實(shí)時(shí)的日期時(shí)間,同時(shí)測量次數(shù)自動加1,為存儲下一組測量數(shù)據(jù)做好準(zhǔn)備。
當(dāng)需要對之前測量的數(shù)據(jù)進(jìn)行查詢時(shí),可以切換到"查詢"界面。"查詢"界面默認(rèn)顯示為剛剛保存的一組測量數(shù)據(jù),此時(shí)可以通過"↓""↑"2個(gè)按鍵對序號進(jìn)行增減,也可以通過數(shù)字鍵輸入要查詢的測量序號,然后按"確認(rèn)"鍵,通過執(zhí)行子函數(shù)Display_querry()調(diào)出測量數(shù)據(jù)。相對于"測量"界面,"查詢"界面需要額外顯示測量日期和時(shí)間,受屏幕限制,同樣將其分為2屏,可以通過"→""←"2個(gè)按鍵進(jìn)行切換。
作為一款新型的輪參測量儀,本系統(tǒng)最大的意義在于采用合理的器件,以相對很低的成本達(dá)到了較高的精度,既可用于測量在線運(yùn)行列車車輪的磨損,還可以在生產(chǎn)線上對輪型尺寸進(jìn)行分選,同時(shí),可借鑒該系統(tǒng)的設(shè)計(jì)思想用于其他對體積、功耗、成本等要求較高的場合。
評論