4. Optický senzor polohy, měření proudu fotodiody Úkoly měření 1. Měření výstupního signálu fotoelektrických senzorů Změřte relativní závislost výstupního signálu optoelektronických snímačů na intenzitě ozáření. Předpokládejte lineární závislost svítivosti LED (použité pro osvětlení snímačů) na jejím budicím proudu. Vyneste do grafu proud fotodiody BPW34 (Vishay) nakrátko a proud fototranzistoru PT204-6C (Everlight) v závislosti budicím proudu LED alespoň pro 6 hodnot proudu. 2. Dynamické vlastnosti snímače s fototranzistorem Určete odezvu fototranzistoru PT204-6C na optický impuls. Odhadněte maximální frekvenci proměnného optického signálu, který by bylo možno sledovat fototranzistorem. Zdroj záření buďte impulsy o délce 0,5 ms a frekvenci 300 Hz z impulsního generátoru G5-6. Budicí signál LED i výstupní signál fototranzistoru pozorujte pomocí číslicového osciloskopu. Zaznamenejte odezvu. Jaká je doba náběžných a spádových hran? 3. Reflexní snímač s difuzním odrazem Ověřte vlastnosti jednoduchého snímače s difuzním odrazem tvořeného červenou diodou LED a fototranzistorem PT204-6C při snímání objektu odrazné plochy ve formě bílého papíru o rozměru 100 x 80 mm. V čem spočívá problém funkce takového jednoduchého snímače, jak se projevuje působení okolního světla? Demonstrute změnu signálu na výstupu fototranzistoru při rozsvícené LED a při zhasnuté LED. Zjistěte závislost velikosti užitečného signálu na vzdálenosti odrazné plochy pro 5, 10, 15 a 20 cm. Užitečný signál je dán rozdílem napětí na svorce U T při vstupu MOD nezapojeném (LED svítí) a vstupu MOD připojeném na (LED nesvítí). Určete, do jaké vzdálenosti je ještě rozdíl znatelný. 4. Potlačení působení rušivého světla modulací Pro vyloučení působení okolního rušivého světla na funkci reflexního snímače s difuzním odrazem využijte impuslní modulaci užitečného záření LED. Pro buzení vysílače využijte impulsní generátor a signál o frekvenci přibližně 300 Hz. Na číslicovém osciloskopu pozorujte výstupní signál přijímače v době vysílaní impulsu a v době mimo tuto dobu. Mezi vstup osciloskopu a výstup přijímače zařaďte hornopropustný filtr, který propustí pouze signál odpovídající vysílaným optickým impulsům, ale potlačí stejnosměrnou složku i složku nízkofrekvenčního rušení způsobenou proměnným světlem zářivek. Pozorujte impulsy na výstupu tohoto filtru v závislosti na změně vzdálenosti odrazné plochy od snímače. 5. Sestavení jednoduchého senzoru optické závory na kontaktním poli (nepovinné) Navrhněte uspořádání jednoduchého clonicího senzoru optické závory s využitím červené LED a fototranzistoru Everlight PT204-6C. LED a fototranzistor bodou umístěny v jedné v ose tak, ze světlo z LED bude dopadat čelo fototranzistoru. Sledovaný objekt bude přerušovat chod světlených paprsků mezi LED a fototranzistorem. (Proto se podobné snímače v malém provedení také označují jako Photointerrupter.) Tento senzor realizujte na nepájivém kontaktním poli. Proud LED volte max. 20 ma. Napětí na LED v předním směru předpokládejte +2 V. (Pro napájení ze zdroje +5 V je vhodné použít předřadný odpor v sérii s LED např. o hodnotě 330 Ohmů až 10 kohmů.) Str. 1/8
Výstupní signál senzoru indikujte pomocí voltmetru, případně osciloskopu. Demonstrujte funkčnost senzoru podle reakce na přiblížení objektu do aktivní oblasti senzoru. S využitím osciloskopu demonstrujte funkci snímače při určení počtu prstů prošlých aktivní oblastí a při určení doby kyvu kyvadla procházejícího snímačem. 6. Demonstrace funkce optického reflexního snímače LEGO Ověřte činnost optického snímače LEGO světelný senzor ve funkci senzoru přiblížení. Vyzkoušejte použití NXT světelného senzoru pro detekci přiblížení překážky ve formě bílého papíru o rozměru 100 x 80 mm, zhodnoťte vliv intenzity okolního osvětlení v jednotlivých režimech činnosti senzoru na spolehlivost detekce překážky. Spuštění programu: připojte NXT kostku k napájecímu zdroji (12VDC), zapněte oranžovým tlačítkem, opakovaným stiskem oranžového tlačítka spusťte program SME. Funkce senzoru: 1. Měří okolní osvětlení (LED vypnutá) 2. Měří okolní osvětlení + reflexi od LED diody (LED zapnutá) 3. Střídají se režimy LED zapnuta-vypnuta, na displeji jsou zobrazeny tři údaje: OFF (měří osvětlení), ON (osvětlení + reflexe), DIFF (rozdíl) Mezi jednotlivými funkcemi se přepíná dotykovým snímačem připojeným na senzorový port 2 (vpravo od NXT kostky). Str. 2/8
Poznámky a vysvětlení k úloze Ad 1) Měření výstupního signálu fotoelektrických senzorů. V přípravku jsou použity dvě sériově zapojené LED, které osvětlují fotodiodu FD BPW34 a fototranzistor FT typu PT204-6C. Celkové zjednodušené schéma zapojení přípravku je na obr. 1. Pro napájení se využije zdroj symetrického napájecího napětí +12 V a -12 V, např. BK126 (případně i +15 V a -15 V např. zdroj BK125). BK126 0 V 0 () 100 k U K + ma In i regul. zdroj + Gnd A 820 FD U F voltmetr Hi Com 1234 K FT U T Obr. 1 Uspořádání přípravku pro měření fotodiody a fototranzistoru Fotodioda FD je vyvedena na svorku označenou U F. Měří v zapojení nakrátko (propojí se svorky U F a In i ), kde se využívá převodník proud/napětí s operačním zesilovačem OP482. Fototranzistor je v zapojení podobném emitorovému sledovači, proto se méně uplatňuje parazitní kapacita přechodu kolektor báze a dosahuje se lepších dynamických vlastností. Emitorový odpor R E = 10 kohmů zde slouží pro převod proudu fototranzistoru na napětí U T. Pro nastavení proudu se používá regulovatelný laboratorní zdroj napětí E3640A. Po zapnutí napájení na jeho výstupu není napětí, to se objeví až po aktivaci výstupu tlačítkem ON. Nastavení velikosti napětí se děje pomocí rotačního ovladače, kterým se zvyšuje či snižuje číslicově nastavená velikost napětí. Nastavují se jednotky voltů, případně po změně řádu provedené tlačítky s vodorovnými šipkami desetiny, setiny a tisíciny voltu. Maximální proud LED, který se měří pomocí miliampérmetru, nemá překročit 15 až 20 ma. Pro měření ale postačuje proud i jen do 1 až 5 ma. Pro výpočet proudu lze uvažovat úbytek napětí na jedné LED v předním směru v hodnotě 2 V, tedy celkově 4 V. Napětí na svorkách U K a U T se měří číslicovým voltmetrem. Ad 2) Měření dynamických vlastností fotottranzistoru. Pro buzení LED využijte impulsní generátor. Svorka (zem) generátoru bude připojena na katody LED (svorka K), výstup označený jako A generátoru G5-6 A (out) bude připojen přes vnitřní rezistor na anodu Str. 3/8
LED. Generátor má mít na výstupu impulsní napětí s úrovněmi 0 pro nízkou úroveň (v přípravku jsou LED opatřeny antiparalelně zapojenou ochrannou diodou) a 4 až 6 V pro vysokou úroveň. Při napětí nižším než přibližně 4 V diodou LED neprotéká proud. Pro nastavení potřebných úrovní impulsního signálu použijte osciloskop. Výstupní signál na svorce U T pozorujte pomocí osciloskopu. BK126 0 V 0 () 100 k U K In i A 820 oscil. impuls gen. Out Gnd FD U F CH1 CH2 K FT U T Obr. 2. Zapojení pro měření dynamických vlastností fototranzistoru Ad 3) Reflexní snímač s difuzním odrazem. Demonstrační reflexní snímač s difuzním odrazem obsahuje LED a fotoranzistor s emitorovým odporem 10 kohmů. Přípravek má modulační vstup MOD, napájecí vstup +12 V a zemní vstup -. Díky vestavěnému stabilizátoru LM7805 je přípravek možno napájet napětím v rozmezí od +8 V do +15 V bez změny funkce. BK126 7805 + Ucc = +5 V 1n5 330k U F 0 V 2k7 240 voltmetr Hi Lo 1234 U T MOD 27 k Obr. 3 Uspořádání pro statické měření s reflexním snímačem Zkratováním modulačního vstupu MOD na zhasne LED. Tak je možno rozlišit výstupní signál fototranzistoru vyvolaný okolním osvětlením a signál způsobený odraženým Str. 4/8
světlem LED. Voltmetrem se měří napětí na svorce U T. Střídavým připojením (a odpojením) vstupu MOD pomocí vodiče na se zhasíná a rozsvěcuje LED. LED FT Obr. 4 Umístění odrazné plochy vzhledem k reflexnímu snímači Bílá odrazná plocha ve formě papírové krabičky se umístí do zvolené vzdálenosti kolmo k ose LED a FT. Ad 4) Potlačení působení rušivého světla modulací. Na vstup MOD se připojí modulační signál z výstupu A impulsního generátoru s napěťovými úrovněmi impulsu nízká úroveň 0 V a vysoká úroveň +3 až +5V. Délka impulsu je 0,5 ms, perioda impulsů 3 ms. Tentýž signál se přivede též na vstup kanálu 2 osciloskopu. Podle tohoto vstupu se osciloskop synchronizuje (volba trig. CH2). Na vstup kanálu 1 se nejdříve přivede signál ze svorky U T (bez filtrace), následně se využije signál ze svorky U F, kde je zařazena horní propust odstraňující stejnosměrnou složku (vyvolanou denním světlem) a případně nízkofrekvenční složku 100 Hz (vyvolanou rozsvíceným zářivkovým osvětlením). BK126 7805 + Ucc = +5 V 1n5 330k U F oscil. 0 V 2k7 240 CH1 CH2 impuls gen. Out Gnd MOD 27 k U T Obr. 5 Uspořádání pro dynamické měření s reflexním snímačem Ad 5). Sestavení jednoduchého optického senzoru polohy optické závory. +5 V LED1 FT výst. 2k7 LED2 Obr. 6. Uspořádání minimalizovaného senzoru - optické závory. Na nepájivém kontaktním poli lze sestavit minimalizovaný optický senzor - optickou závoru, která detekuje přítomnost objektu v prostoru mezi vysílací LED1 a fototranzistorem FT. Při přítomnosti objektu zhasne indikační LED2. Na ni je možno připojit vstup osciloskopu a pozorovat časový průběh signálu při průchodu clonícího objektu. Fototranzistor PT204 je Str. 5/8
v čirém pouzdře (podobném pouzdru LED) o průměru 3 mm. Vysílací LED1 je v čirém pouzdře o průměru 5 mm. Indikační dioda LED2 je v pouzdře z červeného difuzního materiálu o průměru 5 mm. Katody LED jsou označeny ploškou na boku pouzdra. Podobně je označen kolektor fototranzistoru. Ad 6) Senzor LEGO a) Na displeji se zobrazuje přímo hodnota (0-1023) z 10-ti bitového AD převodníku procesoru ATMEGA48, přičemž elektrickým zapojením senzoru je dáno, že nižší výstupní hodnota znamená vyšší osvětlení senzoru (fototranzistoru). b) Za účelem zvýšení stability údaje na displeji se naměřené hodnoty průměrují (256x ve statickém režimu, 8x při blikání). Potlačí se tak vliv zářivkového osvětlení (intenzita osvětlení modulována frekvencí 100Hz) i elektrický šum (spínaný zdroj, vliv procesoru...). Konkrétní implementace je patrná z přiloženého zdrojového kódu. Obr. 6 Schéma optického senzoru LEGO MINDSTORMS NXT Str. 6/8
Výpis programu řidicí jednotky LEGO pro spolupráci s optickým senzorem, autor. Ing. V. Petrucha, 2011. // Senzory a mereni - light sensor demo // unsigned char state = 0; unsigned char ready_count = 0; bool ready_flag = false; bool blink_flag = false; long avg; long avg_0; long avg_1; int i; string msg; #define TOUCH_WAIT 40 task main(){ ClearScreen(); TextOut(0, LCD_LINE1, "SENZORY A MERENI"); TextOut(0, LCD_LINE3, "LED OFF"); TextOut(0, LCD_LINE5, "out:"); SetSensorLight(IN_1,false); SetSensorTouch(IN_2); while(1){ //init if(sensor_2 && ready_flag){ state++; if(state > 2){state = 0;}; ready_flag = 0; ready_count = 0; switch(state){ case 0: blink_flag = false; ClearScreen(); Wait(10); TextOut(0, LCD_LINE1, "SENZORY A MERENI"); TextOut(0, LCD_LINE3, "LED OFF"); TextOut(0, LCD_LINE5, "out:"); SetSensorLight(IN_1,false); break; case 1: blink_flag = false; ClearScreen(); Wait(10); TextOut(0, LCD_LINE1, "SENZORY A MERENI"); TextOut(0, LCD_LINE3, "LED ON"); TextOut(0, LCD_LINE5, "out:"); SetSensorLight(IN_1,true); break; case 2: ClearScreen(); Wait(10); TextOut(0, LCD_LINE1, "SENZORY A MERENI"); Str. 7/8
TextOut(0, LCD_LINE3, "LED BLINKING"); TextOut(0, LCD_LINE5, "out OFF:"); TextOut(0, LCD_LINE6, "out ON:"); TextOut(0, LCD_LINE7, "out DIFF:"); blink_flag = true; break; } }//if(sensor_2 && ready_flag){ ready_count++; if (ready_count > TOUCH_WAIT){ ready_flag = true; ready_count = 0; }; //(ready_count > TOUCH_WAIT) if (blink_flag){ avg_0=0; avg_1=1; for(i=0;i<8;i++){ //filtering ready_count +=3; SetSensorLight(IN_1,true); Wait(4); avg_1 += SensorRaw(S1); Wait(1); SetSensorLight(IN_1,false); Wait(4); avg_0 += SensorRaw(S1); Wait(1); }//for(i=0;i<8;i++) avg_0 /=8; avg_1 /=8; sprintf(msg, "%+04d", (avg_0)); TextOut(60, LCD_LINE5, msg); //LED OFF sprintf(msg, "%+04d", (avg_1)); TextOut(60, LCD_LINE6, msg); //LED ON sprintf(msg, "%+04d", (avg_0 - avg_1)); TextOut(60, LCD_LINE7, msg); //DIFFERENCE }else{ //!(blink_flag) avg=0; for(i=0;i<256;i++){ //filtering avg += SensorRaw(S1); }//for(i=0;i<256;i++) avg /=256; sprintf(msg, "%+04d", (avg)); TextOut(30, LCD_LINE5, msg); }; //(blink_flag) }//while(1) }//main() Str. 8/8