Arduino v prostredí Simulink

Práca s digitálnymi a analógovými vstupmi a výstupmi

V tomto návode naviažeme na poznatky z predošlých návodov. Povieme si, ako môžeme v Simulinku pracovať s digitálnymi a analógovými vstupmi a výstupmi. Ukážeme využitie škálovania pre úpravu vstupov a výstupov. Na záver vytvoríme opäť samostatnú aplikáciu pre Arduino.

Čo budeme potrebovať?

  • Arduino MEGA 2560
  • USB kábel typu A-B
  • bread board (BB-301)
  • 2x rezistor 220 Ohm a 1x rezistor 10 kOhm
  • 2x LED (napr. červená a modrá)
  • tlačidlo
  • potenciometer
  • prepojovacie drôty
  • počítač/notebook s prostredím MATLAB
  • Powerbanka
  • Simulink Support Package for Arduino

Schéma

Zapojte súčiastky podľa uvedenej schémy

Príklad dráhy

Príklad dráhy

Zostrojenie modelu

Model zostrojíme z nasledujúcich blokov

  • Simulink Support Packlage for Arduino Hardware - Common - Analog Input
  • Simulink Support Packlage for Arduino Hardware - Common - Digital Input
  • Simulink Support Packlage for Arduino Hardware - Common - Digital Output
  • Simulink Support Packlage for Arduino Hardware - Common - PWM
  • Simulink - Sinks - Display
  • Simulink - Sinks - Scope
  • Simulink - Math Operation - Gain

Pomocou uvedených blokov poskladajte v Simulinku model podľa obrázku. Model si nezabudnite priebežne ukladať.

Nastavujeme parametre

Schému sme 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 najskôr do nastavení blokov digitálnej vetvy.

  • Digital Input - Pin number=8, Sample time=0.01
  • Digital Output - Pin number=7
  • Scope - Settings - Y-Axis - Y-Axis limits - [-1 2]

Nastavenie blokov analógovej vetvy

  • Analog Input - Pin number=0, Sample time=0.01
  • Gain - Gain=1/1023
  • Gain1 - Gain=255
  • PWM - Pin number=9
  • Scope - Settings - Y-Axis - Y-Axis limits - [0 255]

Pristavme sa na chvíľku pri nastavení oboch blokov Gain. Výstup z bloku Analog Input je pre Arduino Mega 2560 v rozsahu 0-1023. Ak chceme tento rozsah dostať na rozsah 0-1 (normovať), tak potrebujeme signál vynásobiť 1/1023. Ďalší blok Gain súvisí s výstupom PWM. Ten požaduje pre Arduino Mega 2560 rozsah 0-255. Aby sme interval 0-1 dostali na rozsah 0-255 musíme signál vynásobiť konštantnou 255. Týmto škálovaním transformujeme rozsah 0-1023 na rozsah 0-255.

Spustenie simulácie

Nastavte simuláciu tak, aby čas simulácie bol nekonečno (inf). Pripojte Arduino k počítaču 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 alebo 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ť samostatnú aplikáciu pre Arduino. Kliknete na ikonu Build, Deploy & Start a overte správanie.