亞寵展、全球寵物產業風向標——亞洲寵物展覽會深度解析
819
2022-05-29
綜 述
在推文“聽說第十三屆比賽現場不再會有裁判了?”中提到了標準化智能車比賽過程。應用自動比賽裁判系統對于車模比賽時間以及是否沖出賽道進行客觀測量,省去現人工法裁判過程。這不僅可以減輕比賽承辦學校的壓力,減少現場人工裁判誤判,而且通過進一步優化比賽流程,增加參賽隊伍上場次數,減少現場失誤風險。
自動比賽裁判系統的核心是在比賽賽道下面,每隔一段距離放置一個檢測線圈。比賽車模底盤粘貼觸發磁鐵,當車模經過檢測線圈時,產生感應電動勢信號。通過檢測該信號確定車模是否經過了檢測線圈。
檢測線圈的長度為35厘米,比賽道的長度窄一些。如果車模沖出賽道,則觸發磁鐵不會經過檢測線圈。只有比賽中所有檢測線圈被依次進行觸發,比賽結果才會有效。
在過去的幾屆比賽中,裁判系統只是在賽道的起跑線下放置一條由銅絲繞制的檢測線圈,用于檢測比賽車模的起始和終止時間。信標組中,檢測車模是否靠近信標也是使用的相同的原理。
自動比賽系統在賽道下,大約每隔一米放置一個檢測線圈。在直道上間隔長一些,彎道上間隔短一些。為了便于線圈安置,減小線圈對于賽道影響,檢測線圈采用印制電路板線圈的方式制作。電路板材的厚度小于0.5毫米,放置在賽道下面對于賽道表面高度基本沒有影響。
推文后面將會介紹自動比賽系統的系統架構、信號檢測、通信總線、通信協議、總線枚舉、序列號自動產生等技術原理。
系 統 架 構
往屆比賽中,預賽賽道長度大約在40米左右,決賽賽道長度為預賽賽道的兩倍。按照平均一米的間隔放置檢測線圈,那么一個賽場則需要八十個檢測線圈左右。由于檢測線圈數量眾多,自動比賽系統在架構上需要綜合考慮布線方便與數據通信速度之間的矛盾。
首先,由于比賽場地比較大(預賽場地為5乘7米),直接將檢測線圈信號通過電線連到統一的比賽系統中,會給檢測系統帶來很大的干擾,對于檢測微弱感應電動勢不利。由于是模擬信號,無法將它們進行并聯或者串聯,這80多條檢測線通過星狀連接方式集中連接到檢測電路板,也會給布線帶來很大的麻煩。因此,每一個檢測線圈電路板上,都直接集成有信號處理電路和單片機電路,單片機直接處理微弱的感應信號,將檢測到的信號以及對應的時間通過總線,使用數字信號發送給比賽系統,這樣就可以避免干擾問題。
下圖顯示了調試中的線圈和檢測板。在實際系統中,線圈和檢測板將會制作成一個整體電路板。
電路板厚度很小,可以整體放在賽道下面。
從布線方便的角度,這些檢測線圈板使用一條總線串聯起來最方便。只要沿著賽道鋪設一條總線便可以獲得所有線圈的檢測信號了。這種公用一條總線的方式,會帶來一下問題:
數據傳輸慢。假設每一個檢測線圈板發送一個數據需要20ms,那么將八十個檢測線圈數據發送到比賽系統則需要 20*80=1600ms。
通訊可靠性降低。如果一個檢測線圈板出現了對總線的干擾,那么所有的檢測板都無法完成正常的通訊。
為了提高通訊速度以及通訊的可靠性,就需要多條通訊總線并行進行通信。下圖顯示了實際自動比賽系統的總線結構。比賽系統包括一個集線器,它具有八條外接總結接口。每一條總線上可以最多掛接15個檢測板。整個系統最多可以有120個檢測板。
這種串聯和并聯相結合的方式,是在布線的方便性與通信速度之間做一個折中。
總線需要完成兩個功能:一是完成檢測板與檢測集線器之間的通信功能;二是給每隔檢測板提供工作電源。由于具有八條總線,為了避免布線對于賽道的影響,需要減小總線中信號線的個數。將總線供電與通信功能合二為一,總線就包括兩股線,它同時給檢測板供電以及完成通信。
利用電源線進行通信的方式在后面“總線通信”一節中進行詳細介紹。
信 號 檢 測
由于將線圈與信號處理單片機集成在一起,所以就會大大降低了干擾信號的強度。雖然如此,檢測線圈中接收到的空間電磁干擾信號還是非常強的。這其中的干擾信號主要有兩部分組成:
1. 工頻(50Hz)磁場的干擾。
2. 空間WIFI射頻信號的干擾。
理論上講,這些交變信號可以通過低通濾波器進行濾除。但是車模通過檢測線圈時,如果速度很快,所產生的感應電動勢的頻率也會達到很高。比如,當車模速度為2米/秒通過檢測線圈時,檢測線圈的有效寬度為2厘米,此時所產生的信號時間長度為 0.02/2=0.01秒。下圖顯示了一個寬度為0.01s的升余弦脈沖信號的頻譜圖,可以看到它的頻率已經擴展到了100Hz的范圍。
因此,直接使用低通濾波器濾除50Hz工頻干擾,也同樣會削弱感應信號。
消除這種固定頻率干擾一個有效簡單的方法就是使用固定時間長度平滑窗口進行平滑濾波即可。窗口的時間長度等于干擾信號的整數倍數。
下圖顯示了長度為20ms平滑濾波器的幅頻特性。可以看出對應于50Hz及其各階諧波處的增益都是0,因此對于頻率為50Hz的干擾信號可以徹底的消除。
可以通過數字濾波的方式實現上面的信號處理。在前面動圖中,顯示了線圈信號經過低通濾波放大之后的信號。其中包含了很大的50Hz的干擾信號。該信號經過單片機采集之后,然后再進行長度為20ms的平滑濾波,便可以消除上述的干擾。
下圖中顯示了線圈信號經過放大之后的波形。可以看到信號中的50Hz干擾徹底消失了,只剩下非常干凈的感應電動勢信號。這就會大大降低誤檢測的概率。
空間射頻干擾信號主要來自于WiFi信號以及手機信號。這些信號頻率很高,按理說應該可以通過簡單的低通濾波就可以避免此類信號的影響。但是,由于這類信號的能量大多通過空間傳播,很難通過局部增加濾波電容將此類射頻信號進行阻隔,可以通過增加金屬屏蔽罩來阻隔。
射頻信號對于線圈放大電路的影響主要來自于運放的非線性。運算放大器在高頻輸入信號下,會出現非線性。某種程度上,這種非線性形成了對于射頻信號的整流作用,將高頻信號轉換成了低頻干擾。
消除此類射頻干擾,一方面可以選擇抗射頻的運放;再者需要在電路板布線的時候,在運放的兩個輸入端對地都增加高頻濾波電路。
關于檢測線圈信號放大和濾波電路,在之前推文“信標比賽系統實現”中給出了相應的電路。
由于車模上的電機也具有很強的磁場,它也可以在檢測線圈中產生感應信號。因此,當車模經過檢測線圈的時候,往往會出現若干個脈沖信號。
下圖顯示了檢測線圈濾波后的信號。這些信號有的是車模上的標志磁鐵引起的,有的是車模電機漏磁引起的。通常情況下,四輪車模由于電機距離地面比較近,它所產生的檢測信號就可以足以觸發比賽系統。對于直立車模,由于電機安裝位置比較高,所以需要在車模的最低點安放專用的磁鐵以保證準確觸發比賽系統。建議參賽隊伍在車模底盤的下面粘貼扁平的磁鐵。
為了能夠準確確定車模到達時間,比賽系統將會對采集到的數據,超過設定閾值部分的數據計算時間的二階矩來確定脈沖的達到時刻。
通信總線
為了減小總線的信號個數,方便布線,比賽系統采用電源線通信的方式,將總線中的線的個數減小到兩根。由于電源為直流信號,通信信號為交流信號,所以通過簡單的諧振電路便可以將同一根電源線中的兩個信號進行分割。
在每個單元與總線接口部分包括有三個部分:
信號隔離諧振回路;
電源濾波和穩壓電路;
通信信號耦合電路。
信號隔離諧振回路是由L0,C0組成的LC并聯諧振回路,根據選擇參數(L0=1mH, C0=47nF)諧振頻率大約23.2kHz。通信脈沖調制信號的頻率選擇在23.2kHz左右。
合理選擇LC諧振的Q值,在信號隔離效果 以及通信速率之間達到平衡。為了達到大約1k的波特率,LC隔離諧振回路的Q值選擇大約在2~5之間。
電源濾波電路實現對工作電源的的轉換,生成穩定的檢測電路工作電壓。
通信信號耦合電路包括有輸入隔直電容,信號平移電路,輸入輸出阻抗匹配電路等。
通信信號采用二進制振幅鍵控調制(2ASK)方式。對于數字信號的調制與檢調都通過單片機來完成,利用單片機的定時器、ADC以及IO口,完成通信信號的發送與接收,具體細節部分在這里就不再展開了。
通信協議
通信協議采用主從應答式。檢測集線器為主控方,檢測板為從動方。每次通信都是由主控方發起,聽從方根據命令進行相應的動作或者應答。
由于系統的主要功能是完成車模經過時間檢測,所以在大部分情況下,大部分的檢測板都是沒有數據狀態。只有車模經過的檢測板,才需要發送數據給集線器。如果集線器采用輪訓的方式來收集數據,則檢測周期就會比較長。為了提高總線利用效率,定義的通信協議支持優先級搶占模式。
通信傳輸字節分為兩類:數據字節和命令字節。主控方發送命令使用命令字節,主控方發送的數據參數以及聽從方發送的應答數據都使用數據字節。
每個檢測板都有一個四位的編號(0~14。15保留,代表所有檢測板)。在同一條總線上的所有檢測板在接收到主控器發送命令后,如果當前已經檢測到車模經過時間之后,便可以發送數據。數據的格式如下:
上面42bit的數據封裝在6個數據字節中進行發送。
每個字節在發送的時候,均采用UART的發送協議。一個起始位(0),一個停止位(1),八個數據位。數據位0使用有調試信號表示,數據位1使用沒有調制信號表示。
由于公用一個總線,所以數據位0是顯性數據位;數據位1是隱性數據位。
由于所有的檢測板可以同時發送數據,所以可能出現總線沖突。每個檢測板在發送數據的時候,需要同時檢測總線是否出現沖突。如果檢測到沖突,則立即停止發送,并轉入接收狀態。發送方,在發送1的時候,檢測總線上是否出現調制脈沖(即總線為0),如果發現出現調制脈沖,則表示出現沖突。
根據上面帶有沖突檢測協議,由于發送數據的開始為每個檢測板的地址位,所以地址小的具有高的優先級別。當多個檢測板同時發送數據的時候,地址小的最終完成發送,地址高的檢測板都轉入接受狀態。它們的數據在下一次發送命令來的時候再完成發送。
上述搶占式通信協議保證了在有多個檢測板發送數據的時候,優先級高的(地址小的)板子可以優先成功發送數據。在實際情況下,由于同一時刻具有發送數據的檢測板很少(要么沒有,要么只有一個),所以真正發生沖突的幾率非常小。利用這種機制可以大大提高系統檢測效率,可以達到每秒20次時間發送。
總線枚舉
根據上面總線通信協議,需要同一總線上的每個檢測板都具有唯一的地址。但檢測板在第一次上電時,如何確定自己的地址位的呢?這個過程需要通過總線枚舉過程實現。
每個檢測板都具有一個唯一的生產序列號(32bit),總線枚舉過程就是利用這個序列號來完成。
總線枚舉過程如下:
1. 主控方發送地址位無效命令,所有檢測板都將自己的地位置成15(無效保留地址)。
2. 主控方發送獲取序列號命令,所有無效地址檢測板都同時發送自己的序列號,最終序列號小的檢測板成功完成發送。
3. 主控板根據接收到的序列號,再發送設置地址命令。該命令中包括有序列號,以及遞增的地址信息。當接收板對比序列號與自己的相同時,邊將地址進行修改。
主控板重復上述(2,3)兩個步驟,直到再沒有接收到任何序列號為止。
通過總線枚舉過程,同一個總線上的檢測板,序列號小的,它的地址就靠前。序列號大的,它的地址就靠后。
一般情況下,上述地址信息可以被單片機存放在片上的EEPROM或者FLASH中,所以總線枚舉過程只需要在系統連接完之后進行一次就可以的。
序列號自動產生
每個檢測板都需要具有唯一的序列號。有的單片機芯片半身就帶有這樣的序列號。但是也有的單片機,特別是價格比較便宜的單片機,本身就沒有唯一的序列號。那么如何產生單片機的唯一序列號呢?
一種簡單的方法,那就是在燒寫單片機程序的時候,對于單片機進行人工設置,根據一定的編碼方式逐一設置每個檢測板的序列號。這種方法雖然簡單,但對比賽系統中這么多的檢測板進行逐一設置也比較麻煩。
此時,就需要借助一個真隨機數產生機制,由單片機自動完成序列號的生產。只要隨機數的空間(32BIT=40億)比掛在同一條總線上的的板子(最多15個)大多的,就可以保證序列號發生沖突的概率非常小。
如何獲得真隨機數呢?
隨機數一個天然來源就是熱噪聲。單片機可以通過連續采集總線上的噪聲,然后再通過位混疊的方式形成一個隨機數。有的單片機內部具有CRC計算模塊,可以利用CRC計算完成數據的混疊過程。
上述方法在自動比賽系統中檢測板序列號生成過程中經過測試,的確具有很好的效果。雖然這種方法無法嚴格杜絕序列號的沖突,但如果發生沖突,可重新再利用真隨機數產生一個序列號就可以解決了。
平時,噪聲總是被當做有害的東西加以去除,但在特定的時候,噪聲可以被很好的利用。
單片機 硬件開發
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。