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.