那曲檬骨新材料有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>使用Simulink和Arduino的紅外接近傳感器

使用Simulink和Arduino的紅外接近傳感器

2022-12-09 | zip | 0.13 MB | 次下載 | 2積分

資料介紹

描述

介紹

第一部分中,我們構建了 Sharp IR 傳感器的模型并了解了它的工作原理我們還實施了一個軟件模型以在 Arduino 上使用范圍測量。在這一部分中,我們將添加一個 Arduino 塊,它可以在由 Arduino 數字輸入之一觸發時調用中斷服務例程 (ISR)。

中斷在某些情況下很有用,因為它們可以響應特定的硬件事件,而無需不斷檢查輸入狀態的代碼,從而減少處理器的負載。當處理器必須快速響應事件時,它也很有用。在這里,我們將使用中斷來響應當物體離紅外傳感器太近時發生的事件。在下一節中,我們將在機器人接近某物時將其用作警報信號例如,機器人可以選擇后退、轉彎或只是停止。

此處的重點將放在如何使用中斷塊上,但包含有關其工作原理的注釋以更好地理解它,以防有人想要修改它或繼續開發。

項目文件

要使用該庫,請在下載提交后解壓縮文件。使用 MATLAB 轉到 blocks 文件夾并鍵入. 這將為您的 Simulink 安裝編譯塊。如果編譯失敗,請檢查您是否選擇了帶.mex arduino_interrupt.cmex -setup

先決條件

所需硬件

與第 1 部分相同:

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

第 2 部分的新組件

  • 2個10k歐姆電阻

Arduino 中斷基礎知識

arduino 文檔包含關于如何使用中斷的很好的概述和建議還有一張表將不同的中斷編號映射到連接引腳,適用于不同的板,在您自己的項目中使用中斷時需要查閱。

在這部分中,我們將使用中斷 0,它連接到 arduino mega 2560 板上的數字引腳 2。當中斷被觸發時,中斷服務程序被調用。當相應引腳上的電壓從高電平下降到低電平(下降)或從低電平變為高電平(上升)時,可以觸發中斷。arduino mega 還有兩種觸發模式,low 和 change。有關更多詳細信息,請參閱文檔。

要使用中斷,您必須將中斷服務程序附加到中斷。這就是新區塊要做的。由于中斷服務例程會中斷其他代碼,因此通常建議在其中做的事情越少越好。與在服務例程中進行復雜計算相比,僅向主循環發送有關事件的信號并讓它處理它通常更好。

Simulink 庫和文件

讓我們來看看新的區塊。下載 zip 文件 [鏈接] 并將其解壓縮到一個文件夾中。在 MATLAB 中,轉到文件夾并運行 setup.m 文件,然后鍵入 MyArduinoLib。這個庫應該打開:

?
pYYBAGOSiTiARxK2AABdcAjm4YA344.png
?

庫中的塊可用于將硬件中斷映射到將作為中斷服務例程執行的子系統。該塊有一個輸入端口,稱為 simIRQ。該輸入端口可用于仿真,以模擬硬件中斷。對于在目標上執行,它沒有任何功能。輸出端口是函數調用信號。它應該連接到一個稱為子系統的函數,如下面的任務 2 所示。

如果雙擊該塊以打開遮罩,它包括四個設置。中斷號和引腳號是電路板設置,根據文檔,它們必須與電路板匹配。模式決定輸入引腳上的什么事件將觸發中斷,上升、下降、變化或低。最終設置啟用和禁用輸入端口。

對于有興趣的人,這里有一個簡短的描述,它屬于包含新塊的庫的塊文件夾中的文件。

  • MyArduinoLib.slx——庫文件
  • slblocks.m – 描述庫的 MATLAB 文件。如果此文件存在,庫將包含在 Simulink 庫瀏覽器中。
  • arduino_interrupt.c – 這是一個 c 文件 s-function,用于實現此塊在仿真期間將執行的操作。此文件編譯為:mex arduino_interrup.c(之前運行 mex -setup)。這必須在您使用庫之前完成。
  • arduino_int_lib.tlc——這個文件告訴代碼生成器要為這個塊生成什么樣的代碼。
  • arduino_interrupt.tlc – 由上面的文件取消包含系統頭文件。

如果您有興趣,請研究 arduino_interrupt.c 和 arduino_interrupt.tlc 的實現以了解它們的作用。您也可以根據需要更改行為。

任務 1 – 修改對象模型并添加施密特觸發器

為了使模擬比文章 1 運行得更快,我們將在此處使用比上一篇文章中更小的對象模型。但請返回更詳細的工廠并對其進行測試,以確保簡化模型足夠。在構建任何硬件之前制作系統模型是一種很好的基于模型的設計實踐。這意味著在將時間和金錢花費在硬件上之前,想法或概念會通過模擬進行測試。

新的完整系統模型名為 system_model.slx,如下所示。

?
poYBAGOSiTyAVJ7TAABaR5t2918121.png
?

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

Arduino 子系統有兩個輸入,A0 用于模擬輸入,D2 用于觸發中斷的數字輸入。

?
pYYBAGOSiU2AfxLnAABImpbSjjs272.png
?

有一個采樣子系統將電壓轉換為可以在軟件中讀取的數字,還有一個時間表子系統。調度子系統將調用軟件中的函數。階躍函數定期調用,中斷在施密特觸發器觸發時調用。需要這種調度才能通過中斷模擬該系統的異步行為。

任務 2 – 構建軟件模型

好的,系統已經建模,是時候實現稍后應該作為軟件在目標上運行的部分了。模擬輸入只是與步進函數中的距離進行比較,如果障礙物太近,我們會在數字輸出引腳上發出一個信號。輸出引腳可以連接到外部 LED(作為練習實現)。如果沒有檢測到障礙物,則發送零。中斷服務例程在每次被施密特觸發器調用時切換數字輸出。

?
poYBAGOSiVCAYrj5AABBNkuXotA031.png
?

請注意,軟件模型是作為庫塊實現的。這是因為我們稍后將在線束模型中使用相同的塊在目標上運行。

運行模擬給出以下結果。

?
poYBAGOSiWiAeT8JAACBh0gPCdk689.png
?

青色線是實際距離,并且在不斷減小。品紅色線是中斷輸出的結果,黃線是與恒定距離比較的階躍函數。如果檢查模型的階躍函數,您會發現它將在 250 mm 處觸發。放大繪圖顯示,由于實施和采樣,它實際上是在輸入為 245 mm 時觸發的。您可以更改此值并查看洋紅色線將在不同位置觸發。

有趣的是,當障礙物離得更近時,它會再次觸發。這是因為我們在上一篇文章中了解到傳感器的工作原理。它的非線性行為意味著當障礙物太近時,傳感器輸出電壓會降低,而在我們的實施中,它似乎比實際更遠。

任務 3 – 構建施密特觸發器電路

如下圖所示,在上一篇文章中構建的過濾器旁邊構建施密特觸發器。您可能需要稍后調整電位器以確保施密特觸發器正確觸發。

任務 4 – 軟件線束模型并在目標上運行

用于在目標上運行軟件的軟件線束模型如下所示。

?
poYBAGOSiXGAWR-tAABIG92Tvzk526.png
?

模擬輸入塊讀取引腳 0,A0,這是我們的傳感器值。左下方是我們新的中斷塊。右邊的塊寫入數字引腳 12 和 13。此模型中有兩個額外的塊可能需要一些解釋。第一個是函數調用生成器。這用于定期觸發階躍函數。需要速率轉換塊是因為信號源塊(中斷服務例程)是異步的,而數字輸出塊與周期性采樣時間同步。

現在嘗試在目標上運行它!

建議的實驗

  • 修改并試驗施密特觸發器以獲得所需的閾值。不要忘記更新模型以匹配行為。
  • 使用第 1 部分中的詳細模型進行測試。小模型是否足夠?有什么不同嗎?

概括

本文展示了一個示例,說明如何在仿真中使用異步塊并將其作為中斷服務例程在目標上運行。這對于節省目標執行時間和對事件做出反應很有用。

在下一篇文章中,我們將在移動機器人上使用它。首先,我們將為機器人設置一個模擬器來測試實現,然后我們在真實機器人上運行軟件部分。

有用的鏈接


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
网址百家乐的玩法技巧和规则| 威尼斯人娱乐城真人百家乐| 真人百家乐官网娱乐场| 威尼斯人娱乐场送1688元礼金领取lrm | 百家乐官网筹码素材| 大发888娱乐城真钱lm0| 真人百家乐代理合作| 7人百家乐官网中号桌布| 汉中市| 威尼斯人娱乐城信誉好不好| 百家乐赌博论谈| 伯爵百家乐官网的玩法技巧和规则 | 济州岛百家乐的玩法技巧和规则| 苹果百家乐官网的玩法技巧和规则 | 博彩网站源码| 九州百家乐的玩法技巧和规则| 百家乐的赚钱原理| 上海百家乐官网的玩法技巧和规则| 百家乐官网是不是有技巧| 紫云| E世博| 娱乐城源码| 巴登娱乐城开户| 大发888网址怎么找| 麻将二八杠技巧| 长沙百家乐的玩法技巧和规则| 百家乐是片人的吗| 八运24山阴阳| 连环百家乐官网的玩法技巧和规则| 什么百家乐官网九宫三路| 百家乐官网怎么样投注| 百家乐官网游戏机博彩正网 | 真人百家乐体验金| 24山家坐向| 百家乐视频游戏界面| 百家乐的必胜方法| 属狗人做生意店铺朝向| 属狗人做生意店铺朝向| 百家乐大赢家小说| 现金百家乐破解| 筹码百家乐的玩法技巧和规则 |