張宇杭
摘 要:常規(guī)的基于集成電路的激光測距儀設計方法操作繁瑣、成本高?;趩纹瑱C設計的激光測距儀則可以執(zhí)行預置、檢測、顯示、報警等多種操作,同時相對于專用集成電路來說成本更低,更易操作簡單可靠。基于此,本文基于脈沖回波測距原理,基于單片機開發(fā)了一種廣泛使用的激光測距儀。
關鍵詞:單片機;激光測距儀;設計;脈沖回波
測距技術的發(fā)展始于接觸式測距技術,接觸式測距適用性較差,非接觸測距技術應運而生,尤其是電磁波測距技術的誕生于應用是測量技術發(fā)展史的里程碑。最初被用于雷達測距定位,大大提升了距離測量的精度和速度,也為測量操作的自動化提供了技術支撐。當前,激光測距在工業(yè)生產中的應用正變得越來越普遍?;诖?,本文針對脈沖回波激光測距儀器設計思路進行了簡要論述,并探討如何基于單片機設計激光測距儀,以豐富激光測距儀的功能,提高其測量精度,簡化激光測距操作。
1脈沖回波激光測距儀設計思路
本次設計基于脈沖回波法測距原理開發(fā)出一種激光測距儀。當發(fā)射探針發(fā)射的激光與障礙物碰撞時會被反射,接收探針會接收到反射的激光。設計發(fā)射探針、接收探針使其位于同一位置。如果激光從發(fā)射到接收用時為t,則激光從探針反射至反射面用時為t/2。激光探針、反射面的距離S可以通過以下公式算得:
其中c表示大氣環(huán)境中的光傳播速度;t表示激光從發(fā)射到被接收的用時
因為在實際制作過程中缺少光纖,而激光器和光電二極管的端面形狀面積相差很大與上文中的數學模型中所設的理想條件差距過大,所以采用回波法代替,無光纖時可正常使用而在擬合光纖后僅需在算法時間t中減去激光在光纖中的傳播時間即可。激光發(fā)射與接收模型與上文光纖探針基本相同,不過發(fā)射光斑與接收面積的比值更大。
激光器經方波調制后為脈沖信號,因為漫反射及發(fā)射角等問題光電二極管采集到為類正弦信號,為方便后續(xù)處理需將正弦信號變成高低電平,及做比較處理大于均值的值記為高電平,其余值記為0。電路設計仿真如圖1所示:
2硬件設計
2.1光學探針
通過使用Vl53l0X集成芯片,替代原設計中激光器、光電轉換模塊、流壓轉換模塊。因為其本身具有配套的940nmvcsel發(fā)射器和接收光電二極管,在無重組配件選型情況下為設計提供便捷,同時其垂直腔表面發(fā)射激光,再加上內部配置物理紅外濾光片使其具有更強的抗干擾性,與之配套的spad陣列(單光子雪崩二極管)與相較常規(guī)光電二極管性能更強,弱光探測更為敏感。這些使得該芯片具有良好的準確性與較長的探測距離滿足設計需求,且其是較為成熟的完全集成微型模塊體積小可靠性強,有效避免了缺少檢測器械帶來的影響,在測距過程中,Vl53l0X芯片發(fā)射多個vcsel紅外脈沖,然后被待測目標反射回來,并被陣列接收檢測,一次測量的時間預計為33毫秒(初始化/測距/內務處理),在實際測量中受傳播損耗影響采用23毫秒。最小范圍測量周期為8毫秒。
2.2單片機
設計中使用STC89C51單片機作為下位機。該單片機是宏晶科技生產的一種CMOS8位微控制器,指令代碼完全兼容傳統8051單片機,具有高性能、低功耗、超強抗干擾、使用方便簡單的特點,是新一代8051單片機。其主頻可達35MHz,定時器精度可達0.028μs,由定時時間t1、t2帶來的誤差為0.0097mm,誤差值可忽略不計。
3電路設計
因為Vl53l0X芯片發(fā)射與接受探針間距較小,考慮到后期擬合光纖需要同時使用兩枚該芯片,一枚正常進行激光測距使用,另一枚僅提供調制后的940nm激光。使用ALTUMDESIGNER進行電路設計,因為由單片機和集成芯片替代大部分電路,所以需連接芯片相對較少不進行PCB打樣設計,供電部分因缺少穩(wěn)壓電源等設備,同時該電路需向計算機進行串行傳輸,所以通過USB轉TTL線同時完成串行傳輸和供電,基于單片機的激光測距儀電路設計圖如2所示
4 程序設計
本次程序設計使用匯編語言編程。程序基本流程是在完成系統的初始化之后,由脈沖產生電路產生脈沖信號,并且由功率放大器電路驅動半導體激光發(fā)生器以發(fā)射激光,激光遇到障礙物反射回來,經過放大電路后再次產生脈沖信號,單片機記錄兩個脈沖信號之間的時間間隔,根據上述公式可以計算激光發(fā)射點、障礙物之間的距離。只要根據該過程將程序寫入單片機,就可以在顯示模塊上正確顯示結果。與啟動激光發(fā)射電路同時啟動計時器,計時器計數功能用于記錄激光發(fā)射時間和接收到反射激光的時間。當接收到激光時,在接收電路的輸出端產生負跳變,在端子INT0或INT1處產生中斷請求信號,單片機響應外部中斷請求,執(zhí)行外部中斷服務程序,讀取時間差并計算出距離。
4.1下位機程序
使用UVisionIDE軟件通過C語言進行單片機控制程序編寫,該程序采用PWM進行數據讀取,距離=高電平時間(μs)/10:
4.2 上位機程序
首先創(chuàng)建一個while循環(huán)控制上位機程序開停,然后在其中進行后續(xù)程序編寫。然后從VISA庫調用VISA配置串口按對應端口將串口名稱、波特率、數據位、奇偶、停止位和流控等控件連入如圖3-8所示:然后創(chuàng)建一個真假循環(huán)控制上位機給下位機的數據發(fā)送,在其中調用VISA寫入,將VISA資源名稱與VISA配置串口VISA資源名稱輸出相連,錯誤輸入與VISA配置串口錯誤輸出相連,然后在寫入緩存區(qū)創(chuàng)建字符串
在之后創(chuàng)建層疊順序結構,在其中置入等待,并設計等待時間及每次距離數據讀取前延時,在層疊順序結構同樣置入等待為while循環(huán)延時時間,以便設備有時間相應。在串行傳輸和讀取中存在機械噪聲和丟包現象不利于整體數據波形觀測,所以需要進行有效值選擇,首先創(chuàng)建一個真假循環(huán)真假條件默認為T,在其中調用數據節(jié)點、VISA讀取,將數據節(jié)點的引用與VISA資源名稱的VISA資源名稱輸出相連,錯誤輸入與VISA資源名稱的錯誤輸出相連,再將其引用輸出與VISA讀取的VISA資源名稱相連,錯誤輸出與錯誤讀取相連,將VISA讀取的讀取緩沖區(qū)輸出的字符串通過字符串轉換至數組,然后連入公式節(jié)點b1=a4左移八位+a5,如果b1<2500與a0=90與a1=90發(fā)生則b=b1輸出b,因為發(fā)送數據到上位機的時候TX_DATA[0]=TX_DATA[1]=0x5a=90;來判斷數據的有效性,a0:幀頭0x5a、a1:幀頭0x5a、a2:功能字節(jié)、a3:數據個數、a4:是數據高八位、a5:是數據的第八位、b1=a4左移八位+a5就是距離位移,通過幀頭來判斷是否發(fā)生丟包,同時距離位移不能超過2500mm因為量程是0-2500以此作為約束去除噪聲,如果過大或沒有數據仍使用上次賦值的b,將b連接至顯示控件,并創(chuàng)建引用節(jié)點再真假循環(huán)外連接至波形圖得到距離曲線程序
結語
綜上所述,該激光測距儀性能穩(wěn)定,功能豐富,操作簡便,數據的接收處理效率較高,還可以方便的進行部件的連接和斷開,易于維護。經測試器誤差在2.15%左右。該激光測距解決了一些實際問題,例如傳統激光測距儀的操作復雜,適用性差的問題,應用前景較好。
參考文獻:
[1]陳羽. 高精度脈沖激光測距儀的研究[D]. 西安工業(yè)大學, 2014.
[2]徐成濤, 吳冠豪, 鄭睿童. 脈沖式激光測距儀計時系統設計與實現[J]. 自動化儀表, 2012(05):77-80.
[3]孫興信. 脈沖式激光測距儀的硬件設計[D].
[4]周宇. 脈沖式激光測距儀的研究與設計[D]. 2016.