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