1.
圖片1.png (2.96 KB, 下載次數: 70)
下載附件
p1
2023-8-27 00:02 上傳
使用光反射器
為了確定要遵循的路線,大多數參賽者正在使用兩個或更多數量的反光板。與地板反射率成正比的輸出電流通過電阻器轉換為電壓,并檢測是否檢測到線路。但是,閾值電壓不能固定為任何水平,因為如右圖所示,環境光會向輸出電流添加光電流。
大多數工業用光電檢測模塊都使用調制光,以避免環境光的干擾。使用帶通濾波器對檢測到的信號進行濾波,并過濾掉不使用的信號。因此,只能檢測到來自發光器的調制信號。當然,檢測器一定不能被環境光飽和,這在檢測器在線性區域工作時是有效的。 在該項目中,脈沖光用于消除環境光。這適用于順序掃描的折迭式傳感器,以避免來自下一個傳感器的干擾。微控制器開始掃描傳感器狀態,采樣輸出電壓,打開LED并再次采樣輸出電壓。兩個樣本之間的差異是LED產生的光電流,環境光產生的輸出電壓被抵消。其他傳感器也按順序掃描相同的avobe。 線路檢測的信號處理
圖片2.png (3.99 KB, 下載次數: 74)
下載附件
p2
2023-8-27 00:02 上傳
上圖顯示了實際的線位置與檢測到的線位置(中心值為640)之間的關系。微控制器掃描六個傳感器,并通過線附近兩個傳感器的輸出比來計算線位置。因此,僅使用六個傳感器就可以線性檢測線位置。所有傳感器輸出均被捕獲為與反射率成比例的模擬值,并且它們之間的靈敏度各不相同。在該系統中,為了消除輸出的變化,可以將每個傳感器的校準參數保存在非易失性存儲器中。這可以通過在線模式完成。ISP電纜時,微控制器進入在線模式附件,可以用N81 38.4kbps串行格式的終端程序進行控制。S1命令監視傳感器值,S2命令校準參考表面(白皮書)上傳感器增益的變化。ATmega8必須設置為8MHz內部osc。
2. 巡線該機器人具有巡線能力。這意味著它能夠遵循明亮表面上標記的黑色引導線。軌道上可能存在交叉線,在這種情況下,機器人會選擇直線方向。機器人可以避開途中的障礙物;如果檢測到障礙物,機器人就會倒轉并繼續向后移動。 最終,機器人可以在未知環境中找到引導線。當機器人下方沒有線時,機器人開始沿螺旋軌跡尋找,直到穿過引導線。 線路傳感器模塊指南標有黑色 PVC 隔離膠帶。這種材料不反射紅外光,因此很容易通過表面的光反射來區分引導線。 傳感器模塊由3個探測器和4個發射器組成。發射器(紅外 LED)和檢測器(光電晶體管)交替放置成一排,以便每個光電晶體管被兩個紅外 LED 包圍。由于這種設計,僅使用三個光電晶體管和四個紅外 LED 就可以測量傳感器模塊下方六個點的表面反射率。一般來說,這種方法減少了線路傳感器模塊所需的組件和 ADC 輸入的數量,這在尺寸限制方面是理想的。 下圖顯示了該方法的工作原理:
圖片3.png (3.13 KB, 下載次數: 70)
下載附件
p3
2023-8-27 00:02 上傳
LED1發射紅外光,反射到光電晶體管T1,因此測量點1的光反射率。
圖片4.png (3.26 KB, 下載次數: 61)
下載附件
p4
2023-8-27 00:02 上傳
然后,LED1 關閉,LED2 開始發射紅外光。光電晶體管 T1 測量點 2 處的光反射率。 在實際應用中(特別是需要高刷新率時)必須考慮IR組件的特性。由于反應延遲(延遲),如果在測量點1 的反射率后立即測量點2 的反射率,來自傳感器的數據可能會有偏差。為了避免這種情況,我在示波器上分析了傳感器特性,然后修改了掃描以某種方式排序,以便傳感器不會相互影響。 環境光抑制由于光照條件往往會根據時間和地點的不同而變化,因此需要使用環境光抑制算法才能使傳感器正常工作。該方法很簡單:每個傳感器進行兩次測量。首先,它掃描環境光量。然后,它打開紅外 LED 并再次測量該值。減去這兩個值,環境光的偏差就被抑制了。 傳感器校準各個光學元件的特性可能存在細微差異;因此應校準傳感器模塊。校準分兩步手動完成: 1.偏移校準所有傳感器均放置在黑色引導線上方。一旦接收到校準命令,所有傳感器都會測量表面反射率,并將測量值存儲在存儲器中。這些是偏移校準值。從現在起,所有測量值都會自動使用此偏移進行校正。(每次進行測量時,只需從實際值中減去偏移量)。因此,當所有傳感器位于黑線上方時,它們將返回相同的值。 2. 增益校準在增益校準期間,所有傳感器都放置在白色表面上方。某些傳感器可能比其他傳感器更敏感,因此測量值彼此不同。但由于傳感器模塊下方的表面反射率應該相等,因此可以輕鬆計算每個傳感器的增益係數。為了以后的測量,每個測量值都會與其增益係數相乘(相乘);以便所有校準的傳感器都具有相似的特性。 因此,校準的傳感器模塊將輸出標準化值。 處理來自傳感器、電機控制的數據光學傳感器測量表面的光反射率,并通過線檢測算法處理獲取的數據。該算法的設計方式使得線寬無關緊要。線檢測算法輸出有符號整數值,該值表示引導線的實際偏轉。接近零的值意味著該線準確地位于傳感器模塊的中間,正值表示該線向右偏轉了多少,負值表示向左偏轉了??多少。然后,該輸出用于線路跟蹤的比例積分微分 (PID) 控制。PID控制器根據實際的線路偏轉和之前的狀態來調整電機的速度。每秒評估線的位置 30 次。 換句話說,PID控制器驅動機器人,使得線路始終以傳感器模塊的中間為中心,從而使機器人執行平滑的線路跟蹤。
3.
圖片5.png (42.19 KB, 下載次數: 61)
下載附件
p5
2023-8-27 00:02 上傳
在下一個視頻中,我展示了使用 8 個 CNY70 傳感器進行的測試。這些傳感器通過 Arduino Nano 的端口 A0 至 A7 進行模擬測量。我使用初始算法通過將范圍標準化為 0 到 1000 來校準傳感器,其中 0 代表白色背景,1000 代表黑線。完成校準后,進入循環并開始讀取周期,計算0到7000的位置,分別代表左傳感器到右傳感器。該位置值用于計算比例誤差P。P的范圍是-3500(左)到3500(右),以0為中心值。該算法會記住檢測到黑線的最后一個傳感器(左或右)的位置值,目的是使用該數據進行制動操作和線路恢復. |