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



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

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

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

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

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

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

MSP430 programozás Energia környezetben

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

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

Bevezetés az elektronikába

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.

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

Bevezetés az elektronikába

Léptetőmotorok. Előnyök: Hátrányok:

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

Gyakorló feladatok - 2.

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: Léptetőmotorok vezérlése

UH-zongora - zenélés mikrokontrollerrel

DIGITAL LUX

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

A Hobbielektronika csoport. bemutatója

3. Hőmérők elkészítése

Felhasználói kézikönyv

MÉRŐÉRZÉKELŐK FIZIKÁJA. Hang, fény jellemzők mérése. Dr. Seres István

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

Hobbi Elektronika. Bevezetés az elektronikába: Scmitt-trigger kapcsolások

Radiometria, fotometria, színmérés. Az anyagokat Prof. Schanda János jegyzeteiből összeállította: Várady Géza

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!

Digitális multiméter AX-572. Használati utasítás

Felhasználói kézikönyv

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

Hobbi Elektronika. Bevezetés az elektronikába: A tranzisztor, mint kapcsoló

Felhasználói kézikönyv

Készítette: Ruzsinszki Gábor webmaster442

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

Bevezetés az elektronikába

VC 5070 analóg multiméter. Rendeltetésszerű használat. Kezelési utasítás. Biztonsági tudnivalók. Kezelő elemek

feszültségét U T =26mV tal megnöveljük. Az eddigi 100uA es kollektor áram új értéke: A: 101uA B:272uA C: 27uA D:126uA

ϕ, [lm] lumen A fényforrás minden irányban sugárzott teljesítménynének összesége

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

Használati útmutató az MT-1210 digitális műszerhez

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

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

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

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

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

Bevezetés az elektronikába

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

A G3ZA és az általános teljesítményszabályozók összehasonlítása. Jellemző Általános teljesítményszabályozók G3ZA Csatlakozók. Programozható szabályozó

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

LCD kijelzők működése és típusai

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

MELLÉKLETEK. ELEKTRONIKAI ALAPISMERETEK ÉRETTSÉGI VIZSGA ÍRÁSBELI TÉTEL Középszint

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

Hobbi Elektronika. Bevezetés az elektronikába: Boole algebra, logikai kifejezések

Világítástechnikai alapfogalmak

Egyszabadságfokú mechanikai rendszer irányítása nyílt hurkú vezérlés

ACS 100 Felhasználói Kézikönyv

Rend.sz Többcélú mini mérõmûszer automatikus méréshatár váltással, MN16 modell

Vegyes témakörök. 1. Soros vezérlésű LCD számkijelző. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Alapfogalmak II BME -VIK

Információs Technológia

ELEKTRONIKAI ALAPISMERETEK

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

Conrad Szaküzlet 1067 Budapest, Teréz krt. 23. Tel: (061) Conrad Vevőszolgálat 1124 Budapest, Jagelló út 30. Tel: (061)

DJ KEVERŐPULT DJM-400

Felhasználói kézikönyv

Feszültségszabályozók

Hobbi Elektronika. Bevezetés az elektronikába: FET tranzisztoros kapcsolások

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

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

HASZNÁLATI UTASÍTÁS. Professzionális Analóg Multiméter / MODEL: HD-390A. 1. LEÍRÁS A műszert professzionális és hobby felhasználásra tervezték.

it-mxh21 16 CSATORNÁS ASZTALI DIGITÁLIS KÉPRÖGZÍTİ Egyszerő kezelési útmutató


A típusszámok felépítése

43. ORSZÁGOS TIT KALMÁR LÁSZLÓ MATEMATIKAVERSENY MEGYEI FORDULÓ HETEDIK OSZTÁLY JAVÍTÁSI ÚTMUTATÓ

loop() Referencia:

Az általam használt (normál 5mm-es DIP) LED maximális teljesítménye 50mW körül van. Így a maximálisan alkalmazható üzemi árama:

AVR-Duino Eth Shield / AVR-Duino EthMAX Shield

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

- elektromos szempontból az anyagokat három csoportra oszthatjuk: vezetık félvezetık szigetelı anyagok

A fényerősség egységének nemzeti etalonja

Csak felvételi vizsga: csak záróvizsga: közös vizsga: Villamosmérnöki szak BME Villamosmérnöki és Informatikai Kar január 5.

Felhasználói kézikönyv. Zárt hurkú, léptetőmotoros rendszer, HSS86 típusú meghajtó és 86HSE8N-BC38 motorral.

i TE a bemenetére kapcsolt jelforrást és egyéb fogyasztókat (F) táplál. Az egyes eszközök

Integrált áramkörök termikus szimulációja

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

boolean motoros_szelep_vegallas_el = true; boolean serial_adatok_kikuldese = true; // ************ Hőmérséklet érzékelők Dallasos!!!!

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

A TANTÁRGY ADATLAPJA

8.B 8.B. 8.B Félvezetı áramköri elemek Unipoláris tranzisztorok

Objektumorientált programozás C# nyelven

A nikkel akkumulátorok időszakos, vagy rendszeres kisütése a gyártók szerint is ajánlott. Ennek megoldásában próbál segíteni az általam készített

Conrad mérés és vizsgálat alapvető tanulócsomag

Színinger egyeztetés elsődleges és másodlagos fényforrásokkal

DIGITÁLIS MULTIMÉTER AX-101B HASZNÁLATI ÚTMUTATÓ

Objektumorientált programozás C# nyelven

MS-NMK nagyszámkijelző ismertető

Átírás:

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

Lab 19 projektek LDR_test.ino tesztprogram a fényérzékeny ellenálláshoz (LDR) TLS2561_and_LDR.ino LDR kalibrálása TLS2561 fénymérővel LED_test.ino tesztprogram: LED, mint fényérzékelő TCRT5000_test.ino Reflektív oprikai szenzor kipróbálása Megjegyzés: A letölthető Lab19.zip állományt az alábbi mappába bontsuk ki: c:\fehasználók\<usernév> \Dokumentumok\Arduino Fontos, hogy a libraries almappa tartalma az alábbi mappába kerüljön: c:\fehasználók\<usernév> \Dokumentumok\Arduino\libraries 2

CdS fényérzékeny ellenállás A GL55 típusú kadmiumszulfid (CdS) anyagú ellenállások vezetőképessége a fény hatására növekszik. A spektrális érzékenység maximuma 540 nm (sárgászöld). Típus Sötétellenállás Ellenállás @ 10 lx γ Válaszidő GL5528 1 MΩ 10 20 kω 0.6 20 30 ms γ = lg( R10 R100 ) R10 és R100 a 10 és 100 luxnál mért ellenállás értékek. 3

Fotometriai alapfogalmak Fényforrás fényerőssége: az egységnyi térszögbe kisugárzott fényteljesítmény (ref 555 nm). Mértékegysége: 1 cd (= 1W/683 sr), kb. 1 gyertya fényerőssége. Egy 100 W izzó fényerőssége kb. 120 cd. Fényáram: a fényerősség és a kisugárzási térszög szorzata. Mértékegysége: 1 lm ( = 1 cd 1 sr) Egy 100 W izzólámpa fényárama kb. 1380 lumen. Megvilágítás erőssége: az adott felületre eső fényáram és a felület nagyságának hánydosa. Mértékegysége: 1 lx (1 lux a megvilágítása annak a felületnek, amelynek 1 négyzetméterére merőlegesen és egyenletesen 1 lumen fényáram esik). Egy 100 W izzó 1,5 m távolságból kb. 100 lx megvilágítást eredményez. Környezet Iroda 500 Folyosó 50 Napfény nyáron 100 000 Napfény télen 10 000 Telihold 0,2 Színérzékelés határa 3 Megvilágítás (lux) 4

void setup() { Serial.begin(9600); analogreference(default); LDR_test.ino void loop() { int sensorvalue = analogread(a0); Serial.print("A0 = "); Serial.print(sensorValue); Serial.print(" V0: "); float voltage = sensorvalue*4.66/1023; Serial.print(voltage,3); float Rx = 10000.0; if(sensorvalue>0) { Rx = 46.6/voltage-10; Serial.print(" V Resistance = "); Serial.print(Rx,1); Serial.println(" kohm"); delay(2000); Megjegyzés: Vref értéke itt kiesik, de a későbbi kísérleteinknél Vref és az osztót tápláló feszültség értéke különböző lesz! 5 10k Itt 4,66 V a mért tényleges referencia feszültség (5 V helyett). Rx kiszámítása: voltage = 4,66 V * 10k /(Rx + 10k) Ha Rx-et kifejezzük, akkor: Rx = 4,66 V * 10k / voltage 10k

TLS2561 fénymérő A TLS2561 I2C fénymérő a megvilágítás erősségét méri a 0.4 40 000 lx tartományban. A szenzor egy 16 bites Digitális-Analóg átalakítót és két mérőcsatornát tartalmaz. A Si érzékelők az IR fényre is érzékenyek, ezért a második csatorna korrekcióra szolgál (az IR tartományt méri). Az adatlap formulái alapján kalibrált megvilágítási értéket kaphatunk. Felhasználás: pl. képernyő háttérvilágítás szabályozásához VCC GND SCL SDA INT 6

TLS2561 regiszterek Legfontosabb beállítások: Bekapcsolás, adatgyűjtési idő és az erősítés megadása. Kiolvasás: 0. és 1. csatorna 16 bitesen. (be/kikapcsolás) Időzítés és erősítés) 0. csat alacsony h.é. bájt) 0. csat: magas h.é. bájt 1. csat alacsony h.é. bájt) 1. csat: magas h.é. bájt 7

TLS2561_and_LDR.ino Kalibráljuk a fényérzékeny ellenállásunkat a TLS2561 szenzor segítségével! 8

TLS2561_and_LDR.ino Kiindulási alap: Adafruit egyesített szenzor programkönyvtár és TLS2561 mintapélda Link: github.com/adafruit/adafruit_tsl2561 és github.com/adafruit/adafruit_sensor A TLS2561 mintaprogramot kibővítjük az LDR értékét meghatározó korábbi programmal. #include <Wire.h> #include <Adafruit_Sensor.h> #include <Adafruit_TSL2561_U.h> //I2C programkönyvtár //Adafruit általános Sensor programkönyvtár //Adafruit TSL2561 szenzor programkönyvtár I2C cím Adafruit_TSL2561_Unified tsl = Adafruit_TSL2561_Unified(TSL2561_ADDR_LOW, 12345); ID int sensorvalue = 0; //Változó az ADC kiolvasásához void setup(void) { Serial.begin(9600); Serial.println("Light Sensor Test"); Serial.println(""); if(!tsl.begin()) { //Szenzor inicializálás vizsgálata Serial.print("Ooops, no TSL2561 detected... Check your wiring or I2C ADDR!"); while(1); displaysensordetails(); //Szenzor információk kiíratása configuresensor(); //Érzékenység beállítása Serial.println(""); Folyatatás a következő oldalon 9

TLS2561_and_LDR.ino void displaysensordetails(void) { sensor_t sensor; tsl.getsensor(&sensor); Serial.println("------------------------------------"); Serial.print ("Sensor: "); Serial.println(sensor.name); Serial.print ("Driver Ver: "); Serial.println(sensor.version); Serial.print ("Unique ID: "); Serial.println(sensor.sensor_id); Serial.print ("Max Value: "); Serial.print(sensor.max_value); Serial.println(" lux"); Serial.print ("Min Value: "); Serial.print(sensor.min_value); Serial.println(" lux"); Serial.print ("Resolution: Serial.println(" lux"); Serial.println("------------------------------------"); Serial.println(""); delay(500); void configuresensor (void) { tsl.enableautorange(true); "); Serial.print(sensor.resolution); // switches automatically between 1x and 16x tsl.setintegrationtime(tsl2561_integrationtime_13ms); // low resolution Serial.println("------------------------------------"); Serial.print ("Gain: "); Serial.println("Auto"); Serial.print ("Timing: "); Serial.println("13 ms"); Serial.println("------------------------------------"); Folyatatás a következő oldalon 10

TLS2561_and_LDR.ino void loop (void) { sensors_event_t event; //Get a new sensor event tsl.getevent(&event); //Kiírás, ha 0-tól különböző if (event.light) { Serial.print(event.light); Serial.println(" lux"); else { Serial.println("Sensor overload");... LDR ellenállásának meghatározása, úgy, mint az LDR_test.ino programban... 11

A fotoellenállás kalibrálása Feladat: változtassuk a megvilágítást, és mérjük meg az LDR ellenállását a megvilágítás függvényében! 12

A LED mint fényérzékelő LED normál módban: a nyitóirányú áram hatására fényt bocsájt ki. LED fordított módban: a fény hatására áramot termel. Nem használható minden LED egyforma sikeresen, általában a vörös LED-ek alkalmasabbak. 1. kísérlet: mezei 3 mm-es vörös LED 2. kísérlet: 10 mm-es RGB LED vörös LED-je A LED katódját földre, az anódját pedig az Arduino A0 analóg bemenetére kötjük. 13

LED_test.ino A zajok kiátlagolására sok (4400 db) mérést végzünk. U [mv] = ADC * 1100 mv/1024 (precízebben /1023 lenne ) Ha 1100 db. mérést végeznénk, akkor sum értéke éppen ADCatlag * 1100 lenne. Mivel 4-szer több mérést végzünk, ezért 1024 helyett 4096-tal kell osztani, ami 12 bináris helyiértékű aritmetikai jobbraléptetésnek (C nyelven: sum>>12) felel meg. void setup() { Serial.begin(9600); analogreference(internal); //1.1 V reference void loop() { uint32_t sum = 0; for(int i=0; i<4400; i++) { sum += analogread(a0); sum = sum >> 12; Serial.println(sum); delay(2000); //divide by 4x1024 //voltage in mv units 14

LED_test.ino eredmények 1. kísérlet: mezei LED 2. kísérlet: RGB LED vörös LED-je 15

További lehetőségek A megvilágított LED-ből kivehető áram felerősítése műveleti erősítővel (áram- feszültség konverter). Az alábbi kapcsolás érzékenysége = 1 V/µA 16

TCRT5000 reflektív optikai érzékelő Egy IR LED-et és egy fototranzisztort tartalmaz. Működési elv: ha nincs akadály, a fény nem verődik vissza, a tranzisztor nem érzékel fényt. Visszaverődés esetén a távolságtól és a reflexiós tényezőtől függ a visszaverődési arány. 17

Bekötési vázlat Fototranzisztornál mindegy, hogy kollektor- vagy emitter oldalra kerül a munkaellenállás. Mi most emitter oldalra tettük, így a nagyobb feszültség nagyobb megvilágítottságot jelent. 47 kω 100 Ω 18

TCRT5000_test.ino A kipróbáláshoz az Arduino MiniPirate program is megfelel (a p parancs kiírja az analóg bemenetek állapotát is), de minimális módosítással használhatjuk a LED_test.ino programot is. Javasolt beállítások: DEFAULT referencia (VCC, azaz +5V névl. Az ADC referenciája), 4660 db. mérés (nálam 4660 mv a tényleges VCC feszültség) void setup() { Serial.begin(9600); analogreference(default); void loop() { uint32_t sum = 0; for(int i=0; i<4660; i++) { sum += analogread(a0); sum = sum >> 10; Serial.println(sum); delay(2000); //5 V referencia //4,66 V a valódi referencia //osztás 1024-gyel //kiíratás mv-okban 19

20

Emlékeztető: Arduino nano v3.0 21