4 Simulink & Arduino - vstupy/výstupy
V tejto časti naviažeme na predošlú. Budeme používať rovnaké zapojenie Arduina. Naplno využijeme potenciál Simulinku v interaktívnom móde. Ukážeme si ako čítať vstupy v reálnom čase, ako ich môžeme spracovať a zobrazovať. Na záver vytvoríme opäť standalone aplikáciu.
Potrebné súčiastky a schéma
Pri plnení úloh v tejto časti využije rovnaké zapojenie ako v predošlom príklade.
Interaktívny mód je sila!
Zapnite si MATLAB a Simulink. Vytvorte si kópiu projektu z predošlého príkladu (r2F_blink.slx). A nazvime ju napr. r2F_io.slx. V tomto príklade využijeme viac blokov z rôznych knižníc. Tu je zoznam.
Simulink Support Packlage for Arduino Hardware / Common
- Analog Input
- Digital Input
- Digital Output
- PWM
Simulink / Sinks
- 2x Display
- 2x Scope
Simulink / Math Operation
- 2x Gain
Pomocou uvedených blokov poskladajte v Simulinku schému podľa obrázku. Parametrizovať jednotlivé bloky budeme neskôr.
Nastavujeme parametre
Schému som sémanticky rozdelil na 2 logické časti. Vrchná sa týka digitálnych signálov, spodná analógových. Jedná sa samozrejme iba o usporiadanie blokov. Pustime sa do nastavenia najskôr hornej vetvy.
- Digital Input- Pin number=8, Sample time=0.01
- Digital Output- Pin number=7
- Scope- menu View/Configuration Properties.../Display/ Y-limits (Minimum)=-1, Y-limits (Maximim)=2
Spodná vetva.
- Analog Input- Pin number=0, Sample time=0.01
- Gain- Gain=1/1023
- Gain1- Gain=255
- PWM- Pin number=9
- Scope- menu View/Configuration Properties.../Display/ Y-limits (Minimum)=0, Y-limits (Maximim)=255
Pristavme sa na chvíľku pri nastavení oboch blokov Gain. Výstup z bloku Analog Input je v rozsahu 0-1023. Ak chceme tento rozsah dostať na 0-1 (normovať), tak potrebujeme signál vynásobiť 1/1023. Ďalší blok Gain súvisí s výstupom PWM. Ten požaduje rozsah 0-255. Aby sme interval 0-1 dostali na 0-255 musíme signál vynásobiť konštantnou 255. Znamená to teda, že využijeme celý rozsah.
Spúšťame simuláciu
Nastavte simuláciu tak, aby čas simulácie bol nekonečný (inf). Pripojte Arduino k počítaču (ak ste tak ešte nespravili) a spustite simuláciu pomocou tlačidla Monitor & Tune. To, že simulácia beží môžete sledovať v dolnom stavovom riadku, kde beží čas. Skúste pootočiť potenciometrom a sledujte hodnoty v bloku Display. Hodnoty by sa mali meniť od 0 do 255. Stlačte tlačidlo a pozorujte čo sa deje na bloku Display1. Mala by sa meniť hodnota z 0 na 1. Kliknite na Scope1 v analógovej vetve a pootočte potenciometrom. Graf bude ukazovať priebeh. Obdobne bude pracovať aj Scope v digitálnej vetve. Tam bude graf zobrazovať hodnotu 0/1. Práve táto možnosť zobrazovania dát v reálnom čase je veľmi užitočná pri vývoji a ladení riadiacich algoritmov.
Ak je program vyladený, opäť ho môžeme nahrať priamo do Arduina a vytvoriť tak standalone aplikáciu. Postup je rovnaký ako v predošlom prípade. Kliknete na ikonu Build, Deploy & Start.