電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>通過Simulink和Arduino建模和使用Sharp紅外傳感器

通過Simulink和Arduino建模和使用Sharp紅外傳感器

2022-11-15 | zip | 0.12 MB | 次下載 | 2積分

資料介紹

描述

本文介紹如何在機器人項目中通過 Simulink? 和 Arduino? 建模和使用 Sharp? 紅外傳感器 (GP2Y0A02YK0F)。目的是展示如何使用基于模型的設(shè)計。對于某些機器人應(yīng)用程序,此處使用的建模和過濾是多余的。即使是這種情況,如果發(fā)生意外情況,了解系統(tǒng)如何工作總是好的。選擇正確的建模級別和系統(tǒng)復(fù)雜性是一項重要的工程技能。

在第一部分中,我們將專注于對傳感器進(jìn)行建模并獲得可靠的距離測量。這種方法的一個優(yōu)點是當(dāng)沒有檢測到障礙物時它不會使用任何 CPU 時間。在第三篇文章中,我們會將傳感器模型包含在移動機器人的仿真環(huán)境中。在第四篇也是最后一篇文章中,我們將在一個真實的機器人平臺上測試所有部件。

所需硬件

  • Arduino Mega 2506 板
  • 帶電線的小面包板
  • 1 夏普紅外傳感器 GP2Y0A02YK0F
  • 1 電容器 200 nF

植物模型介紹

在控制理論中,傳感器、執(zhí)行器和處理此類信號的元件的組合通常被稱為“工廠”。植物模型很重要并且有很多用途。通過圍繞將在 CPU 上運行的部件對系統(tǒng)進(jìn)行建模,可以及早且廉價地測試設(shè)計。系統(tǒng)模擬在發(fā)現(xiàn)錯誤方面非常有效,而不會損壞硬件,甚至在某些情況下,在任何硬件可用之前也是如此。系統(tǒng)模型還允許對新想法進(jìn)行實驗。例如。具有合適的機器人導(dǎo)航系統(tǒng)模型的想法可以很容易地進(jìn)行評估。有些可以丟棄,有些看起來更有希望的可以進(jìn)一步開發(fā)。

植物建模是一個學(xué)習(xí)機會。創(chuàng)建了有關(guān)系統(tǒng)如何工作的知識,這對于軟件的開發(fā)、調(diào)試非常有用,對于獲得有關(guān)如何使用它的新想法甚至更重要。植物建模是一種知識創(chuàng)造活動,知識存儲在其他人可以輕松獲取的模型中。

植物模型的保真度

什么是合適的植物模型?應(yīng)該詳細(xì)到什么程度?選擇正確的細(xì)節(jié)層次是困難的。一些開發(fā)人員過度使用它,而另一些開發(fā)人員則忽略了重要的行為。在準(zhǔn)確性、建模(和獲取知識)所花費的時間和仿真時間之間需要權(quán)衡取舍。決定在特定情況下使用多少努力是一項隨著時間的推移隨著經(jīng)驗而發(fā)展的技能。沒有正確的答案,系統(tǒng)開發(fā)可以從具有不同保真度的多個工廠模型中受益。例如,用于控制器評估的詳細(xì)工廠模型和用于測試邏輯的細(xì)節(jié)較少的工廠模型。

工廠模型可以通過第一性原理或數(shù)據(jù)驅(qū)動建模獲得。最常見的方法是使用它們的組合。在本文中,我們將使用類似于學(xué)習(xí)過程的臨時方法。

任務(wù) 1 – 檢查傳感器

這是工廠建模和傳感器學(xué)習(xí)過程的第一步。將 +5V、GND 和傳感器輸出連接到模擬輸入 0。檢查數(shù)據(jù)表中的傳感器引腳。

使用 Arduino IDE 和下面的草圖在串行監(jiān)視器上打印傳感器讀數(shù)。

?
pYYBAGNy29uAAAUfAABxQGtsnqk936.png
?

?

?
poYBAGNy292AdkE2AAA4DLvEuBA546.png
?

即使傳感器前面有固定障礙物,從傳感器讀取的值也會波動很大。在我的情況下,它在 152 和 191 之間變化。這可能只是傳感器噪音嗎?示波器連接到傳感器輸出會提供線索:

?
poYBAGNy29-ATz31AABMj_Z92CU098.png
?

頻率為 1000 Hz 時,傳感器輸出的峰值約為 90 mV。傳感器每毫秒發(fā)送一束紅外光,并根據(jù)反射光照射到傳感器的哪個元件輸出電壓電平。要了解有關(guān)傳感器工作原理的更多信息,請查看本文。

似乎峰值由一種快速模式(初始峰值)和一種慢速模式組成。信號上也有一些噪音。可以對此進(jìn)行更多詳細(xì)說明并深入研究電氣特性,但一些(經(jīng)驗)告訴我,這對于機器人項目來說已經(jīng)足夠了。

根據(jù)圖表,數(shù)據(jù)表還顯示輸出電壓電平是非線性的:

?
pYYBAGNy2-GALSTVAACaUjc2lfk021.png
?

任務(wù) 2 – 建模我們學(xué)到的東西

從任務(wù) 1 中我們了解到,傳感器的輸出信號包含三個分量:

  • 從距離到電壓電平的非線性函數(shù)。該功能從 0 厘米到 150 厘米,這是傳感器的最大范圍。
  • 測量噪聲
  • 具有快動態(tài)和慢動態(tài)的峰值

非線性函數(shù)

非線性函數(shù)可以通過 Simulink 中的查找表輕松實現(xiàn)。從數(shù)據(jù)表中的圖中測量得出:

table_data = [0 2.3 2.75 2.55 2 1.55 1.25 1.05 0.9 0.8 0.725 0.65 0.6 0.55 0.5 0.495 0.49];
breakpoints = [0 10 15 20 30 40 50 60 70 80 90 100 110 120 130 140 150] / 100;
plot(breakpoints, table_data);
title('Sensor output value');
xlabel('Distance (m)');
ylabel('Voltage (V)');
grid on;
?
pYYBAGNy2-OAVgD2AABZSfbosnE871.png
?

測量噪聲

測量噪聲由帶限白噪聲建模。必須確定功率和采樣時間參數(shù)。我通過測試不同的數(shù)字來做到這一點。對于采樣時間,我從測量中知道峰值寬度略大于 0.1 ms,噪聲應(yīng)該更快。0.1 ms / 125 的值可以正常工作。功率逐漸降低,直到 Simulink 示波器顯示與測量值相似的噪聲水平。

動力學(xué)

數(shù)據(jù)驅(qū)動建?,F(xiàn)在可用于使用系統(tǒng)識別工具箱獲得動力學(xué)的傳遞函數(shù)。在這種情況下,我選擇只添加兩個傳遞函數(shù)。一個用于慢速動力學(xué)的一階傳遞函數(shù)和一個用于快速動力學(xué)的二階傳遞函數(shù)。脈沖發(fā)生器將驅(qū)動傳遞函數(shù)。

根據(jù)我的測量,我們看到慢速動態(tài)在脈沖期間上升了約 30 mV。這意味著靜態(tài)增益應(yīng)該約為 0.03。一階函數(shù)的上升時間為:

?
pYYBAGNy2-aAWLpbAAALmCbppQQ849.png
?

靜態(tài)增益 K = 0.03 我們得到:

?
poYBAGNy2-iAHMunAAARTzGEI2w912.png
?

這些都是很好的初始值,并通過一些手動調(diào)整使階躍響應(yīng)看起來像我最終得到的測量值:

?
poYBAGNy2-qADezBAAAHumQylbc521.png
?

對于二階函數(shù),我們有:

?
poYBAGNy2-yAHIxLAAALdeve9Gs734.png
?

因為它應(yīng)該比一階函數(shù)更快,所以我選擇 f = 100 kHz 和 xi = 0.7。

慢速和快速動態(tài)的范圍輸出:

?
poYBAGNy2-6ADLxKAAB-21CyQtg143.png
?

把它放在一起

將這些組件簡單地添加在一起,生成的 Simulink 模型如下所示:

和模擬輸出:

?
poYBAGNy2_CAFgo4AABZejiiwnk900.png
?

筆記!使用示波器測量傳感器測量距離的電壓表明,我的傳感器提供的電壓略低于數(shù)據(jù)表中的表格。這可能是由于傳感器的個體差異和/或 Arduino 模擬輸入中的電氣特性造成的。為了安全起見,我將表格值保留在這里,如有必要,我可以稍后進(jìn)行校準(zhǔn)。

任務(wù) 3 – 平滑信號

閱讀傳感器的數(shù)據(jù)表,我還發(fā)現(xiàn)建議在 Vcc 和 gnd 之間使用一個相當(dāng)大的電容器,盡可能靠近傳感器,以限制突發(fā)期間的峰值。除了大電容外,我還添加了一個 200 nF 的小電容,以抑制電源電壓上的一些高頻噪聲。

為了進(jìn)一步平滑傳感器輸出,我添加了一個簡單的無源濾波器,即 RC 濾波器。

?
pYYBAGNy2_KASN9mAAAN4gb_lO4386.png
?

?

?
pYYBAGNy2_SAQNO1AAAIjb1MfZE163.png
?

該濾波器的截止頻率為:

?
poYBAGNy2_aASlO3AAAESQdJuR4692.png
?

為了至少過濾快速動態(tài),截止頻率應(yīng)低于 100 kHz。此外,它不能太低,因為與傳感器的距離變化會滯后。模擬是一個很好的工具,可以玩這樣的設(shè)計,看看會發(fā)生什么并了解它是如何工作的。經(jīng)過一些實驗,我選擇了大約 16 kHz 的截止頻率。比意味著 2*pi*R*C = 1 / 16000。R 應(yīng)盡可能低以避免靜態(tài)誤差,我發(fā)現(xiàn) 10 ohm 可用,然后 C = 1 uF。

應(yīng)用電容器和濾波器并測量濾波后的輸出,我得到以下結(jié)果:

?
poYBAGNy2_mAULE_AABQiQuCZEI093.png
?

這是電路:

?
pYYBAGNy2_uAJEnDAACZAMvrSr0409.png
?

為了模擬旁路電容器的影響,我簡單地將脈沖生成的幅度減小到 0.1,從而得到輸出的十分之一。我還增加了噪音以使其更準(zhǔn)確。濾波器被實現(xiàn)為一階濾波器,RC / (s + RC),參見下一個任務(wù)中的模型。模擬輸出現(xiàn)在如下所示:

?
poYBAGNy2_2AFi8fAABKHxHdiO4044.png
?

使用此處的模型無法捕捉旁路電容器的影響,因為這需要更詳細(xì)的傳感器電氣特性模型。通過減少尖峰的近似值對于我們的機器人應(yīng)用來說已經(jīng)足夠了。

可以使用SimElectronics更詳細(xì)地以特定領(lǐng)域的方式實現(xiàn)該工廠模型。

任務(wù) 4 – 對信號進(jìn)行采樣

要在可以在 Arduino 目標(biāo)上執(zhí)行的模型中使用測量信號,必須提供兩件事;采樣時間和正確的數(shù)據(jù)類型。Arduino 模擬輸入模塊輸出一個 16 位無符號整數(shù)。在我們的應(yīng)用程序中,我們選擇了 100 ms 的采樣時間。

使用默認(rèn)參考電壓 (5V) 的模數(shù)轉(zhuǎn)換輸出介于 0 (0V) 和 1023 (5V) 之間的值。為了轉(zhuǎn)換我們測量的電壓,我們需要將信號乘以 1023 并除以 5。在乘以和添加噪聲之前,以 100 ms 對連續(xù)信號進(jìn)行采樣。之前采樣的原因是為了加快我們的模擬速度。如果在我們修改后對其進(jìn)行采樣,這些操作將不得不與模型的連續(xù)部分一起更頻繁地完成,從而使我們的模擬陷入困境。

進(jìn)行乘法運算的增益模塊還將信號轉(zhuǎn)換為無符號 16 位整數(shù)并使信號飽和以避免負(fù)輸入電壓的回卷。這可以防止輸入電壓為 0 且噪聲小于 0 的情況。如果沒有這種飽和,結(jié)果將是一個非常大的數(shù)字。

請注意,5V 最大輸入沒有飽和。在模型中,輸出將持續(xù)超過 1023。在實際電路板上,電路板的輸入引腳可能會損壞。最好的方法是檢查過電壓并至少給出模擬警告,但這留作練習(xí)。例如,僅僅添加一個飽和塊意味著這種錯誤情況不容易被仿真檢測到,并可能導(dǎo)致硬件故障。

?
pYYBAGNy2_-AD67gAABN5QiB9Ok188.png
?

任務(wù) 5 – 獲取距離

讀取模擬輸入會給我們一個介于 0 到 1023 之間的值,對應(yīng)于 0 V 到 5 V。有很多方法可以將此信號轉(zhuǎn)換為有用的距離。這里我選擇使用查找表,因為距離是非線性的,并且查找表易于校準(zhǔn)。

我們現(xiàn)在可以重用我們在傳感器建模和采樣過程中學(xué)到的知識。第一步是反轉(zhuǎn)用于傳感器的查找表。這是有問題的,因為該函數(shù)在反轉(zhuǎn)時不是單調(diào)的。例如,對于 10 cm 和 25 cm 的距離,傳感器提供大致相同的輸出電壓。為了解決這個問題,我們需要刪除前兩個值:0 和 10 cm。結(jié)果是只能測量 20 到 150 厘米之間的范圍。這也是傳感器根據(jù)規(guī)格的工作范圍。這意味著如果我們在 10 厘米處有障礙物,Arduino 軟件會認(rèn)為它在 25 厘米處。這必須在系統(tǒng)其余部分的設(shè)計中加以考慮。解決它的一些方法是在最小范圍之前停止,

除了反轉(zhuǎn)表格,我們還需要對采樣進(jìn)行補償。表中的斷點包含從 0.49 V 到 2.75 V 的電壓,但我們讀取的值是從 0 到 1023 的整數(shù)。乘以 5 并除以 1023 應(yīng)該可以得到正確的值。但是,這會給我們一個介于 0 和 5 之間的電壓,并且整數(shù)不能提供足夠的分辨率。因此,我們還乘以 1000 以獲得以 mV 為單位的整數(shù)值。我們對距離做同樣的事情,并以毫米為單位獲得輸出范圍測量值。

最后,我們放入一個檢查閾值的塊,如果范圍高于 250 mm,則輸出 0,如果低于 250 mm,則輸出 1。此檢查將用于在下一步點亮 Arduino 板上的用戶 LED

要進(jìn)一步測試模型,請將斜坡作為距離并檢查布爾輸出是否在正確的距離處觸發(fā)。

對采樣和斷點進(jìn)行補償?shù)牡古疟恚?/font>

inv_table = uint16([150 140 130 120 110 100 90 80 70 60 50 40 30 20 15]*10);break_points = [490 495 500 550 600 650 725 800 900 1050 1250 1550 2000 2550 2750] * 1023/(5*1000);plot(break_points, inv_table);title('Distance table');ylabel('Distance output (mm)');xlabel('Sampled value');grid on; 
?
pYYBAGNy3AGALPF3AABSJJ-7Nmw118.png
?

完整的模型現(xiàn)在看起來像這樣:

?
poYBAGNy3AOAM2HlAABDvGQnmOY568.png
?

任務(wù) 6 – 在目標(biāo)上運行

該系統(tǒng)的建模和高級設(shè)計現(xiàn)已完成。下一步是稍微清理模型并設(shè)計一個架構(gòu),讓我們既可以模擬整個系統(tǒng),又可以在目標(biāo)硬件上運行算法。如果連接了 Arduino 輸入塊,則無法再使用植物模型。使實際的軟件實現(xiàn)平臺獨立也是一個很好的設(shè)計。使用引用模型,我們可以創(chuàng)建三個模型:

  • 全系統(tǒng)模型(帶工廠)
  • 軟件模型(算法)
  • 一個 Arduino 平臺模型,帶有 Arduino I/O 模塊

完整的系統(tǒng)模型和 Arduino 平臺模型現(xiàn)在可以組合成一個模型塊,它引用軟件和硬件模型。這為我們提供了以下信息:

  • 信息只存儲在一個地方,無需復(fù)制軟件模型。
  • 獨立于平臺的軟件模型,只需更改平臺模型即可輕松將其與另一個目標(biāo)一起使用。
  • 工廠和軟件模型易于驗證和測試。

系統(tǒng)型號:

?
poYBAGNy3AaAWt9PAADM82idKfc199.png
?

和 Arduino 子系統(tǒng):

?
pYYBAGNy3AiAdet_AACG_GthidE354.png
?

請注意,software_6 是一個單獨的模型,一個引用模型:

?
poYBAGNy3AqAUiWHAACOCmMML4I592.png
?

因此,為了運行軟件模型,下面的平臺模型包括 Arduino I/O 模塊,并且還引用了 software_6 模型。

?
poYBAGNy3AyAWH3YAACyqkBV_lY923.png
?

在連接了傳感器、濾波器和電容器的目標(biāo)上加載并運行 platform_6 模型。將物體移向和遠(yuǎn)離傳感器,以查看用戶 LED 何時亮起。

現(xiàn)在可以使用這個簡單的應(yīng)用程序來校準(zhǔn)查找表。將障礙物放置在特定距離,例如 25 厘米,并使用 250 作為“比較塊”內(nèi)的值。通過輕輕移動物體,檢查 LED 是否觸發(fā)接近 25 厘米。如果它不亮,請將查找表的斷點調(diào)整到 25 厘米附近。

建議的實驗

使用查找表只是映射非線性函數(shù)的一種方法。試著想出一個與函數(shù)匹配的指數(shù)方程。

嘗試用不同的材料檢查傳感器,例如深色織物和白紙。有區(qū)別嗎?

對于某些模擬,計算時間可能很關(guān)鍵。并不總是需要噪聲和尖峰的影響。在這種情況下,通過刪除除查找表之外的所有內(nèi)容來制作簡單的工廠模型可能是有益的。從軟件的角度來看,采樣中的一些波動應(yīng)該是唯一的區(qū)別。具有更高保真度的模型仍然可以偶爾用于檢查它是否也適用于更多細(xì)節(jié)。創(chuàng)建這些不同的工廠模型并比較軟件輸出。差異有多大?

概括

這是一個小例子,展示了基于模型的設(shè)計的一些有趣方面。建模的主要收獲是對傳感器工作原理的了解和理解。在不同條件下的實際應(yīng)用中使用傳感器時,這些知識很重要。

在下一篇文章中,我們將實現(xiàn)一個新的 Arduino 模塊,該模塊通過中斷捕獲范圍閾值,而不是像本文中那樣檢查每個時間步的范圍。中斷方法的優(yōu)點是在閾值觸發(fā)之前不需要任何 CPU 執(zhí)行。

有用的鏈接


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1無鉛焊接的可靠性
  2. 1.03 MB   |  5次下載  |  1 積分
  3. 2GBT1094.11-2022電力變壓器第11部分:干式變壓器
  4. 14.12 MB   |  3次下載  |  免費
  5. 3PT500齒輪傳動動力學(xué)綜合測試實驗臺
  6. 0.16 MB   |  3次下載  |  免費
  7. 4爬電距離和電氣間隙計算
  8. 0.75 MB   |  2次下載  |  1 積分
  9. 5SX1308應(yīng)用電路圖與SX1308升壓電路圖
  10. 0.18 MB   |  1次下載  |  免費
  11. 6ADC參數(shù)單位換算
  12. 761.94KB   |  1次下載  |  免費
  13. 7串口工具UartAssist5.0.exe
  14. 0.60 MB   |  1次下載  |  免費
  15. 8UCC38C42 25瓦自諧振復(fù)位正激變換器
  16. 320.6KB   |  1次下載  |  免費

本月

  1. 1ACDC變換器的原理圖免費下載
  2. 0.26 MB   |  65次下載  |  免費
  3. 2無刷電機控制方案設(shè)計合作
  4. 1.05 MB   |  22次下載  |  免費
  5. 3美的超薄電磁爐TM-S1-09B主板原理圖
  6. 0.08 MB   |  20次下載  |  免費
  7. 4純電動汽?的主要部件及?作原理
  8. 5.76 MB   |  12次下載  |  5 積分
  9. 5GP328和GP88S對講機的維修實列資料合集免費下載
  10. 0.03 MB   |  10次下載  |  10 積分
  11. 6舒爾SLX4無線話筒接收機原理圖:二次變頻超外差部分
  12. 0.27 MB   |  8次下載  |  免費
  13. 7IP5385_DEMO開發(fā)資料
  14. 1.96 MB   |  7次下載  |  2 積分
  15. 8i.MX Linux開發(fā)實戰(zhàn)指南—基于野火i.MX系列開發(fā)板
  16. 17.86 MB   |  7次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935115次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191363次下載  |  10 積分
  9. 5十天學(xué)會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81581次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費下載
  14. 0.02 MB  |  73805次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分