?

做一個激光測距測高儀

2015-06-05 01:37謝作如鄭一粟
中國信息技術教育 2015年5期
關鍵詞:顯示屏儀器激光

謝作如 鄭一粟

筆者做激光測距測高儀的想法源自一款用攝像頭作為測量工具的APP。這類APP的測量原理是根據手機、平板的攝像頭成像的比例關系,計算出測量距離和物體高度。例如,iPhone有款軟件叫“光學測距儀”,運行界面如圖1所示。

在使用過程中,筆者發現這類APP的操作其實還是比較麻煩的,因為需要參照物。如果要測量某頭頂某條梁的長度,或者屋頂離地面的高度,基于攝像頭的測量軟件幾乎是無能為力了。那么,有沒有其他的解決方案呢?于是,筆者與學生一起進行研究,最終基于激光的測距測高儀就這樣產生了。

● 原理

筆者準備使用激光作為測量工具,并非使用反射時間來計算。接下來要用到數學知識了。如果要測量物體P到物體T的距離,可以用這樣的辦法:如圖2所示,在物體P處找兩個點,如A、B,分別連接物體T的C點。這時,只要知道∠BAC(θ1)和∠ABC(θ2)的角度,以及AB線段的長度,就可以算出C點到AB的垂直距離L。

計算公式為:

只要能得到這兩個夾角的準確角度,就可以計算出物體離測量儀器的距離了。然后,是否還可以利用這樣的原理繼續得到物體的高度或者長度呢?(參見圖3)

如果在測量儀器上設置3個點。其中點1連接被測物體的一端A,點2和點3分別連接被測物體的另一段B。只要得到線段ab的長度及角度θ1、θ2和θ3的大小,便可以求出被測物的高度h以及測距儀器與被測物的水平距離x。

那么,連接測量儀器和被測物體的直線用什么來實現?毫無疑問,激光是最好的方案。因為激光具有定向發光、亮度極高的特點。只要把3個激光發射頭安裝在測量儀器上,手動調整其中兩束激光在被測物體的一個端點上重疊,另一束激光則發射在物體的另一端點。只要能確保測量儀器和被測物體之間是平行的,就能計算出距離和高度。

● 材料

根據上面的原理,要制作一個這樣的激光測距測高儀,大致需要如下材料。

1.微控制器

因為涉及計算,就需要用到一個小型的中央處理器。由于筆者僅是為了做出一個模型,所以就選擇了常見的Arduino。如果在意計算的精度,可以選擇樹莓派或者pcDuino之類的迷你電腦。

2.角度傳感器

角度傳感器的選擇是最重要的,因為要獲取精確的角度進行計算。牽一發而動全身,一點點的誤差,經過計算放大后,誤差就很可怕了。在淘寶上常見的角度傳感器如圖4所示。

這種傳感器的旋轉角度最多只有300度,將5V電壓均分到每1度后,精度是相當低的。后來筆者又在淘寶上找到了多圈的精密角度傳感器(如圖5),才算初步解決了誤差的問題。

3.液晶顯示器

計算結果如果需要實時顯示,那么儀器上就需要液晶顯示屏,或稱LCD。因為儀器上僅僅需要顯示幾行字符,所以筆者選擇了標準1602液晶顯示屏(如圖6),兩行,每行顯示16個字符。

4.激光頭

激光頭利用的是低功率的可視激光,常見的激光指示器有紅光(655/635nm)、黃光(589/593nm)、綠光(532nm)、藍光(473/445nm)和藍紫光(405nm)等。起初,筆者把手頭的電子教鞭拆了,后來發現淘寶上有現成的激光頭賣(如圖7),筆者選擇了一款5V的,直接使用Arduino輸出的5V電流。需要注意的是,激光頭很危險,絕對不能用肉眼去看,建議調試的時候先不要給激光頭供電。

● 接線

1.角度傳感器的接線

角度傳感器接在Arduino的模擬口(如圖8),如果3個角度傳感器分別用跳線接入Arduino控制板會顯得很亂,于是筆者使用了一塊擴展板。

2.激光頭的接線

激光頭的電源直接從Arduino的5V和Gnd上接出。

3.顯示屏的接線

筆者使用的LCD是IIC/TWI接口的,用4根線連接到Arduino擴展板的專用接口即可(如圖9)。

● 編程

Arduino的代碼比筆者想象中簡單,其核心代碼如下頁表所示。

最終的測試效果如下頁圖10所示,顯示屏上第一行數據是傳感器的參考值,第二行數據分別是距離和高度,用“|”分開。例如,想要測量一堵墻的高度,筆者先要將測量儀器保持垂直,一束激光束(激光點一)射向墻的一端,另外兩束射向墻的另一端,按下按鈕,Arduino就可以實時計算,便可得到樹的高度和人與樹之間的距離了。

● 包裝

為了看起來像個作品,筆者使用雕刻機制作了激光頭和角度傳感器的連接件(如圖11)。當然,用3D打印機打印也是可以的,只是當時筆者的創客空間還沒有買3D打印機。

再用雕刻機做一個底板,固定這些儀器。3個激光頭排列在一起,看起來是不是很酷?旁邊一條四線的接口是預留給接LCD用的,圖12為整體效果。

再看看另一面的效果,雖然線有點多,但是并不是很亂(如圖13)。

這款儀器的使用步驟如下:①連接電池,保持儀器呈垂直狀態;②打開電源,顯示屏若未正常顯示數字,請按下Arduino主板上的reset按鈕;③調節“下、中”激光,同時對準被測物體下端;④調節“上”激光,對準被測物體上端;⑤在顯示屏上將顯示X(測距儀與被測物之間的水平距離)與Y(被測物兩個端點之間的距離)。

● 優化

正如一開始擔心的那樣,因為角度傳感器的精度問題,測量距離稍微遠一點的物體,誤差就很大了。因為如果距離一遠,角度傳感器上的1度,對應的就是一兩米的距離。要解決這個問題,找精度很高的角度傳感器也無濟于事,因為調節激光頭給角度傳感器帶來的旋轉角度實在太小了。除非如圖14一樣,用齒輪組將激光頭的旋轉角度放大,然后給角度傳感器。

因為自己動手做齒輪組,誤差還是挺大,因此筆者還試著拆了一個塑料的直流電機變速箱。但是這樣一來,整個儀器的體積就要大很多,看來如果要實現做工精細并不是一件容易的事(如圖15)。

筆者還為這款儀器設計了一個外殼,如圖16所示。黑色是激光調節旋鈕,紅色按鈕是開關。僅僅是設計,但并沒有真正生產。

當然,如果僅僅考慮演示用激光進行測距、測高的原理,筆者也已經達到了探究的目的。其實這個作品原理還可以用于課堂教學。如果將角度傳感器的數據接入電腦,使用S4A或者Scratch2.0之類的軟件,教師可以直接使用這些數據進行教學或者驗證一些數學原理,如三角函數、相似三角形等知識,定然會有助于學生的學習。

如果對相關內容感興趣,請關注主持人博客。

猜你喜歡
顯示屏儀器激光
2018年智能手表顯示屏出貨量同比增長42%
蒼蠅迷戀顯示屏
事出有因
LG申請歐盟商標 或布局MicroLED顯示屏
發明
激光3D長繩
不可忽視的化學儀器的創新使用
神奇的激光
電子書 等
儀器工作原理決定了儀器的讀數規則
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合