Mérési utasítás. Labor 2, Mikrovezérlők. Budai Tamás, Automatizálási Tanszék Széchenyi István Egyetem v1.1.

Hasonló dokumentumok
Mintavételes szabályozás mikrovezérlő segítségével

Az MSP430 mikrovezérlők digitális I/O programozása

Megjegyzés: A leírás abszolút kezdők számára készült elnézést azoktól, akik ezen a szinten már túlvannak!

Labor 2 Mikrovezérlők

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

FL-11R kézikönyv Viczai design FL-11R kézikönyv. (Útmutató az FL-11R jelű LED-es villogó modell-leszállófény áramkör használatához)

Programozás és Digitális technika I. Pógár István eng.unideb.hu/pogari

ASTRASUN PID Reduktor. Kézikönyv

USB I/O kártya. 12 relés kimeneti csatornával, 8 digitális bemenettel (TTL) és 8 választható bemenettel, mely analóg illetve TTL módban használható.

Villamos jelek mintavételezése, feldolgozása. LabVIEW 7.1

MSP430 programozás Energia környezetben. Kitekintés, további lehetőségek

Analóg-digitális átalakítás. Rencz Márta/ Ress S. Elektronikus Eszközök Tanszék

MSP430 programozás Energia környezetben. LED kijelzok második rész

Mérési útmutató. A/D konverteres mérés. // Első lépésként tanulmányozzuk a digitális jelfeldolgozás előnyeit és határait.

Villamos jelek mintavételezése, feldolgozása. LabVIEW előadás

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

VDCU használati utasítás

Bevezetés az Arduino mikrovezérlők programozásába

Kezelési leírás Agilent DSO-X 2002A

ADAX NEO BASIC S5. NORDINOVA ENERGY KFT Budapest X. Jászberényi út 47/c

Kombinációs hálózatok és sorrendi hálózatok realizálása félvezető kapuáramkörökkel

2-VEZETÉKES KAPUTELEFON RENDSZER Kameraillesztő. VDCU Felhasználói és telepítői kézikönyv VDCU. VDCU Leírás v1.0.pdf

1. A berendezés programozása

Arduino bevezető Szenzorhálózatok és alkalmazásaik

Első egyéni feladat (Minta)

Minőségellenőrzési kérdőív kitöltő program Felhasználói kézikönyv

MASTERYS BC 010kVA 3/1F SINGLE UPS

2-VEZETÉKES KAPUTELEFON RENDSZER Telefonos illesztő / Telefonhívó modul. VDT-TPC Felhasználói és telepítői kézikönyv VDT-TPC. VDT-TPC Leírás v1.0.

MSP430 programozás Energia környezetben. Az első lépések

3. A DIGILENT BASYS 2 FEJLESZTŐLAP LEÍRÁSA

Széchenyi István Egyetem

Algoritmus fogalma. Mi az algoritmus? HF: Al Khwarizmi. Egy adott probléma megoldásának leírása elemi lépések sorozatával

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

T2-CNCUSB vezérlő család hardver segédlet

Mérési jegyzőkönyv. az ötödik méréshez

Bevezetés a mikrovezérlők programozásába: DC motorok vezérlése

Yottacontrol I/O modulok beállítási segédlet

DTMF Frekvenciák Mérése Mérési Útmutató

SP-1101W Quick Installation Guide

Mini DV Használati útmutató

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. GY1.1 SENSACT0 PÉLDAPROGRAM

Johanyák Zsolt Csaba: Ugráló gomb oktatási segédlet Copyright 2008 Johanyák Zsolt Csaba

11. KÓDÁTALAKÍTÓ TERVEZÉSE HÉTSZEGMENSES KIJELZŐHÖZ A FEJLESZTŐLAPON

VARIO Face 2.0 Felhasználói kézikönyv

Digitális technika (VIMIAA01) Laboratórium 9

Poolcontroller. Felhasználói leírás

ReszlAd fájl, kitöltési útmutató:

Digitális technika (VIMIAA01) Laboratórium 9

Bevezetés a mikrovezérlők programozásába: Ismerkedés az Arduino fejlesztői környezettel

DIÓDÁS ÉS TIRISZTOROS KAPCSOLÁSOK MÉRÉSE

Fényerő és LED szalagszabályzás

Labor gyakorlat Mikrovezérlők

sz. mérés (négypólus)

Beágyazott rendszerek fejlesztése laboratórium DSP fejlesztési technológiák

Név: Logikai kapuk. Előzetes kérdések: Mik a digitális áramkörök jellemzői az analóg áramkörökhöz képest?

ZL180 Kétmotoros vezérlés 24V-os mototokhoz

SK-M2EM ADATLAP - HASZNÁLATI ÚTMUTATÓ 1. RFID olvasó 125kHz EM és HID típusú kártyákhoz

Labor gyakorlat Mikrovezérlők

ZL 90 Vezérlés Amiko és FrogJ motorokhoz

Külső eszközök. Felhasználói útmutató

WiLARM-MICRO GSM Modul Telepítői Útmutató Verzió: 2.0

Bevezetés az elektronikába

SR mini PLC Modbus illesztő modul. Modul beállítása Bemeneti pontok kiosztása főmodul esetén Bemeneti pontok címkiosztása kiegészítő modul esetében

PERREKUP DxxTx - HDK10 Rekuperátor vezérlő Használati Utasítás

loop() Referencia:

A számítógépes adatgyűjtő program használata

MSP430 programozás Energia környezetben. Szervó motorok vezérlése

PV GUARD Használati - kezelési útmutató PV-DC-AM-01 típusú készülékhez

MPLC-06-MIO 1 analóg és 3 digitális bemeneti állapotot átjelző interfész. Műszaki leírás

AKO ELECTRONICA AKO ELEKTRONIKUS TERMOSZTÁTHOZ 1 PT-100 ÉRZÉKELŐ ÉS 2 RELÉ C HASZNÁLATI UTASÍTÁS

1 Rendszerkövetelmények

Iványi László ARM programozás. Szabó Béla 6. Óra ADC és DAC elmélete és használata

Vegyes témakörök. A KAT120B kijelző vezérlése Arduinoval

VarioFace dokumenta cio

Ellenőrző mérés mintafeladatok Mérés laboratórium 1., 2011 őszi félév

A FileZilla program beállítása az első belépés alkalmával

MSP430 programozás Energia környezetben. Analóg jelek mérése

1.A. feladat: Programablakok

Digitális óra FULL HD WiFi kamerával

A/D és D/A átalakítók gyakorlat

PLC Versenyfeladat. XIV. Országos Irányítástechnikai Programozó Verseny Budapest, március Összeállította az EvoPro Kft.

Készítette: Oláh István mestertanár

Ipari mintavételes PID szabályozóstruktúra megvalósítása

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Full HD Hobby Napszemüveg Kamera Felhasználói kézikönyv. Modell: Sárga-Fekete Fekete. Termék Szerkezete

Gyors telepítési útmutató AC1200 Gigabit kétsávos WLAN hatótávnövelő

Küls eszközök. Dokumentum cikkszáma: Ez az útmutató a külön beszerezhető külső eszközök használatát ismerteti

A számítógép beállításainak megváltoztatása

CAD-ART Kft Budapest, Fehérvári út 35.

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

1. ábra A PWM-áramkör mérőpanel kapcsolási rajza

Nexus GSM modul. GameOver. Telepítői és programozási útmutató

S868C3E-1 típusú vezérlő napkollektoros házi melegvízellátó rendszerekhez

Technikai tájékoztató - kérdések és válaszok TSD-QA89 (2011/11)


PROGRAMOZHATÓ HŐMÉRSÉKLETÉRZÉKELŐ td-1_hu 04/11

BODROGKOZ.COM / HASZNÁLATI ÚTMUTATÓ

10. EGYSZERŰ HÁLÓZATOK TERVEZÉSE A FEJLESZTŐLAPON Ennél a tervezésnél egy olyan hardvert hozunk létre, amely a Basys2 fejlesztőlap két bemeneti

Átírás:

Mérési utasítás Labor 2, Mikrovezérlők Budai Tamás, budai.tamas@sze.hu Automatizálási Tanszék Széchenyi István Egyetem 2018 v1.1.0

Tartalom Bevezető... 1 A mérési utasítás helyes használata... 1 A mérési utasítás felépítése, a használt jelölések... 2 1. mérés: blinky... 3 Feladatok... 3 2. mérés: digital I/O... 6 Digital I/O:... 6 Nyomógombok... 6 Feladatok... 7 3. mérés: ADC... 9 ADC... 9 Feladatok... 10

Bevezető A Labor 2 tárgy mikrovezérlők moduljának célja, hogy rövid betekintést nyújtson a mikrovezérlő programozás világába, az Arduino platformon keresztül. A laborgyakorlat során az UnoArduSim szimulátor szoftverben kell a feladatokat megoldani. Ez a szoftver egy Arduino Uno prototípus-panel és a benne található ATMega 328 mikrovezérlő teljesértékű szimulátora. A program rendkívül felhasználóbarát, valamint számos, a gyakorlatban előforduló perifériát is tartalmaz, így a hallgatók működőképes mikrovezérlős alkalmazások modelljét tudják megalkotni a segítségével. A szimulátor használata azért különösen előnyös, mert így kiköszöbölhetők a hardveres problémák, mint például a kezdők által gyakran elkövetett félrehuzalozás, kontakthibák vagy a hardverelemek hibájából adódó helytelen működés. Így ezen a bevezető kurzuson a hallgatóknak elegendő a szoftveres megvalósításra koncentrálniuk. A mérési utasítás helyes használata Jelen mérési utasítás önállóan végezhető laborgyakorlatokat tartalmaz. A gyakorlatok végrehajtásához mindössze egy PC-re, az UnoArduSim szoftverre, valamint az elméleti anyagban található ismeretekre van szükség. Minden gyakorlat közben szerepelnek kérdések és feladatok amelyek megválaszolása és teljesítése a mérés sikeres teljesítéshez szükségesek. A válaszokat és megoldásokat tartalmazó dokumentumot a mérésvezető utasításai alapján kell elkészíteni és a mérés végén leadni. A mérés teljesítése akkor sikeres, ha a mérésvezető ezt a követelményt igazoló dokumentumot elfogadja. FIGYELEM! Ez a dokumentum az UnoArduSim 1.7.3-as verziójára épül. Bár a feladatok feltehetően helyesen működnek és megoldhatóak a szoftver újabb verzióval is, javasoljuk ennek a verziónak a használatát. 1

A mérési utasítás felépítése, a használt jelölések A mérési utasítás több, számozott feladatra tagolódik. Bár a feladatokban van egymásra épülés, mindegyik külön-külön is elvégezhető, a sorrend betartása nem lényeges. A mérési utasításban a következő jelöléseket alkalmaztuk: FIGYELEM! ez a figyelmeztetés mindig lényeges információt tartalmaz, általában a gyakran elkövetett hibákra figyelmeztet. kódrészlet forráskód részlet, amely szintaktiailag helyes, azaz bemásolható a szimulátor kódszerkesztőjébe, azonban nem minden esetben futtatható önmagában. A legtöbb esetben a működőképes kódhoz további szerkesztés szükséges. 1. utasítás: A feladat megoldásához szükséges követendő lépések és a kérdések számozott felsorolásként és dőlt betűvel vannak jelölve. 2

1. mérés: blinky A mérés célja a szimulátor alapvető funkcióinak megismerése. Feladatok 1. indítsd el a programot, majd készíts egy új mentést a forráskódról a File Save as menüpont segítségével. A program nevében ne használj ékezetes karaktereket. A mentés helye szabadon megválaszható, de az egyszerű elérhetőség kedvéért célszerű pl. az Asztalon létrehozott mappába dolgozni. FIGYELEM! Ha új mérésbe kezdesz, alkalmazd a fenti Save as funkciót, nehogy véletlenül egy korábbi programodat írd felül! 2. kattints duplán a programkód ablakba, a szerkesztő megnyitásához. 3. a kódszerkesztőben töröld ki az ott található mintakódot, majd másold be az alábbi forráskódot: void setup() // kezdeti beallitasok (egyszer fut le RESET utan) pinmode(13,output); void loop() // main loop, folyamatosan fut a kovetkezo RESET-ig. digitalwrite(13,high); delay(500); digitalwrite(13,low); delay(500); 4. zárd be a szerkesztőablakot mentéssel (Save gomb, vagy Ctrl+S). Ha a program megkérdezi, hogy felülírod-e az előző mentést, válaszd a Yes lehetőséget. 5. nyisd meg újra a szerkesztőablakot, majd az egérrel húzd félre annyira, hogy alatta az eredeti kódablak is látszódjon. Hasonlítsd össze az általad bevitt forráskódot azzal ami a kódablakban van. Mi a különbség? Mi lehet ennek az oka? (segítség: kommentek a kódablakban) 6. futtasd a programot a run gombbal: 1. ábra. run gomb 7. mi történik a képernyő jobb oldalán az Arduino panelen? 3

8. állítsd le a program futását a STOP gombbal: 2. ábra. STOP 9. a reset gombbal állítsd alaphelyzetbe a mikrovezérlőt: 3. ábra. RESET 10. léptesd a programot lépésenként a step into gombbal (az F4 billentyű is használható): 4. ábra. step into 11. figyeld meg hogyan változik a (panelen gyárilag megtalálható) 13. lábra behuzalozott LED állapota miközben a programot lépteted! Melyik forráskódban lévő függvény végrehajtása után villan fel a LED? 5. ábra. A 13. lábra behuzalozott LED és a 13. láb, mint digitális I/O 12. Figyeld meg, hogy a léptetés során hogyan viselkedik a loop() függvény! Mivel ez a loop() függvény egy while(1) ún. végtelen ciklusba van beágyazva, a függvény utolsó utasításának végrehajtása után a folyamat kezdődik előről és ismét a loop függvény első sorára kerül a végrehajtás. Ezért van az, hogy bár a programban csak egy be-ki kapcsolás van megvalósítva, a LED folyamatosan villog. A delay függvény: A fenti programban a LED 500ms időtartamra ki, majd 500ms időtartamra bekapcsol, azaz egy teljes periódus ideje 500+500=1000ms, azaz 1 másodperc. 4

13. módosítsd a fenti programot úgy, hogy a villogás periódusideje 2 másodperc legyen (1mpig be, 1mp-ig ki legyen kapcsolva a LED)! A módosított, kész programot (vagy egy képernyőképet a forráskódról) másold be a mérési jegyzőkönyvbe is! A mérési jegyzőkönyvnek a következő elemeket kell tartalmaznia: Név, NEPTUN-kód válasz az 5., 7., 11. pontokban lévő kérdésekre a 13. pontban megvalósítandó program forráskódja 5

2. mérés: digital I/O A mérés célja az egyszerű digitális be- és kimenetek kezelésének elsajátítása, valamint a szimulátorban használt perifériák bekötésének bemutatása. Digital I/O: Az Arduino UNO panelen 14 darab digitális be- és kimeneti láb található. FIGYELEM! A lábak számozása 0-val kezdődik! A programban a bemenetekről beolvashatjuk az aktuális értéket, a kimenetekre pedig kiírhatjuk a kívánt értéket. A programban a magas logikai szinthez az 1, az alacsony logikai szinthez pedig a 0 egész érték tartozik. Mind a 14 digitális láb használható be- vagy kimenetként, ez azonban azt is jelenti, hogy a lábakat fel kell konfigurálnunk használat előtt! FIGYELEM! A programban nem számít hibának ha kimenetként felkonfigurált láb értéket olvassuk, azonban ez a program helytelen működést eredményezheti! A lábak felkonfigurálásért a mintaprogram setup() függvényében meghívott pinmode() függvény a felelős. Első paramétere a digitális láb száma, második pedig az INPUT vagy OUTPUT konstans. Megjegyezzük, hogy az ATMega mikrovezérlők esetén minden digitális I/O láb alapértelmezetten bemenetként van felkonfigurálva. Ez azért előnyös, mert nem ad lehetőséget arra, hogy inicializálás nélkül véletlenül magas szintre emeljünk egy olyan lábat amelyet nem szerettünk volna és amelyre más alkatrészek már be vannak huzalozva. Így elkerülhető a mikrovezérlő és a többi alkatrész figyelmetlenségből adódó károsodása. Nyomógombok A valóságban a nyomógombokat az alábbi sematikus ábra szerint szokás bekötni: 6. ábra. nyomógomb bekötése 6

Ebben az elrendezésben a mikrovezérlő lábára magas feszültségszintet kapcsoltunk egy ún. felhúzó ellenálláson (R1) keresztül, majd a gomb megnyomásakor ezt a magas szintet az alacsony szint irányába húzzuk. Erre az ellenállásra azért van szükség, mert különben a nyomógomb megnyomásakor rövidzárlat keletkezne a tápfeszültség és a földpotenciál között. pushbutton: a szimulátorban található nyomógomb a 6. ábrán látható, zöld gombra kattintással működtethető. A működése alapértelmezetten a csengőkapcsolóhoz és a rugós mikrokapcsolókhoz hasonló, azaz elengedés után automatikusan visszaáll a kezdeti állapotába. Amennyiben normál kapcsolóként szeretnénk használni, a nyomógomb feletti latch bekapcsolásával a működése átállítható. A nyomógomb másik fontos tulajdonsága, hogy benyomáskor milyen szintváltozás történjen. Ezt a zöld nyomógombtól jobbra található választóval állíthatjuk be: alapértelmezetten a nyomógomb lába magas logikai szinten van amelyet megnyomáskor alacsony logikai szintre vált, azaz a nyomógomb 6. ábrán látható kapcsolás szerint működik. Feladatok 1. készíts egy mentést a File Save as menüpont segítségével! 2. nyisd meg a kódszerkesztőt és másold bele az alábbi forráskódot, felülírva az ott található kódot, majd mentéssel lépj ki a szerkesztésből: int button=0; void setup() void loop() pinmode(13,output); pinmode(3,input); button = digitalread(3); // nyomogomb a 3-as labon if(!button) else digitalwrite(13,high); digitalwrite(13,low); 7

3. huzalozd be a bal oldalon legfelül található nyomógombot a 3-as digitális lábra! ehhez a láb számát írd be a nyomógombon található szövegmezőbe: FIGYELEM! Amennyiben a láb száma egyszámjegyű, egy eléírt 0-val ki kell egészíteni kétszámjegyűre! 6. ábra. nyomógomb bekötése 4. futtasd a programot, majd futás közben próbáld ki a behuzalozott nyomógomb működését! Mikor világít a 13. lábra gyárilag bekötött LED? 5. figyeld meg a program bal alsó sarkában található ablakban a button változó értékének változását a nyomógomb megnyomásakor! Mikor lesz 0 és mikor 1 az értéke? 6. a fenti két megfigyelés alapján a programkód if() feltételes szerkezetében mit csinálhat a button előtti felkiáltójel? 7. Miket kell módosítani a programban ha a gombot át szeretnénk tenni a 6-os lábra? A mérési jegyzőkönyvnek a következő elemeket kell tartalmaznia: név, NEPTUN-kód 4,5,6,7 kérdésekre adott válaszok 8

3. mérés: ADC A mérés célja az analóg-digitális átalakító bemutatása és használatának elsajátítása. ADC A mikrovezérlő, mint digitális hálózat önmagában alkalmas a digitális világgal való interfészelésre, egyszerűen összeköthető más digtális jelszinteket használó elemekkel. A gyakorlatban azonban a fizikai valóság egy-egy mérni kívánt paraméterét az adott érzékelő elem a legtöbb esetben analóg áram vagy feszültségjellé alakítja, amelyet a későbbi feldolgozhatóság érdekében digitális jellé kell alakítanunk. Erre a feladatra alkalmas az ún. ADC, vagy analog to digital converter, amely a bemenetére adott analóg jelet digitálissá alakítja. Az ADC működését itt részletesen nem tárgyaljuk, de felhívjuk a figyelmet két nagyon fontos paraméterre amire figyelnünk kell: felbontás: arról ad inforációt, hogy az ADC milyen finomsággal tudja a bemeneti jelet felbontani. Az értékét bit-ben szokás megadni. Egy 10bit-es ADC a bemeneti jelet 2 10 azaz 1024 részre tudja felbontani. Ez azt jelenti, hogy 5V-os rendszer esetén, a bementre érkező 0-5V közti jelből egy 0 és 1023 közti egész számot állít elő. Ebből kiszámolható, hogy a legkisebb feszültségváltozás, amelyet érzékelni tudunk egy ilyen ADC-vel: 5 1024 = 0.0048 V. sebesség: a működésből adódóan a fenti átalakítás időbe telik, azaz az analóg jel beérkezése és a számérték előállítása között bizonyos késleltetés lép fel. Bár ez a mai ADC-k esetén még az olcsóbb kivitelekben is jellemzően néhány μs értékű, ez az érték felső korlátot szab az elérhető maximális mintavételi frekvencia értékére. Az Arduino UNO panelen található ATMega mikrovezérlőbe épített 6 darab ADC esetén a felbontás 10bit, a sebesség pedig kb. 100 μs. 9

Feladatok 1. hozz lére egy új mentést a szimulátorban, majd a kódszerkesztő ablakba másold be az alábbi kódot: int analog0=0; void setup() void loop() analog0 = analogread(0); delay(500); 2. Az analóg jel előállítására először a kézzel beállítható feszültségforrást fogjuk használni: huzalozzuk be az első feszültségforrást az A0 analóg lábra: 7. ábra. A feszültségforrás bekötése 3. futtasd a programot, majd az egérrel állítsd be különböző jelszintet a csúszka segítségével. Figyeld meg, hogyan változik az analog0 változó értéke! 4. huzalozd be valamelyik LED-et a 12-es labra, majd cseréld ki a programot az alábbira: 10

int analog0=0; void setup() pinmode(12,output); void loop() analog0 = analogread(0); if(analog0 > 511) else delay(500); digitalwrite(12,high); digitalwrite(12,low); 5. futtasd a programot és állítsd a feszültségszint értékét a csúszkával. A program alapján fogalmazd meg mikor kell világítania a LEDnek. Mi történik ha gyorsan változtatod a feszültségszintet? Mi lehet ennek az oka? 6. A szemléletesség kedvéért a programban az ADC két mintavétele közti időt mesterségesen megnöveltük 500ms-al. Csökkentsd a programban a delay() függvény paraméterét! Vizsgáld meg, hogy kb. mekkora értéknél van az a határ ahol már nem tudod olyan gyorsan változtatni a feszültségszintet, hogy azt a rendszer ne érzékelje! 7. A program az eddigiekben a ADC által szolgáltatott egész számot írta ki. A korábbiakban ismertetett összefüggés alapján számoljuk ezt most vissza feszültség értékre a programban! Módosítsd a programot az alábbiaknak megfelelően: 11

int analog0=0; float analogvoltage; void setup() pinmode(12,output); void loop() analog0 = analogread(0); analogvoltage = analog0*5/1023.0; if(analog0 > 511) digitalwrite(12,high); else digitalwrite(12,low); 8. Futtasd a programot, módosítsd a feszültségszintet és nézd meg milyen értékeket vesznek fel a változók. 9. Módosítsd a programot úgy, hogy az analogvoltage változó értékét kiszámító képlet végén az 1023.0 számértékből töröld ki a tizedespontot és a 0-t. Ez a szám értékén nem változtat, azonban mégis változást okoz a program futásában. Mi ez a változás? Mi lehet ennek az oka? A mérési jegyzőkönyvnek a következő elemeket kell tartalmaznia: név, NEPTUN-kód 5,6,9 kérdésekre adott válaszok 12