實驗環境
Matlab版本 :2021b
操作系統 :Win10專業版
模型與原理圖
本次實驗所用到的Simulink模型如圖5.1所示,實驗現象: 按鍵按下、松開LED循環實現翻轉亮滅效果,當按鍵按下時,產生下降沿脈沖,通過一個計數器對下降沿脈沖進行0~1循環計數,計數到最大值時產生輸出信號,輸出信號為0時,控制LED熄滅,輸出值為1時,控制LED點亮。
按鍵電路采用對電源負極方式連接,按鍵松開狀態為高電平H,即邏輯1,按鍵按下狀態為低電平L,即邏輯0。
圖5.1 按鍵控制LED亮滅simulink模型
圖5.2 按鍵控制LED亮滅原理圖
圖5.3 按鍵在開發板中的位置
基礎模型介紹與分析
"Digital Read"模型與設置為STM32專用讀取I/O端口數據模型,更改“Pin:”編號可使其與STM32引腳對應到芯片端口,“Sample time:”采樣時間設置為-1時表示采樣時間跟隨系統基礎采樣時間,如圖5.4所示。
圖5.4 "Digital Read"模型與參數設置
Count Up”計數器模型如圖5.5所示,此處“Count event”欄將其設置為"Falling edge"(下降沿)計數方式(單片機按鍵需保持為上拉輸入),"Counter size"(計數大小)采用“User defined”(自定義)方式,“Maximum count”設置為1,“Output”設置為“Hit”方式,去掉“Reset input”勾選項。“Switch”模型保持默認設置,然后分別將其他兩個輸入端口與“Constant”模型連接,如圖5.6所示。
圖5.5 “Count Up”模型設置
圖5.6 "Switch"模型
注意此處設置比較關鍵,我們需要在“配置”參數中將“求解器->求解器選擇”欄中的“類型”設置為“定步長”,“求解器”設置為“離散(無連續狀態)”,將“求解器詳細信息”欄中的“固定步長(基礎采樣時間)”設置為0.1,即0.1s,最終設置好的效果如圖5.7所示。至于為什么要這樣設置,在后面我們會對它做一個簡單的對比分析,不然整個模型運行的會非常緩慢。
圖5.7 “基礎采樣時間”設置
總結
本實驗中只使用了兩個基本模型“Count Up”和“Switch”模型實現按鍵控制LED反轉,當然其中的"Switch"模型去掉也可以實現同樣的效果,讀者朋友還可以嘗試使用其它模型搭建實現同樣效果。
讀者朋友可以思考下我們以往使用傳統方式開發單片機按鍵輸入程序時如果不使用簡單的濾波算法,那么按鍵按下和松開瞬間由于按鍵的彈跳特性,會出現多次按下或松開狀況,但是在本次實驗中并沒有看到這類濾波?另外以往我們一般使用狀態機方式讀取按鍵值,simulink中狀態機又該如何使用呢?大家可以嘗試使用stateflow狀態機方式去實現下。
拓展延申
在前面我們有提到采樣時間設置的問題,這里簡單的分析下不同采樣時間下的按鍵波形,模型如圖5.9所示,在“配置參數->求解器->求解器詳細信息->固定步長(基礎采樣時間)”中將時間設置為0.01秒,如圖5.10所示。
圖5.9 按鍵波形測試模型
圖5.10 0.01s采樣時間設置
單擊線條上方會出現三個小點“...”點擊小點會出現如圖5.11所示信號標識,單擊該信號會出現在線條上方,如圖5.12所示,此時我們需要點擊“Monitor & Tune”進入硬件在環模式,然后點擊“數據查看器”按鈕如圖5.13所示,彈出的信號查看器窗口如圖5.14所示,勾選上左側需要監控的信號,當按鍵按下時就會顯示相應的實際波形。
圖5.11 信號記錄操作方式
圖5.12 在環模式下監控數據
圖5.12 0.01基礎采樣時間下按鍵輸入波形
-
led
+關注
關注
242文章
23252瀏覽量
660559 -
原理圖
+關注
關注
1297文章
6338瀏覽量
233802 -
STM32
+關注
關注
2270文章
10895瀏覽量
355729 -
Simulink
+關注
關注
22文章
533瀏覽量
62378 -
按鍵電路
+關注
關注
1文章
35瀏覽量
21770
發布評論請先 登錄
相關推薦
評論