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

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

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

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

請(qǐng)注意,軟件模型是作為庫塊實(shí)現(xiàn)的。這是因?yàn)槲覀兩院髮⒃诰€束模型中使用相同的塊在目標(biāo)上運(yùn)行。
運(yùn)行模擬給出以下結(jié)果。

青色線是實(shí)際距離,并且在不斷減小。品紅色線是中斷輸出的結(jié)果,黃線是與恒定距離比較的階躍函數(shù)。如果檢查模型的階躍函數(shù),您會(huì)發(fā)現(xiàn)它將在 250 mm 處觸發(fā)。放大繪圖顯示,由于實(shí)施和采樣,它實(shí)際上是在輸入為 245 mm 時(shí)觸發(fā)的。您可以更改此值并查看洋紅色線將在不同位置觸發(fā)。
有趣的是,當(dāng)障礙物離得更近時(shí),它會(huì)再次觸發(fā)。這是因?yàn)槲覀冊(cè)谏弦黄恼轮辛私獾絺鞲衅鞯墓ぷ髟怼?/font>它的非線性行為意味著當(dāng)障礙物太近時(shí),傳感器輸出電壓會(huì)降低,而在我們的實(shí)施中,它似乎比實(shí)際更遠(yuǎn)。
任務(wù) 3 – 構(gòu)建施密特觸發(fā)器電路
如下圖所示,在上一篇文章中構(gòu)建的過濾器旁邊構(gòu)建施密特觸發(fā)器。您可能需要稍后調(diào)整電位器以確保施密特觸發(fā)器正確觸發(fā)。
任務(wù) 4 – 軟件線束模型并在目標(biāo)上運(yùn)行
用于在目標(biāo)上運(yùn)行軟件的軟件線束模型如下所示。

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