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