Eötvös Loránd Tudományegyetem - Informatikai Igazgatóság. MEMS érzékelők, szenzorok, méréstechnika. Horváth Gábor. ELTE / Informatikai Igazgatóság

Hasonló dokumentumok
I 2 C, SPI, I 2 S, USB, PWM, UART, IrDA

loop() Referencia:

The modular mitmót system. 433, 868MHz-es ISM sávú rádiós kártya

ARM Cortex magú mikrovezérlők

ARM programozás. Iványi László Szabó Béla

The modular mitmót system. 433, 868MHz-es ISM sávú rádiós kártya

Mikrovezérlők Alkalmazástechnikája

Mikrovezérlők Alkalmazástechnikája

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

ARM Cortex magú mikrovezérlők

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

Labor gyakorlat Mikrovezérlők

Autóipari beágyazott rendszerek CAN hardver

Nagy Gergely április 4.

Minden mérésre vonatkozó minimumkérdések

Mintavételezés tanulmányozása. AD - konverzió. Soros kommunikáció

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

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

Dr. Oniga István DIGITÁLIS TECHNIKA 9

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

Labor gyakorlat Mikrovezérlők

Dr. Oniga István DIGITÁLIS TECHNIKA 9

I 2 C, RS-232 és USB. Informatikai eszközök fizikai alapjai. Oláh Tamás István

Programozási segédlet DS89C450 Fejlesztőpanelhez

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

RUBICON Serial IO kártya

SZENZORMODUL ILLESZTÉSE LEGO NXT PLATFORMHOZ. Készítette: Horváth András MSc Önálló laboratórium 2 Konzulens: Orosz György

Mozgásmodellezés. Lukovszki Csaba. Navigációs és helyalapú szolgáltatások és alkalmazások (VITMMA07)

Az I2C egy soros, 8 bit-es, kétirányú kommunikációs protokoll, amelynek sebessége normál üzemmódban 100kbit/s, gyors üzemmódban 400kbit/s.

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

Eduino mérőpanel. Alapötlet:

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

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

Moore & more than Moore

VTOL UAV. Moduláris fedélzeti elektronika fejlesztése pilóta nélküli repülőgépek számára. Árvai László, Doktorandusz, ZMNE ÁRVAI LÁSZLÓ, ZMNE

Digitális technika VIMIAA01

Digitális technika VIMIAA01

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

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

VTOL UAV. Inerciális mérőrendszer kiválasztása vezetőnélküli repülőeszközök számára. Árvai László, Doktorandusz, ZMNE

Fizikai mérések Arduino-val

Valódi mérések virtuális műszerekkel

Orvosi jelfeldolgozás. Információ. Információtartalom. Jelek osztályozása De, mi az a jel?

Mérési hibák

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

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

Akusztikus MEMS szenzor vizsgálata. Sós Bence JB2BP7

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

ATMEL ATMEGA MIKROVEZÉRLŐ-CSALÁD

2. Elméleti összefoglaló

Digitális rendszerek. Digitális logika szintje

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

Bevezetés a Modbus kommunikációba

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

Járműinformatika bevezetés II. 2. Óra

MÓDOSÍTOTT RÉSZLETEZŐ OKIRAT (1) a NAH / nyilvántartási számú akkreditált státuszhoz

A mikroszámítógép felépítése.

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

XII. PÁRHUZAMOS ÉS A SOROS ADATÁTVITEL

Digitális multiméterek

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

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

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

Kiegészítő tudnivalók a fizikai mérésekhez

SZENZORFÚZIÓS ELJÁRÁSOK KIDOLGOZÁSA AUTONÓM JÁRMŰVEK PÁLYAKÖVETÉSÉRE ÉS IRÁNYÍTÁSÁRA

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

Készítette: X. Y. 12.F. Konzulens tanár: W. Z.

INVERSE E1 MULTIPLEXER LAN BRIDGE

Méréselmélet és mérőrendszerek 2. ELŐADÁS (1. RÉSZ)

A Texas Instruments MSP430 mikrovezérlőcsalád

Labor gyakorlat Mikrovezérlők

Programozó- készülék Kezelőkozol RT óra (pl. PC) Digitális bemenetek ROM memória Digitális kimenetek RAM memória Analóg bemenet Analóg kimenet

Érzékelők és beavatkozók I.

Nemzeti Akkreditáló Testület. RÉSZLETEZŐ OKIRAT a NAT /2015 nyilvántartási számú akkreditált státuszhoz

1 csűrő 1 csűrő 2 magassági 2 magassági 3 gáz 3 gáz 4 oldalkormány 4 oldalkormány 5 Robot üzemmód 5 csűrő

PT1 Légnyomás távadó Felhasználói kézikönyv. v1.0 Előzetes

Elektronika Előadás. Digitális-analóg és analóg-digitális átalakítók

A Memory Interface Generator (MIG) beállítása a Logsys Kintex-7 FPGA kártyához

RhT Léghőmérséklet és légnedvesség távadó

Intelligens Digitális Szenzortechnika

FEDÉLZETI INERCIÁLIS ADATGYŰJTŐ RENDSZER ALKALMAZÁSA PILÓTA NÉLKÜLI REPÜLŐGÉPEKBEN BEVEZETÉS

8. Laboratóriumi gyakorlat INKREMENTÁLIS ADÓ

Modbus kommunikáció légkondícionálókhoz

Autóipari beágyazott rendszerek. Local Interconnection Network

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

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

2. rész PC alapú mérőrendszer esetén hogyan történhet az adatok kezelése? Írjon pár 2-2 jellemző is az egyes esetekhez.

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

Hiszterézis: Egy rendszer kimenete nem csak az aktuális állapottól függ, hanem az állapotváltozás aktuális irányától is.

Balatonőszöd, június 13.

Univerzális szabályozható LED tápegység DC JOLLY MD PUSH V out I out Kód mA Un / f 500mA Umük mA 700mA mA η max.

Az interrupt Benesóczky Zoltán 2004

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. Hétszegmenses LED kijelzok

5.4. Perifériák helyettesítése párhuzamos feldolgozással a Propeller esetében

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

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

SEIK 110 AUTO OPI OPTIKAILAG SZIGETELT AUTOMATA INTERFÉSZ KONVERTER RS-232<>RS-422/485 HASZNÁLATI UTASÍTÁS

Átírás:

Horváth Gábor ELTE / Informatikai Igazgatóság 1

Mérni a legegyszerűbb, a rendszerhez kapcsolunk egy szenzort: Mennyi? Számítógép Szenzor 30 -Mi 30? -Mennyire pontosan 30? Minden döntés, beavatkozás annyira pontos, amennyire a kiinduló adatok. 2

A legegyszerűbb eset: hőmérséklet mérés (Egy hőmérséklet-függő ellenálláson áramgenerátorral ismert erősségű egyenáramot folyatok át és mérem a rajta eső feszültséget - pl. AD konverterrel, amit már jól tudok a rendszeremhez illeszteni.) 6 gyártó 8 terméke: 22-től 26 fokig minden volt a szobában Nagyon olcsó szenzor: a mért érték monoton nő a fizikai mennyiséggel Olcsó szenzor: az arányosság lineáris, de 0-ban nem biztos, hogy 0-t ad vissza: kalibrálni kell Drágább szenzor: a kalibrációs értékek egyből betölthetők Még drágább szenzor: a kalibrálást gyárilag elvégezték. 3

Milyen hibákkal találkozhatunk: -Mérési pontosság (pl. 16 bitet ad vissza, de abból csak 12 értékes) -Nullponti hiba: 0-s mennyiségnél nem 0 a kapott érték -Nemlinearitás: egy korrekciós függvényt kell alkalmazni (ezt minőségi szenzorokba gyárilag beépítik) -Hőmérséklet függés (ezt mindig illik a gyártónak beépíteni) -Memória effektus: a mért érték hibája függ az előzőleg mért értéktől -Orientációs hiba: a mért érték függ a szenzor helyzetétől is - a szenzor és a mért mennyiség függvényében egyéb hibák 4

Mit tudunk tenni a hibákkal? 1. Nézzünk utána, hogy mi a szenzorunk gyártó által megadott pontossága és a többi bitet dobjuk el, ne próbáljuk meg feldolgozni! 2. Ha van lehetőségünk, akkor átlagoljunk (aluláteresztő szűrő) 3, Nézzünk utána, hogy kell-e kalibrálnunk! Ha igen, akkor kaptunk-e autokalibrációs eljárást? Hívjuk meg. Ha nem kaptunk, van-e kézi kalibráció, mit kell csinálnunk a szenzorral? El tudjuk-e menteni a kalibrációs adatokat? 5

Mi a helyzet a mérés idejével? 1, A mérés időbe telik. Ha sok szenzorral sokat mérünk, akkor ezt már okosan kell csinálni, nem várhatjuk végig egymás után, amíg a mérés zajlik. Elindítjuk a méréseket párhuzamosan és figyeljük (pl. interrupt) hogy rendelkezésre áll-e már valamelyik szenzorban az eredmény. 2, Összetartozó mennyiségeket illik egyszerre mérni és nem egymás után mert akkor már nagyon különböző időpillanatokhoz tartoznak. 3, Mi történik, ha gyorsabban olvasom ki az eredményt, mint ahogy a szenzor elkészül a méréssel? a, az előző értéket kapom b, 0 értéket kapok c, véletlenszerű értéket kapok d, a mért értéket kapom, de kisebb pontossággal 6

Hogyan illesztem a szenzort? I. 1. ötlet: úgyis mindig feszültséget mérek az AD konverteremmel: a mért mennyiséget valahogy analóg egyenfeszültséggé alakítom és azt vezetem oda a mikrovezérlőmhöz. Rossz ötlet: a tapasztalat szerint egy 10 bit pontos értékből legalább 1 bitet bukok a 20 centi drót által összeszedett zavaron és azon, hogy külső AD átalakítót használok. Jó ötlet: a fizikai szenzorhoz minél közelebb kell digitális jellé alakítani a mennyiséget és digitális interface-en vezetni a mikrovezérlőhöz. Gyakori megoldások: I2C, SPI, UART Kivétel: 4-20mA hurok (vezetékhossz független, de nem gyors és pontos) 7

I2C: Inter-Integrated Circuit Protocol I2C: busz topológia, egyszerre 1 aktív Master, sok Slave 2 vezetékünk van (a tápfeszültségen és a földvezetéken kívül): -SDA: ezen megy az adat bitenként -SCL: ezen megy az órajel (mindig a Master egység adja) 8

I2C tranzakció (cím kiküldése és adat kiküldése): - mindig 8 bitet küldünk egy keretben, az első keretet mindig a Master küldi - az első keret első 7 bitje a cím, az utolsó a kommunikációs irány - az adat jelentése a Slave típusától függ (felsőbb szint) Van ACK/NACK bit a keret végén: mindig a receiver billenti be (pl. tudja a Master, hogy a Slave él azon a címen) Nem illik 32-nél több egységet használni egy fizikai buszon. Általában a Slave-ek címe jumperekkel állítható, lehet több azonos típusú IC. Half-duplex átvitel, 100 khz vagy 400 khz SCL frekvencia (5 MHz?) 9

I2C tranzakció programkódban (Arduino környezet): #include <Wire.h> (Wire/Wire1 objektum) Setup(): Wire.begin(); 1 byte kiírása: Wire.beginTransaction(i2c_address); Wire.write(data) if (Wire.endTransaction()) N byte beolvasása: Wire.requestFrom(i2c_address, no_of_bytes); Wire.readBytes(buffer, no_of_bytes) 10

I2C tranzakció programkódban (Linux környezet): #include <linux/i2c.h> #include <linux/i2c-dev.h> #include <sys/ioctl.h> uint8_t data, addr = 0x76, reg = 0x0d; const char *path = /dev/i2c-3 ; int file, rc; file = open(path, O_RDWR); rc = ioctl(file, I2C_SLAVE, addr); data = i2c_read_byte_data(file, reg); static inline s32 i2c_access(int file, char read_write, u8 command, int size, union i2c_smbus_data *data) { struct i2c_smbus_ioctl_data args; args.read_write = read_write; args.command = command; args.size = size; args.data = data; return ioctl(file, I2C_SMBUS, &args); } static inline s32 i2c_read_byte_data (int file, u8 command) { union i2c_smbus_data data; If (i2c_access(file, I2C_SMBUS_READ, command, I2C_SMBUS_BYTE_DATA, &data)) return -1; else return 0x0FF & data.byte; } 11

SPI: Serial Peripheral Interface: csillag topológia, 1 master, több slave 4 vezetékünk van: -MOSI: master out, slave in (közös minden slave esetén) -MISO: master in, slave out (közös minden slave esetén) -SCK: mindig a master adja -CS: chip select: minden slave-hez külön vezeték, ezzel választja ki a master, hogy melyik slave-vel beszél. A kapcsolat full-duplex. Az SCK fix értékek közül választható, a 4 Mhz-t mindenkinek támogatnia kell, egy korszerű mikrovezérlő 16-20 Mhz-s SPI-t is tud használni. 12

SPI tranzakció: 13

SPI tranzakció programkódban (Arduino platform): #include <SPI.h> SPI.begin(); (lett SPI objektum) digitalwrite(sspin, LOW); result = SPI.transfer(data); digitalwrite(sspin, HIGH); Az ARM platform már másképp kezeli az SS lábakat: SPI.begin(SSPin); SPI.setClockDivider(SSPin, 21); byte receive_data = SPI.transfer(SSPin, send_data, SPI_CONTINUE); (Nincs 3. argumentum, ha az utolsó tranzakciót csináljuk.) 14

UART: Universal Asynchronous Receiver/Transmitter Órajel nélküli soros kapcsolat, TX és RX (keresztbe kapcsolva), duplex átvitel előre beállított átviteli sebességgel csak két egység között. - A két oldalt azonos átviteli sebességre kell állítani (max 230400 bps) - A bufferelés általában minimális (RingBuffer 128 byte a default) tehát tartósan egyik oldalt sem szabad gyorsabban tömni adattal, mint ahogy az UART kapcsolatba tudja tölteni, vagy a mikrovezérlő felé át tudja adni. 15

UART tranzakció: Az átvitel aszinkron: a két oldal órájának pontosan együtt kell járnia. A szinkronizálás miatt start és stop bit kerül a keretbe, ez plusz 25% overhead az átvitelben és csak 300K-ig működik gazdaságosan. Az átvitel full-duplex: mindkét irányban egyszerre történhet. - Mind a két oldalon UART chip - Mind a két oldalon TX és RX buffer (állítható) - 1 byte adása és vétele hardware funkció (de lehet szoftveresen is ) 16

UART tranzakció programkódban: Arduino: Serial objektum Serial.begin(38400); Serial.write(data); If (Serial.available()) data = Serial.read(); 17

A szenzorok múltja pörgettyűs giroszkóp 18

Szenzorok ma: MEMS Micro Electro Mechanic System A fizikai érzékelők (sokszor mozgó elemekkel) a félvezető lapon vannak megvalósítva olyan építőelemekből és technológiával, mint a félvezető rétegek és kapcsolatok. 19

Gyorsulásmérő szenzor felépítése (valójában erőt mérünk) 20

Giroszkóp felépítése: Centrifugális erőt mérünk lineáris erőmérő egy tárcsára szerelve. Párban vannak telepítve, hogy a lineáris gyorsulást ne mérjék bele a tengely két oldalán elhelyezkedők jeleit kivonják egymásból. 21

Magnetométer működési elve Lorencz-erő: a mágneses térre merőleges folyó áram vezetőjére a síkra merőleges erő hat, aminek mértéke arányos a mágneses térrel. 22

Az orientáció problémája: össze-vissza áll a kezünkben a műszer Abszolút koordináta rendszer: - a gravitációs vektorra merőleges sík a vízszintes síkja - ebben van egy kitüntetett irány, a mágneses északi irány A gravitációs vektor irányát gyorsulásmérővel (axelerometer) tudjuk meghatározni. A mágneses északi irányt magnetométerrel tudjuk meghatározni. Aztán minden erőmérő szenzor adatából ki kell vonni a gravitáció hatását és be kell forgatni az abszolút koordinátarendszerünkbe. 23

Orientáció: Euler szögekkel szokták megadni: A rotáció nem kommutatív művelet: az egy lépésben történő, erőforrástakarékos transzformációhoz quaternio-kat (4 dimenziós komplex vektorokat) használunk. Ahol a hardware ezt meg tudja csinálni: MPU Motion Processor Unit IMU Inertial Measurement Unit 24

Végül a hálószobatitkok (milyen szenzorokat használok): Mérendő fizikai mennyiség: IC neve/száma: Csatlakozás: -------------------------- -------------- ------------ Hőmérséklet LM75A I2C (8 cím!) Hőmérséklet, páratartalom HDC1000 I2C (4 cím!) Légnyomás BMP180 I2C Légnyomás, pára, hőmérséklet BME280 I2C DC áramerősség INA219 I2C Orientáció (9 DOF) BNO055 I2C Mágneses tér (iránytű) LSM303DLHC I2C Gyorsulás ADXL345 I2C Gyorsulás LIS3DSH I2C Megvilágítás MLX75305 analóg Veszélyes gáz MQ135 analóg Gyors AD konverzió MCP320x SPI 25

Köszönöm a figyelmet! hg@elte.hu 26