崔才豪 張玉華 楊樹財
(哈爾濱理工大學自動化學院1,黑龍江 哈爾濱 150080;哈爾濱理工大學工程訓練中心2,黑龍江 哈爾濱 150080)
在人類的生產生活中,很多貨物的運輸路線在短時間內是固定的。因此,若為滿足這種運輸要求而鋪設軌道或增設傳送帶,就會增加相應的生產成本,降低運輸的靈活性。
傳統的運輸方式是依靠人駕駛裝卸車運輸貨物[1]。人在貨物運輸中的主要作用就是控制車的啟動、停止、運動方向和速度,這類相對簡單的勞動可以通過改進自動控制技術來實現。本文提出了利用普通光源來引導小車運動的設計方案。這種利用光信號引導小車運動的設計,節約了人力,并提高了生產效率和工作的靈活性。
光是沿直線傳播的,物體接收光能的大小與受光面積成正比,單位面積所獲得的光能稱為光強。光電阻傳感器是將光信號轉換成為電阻變化的一種傳感器[2]。這種測量方法具有結構簡單、非接觸、可靠性高、精度高和反應快等優點,因此,被廣泛地應用于自動檢測系統中[3]。光引導技術就是基于上述原理,通過光電阻傳感器檢測小車在不同方向上的光強,從而判斷出小車引導光源的方向,實現以光源為基準的趨光運動。
本設計采用光電阻傳感器對光信號進行采集。在光源引導方向上,分別設置1號、2號、3號光電阻傳感器,其中2號傳感器和小車軸線平行。3個傳感器軸線所構成的夾角ω1和ω2保持相等,光源引導信號的采集如圖1所示。

圖1 信號采集示意圖Fig.1 Schematic of signal collection
設1號和3號傳感器分別與光源引導方向形成的夾角分別為θ1和θ2,當小車運動方向偏離光源引導方向時,小車的實際運動方向與光源的引導方向產生了一個偏差角。小車偏離光引導方向示意圖如圖2(a)所示。
設小車的實際運動方向與光源的引導方向產生的偏差角大小為Δθ。此時調整小車的運動方向,就等價于調整偏差角Δθ,使其平衡在零度,從而使小車的運動方向和光源引導方向一致,達到了光引導的效果。小車恢復光引導方向示意圖如圖2(b)所示。

圖2 小車光引導示意圖Fig.2 Schematic of the light-guided car
小車運動控制系統設計的核心在于如何使小車以最快的速度從偏離光引導的狀態中修正過來,從而恢復到正常的運動狀態,并且不會有較大的超調或調整時間。
對于小車的方向控制,可以采用Δθ為調節變量,通過Andriod控制板調節驅動電機的PWM信號,改變電機輸出功率,從而控制左右電機的轉速,以實現方向的修正。控制算法可以使用經典的PID控制方法[4]。PID就是利用小車與引導光源的方向偏差,通過比例、積分和微分作用控制電機的運動。當電機的轉速和方向經過調節后,小車對光引導信號就會有較快的反應速度和較高的調節精度。由于小車在路面粗糙度或負載變化時車輪轉速誤差變大,因此,采用紅外線反射式脈沖編碼器對小車的轉速進行測量。這種傳感器可以將測量信號反饋給Andriod控制器,控制器根據傳感器返回的數值,實現對小車速度和位移的監控。閉環控制系統由傳感器與直流電機控制系統構成,它能使小車運動穩定精確[5]。
Arduino是一塊基于開放源代碼的接口板,包括12通道數字GPIO、4通道PWM輸出和6~8通道的10 bit ADC輸入通道。本設計中采用Arduino-duemilanove控制板,它的核心是一片AVRmega168單片機。
光引導信號發出的引導光照射在光電阻傳感器上,從而改變了光敏電阻的阻值,進而改變了光敏電阻兩端的電壓值。光敏電阻的兩端電壓經過分壓電阻和運算放大器進行信號調整后,由Arduino控制板進行A/D轉換[6]。3個傳感器產生3組數字量,比較后可以得到1個偏差值[7]。運動控制系統根據偏差值調整小車的運動方向。
小車采用雙直流電機加萬向輪的驅動方式,通過控制左右直流電機來控制小車的前進、后退或左右轉向。直流電機采用直流電機驅動芯片L298。雙路全橋電機驅動芯片L298的最大輸出電流為4 A,具有過溫保護功能和較高的噪聲抑制比。2路輸出正好可以滿足小車的左右直流電機的驅動要求。L298的主要引腳功能及其主要邏輯功能分別如表1和表2所示。

表1 L298主要引腳功能Tab.1 Functions of the main pins of L298

表2 L298主要邏輯功能Tab.2 Main logical functions of L298
表2 中:L=Low;H=High;X=Don’t care。
本設計使用Arduino控制板上的數字輸入輸出端控制驅動芯片的 Input1、Input2、Input3、Input4引腳,從而控制直流電機的旋轉方向;使用Arduino控制板上的PWM輸出引腳控制驅動芯片的EnableA和EnableB引腳,最終實現了2路直流電機控制[8],進而控制了小車的運動方向。
利用紅外線遇黑線被吸收、遇白線被反射的原理,在小車2路車軸上分別設計2組紅外反射式傳感器,將小車的轉速和位移以脈沖的方式反饋給Arduino控制器。控制器將脈沖信號在單位時間計數后,就可以得到小車的實際速度。將實際速度和設計輸出速度相比較后,可以實時調節小車的速度。系統硬件結構如圖3所示。

圖3 系統硬件結構圖Fig.3 Hardware structure of system
Arduino具有類似于Java和C語言的IDE集成開發環境,其編程語言類似于C語言,用戶可以通過USB接口直接進行編程和通信。
光引導小車首先需要對自身周圍環境進行檢測,判斷引導光源的方向,然后根據引導光源的強弱,以適當的速度向光源運動。當光源強度達到預定值時,默認已經尋找到了光源,小車即停止運動,進入等待狀態;當引導光源發生變化時,退出等待狀態,進入光引導狀態,直到再次找到光源[9]。程序設計流程圖如圖4所示。

圖4 程序設計流程圖Fig.4 Procedure flowchart
程序主要功能是:首先由3路傳感器對光引導信號進行A/D采集,然后由1號和3號傳感器的檢測值分別與2號傳感器的檢測值作差,由差值的正負來決定小車的行走方向是偏左還是偏右,最終根據差值的絕對值大小來決定需要調整的方向角的大小[10]。主要程序代碼如下。

以上程序中,Lleft(1)、Lmiddle(1)和 Lright(1)為光敏傳感器檢測函數的返回光強值;PID(number)為速度設置函數根據number值返回的最佳調節參數;turn_left(number,n)和 turn_right(number,n)為小車調整角度函數;number為調節轉速n的位置標號。
在實驗室條件下,光引導運動小車實現了3種常規運動,即直線運動、曲線運動和折線運動,3種運動路線如圖5所示。

圖5 3種運動路線Fig.5 Three of the moving routes
當在多光源條件下進行試驗時,非主光源的強度超過引導光源強度就會影響小車的引導,小車運動的穩定性就會被破壞,進而喪失光引導功能。因此,本設計提高了對試驗環境中的光引導信號的要求。
本文采用Arduino控制板為核心設計光引導小車,簡化了軟件編程和硬件電路的設計,有效地提高了小車在運輸過程中對非固定路線的適應性,在實際應用中可以起到降低成本和減少工人勞動量的作用。若繼續提高傳感器精度和數量,可以實現更加精確的光引導效果。
[1]梁佳海,黃雪燕.基于光引導的小車自動尋軌技術研究[J].欽州學院學報,2008,23(3):38 -40.
[2]常見生,石要武.檢測與轉換技術[M].北京:機械工業出版社,2008:187 -188.
[3]姚文山.光敏電阻器原理及檢測方法[J].家電檢修技術,2007,10(1):61.
[4]胡壽松.自動控制原理[M].北京:科學出版社,2009:21 -24.
[5]趙紅飛,陸靜平,蔣達.電動汽車用永磁無刷直流電機PID控制器的設計及仿真[J].中國科技信息,2010,20(10):168 -169.
[6]李全利.單片機原理及接口技術[M].北京:高等教育出版社,2009:47 -59.
[7]王寶祥.信號與系統[M].哈爾濱:哈爾濱工業大學出版社,2005:45 -85.
[8]吳鎮揚.數字信號處理[M].北京:高等教育出版社,2004:25-40.
[9]田澤.嵌入式系統開發與應用教程[M].北京:北京航空航天大學出版社,2005:40 -42.
[10]戴仙金.51單片機及其C語言程序開發實例[M].北京:清華大學出版社,2008:430 -450.