資料介紹
描述
介紹
在第一部分中,我們構建了 Sharp IR 傳感器的模型并了解了它的工作原理。我們還實施了一個軟件模型以在 Arduino 上使用范圍測量。在這一部分中,我們將添加一個 Arduino 塊,它可以在由 Arduino 數(shù)字輸入之一觸發(fā)時調(diào)用中斷服務例程 (ISR)。
中斷在某些情況下很有用,因為它們可以響應特定的硬件事件,而無需不斷檢查輸入狀態(tài)的代碼,從而減少處理器的負載。當處理器必須快速響應事件時,它也很有用。在這里,我們將使用中斷來響應當物體離紅外傳感器太近時發(fā)生的事件。在下一節(jié)中,我們將在機器人接近某物時將其用作警報信號。例如,機器人可以選擇后退、轉(zhuǎn)彎或只是停止。
此處的重點將放在如何使用中斷塊上,但包含有關其工作原理的注釋以更好地理解它,以防有人想要修改它或繼續(xù)開發(fā)。
項目文件
要使用該庫,請在下載提交后解壓縮文件。使用 MATLAB 轉(zhuǎn)到 blocks 文件夾并鍵入. 這將為您的 Simulink 安裝編譯塊。如果編譯失敗,請檢查您是否選擇了帶.mex arduino_interrupt.c
mex -setup
先決條件
- 閱讀第 1 部分以了解傳感器模型的背景
- 我們建議完成Arduino Mega 2560 硬件入門
所需硬件
與第 1 部分相同:
- Arduino Mega 2506 開發(fā)板
- 帶電線的小面包板
- 1 個夏普紅外傳感器 GP2Y0A02YK0F
- 1 個電容 10uF – 100uF
- 1個電容1uF
- 1 個電容 200 nF
- 1 個電阻 10 歐姆
第 2 部分的新組件
- 1 個 LM311N 比較器
- 2個10k歐姆電阻
- 1個10k歐姆電位器
Arduino 中斷基礎知識
arduino 文檔包含關于如何使用中斷的很好的概述和建議。還有一張表將不同的中斷編號映射到連接引腳,適用于不同的板,在您自己的項目中使用中斷時需要查閱。
在這部分中,我們將使用中斷 0,它連接到 arduino mega 2560 板上的數(shù)字引腳 2。當中斷被觸發(fā)時,中斷服務程序被調(diào)用。當相應引腳上的電壓從高電平下降到低電平(下降)或從低電平變?yōu)楦唠娖剑ㄉ仙r,可以觸發(fā)中斷。arduino mega 還有兩種觸發(fā)模式,low 和 change。有關更多詳細信息,請參閱文檔。
要使用中斷,您必須將中斷服務程序附加到中斷。這就是新區(qū)塊要做的。由于中斷服務例程會中斷其他代碼,因此通常建議在其中做的事情越少越好。與在服務例程中進行復雜計算相比,僅向主循環(huán)發(fā)送有關事件的信號并讓它處理它通常更好。
Simulink 庫和文件
讓我們來看看新的區(qū)塊。下載 zip 文件 [鏈接] 并將其解壓縮到一個文件夾中。在 MATLAB 中,轉(zhuǎn)到文件夾并運行 setup.m 文件,然后鍵入 MyArduinoLib。這個庫應該打開:

庫中的塊可用于將硬件中斷映射到將作為中斷服務例程執(zhí)行的子系統(tǒng)。該塊有一個輸入端口,稱為 simIRQ。該輸入端口可用于仿真,以模擬硬件中斷。對于在目標上執(zhí)行,它沒有任何功能。輸出端口是函數(shù)調(diào)用信號。它應該連接到一個稱為子系統(tǒng)的函數(shù),如下面的任務 2 所示。
如果雙擊該塊以打開遮罩,它包括四個設置。中斷號和引腳號是電路板設置,根據(jù)文檔,它們必須與電路板匹配。模式?jīng)Q定輸入引腳上的什么事件將觸發(fā)中斷,上升、下降、變化或低。最終設置啟用和禁用輸入端口。
對于有興趣的人,這里有一個簡短的描述,它屬于包含新塊的庫的塊文件夾中的文件。
- MyArduinoLib.slx——庫文件
- slblocks.m – 描述庫的 MATLAB 文件。如果此文件存在,庫將包含在 Simulink 庫瀏覽器中。
- arduino_interrupt.c – 這是一個 c 文件 s-function,用于實現(xiàn)此塊在仿真期間將執(zhí)行的操作。此文件編譯為:mex arduino_interrup.c(之前運行 mex -setup)。這必須在您使用庫之前完成。
- arduino_int_lib.tlc——這個文件告訴代碼生成器要為這個塊生成什么樣的代碼。
- arduino_interrupt.tlc – 由上面的文件取消包含系統(tǒng)頭文件。
如果您有興趣,請研究 arduino_interrupt.c 和 arduino_interrupt.tlc 的實現(xiàn)以了解它們的作用。您也可以根據(jù)需要更改行為。
任務 1 – 修改對象模型并添加施密特觸發(fā)器
為了使模擬比文章 1 運行得更快,我們將在此處使用比上一篇文章中更小的對象模型。但請返回更詳細的工廠并對其進行測試,以確保簡化模型足夠。在構建任何硬件之前制作系統(tǒng)模型是一種很好的基于模型的設計實踐。這意味著在將時間和金錢花費在硬件上之前,想法或概念會通過模擬進行測試。
新的完整系統(tǒng)模型名為 system_model.slx,如下所示。

正如您在上面的模型中看到的,有傳感器模型、一個 arduino 板子系統(tǒng)和一個名為 SchmittTrigger 的塊。在第一篇文章中,我們看到傳感器會針對不同的距離提供不同的電壓。這意味著我們需要一個能夠在特定距離(電壓)觸發(fā)的電路。當障礙物位于觸發(fā)距離附近時,為了使其穩(wěn)健并避免多次中斷,我們實施了施密特觸發(fā)器。這里它是在 MATLAB 函數(shù)塊中用 MATLAB 代碼實現(xiàn)的。
Arduino 子系統(tǒng)有兩個輸入,A0 用于模擬輸入,D2 用于觸發(fā)中斷的數(shù)字輸入。

有一個采樣子系統(tǒng)將電壓轉(zhuǎn)換為可以在軟件中讀取的數(shù)字,還有一個時間表子系統(tǒng)。調(diào)度子系統(tǒng)將調(diào)用軟件中的函數(shù)。階躍函數(shù)定期調(diào)用,中斷在施密特觸發(fā)器觸發(fā)時調(diào)用。需要這種調(diào)度才能通過中斷模擬該系統(tǒng)的異步行為。
任務 2 – 構建軟件模型
好的,系統(tǒng)已經(jīng)建模,是時候?qū)崿F(xiàn)稍后應該作為軟件在目標上運行的部分了。模擬輸入只是與步進函數(shù)中的距離進行比較,如果障礙物太近,我們會在數(shù)字輸出引腳上發(fā)出一個信號。輸出引腳可以連接到外部 LED(作為練習實現(xiàn))。如果沒有檢測到障礙物,則發(fā)送零。中斷服務例程在每次被施密特觸發(fā)器調(diào)用時切換數(shù)字輸出。

請注意,軟件模型是作為庫塊實現(xiàn)的。這是因為我們稍后將在線束模型中使用相同的塊在目標上運行。
運行模擬給出以下結(jié)果。

青色線是實際距離,并且在不斷減小。品紅色線是中斷輸出的結(jié)果,黃線是與恒定距離比較的階躍函數(shù)。如果檢查模型的階躍函數(shù),您會發(fā)現(xiàn)它將在 250 mm 處觸發(fā)。放大繪圖顯示,由于實施和采樣,它實際上是在輸入為 245 mm 時觸發(fā)的。您可以更改此值并查看洋紅色線將在不同位置觸發(fā)。
有趣的是,當障礙物離得更近時,它會再次觸發(fā)。這是因為我們在上一篇文章中了解到傳感器的工作原理。它的非線性行為意味著當障礙物太近時,傳感器輸出電壓會降低,而在我們的實施中,它似乎比實際更遠。
任務 3 – 構建施密特觸發(fā)器電路
如下圖所示,在上一篇文章中構建的過濾器旁邊構建施密特觸發(fā)器。您可能需要稍后調(diào)整電位器以確保施密特觸發(fā)器正確觸發(fā)。
任務 4 – 軟件線束模型并在目標上運行
用于在目標上運行軟件的軟件線束模型如下所示。

模擬輸入塊讀取引腳 0,A0,這是我們的傳感器值。左下方是我們新的中斷塊。右邊的塊寫入數(shù)字引腳 12 和 13。此模型中有兩個額外的塊可能需要一些解釋。第一個是函數(shù)調(diào)用生成器。這用于定期觸發(fā)階躍函數(shù)。需要速率轉(zhuǎn)換塊是因為信號源塊(中斷服務例程)是異步的,而數(shù)字輸出塊與周期性采樣時間同步。
現(xiàn)在嘗試在目標上運行它!
建議的實驗
- 修改并試驗施密特觸發(fā)器以獲得所需的閾值。不要忘記更新模型以匹配行為。
- 使用第 1 部分中的詳細模型進行測試。小模型是否足夠?有什么不同嗎?
概括
本文展示了一個示例,說明如何在仿真中使用異步塊并將其作為中斷服務例程在目標上運行。這對于節(jié)省目標執(zhí)行時間和對事件做出反應很有用。
在下一篇文章中,我們將在移動機器人上使用它。首先,我們將為機器人設置一個模擬器來測試實現(xiàn),然后我們在真實機器人上運行軟件部分。
有用的鏈接
- 使用中斷的Arduino 文檔
- 如何在Arduino上使用紅外傳感器
- 如何將紅外接收器或TSOP與Arduino結(jié)合使用
- 使用arduino和紅外傳感器的自動開門器
- 通過Simulink和Arduino建模和使用Sharp紅外傳感器
- 帶Arduino UNO的紅外接收器和遙控器
- Arduino項目輕松添加紅外遙控器和紅外接收器
- 紅外ToF技術將大幅提升接近感應傳感器的性能及可靠性
- 由LCD、超聲波接近傳感器和Arduino Uno板組成的跟蹤系統(tǒng)
- 使用Arduino的非接觸式紅外溫度傳感器
- arduino聲音傳感器 模擬資料匯總 2次下載
- 臺信接近開關傳感器EL20X-40KT-RD6-SC 19次下載
- 紅外障礙傳感器的使用教程資源下載 10次下載
- 傳感器使用范例 4次下載
- OMRON接近傳感器基礎知識 0次下載
- 接近傳感器
- 接近傳感器的頻率響應 651次閱讀
- 使用接近傳感器到達更遠的距離 1218次閱讀
- 高速運算放大器支持紅外接近檢測 869次閱讀
- 采用數(shù)字微波傳感器和Arduino控制板實現(xiàn)人體探測系統(tǒng) 2202次閱讀
- 采用數(shù)字微波傳感器、繼電器和Arduino控制板的自動光控系統(tǒng) 969次閱讀
- 微雪電子紅外接近傳感器 紅外避障模塊簡介 2892次閱讀
- dfrobot數(shù)字紅外接收模塊簡介 1796次閱讀
- dfrobot紅外接近開關支架簡介 1304次閱讀
- 紅外接近開關電路圖分解 8165次閱讀
- 紅外線傳感器的作用_紅外線傳感器波長范圍 6740次閱讀
- 紅外傳感器工作原理_紅外傳感器的應用 2.8w次閱讀
- 紅外測距傳感器的原理及應用 2.3w次閱讀
- 紅外傳感器有什么作用_紅外傳感器的應用實例 3w次閱讀
- 紅外接近傳感器Si1141設計方案簡析 4363次閱讀
- 人體接近傳感器應用及原理 1.7w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論