《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 測試測量 > 設(shè)計應(yīng)用 > 智能車運動狀態(tài)實時監(jiān)測系統(tǒng)設(shè)計及實現(xiàn)
智能車運動狀態(tài)實時監(jiān)測系統(tǒng)設(shè)計及實現(xiàn)
中電網(wǎng)
摘要: 本系統(tǒng)主要完成將智能車行駛過程中的各種狀態(tài)信息(如傳感器亮滅,,車速,,舵機轉(zhuǎn)角,電池電量等)實時地以無線串行通信方式發(fā)送至上位機處理,,并繪制各部分狀態(tài)值關(guān)于時間的曲線,。有了這些曲線就不難看出智能車在賽道各個位置的狀態(tài),各種控制參數(shù)的優(yōu)劣便一目了然了,。尤為重要的是對于電機控制PID參數(shù)的選取,,通過速度—時間曲線可以很容易發(fā)現(xiàn)各套PID參數(shù)之間的差異。對于采用CCD 傳感器的隊伍來說,,該系統(tǒng)便成為了調(diào)試者的眼睛,,可以見智能車之所見,相信對編寫循線算法有很大幫助,。而且還可以對這些數(shù)據(jù)作進一步處理,,例如求取一階導(dǎo)數(shù),以得到更多的信息,。
Abstract:
Key words :

  系統(tǒng)功能及應(yīng)用

  本系統(tǒng)主要完成將智能車行駛過程中的各種狀態(tài)信息(如傳感器亮滅,,車速,舵機轉(zhuǎn)角,,電池電量等)實時地以無線串行通信方式發(fā)送至上位機處理,,并繪制各部分狀態(tài)值關(guān)于時間的曲線。有了這些曲線就不難看出智能車在賽道各個位置的狀態(tài),,各種控制參數(shù)的優(yōu)劣便一目了然了,。尤為重要的是對于電機控制PID參數(shù)的選取,通過速度—時間曲線可以很容易發(fā)現(xiàn)各套PID參數(shù)之間的差異,。對于采用CCD 傳感器的隊伍來說,該系統(tǒng)便成為了調(diào)試者的眼睛,,可以見智能車之所見,,相信對編寫循線算法有很大幫助,。而且還可以對這些數(shù)據(jù)作進一步處理,,例如求取一階導(dǎo)數(shù),以得到更多的信息,。

  系統(tǒng)的硬、軟件設(shè)計

  設(shè)計方案主要分成三部分:車載數(shù)據(jù)采集系統(tǒng),,無線數(shù)傳系統(tǒng),,上位機數(shù)據(jù)處理系統(tǒng)。系統(tǒng)基本構(gòu)建如圖1所示,。



圖1智能實時監(jiān)測系統(tǒng)結(jié)構(gòu)框圖與流程圖

  車載數(shù)據(jù)采集系統(tǒng)

  車載數(shù)據(jù)采集系統(tǒng)主要由單片機負責(zé)采集賽車行駛過程中的速度,、傳感器狀態(tài),、電池電壓,、舵機轉(zhuǎn)角等信息,。為了使監(jiān)測系統(tǒng)不占用S12單片機的內(nèi)部資源并且支持熱插拔,,我們將除供電之外的監(jiān)測系統(tǒng)與智能車控制系統(tǒng)相分離。我們選擇ATMEL公司的ATMEGA16單片機作為該數(shù)據(jù)采集系統(tǒng)的處理器,。二值型光電傳感器信號的采集直接使用該單片機的I/O口進行采集,,連續(xù)型光電傳感器、電池電壓及CCD攝像頭信號則采用該單片機的A/D口進行采集,,速度信息則通過光電編碼器和該單片機的計數(shù)器來采集,。采集到的數(shù)據(jù)每20ms向上位機發(fā)送一次。

  無線數(shù)傳系統(tǒng)

  下位機向上位機傳輸?shù)氖且悦?0ms傳輸一組包含了光電編碼器值(speed),,電池電壓(battery),,舵機轉(zhuǎn)角值(angle),傳感器當前狀態(tài) (sensor)的數(shù)據(jù),,如果是在理想狀態(tài)下,,上位機接收到的應(yīng)是上述各值循環(huán)出現(xiàn)的周期性數(shù)據(jù),,此時上位機只需將這些數(shù)據(jù)按順序裝入各自的數(shù)組并畫圖即可。但在實際的無線傳輸過程中可能出現(xiàn)數(shù)據(jù)丟失現(xiàn)象,。因此加入適當?shù)臄?shù)據(jù)校驗是必要的,,否則會出現(xiàn)數(shù)據(jù)裝入錯誤,造成畫圖的混亂,。我們在實際過程中是在每組數(shù)據(jù)中加入0x00,0xff的幀頭,,當數(shù)據(jù)出現(xiàn)錯誤時,則舍棄該幀數(shù)據(jù),。

  數(shù)據(jù)的無線收發(fā)部分采用的是SUNRAY公司的QC96型無線收發(fā)模塊,,該模塊可以收發(fā)波特率為9600bps的串行數(shù)據(jù),,距離可達100m,。

  上位機的數(shù)據(jù)接收及處理

  上位機部份主要由四個模塊構(gòu)成:

*數(shù)據(jù)接收模塊
功能:上位機通過串口采集下位機發(fā)送的原始數(shù)據(jù)。

實現(xiàn):VC++中實現(xiàn)串口通信一般有二種方式,,分別是MSComm控件和Windows API函數(shù),。MSComm簡潔易用,適用于比較簡單的系統(tǒng),,Windows API函數(shù)應(yīng)用較廣但比較復(fù)雜繁瑣,由于此模塊的串口通信功能相對簡單,本系統(tǒng)采用前者,。在實際過程中使用的是事件驅(qū)動的方式,這種方法響應(yīng)及時,,可靠性高,,并且比查詢法占用更少的資源。

*存儲模塊
功能:可直接存儲采集到的原始數(shù)據(jù),,以備以后更多的分析處理,。

實現(xiàn):在每個OnComm事件被觸發(fā)后,將串口接收到的數(shù)據(jù)直接存入temp臨時文件,,并且可以在用戶的要求下將temp臨時文件里的值存儲到指定文件,。

*數(shù)據(jù)的分析和處理模塊
功能:將采集到的原始數(shù)據(jù)進行用戶選定的分析和處理,主要包括丟棄錯誤數(shù)據(jù),,以及去除幀頭并進行數(shù)據(jù)裝入任務(wù),,同時也可以對已保存的數(shù)據(jù)進行分析和處理。

實現(xiàn):將temp臨時文件或用戶指定文件的數(shù)據(jù)讀出并裝入,,以下為主要程序代碼:
void CChuankokjDlg::find_data(car_data c_data[], BYTE c_source[], int c_length)
{
int i=0;
while(i {  if((c_source[i]==0x00)&&(c_source[i+1]==0 xff)&&(c_source[i+6]==0x0 0)&&(c_source[i+7]==0xff))//判斷幀頭并進行數(shù)據(jù)裝入
  {
   c_data[length].speed_data=c_source[i+2];
   c_data[length].battary_data=c_source[i+3];
   c_data[length].direction_data=c_source[i+4];
   c_data[length].sensor_data=c_source[i+5];
   i=i+1;
  }
  else
   i++;
}
}

*圖形顯示模塊
功能:以圖形界面來顯示處理后的數(shù)據(jù),,以便更直觀地觀察智能車的運行狀態(tài)。

  實現(xiàn):將上一模塊中裝入各數(shù)組的數(shù)據(jù)在用戶的選擇的模式下進行畫圖,,可以只看一幅圖,,也可以將四幅圖放在一起進行對比觀看。實際的運行界面及效果如圖2。



圖2  圖形顯示介面運行模塊
    
  結(jié)語

  該系統(tǒng)通過添加無線收發(fā)模塊,,將智能車的實時狀態(tài)信息傳到上位機上,,通過VC++編程,用圖象直觀形象地將其表現(xiàn)出來,,很好地達到了對智能車狀態(tài)實時監(jiān)測的目的,,極大地方便了我們調(diào)節(jié)PID等智能車參數(shù),對賽道記憶算法的研究提供了很大的幫助,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。