為了能夠使得下一屆的智能車競賽中的節(jié)能信標組擺脫磁鐵的干擾,可以進行對抗比賽。在現有的節(jié)能信標燈的基礎上,增加光電反射檢測單元。該電路采用了反射式光電檢測管,利用單片機的定時ADC
轉換,可以在降低環(huán)境光線影響的基礎上,提高檢測的可靠性。
01 測試背景
一、為什么需要反射式光電檢測?
1、節(jié)能信標組
在 第十六屆智能車競賽競速比賽[1] 中有一組節(jié)能信標組。車模有參賽隊伍自行設計制作,其中需要車模本身帶有強磁鐵來觸發(fā)信標的切換。
如果兩個信標燈進行對抗比賽的話,他們就極易由于磁鐵的吸引而相互纏繞在一起。比如下面是中國計量大學賽博隊之間的相互對抗比賽,可以看到最終他們的車模由于磁鐵吸引在 一起了。
▲ 圖1.0 中國計量大學賽博隊之間進行信標組對抗比賽
因此需要改變現在的信標燈使其能夠通過其它的方式來檢測是否車模停留在其上,或者經過信標燈。因此,一種方案就是使用反射式光電檢測電路來測試是否有車模路經過信標燈的正上方。
2、反射式光電檢測
為了能夠與原來霍爾器件相兼容,制作的反射式光電檢測電路可以獨自安裝在白色燈盤下面。它的體積很小,位于燈罩的正中央。當車模途徑燈罩時,可以反射光電管發(fā)射的紅外光,從而觸發(fā)檢測電路。
在前面博文 反射式紅外光電管 ITR8307[2] 對于小型反射式紅外光電管ITR8307
的特性進行了測量,通常情況下,這款微型光電管檢測反射物體距離只有幾毫米。這個距離不能夠滿足節(jié)能信標組內檢測車模經過的需求。
在信標燈檢測中,對于光電檢測性能要求:
- 可靠的檢測距離應該大于
5
厘米;能夠對于環(huán)境光線不敏感;
在反射式紅外光電管 ITR8307[3]中,可以看到,可以通過一下幾種方式來增加ITR8307
的檢測距離:
為了達到不受環(huán)境光線的影響,則需要對于ITR8307
的發(fā)送與檢測通過信號調制發(fā)送與解調接收。
二、利用ADC進行信號檢測
1、基本原理
利用單片機的IO
口控制ITR8307
的發(fā)光二極管的導通與截止,然后利用單片機的ADC
來檢測ITR8307
光電三極管集電極輸出電壓的變化。由于這個變化是與發(fā)送二極管的導通截止是同步的,而且可以做到高速切換,所以這可以與環(huán)境光線的緩慢變化相區(qū)分。
如果單片機IO
口輸出的調制頻率做到50Hz
的整數倍數,同樣這也可以將照片燈光中50Hz
及其諧波分量進行濾除。
2、利用ESP8266做實驗
為了驗證上面方式的可行性以及檢測效果,使用 ESP-12F模塊轉接板模塊[3] 進行實驗。在 測試三相無刷電機驅動器 XXD2212 電調[4] 中對于ESP8266
的ADC
轉換時間進行了測量,它需要240
。
根據 ESP8266 MicroPython ADC[5] 文檔可以知道,它的電壓轉換范圍是0 ~ 1.0V
,ADC
數值為 10bit
。
下圖給出了利用DH1766
可編程直流電源輸出直流電壓到ESP8266
的 ADC
,它的ADC
轉換結果與輸入電壓之間的關系。
▲ 圖1.1 ESP8266 ADC測試結果
02 測試實驗
一、測試電路
下圖給出了測試電路。其中T1
用于驅動ITR8307
的發(fā)光二極管;U2
是將ITR8307
的集電極的電壓進行阻抗轉換,然后又R4
,R5
分壓后送入ESP8266
的ADC
。
▲ 圖2.1 測試電路
▲ 圖2.2 在面包板上搭建的實驗電路
二、測量結果
1、初步測試
使用PIn5
產生100Hz
的 50%
占空比的PWM
波形,驅動T1
(9018
)。將 ITR8307
至于反射白紙上面 5
厘米。測試 ITR8307
的光電管集電極的電壓波形。
▲ 圖2.3 將ITR8307置于白紙上方5厘米
下面是測量ITR8307的光電管輸出電壓波形。
▲ 圖2.4 測量ITR8307的光電管輸出電壓波形
2、測試交替ADC數值
采集相繼調制后的ADC數值。
(1) 上面沒有任何遮擋物
下面顯示了光電管上面沒有任何遮擋物讀出的數值。
▲ 圖2.2.2 直接對射天空讀取數值
(2) 手從光電管上方經過
下圖顯示了手從光電管上方5厘米經過引起讀數的波動。
▲ 圖2.2.3 手在光電管上面5厘米經過對應的波形
從上面對比實驗來看,這種方式光電管可以很靈敏檢測到經過物體。
三、環(huán)境光濾波
1、環(huán)境光線干擾
下圖顯示了,室內電燈引起光電管的輸出電壓波??梢钥吹剿?00Hz的波動。根據 電燈泡內通有交流電,為什么看不到燈泡在閃爍?[6] 可以知道這是由于室內電燈的閃爍引起光電管的輸出信號。
▲ 圖2.3.1 環(huán)境光引起輸出光線波動
2、控制采樣時間間隔
如果前后兩次讀取的ADC值時間恰好是10ms的整數倍數,這種波動反映在兩次ADC數值上變化很小。在前面的實驗中,前后兩次讀取數值時間間隔為20ms,所以電壓波動比較小。
如果將前后兩次ADC的轉換時間改為5ms,此時對應的數值波動就會大大增加了。下圖顯示了這種情況下采集到的數值波動。
▲ 圖2.3.2 兩次ADC轉換時間間隔為5ms時對應的ADC波動值
3、在中斷中采樣
在前面實驗中是在程序循環(huán)中進行ADC采樣。由于ADC采樣也會產生一定的時間,所以循環(huán)對應的時間間隔不一定是10ms準確的倍數。
通過在定時中斷中進行ADC轉換,可以進一步提高兩次采樣時間的精度。通過對比可以看到,在定時器中斷中采樣ADC的確降低了環(huán)境光線對于ADC數值波動的影響。
▲ 圖2.4.1 在中斷中采樣ADC的波動
四、增加靈敏度
為了使得車模經過信標燈罩更容易被檢測到,可以在車模底盤粘貼白色,或者紅色的紙張,這樣可以進一步增加反射信號的強度,從而使得光電檢測更加靈敏。
▲ 圖2.4.2 使用紅色反射布經過光電管上方引起數值輸出
03 測試結論
通過ESP8266的ADC讀取反射式光電管的輸出電壓,可以比較方便進行光電信號的同步解調。只要相鄰兩次的ADC轉換時間為10ms的整數倍數,就可以抑制由于環(huán)境光線對于光電管輸出信號的影響。
下面,就需要使用普通的單片機來實現上述檢測方案。制作成功能小板,可以在現有的節(jié)能燈電路上直接進行焊接,替代原來的霍爾傳感器。
一、現在方案存在的問題
最后需要說明一下,實際上本文的方案在考慮的時候是沒有考察發(fā)光盤本身發(fā)送的紅光以及紅外線的影響。相關這部分的問題以及如何應用需要進行進一步的測試與研究。
▲ 圖3.4 測試發(fā)射部分
參考資料
[1]第十六屆智能車競賽競速比賽: https://zhuoqing.blog.csdn.net/article/details/110253008
[2]反射式紅外光電管 ITR8307: https://zhuoqing.blog.csdn.net/article/details/120116131
[3]ESP-12F模塊轉接板模塊: https://zhuoqing.blog.csdn.net/article/details/115419385
[4]測試三相無刷電機驅動器 XXD2212 電調: https://zhuoqing.blog.csdn.net/article/details/120143733
[5]ESP8266 MicroPython ADC: https://docs.micropython.org/en/latest/esp8266/quickref.html#adc-analog-to-digital-conversion
[6]電燈泡內通有交流電,為什么看不到燈泡在閃爍?: https://zhuoqing.blog.csdn.net/article/details/108519603