MSP430 programozás Energia környezetben. Digitális szenzorok



Hasonló dokumentumok
Bevezetés a mikrovezérlők programozásába: Digitális szenzorok

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

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

Bevezetés az elektronikába

Ismerkedés az MSP430 mikrovezérlőkkel

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

MSP430 programozás Energia környezetben. Nokia 5110 grafikus kijelzo vezérlése

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

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

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

UH-zongora - zenélés mikrokontrollerrel

The modular mitmót system. DPY kijelző kártya C API

MSP430 programozás Energia környezetben. LED mátrix vezérlése MAX7219 IC-vel

Bevezetés a mikrovezérlők programozásába: WS2812 RGB LED-ek vezérlése

Hobbi Elektronika. 1. Témakörök, célkitűzés, hozzávalók

Bevezetés a mikrovezérlők programozásába: Programciklusok szervezése, analóg I/O

Bevezetés a mikrovezérlők programozásába: LCD kijelzők

1. Metrológiai alapfogalmak. 2. Egységrendszerek. 2.0 verzió

MSP430 programozás Energia környezetben. Digitális szenzorok I2C kommunikációval

Bevezetés az elektronikába

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

MSP430 programozás Energia környezetben. Hétszegmenses LED kijelzok

A Hobbielektronika csoport. bemutatója

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

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.

MSP430 programozás Energia környezetben. Az I/O portok kezelése

loop() Referencia:

Tarján Péter Nyíregyházi Egyetem. Szenzorok és ötletek Arduinós mérésekhez

Bevezetés a mikrovezérlők programozásába: Fényérzékelés, fénymérés

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

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

MSP430 programozás Energia környezetben. Nem élhetek muzsikaszó nélkül

Bevezetés a mikrovezérlők programozásába: I/O portok kezelése, számrendszerek, bitműveletek

Bevezetés a mikrovezérlők programozásába: MAX6958: Hétszegmenses LED kijelző vezérlő

MSP430 programozás Energia környezetben

Bevezetés a Modbus kommunikációba

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

Labor gyakorlat Mikrovezérlők

Bevezetés az elektronikába

Bevezetés a mikrovezérlők programozásába: Az Arduino, mint logikai analizátor

Bevezetés a mikrovezérlők programozásába: Kommunikáció

Programozott soros szinkron adatátvitel

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

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

Megszólal a Kütyü. Arduino bevezető hangszóró vezérlése 1 / 5 oldal

Tesztelési feladatok és kihívások a FALCON projektben

A LEGO Mindstorms EV3 programozása

Multi-20 modul. Felhasználói dokumentáció 1.1. Készítette: Parrag László. Jóváhagyta: Rubin Informatikai Zrt.

MSP430 programozás Energia környezetben. Alfanumerikus LCD kijelzok

SYS700-PLM Power Line Monitor modul DDC rendszerelemek, DIALOG-III család

1. Témakörök, célkitűzés, hozzávalók. Hobbielektronika csoport 2015/2016

Bevezetés az elektronikába

Bevezetés az elektronikába

ALPHA és ALPHA XL műszaki leírás

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

Silabs STK3700, Simplicity Studio laborgyakorlat

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Felhasználói kézikönyv

Labor gyakorlat Mikrovezérlők

A/D és D/A konverterek vezérlése számítógéppel

Vegyes témakörök. 5. Gagyiszkóp házilag hangfrekvenciás jelek vizsgálata. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Labor 2 Mikrovezérlők

Mérés, Vezérlés. mérésadat rögzítés CMC - 99 CMC kis és nagytestvér

Készítette: Ruzsinszki Gábor webmaster442

TxRail-USB Hőmérséklet távadó

Dr. Oniga István DIGITÁLIS TECHNIKA 9

Mérési útmutató a Mobil Kommunikáció és Kvantumtechnológiák Laboratórium méréseihez

GSM KÖZPONTOK > LAN KÖZPONTOK > HŐMÉRSÉKLET ÉRZÉKELŐK > PÁRAMÉRŐK > CO2 SZENZOROK > NYOMÁSMÉRŐ SZENZOROK >

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

Arduino, programozás, elektronika egy út az ismeretek integrált felhasználásához

Többfunkciós hobbirobot építése és vezérlése Arduino UNO mikrovezérlő kártya segítségével

M2037IAQ-CO - Adatlap

OMRON FOTOELEKTROMOS KAPCSOLÓK E3NT

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ó.

Labor gyakorlat Mikrovezérlők

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

SYS700-A Digitális szabályozó és vezérlõ modul DDC rendszerelemek, DIALOG-III család. Terméktámogatás:

Mérés és adatgyűjtés

Újdonságok az Arduino szabadszoftveres platform körül. Noll János FSF.hu Alapítvány

Programozó Meta riasztókhoz és Activepark parkolásérzékelőhöz

Fizikai mérések Arduino-val

Nagy Gergely április 4.

OMRON BIZTONSÁGI FÉNYFÜGGÖNYÖK F3SN-A

Irányítástechnikai alapok. Zalotay Péter főiskolai docens KKMF

Energiaminőség- és energiamérés LINETRAXX PEM330/333

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!

Dinnyeválogató v2.0. Típus: Dinnyeválogató v2.0 Program: Dinnye2 Gyártási év: 2011 Sorozatszám:

Mechatronika és mikroszámítógépek. 2016/2017 I. félév. Analóg-digitális átalakítás ADC, DAC

Energiaminőség- és energiamérés LINETRAXX PEM330/333

Jelfeldolgozás a közlekedésben. 2017/2018 II. félév. Analóg-digitális átalakítás ADC, DAC

RHTemp TepRetriver-RH. Hőmérséklet- és páratartalom adatgyűjtő, LCD kijelzővel. Hőmérséklet- és páratartalom adatgyűjtő

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

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

MaxiCont. MOM690 Mikroohm mérő

Roger UT-2. Kommunikációs interfész V3.0

Szerző Lővei Péter LOPSAAI.ELTE IP-08PAEG/25 Daiki Tennó

INFRA HŐMÉRŐ (PIROMÉTER) AX Használati útmutató

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Átírás:

MSP430 programozás Energia környezetben Digitális szenzorok 1

Adatgyűjtés, adatkonverzió A külvilág fizikai jellemzői többnyire az idő függvényének folytonos változói. Ezek érzékelése és digitálisan feldolgozhatóvá tétele átalakítást, adatkonverziót igényel. 2

Analóg szenzorok Analóg szenzorok 3 ADC-vel ellátott mikrovezérlő

Digitális szenzorok Digitális szenzorok 4 Mikrovezérlő

Az adatgyűjtő rendszer elemei Szenzor: A folytonos fizikai mennyiségeket (pl. hőmérséklet, nyomás, páratartalom, sebesség, áramlási sebesség, elmozdulás, gyorsulás, szöggyorsulás) elektromos jellé alakítja (feszültséggé vagy árammá). Jel kondicionálás (szűrés, erősítés, stb.): A mérendő mennyiség elektromos jellé alakítása után még szűrésre, jel erősítésre, impedancia illesztésre is szükség lehet, hogy az analóg-digitális átalakító (ADC) bemeneti tartományába transzformáljuk az átalakítandó jelet. Analóg-Digitális Átalakító (ADC): Bemenet: a mérendő jel Kimenet: a mérendő jellel arányos digitális kód számot reprezentáló 5

Lab09 Sonar ultrahangos távolságmérő HC-SR04 szenzorral DHT22_test Relatív páratartalom és hőmérséklet érzékelő szenzor (DHT22) kipróbálása és ellenőrzése TRHlogger Hőmérséklet és relatív páratartalom mérése és naplózása libraries a DHT22 szenzor kezeléséhez szükséges Energia C++ programkönyvtár (DHT.h és DHT.cpp) dht22.zip PC alkalmazás az adatok megjelenítésére és naplózására Hozzávalók: 6

Ultrahangos távolságmérés A HC-SR04 modul piezo jeladója az indító impulzus hatására egy 40 khz-es jelcsomagot sugároz ki. A modul digitális kimenő impulzusának szélessége megegyezik a visszaverődött hang terjedési idejével. Főbb paraméterek Tápfeszültség: 4.5 V 5.5 V Mérési tartomány: 2 cm 4 m (gyakorlatban inkább 2 m) Érzékelési szögtartomány: ~ 16 : Megjegyzés: az 5 V-os tápfeszültséget a Launchpad kártya TP1 pontjáról vehetjük. 7

Ultrahangos távolságmérés unsigned long pulseint(int pin, int value) Meghatározza a beérkező impulzus szélességét (mikroszekundum egységekben). pin a vizsgált bemenet sorszáma value az vizsgálandó impulzus polaritása (HIGH vagy LOW) 8

Sonar.ino 1/2. oldal #define echopin P2_4 #define trigpin P2_5 int maximumrange = 200; int minimumrange = 1; long duration; float distance; // Echo bemenet // Trigger kimenet // Legnagyobb távolság cm-ben // Minimális távolság cm-ben // Időtartam [us] // Távolság [cm]void void setup() { Serial.begin(9600); //Soros kapcsolat 9600 bit/s Serial.println("Sonar program"); pinmode(echopin, INPUT); //Impulzus bemenet pinmode(trigpin, OUTPUT); //Vezérlő kimenet digitalwrite(trigpin, LOW); //Alaphelyzetben alacsony szint pinmode(red_led,output); //A beépített piros LED jelző funkciót lát el digitalwrite(red_led,high); 9

Sonar.ino 2/2. oldal void loop() { delay(1000); //egy kis várakozás digitalwrite(red_led,high); digitalwrite(trigpin, HIGH); delaymicroseconds(10); Trigger impulzus előállítása digitalwrite(trigpin, LOW); duration = pulsein(echopin, HIGH); //Bejövő impulzus szélességének meghatározása digitalwrite(red_led,low); distance = duration/58.82; // Kiszámoljuk a távolságot if (distance >= maximumrange distance < minimumrange) { distance = -1.0; Serial.print(distance); // A mért távolság kiíratása Serial.println(" cm"); d = t v 2 Ahol d a távolság, t az impulzus hossza, v a hang terjedési sebessége (~340 m/s). Mivel t értéke µs-ban adott, d-t pedig cm-ben mérjük, így d = t * 34000/2000000, azaz d = t/58.82 10

Hőmérséklet és relatív páratartalom mérése DHT22 szenzorral AZ AM2302 (DHT22) SZENZOR FŐBB JELLEMZŐI Felbontás: hőmérséklet 0.1 :C és rel. páratartalom 0.1 % Kommunikáció: 1-wire, nem szabványos protokol, 4 bájt adat (nedvesség 2 bájt, hőmérséklet 2 bájt) + 1 bájt ellenőrző összeg, digitálisan szolgáltatja az adatokat. Mintavételezési gyakoriság: 2 másodpercenként Tápfeszültség: 3,5 5.5 V Host Szenzor 40 bitnyi adat indítójel nyugtázó jel 32 bit információ + 8 bit ellenőrző összeg Összesen tehát 85 időzítést tartalmaz egy-egy tranzakció 11

DHT library A szenzor kezelésére külön programkönyvtár áll rendelkezésre, melyet a Vázlatfüzet (Sketchbook) libraries mappájába kell bemásolni (DHT.h és DHT.cpp állományok). A C++ nyelven írt könyvtár eredetileg az Arduinohoz készült, de minimális változtatással az Energiához is használható. class DHT { //A DHT objektum deklarálása private: uint8_t data[6]; uint8_t _pin, _type; boolean read(void); unsigned long _lastreadtime; boolean firstreading; A DHT.h tartalma public: DHT(uint8_t pin, uint8_t type); //Konstruktor void begin(void); //Inicializálás float readtemperature(bool S=false); //T kiolvasás float convertctof(float); //C F konverzió float readhumidity(void); //RH kiolvasás ; 12

DHT library használata Egyszerű példa a DHT objektum metódusainak hívására (feltételeztük, hogy a szenzor DHT22 típusú és az adatvonala a mikrovezérlő P2_3 kivezetésére csatlakozik). Megjegyzés: Nem teljes program, az értelmes használathoz kiegészítésre szorul. DHT dht(p2_3, DHT22); void setup() { dht.begin(); //DHT objektum példányosítása //inicializálás void loop() { float h = dht.readhumidity(); //Relatív páratartalom kiolvasása float t = dht.readtemperature(); //Hőmérséklet kiolvasása float f = dht.convertctof(t); //Átszámítás Fahrenheit skálára //Kiíratás, kijelzés, stb..... 13

DHT22_test.ino A mintaprogram célja a DHT22 szenzor működésének ellenőrzése, és az üzembiztos kiolvasáshoz szükséges időzítési paraméter optimalizálása. A kapcsolás vázlata 14 A DHT.cpp forráskód kritikus része

DHT22_test.ino 15

DHT.cpp (a kritikus részlet) // read in timings for ( i=0; i< MAXTIMINGS; i++) { counter = 0; while (digitalread(_pin) == laststate) { //Állapotváltozás detektálása counter++; // delaymicroseconds(2); if (counter == 255) { break; laststate = digitalread(_pin); if (counter == 255) break; if ((i >= 4) && (i%2 == 0)) { // ignore first 3 transitions Igazítás az eltérő CPU sebességhez // shove each bit into the storage bytes data[j/8] <<= 1; if (counter > DHTLEVEL) data[j/8] = 1; j++; Kártya DHTLEVEL Arduino 6 MSP430 11 Tiva C 64 16

DHT22_test.ino #include "DHT.h" #define DHTPIN P2_3 #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(dhtpin, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); void loop() { float h = dht.readhumidity(); float t = dht.readtemperature(); if (isnan(t) isnan(h)) { Serial.println("Failed to read from DHT"); else { Serial.print("Humidity: "); Serial.print(h,1); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t,1); Serial.println(" *C"); delay(2000); A DHT.h állományban vegyük ki a kommentből a DEBUG makró definiálását! Olvasási hiba esetén a visszatérési érték NaN lesz. NaN = Not a Number (nem szám) 17

DHT22_test.ino Összeolvasás: A hexadecimálisan kiíratott adatok tizedfokban, illetve tizedszázalékban adják meg a mért értékeket, s a kétbájtos adatoknál a magasabb helyiértékű áll elől. Például 1, 40, 1, D, 4F jelentése: Humidity = (1*256 + 64)/10 = 32.0 % Temp = (1*256 + 13)/10 = 26.9 :C Kontrolösszeg = 1 + 40 + 1 + D = 4F (hexadecimális számok!!!) Időzítések: 6 7 ciklus 0 bit esetén 21 ciklus 1 bit esetén Diszkriminációs szint: 10 15 közötti érték az optimális 18

Megjelenítés a PC-n Az eredményt soros porton kiküldjük a számítógépnek, s a Lab08-ban már közreadott Processing alkalmazás segítségével megjeleníthetjük a képernyőn, illetve naplózhatjuk is. 19

TRHlogger.ino #include "DHT.h" #define DHTPIN P2_3 #define DHTTYPE DHT22 // DHT 22 (AM2302) DHT dht(dhtpin, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); void loop() { delay(5000); float h = dht.readhumidity(); float t = dht.readtemperature(); if (isnan(t) isnan(h)) { //Serial.println("Failed to read from DHT"); else { Serial.print(h,1); Serial.print(" "); Serial.println(t,1); Fontos figyelmeztetés: Ne felejtsük el kommentbe tenni a DEBUG makró definiálását a DHT.h állományban! Most zavaró lenne a sok kiírás Lényegében csak a kiíratás formátuma változott meg. Például: 42.0 25.6 41.9 25.7... 20

dht22 futtatása a PC-n Bontsuk ki a dht22.zip állományt valahová, s indítsuk el a dht22\application.windows32 mappában található dht22.exe programot. A program működéséhez a gépen 32 bites Java futtatói környezet (JRE) szükséges, s az alkalmazás igényli a mellette található állományokat és mappát (rxtxserial.dll, waterdrop.jpg, lib mappa, s kell hozzá az egy szinttel föntebb található data mappa is). Mellékeltük a forráskódot is (dht22.pde), ami a processing.org címről szabadon letölthető Processing fejlesztőrendszerrel futtatható, illetve fordítható újra. Ha egynél több soros port található a rendszerben, s nem a Launchpad a legkisebb sorszámú, akkor a dht.pde forrásfájlban írjunk a Dev_Board = new Serial(this, Serial.list()[0], 9600); sorban a 0 helyett 1-et! 21