Připojení světelného senzoru Arduino. Jak používat fotorezistory, fotodiody a fototranzistory

Pokračujeme v sérii lekcí „“. Dnes připojíme fotorezistor (fotobuňku) k desce Arduino. Fotorezistory se používají v robotech jako světelné senzory. Článek obsahuje video návod, výpis programu, schéma zapojení a potřebné komponenty.

Fotorezistor- rezistor, jehož odpor závisí na jasu světla dopadajícího na něj. V našem modelu se LED rozsvítí pouze v případě, že jas světla nad fotorezistorem je menší než určitá hodnota, kterou lze softwarově upravit.

Fotorezistory se používají v robotice jako světelné senzory. Fotorezistor zabudovaný v robotu umožňuje určit stupeň osvětlení, určit bílé nebo černé plochy na povrchu a v souladu s tím se pohybovat po linii nebo provádět jiné akce.

Video návod na sestavení modelu Arduino s fotorezistorem:

K sestavení modelu se servopohonem budeme potřebovat:

  • Deska Arduino
  • 6 vodičů samec-samec
  • fotorezistor
  • Světelná dioda
  • odpor 220 ohmů
  • odpor 10 kOhm
  • Program Arduino IDE, který lze stáhnout z webu Arduino.

Schéma zapojení pro model Arduino s fotorezistorem:

Schéma zapojení fotorezistoru na Arduinu

Pro tento model je vhodný následující program (program můžete jednoduše zkopírovat do Arduino IDE):

int led = 13; //proměnná s číslem pinu LED
int ldr = 0; //a fotorezistor
void setup() // postup nastavení
{
pinMode(led, OUTPUT); //indikuje, že LED je výstup
}
void loop() //cyklus procedur
{
if (analogRead(ldr)< 800) digitalWrite(led, HIGH);
//pokud je indikátor osvětlení menší než 800, zapněte LED
else digitalWrite(led, LOW); //jinak vypněte
}

Takto vypadá sestavený model Arduina s fotorezistorem:

Připravený model pro připojení fotorezistoru na Arduinu

Pokud LED nereaguje na změny v osvětlení, zkuste změnit číslo 800 v programu, pokud je stále zapnutý, snižte jej, pokud není zapnutý, zvyšte jej.

Příspěvky z lekce:

  1. První hodina:
  2. Druhá lekce:
  3. Třetí lekce:
  4. Čtvrtá lekce:
  5. Pátá lekce:
  6. Lekce šest:
  7. Sedmá lekce:
  8. Osmá lekce:
  9. Devátá lekce:

Všechny příspěvky na webu „Zábavná robotika“ podle tagu.

Náš kanál YouTube, kde jsou zveřejněny videolekce.

Vestavěný ADC mikrokontroléru, o kterém jsme hovořili v předchozí části recenze, umožňuje snadno připojit k desce Arduino různé analogové senzory, které převádějí naměřené fyzikální parametry na elektrické napětí.

Příkladem jednoduchého analogového snímače je proměnný odpor připojený k desce, jak je znázorněno na obr. 1. Může být libovolného typu, například SP3-33-32 (obr. 2). Hodnota odporu v diagramu je uvedena přibližně a může být menší nebo větší. Je však třeba pamatovat na to, že čím nižší je odpor proměnného rezistoru, tím více proudu odebírá z napájení mikrokontroléru. A když je odpor zdroje signálu (v tomto případě proměnný odpor) větší než 10 kOhm, ADC mikrokontroléru pracuje s velkými chybami. Vezměte prosím na vědomí, že odpor proměnného rezistoru jako zdroje signálu závisí na poloze jeho jezdce. Ve svých krajních polohách je nulový a ve střední poloze maximální (rovná se čtvrtině jmenovitého odporu).

Rýže. 1. Schéma zapojení proměnného rezistoru k desce

Rýže. 2. SP3-33-32

Je vhodné použít proměnný odpor, když chcete změnit parametr plynule, spíše než po krocích (diskrétně). Jako příklad zvažte práci uvedenou v tabulce. 1 program, který mění jas LED v závislosti na poloze jezdce proměnného odporu. Řádek U = U/4 je v programu potřebný k převodu desetibitového binárního čísla vráceného ADC na osmibitové číslo akceptované jako druhý operand funkcí analogWrite(). V tomto případě se to provede vydělením původního čísla čtyřmi, což je ekvivalentní vyřazení dvou nejméně významných binárních číslic.

Stůl 1.

Variabilní rezistor vhodné konstrukce může sloužit jako snímač úhlu natočení nebo lineárního posuvu. Podobně můžete připojit mnoho radioelementů: fotorezistory, termistory, fotodiody, fototranzistory. Stručně řečeno, zařízení, jejichž elektrický odpor závisí na určitých faktorech prostředí.

Na Obr. Obrázek 3 ukazuje schéma připojení fotorezistoru k Arduinu. Když se změní osvětlení, změní se jeho elektrický odpor a podle toho se změní napětí na analogovém vstupu desky Arduino. Fotorezistor FSK-1 uvedený ve schématu může být nahrazen jakýmkoli jiným, například SF2-1.

Rýže. 3. Schéma připojení fotorezistoru k Arduinu

V tabulce Obrázek 2 ukazuje program, který přemění desku Arduino s připojeným fotorezistorem na jednoduchý expozimetr. Při práci periodicky měří úbytek napětí na rezistoru zapojeném do série s fotorezistorem a výsledek přenáší v konvenčních jednotkách přes sériový port do počítače. Budou zobrazeny na obrazovce ladicího terminálu Arduino, jak je znázorněno na Obr. 4. Jak vidíme, v určitém okamžiku měřené napětí prudce pokleslo. K tomu došlo, když byla jasně osvětlená fotodioda zakryta neprůhlednou obrazovkou.

Tabulka 2

Rýže. 4. Obrázek na obrazovce ladícího terminálu Arduino

Chcete-li získat hodnoty osvětlení v luxech (standardní jednotky SI), musíte výsledky vynásobit korekčním faktorem, ale budete jej muset vybrat experimentálně a individuálně pro každý fotorezistor. K tomu budete potřebovat standardní luxmetr.

Podobným způsobem je k Arduinu připojen fototranzistor nebo fotodioda (obr. 5). Pomocí několika světlocitlivých zařízení je možné sestrojit jednoduchý systém vidění pro robota. Na nové technické úrovni je možné realizovat mnoho klasických návrhů známých širokému okruhu radioamatérů - kybernetický model nočního motýla nebo model tanku, který se pohybuje směrem ke světlu.

Rýže. 5. Schéma připojení fotodiody k Arduinu

Podobně jako u fotorezistoru je k Arduinu připojen termistor (obr. 6), který mění svůj elektrický odpor v závislosti na teplotě. Namísto termistoru MMT-4 uvedeného na obrázku, jehož hlavní výhodou je jeho utěsněné pouzdro, můžete použít téměř jakýkoli jiný, například MMT-1 nebo importovaný.

Rýže. 6. Schéma zapojení termistoru k Arduinu

Po příslušné kalibraci lze takové zařízení použít k měření teploty ve všech druzích domácích meteostanic, termostatů a podobných konstrukcí.

Je známo, že téměř všechny LED mohou sloužit nejen jako světelné zdroje, ale také jako světelné přijímače - fotodiody. Faktem je, že LED krystal je v průhledném pouzdře a proto je jeho p-n přechod přístupný světlu z vnějších zdrojů. Kromě toho je pouzdro LED obvykle tvarováno jako čočka, která soustřeďuje vnější záření na tento spoj. Jeho vlivem se například mění zpětný odpor pn přechodu.

Připojením LED k desce Arduino podle schématu na Obr. 7, můžete použít stejnou LED pro zamýšlený účel i jako fotosenzor. Program znázorňující tento režim je uveden v tabulce. 3. Jeho myšlenkou je, že nejprve se na pn přechod LED přivede zpětné napětí, čímž se nabije jeho kapacita. LED katoda je poté izolována konfigurací Arduino pinu, ke kterému je připojena, jako vstupu. Poté program změří dobu vybití kapacity p-n přechodu LED vlastním zpětným proudem na úroveň logické nuly v závislosti na vnějším osvětlení.

Rýže. 7. Schéma připojení LED k desce Arduino

Tabulka 3

Ve výše uvedeném programu je proměnná t popsána jako unsigned int - celé číslo bez znaménka. Proměnná tohoto typu, na rozdíl od běžné int, která nabývá hodnot od -32768 do +32767, nepoužívá k uložení znaménka svou nejvýznamnější binární číslici a může nabývat hodnot od 0 do 65535.

Program vypočítá dobu vybíjení ve smyčce while(digitalRead (K)!=0)t++. Tato smyčka se provádí pokaždé, když se hodnota t zvýší o jednu, dokud není splněna podmínka uzavřená v závorkách, to znamená, dokud napětí na katodě LED neklesne na nízkou logickou úroveň.

Někdy je vyžadováno, aby robot nejen přijímal informace o osvětlení povrchu, po kterém se pohybuje, ale také dokázal určit jeho barvu. Implementují barevný senzor pro podkladový povrch, který střídavě osvětlují LED diodami různých barev luminiscence a pomocí fotodiody porovnávají úrovně odražených signálů za různých světelných podmínek. Schéma zapojení prvků barevného snímače s deskou Arduino je na Obr. 8 a program, který jej obsluhuje, je v tabulce. 4.

Rýže. 8. Schéma zapojení prvků snímače barev s deskou Arduino

Tabulka 4

Postup měření signálů přijímaných fotodiodou při různém osvětlení povrchu se mnohokrát opakuje a získané výsledky se sčítají, aby se eliminovaly náhodné chyby. Program poté vybere největší z nashromážděných hodnot. To vám umožní zhruba posoudit barvu povrchu. Pro přesnější určení barvy je nutné zkomplikovat zpracování výsledků s přihlédnutím nejen k největším z nich, ale také k jejich příbuznosti s menšími. Je také nutné vzít v úvahu skutečnou svítivost LED různých barev záře a také spektrální charakteristiky použité fotodiody.

Příklad provedení barevného senzoru sestávajícího ze čtyř LED a fotodiody je na Obr. 9. Optické osy LED a fotodiody se musí sbíhat v jednom bodě studovaného povrchu a samotná zařízení jsou umístěna co nejblíže k němu, aby se minimalizoval vliv vnějšího osvětlení.

Rýže. 9. Příklad provedení barevného senzoru sestávajícího ze čtyř LED a fotodiody

Sestavený senzor vyžaduje pečlivou individuální kalibraci na površích různých barev. Jde o výběr koeficientů, kterými by měly být výsledky měření získané za různých světelných podmínek před porovnáním vynásobeny. Robota vybaveného takovým senzorem lze naučit provádět zajímavé pohybové algoritmy. Například se bude moci pohybovat po pracovním poli jedné barvy, aniž by narušil hranice „zakázaných“ zón natřených jinou barvou.

  1. Fotorezist: http://ali.ski/5GDvP7
  2. Diody a rezistory: http://fas.st/KK7DwjyF
  3. Vývojová deska: http://ali.ski/rq8wz8
  4. Arduino uno: http://ali.ski/gC_mOa

V tomto tutoriálu připojíme fotorezistor k Arduinu. který bude ovládat vestavěnou LED.

Fotorezistor: Odpor fotorezistorů se snižuje při vystavení světlu a zvyšuje se ve tmě. Fotorezistory se snadno používají, ale reagují poměrně pomalu na změny úrovně osvětlení a mají velmi nízkou účinnost. přesnost. Typicky se odpor fotorezistorů může lišit od 50 ohmů za denního světla do více než 10 megaohmů ve tmě.

Samotný fotorezistor připojíme k zemi přes odpor 10 kOhm a stejnou nohu připojíme k analogovému pinu Arduino A0, druhá noha fotorezistoru bude připojena k 5voltovému Arduinu. To vše názorně ukazuje schéma na začátku článku.

Po správném připojení fotorezistoru k Arduinu je třeba zkopírovat níže uvedený kód, vložit jej do programu Arduino ide a nahrát veškerý tento programový kód do Arduina.

Int PhotosensorPin = A0; //Uveďte pin, ke kterému je připojen fotorezistor unsigned int sensorValue = 0; //Deklaruje proměnnou pro uložení hodnot. void setup() ( pinMode(13, OUTPUT); Serial.begin(9600); ) void loop() ( sensorValue = analogRead(PhotosensorPin); // Načtení hodnot z fotorezistoru if(sensorValue<700) digitalWrite(13, HIGH); //Включаем else digitalWrite(13, LOW); // Выключаем Serial.print(sensorValue, DEC); //Вывод данных с фоторезистора (0-1024) Serial.println(""); delay(500); }

Po načtení programového kódu do Arduina musíte otevřít monitor portu.

Nyní, pokud na fotoodpor dopadá světlo a vestavěná LED nesvítí, zakryjte fotoodpor rukou a uvidíte, že se LED v určitém okamžiku rozsvítí! Můžete také vidět změny hodnoty z fotorezistoru na monitoru portu.

Ukázku, jak fotorezistor funguje, můžete vidět na videu níže.

Video:

Fotorezistor je polovodičový rádiový prvek, který mění svůj odpor v závislosti na osvětlení. Pro viditelné světlo (sluneční světlo nebo světlo z lamp) se používá sulfid kademnatý nebo selenid. Existují také fotorezistory, které detekují infračervené záření. Vyrábějí se z germania s příměsí dalších látek.Vlastnost měnit svůj odpor vlivem světla je v elektronice velmi široce využívána.

Vzhled a označení na schématu

V podstatě fotorezistory vypadají takto



Na diagramech mohou být označeny takto:

nebo tak

Jak funguje fotorezistor?

Podívejme se na jednoho ze zástupců rodiny fotorezistorů


Stejně jako všechny fotobuňky má okénko, kterým „zachytává“ světlo.



Hlavním parametrem fotorezistoru je jeho temná odolnost. Tmavý odpor fotorezistoru je jeho odpor při úplné absenci světla dopadajícího na něj. Soudě podle referenční knihy je temný odpor našeho oddělení 15x10 8 Ohm, nebo slovy - 1,5 GOhm. Dalo by se dokonce říci – úplné zhroucení. Je to tak? Podívejme se na to. K tomu používám svůj notebook a schovám tam fotorezistor:


Dokonce i v rozsahu 200 MOhm multimetr ukázal jeden. To znamená, že odpor fotorezistoru je hodně přes 200 MOhm.

Vyjmeme náš pokusný subjekt z knihy a rozsvítíme světlo v místnosti. Výsledek je hned jasný:


106,7 KOhm.

Teď rozsvítím stolní lampu. Místnost byla ještě jasnější. Podíváme se na hodnoty multimetru:


76,2 KOhm.

Přiblížím fotorezistor ke stolní lampě:


18,6 KOhm

Došli jsme k závěru: Čím více světla proudí na fotorezistor, tím nižší je jeho odpor.

Fotorezistory vám dávají schopnost vnímat intenzitu světla.

Jsou malé, levné, vyžadují málo energie, snadno se používají a prakticky nepodléhají opotřebení.

Právě kvůli tomu se často používají v hračkách, gadgetech a gadgetech. Samozřejmě, DIY projekty založené na Arduinu nemohly ignorovat tyto nádherné senzory.

Fotorezistory jsou v podstatě odpory, které mění svůj odpor (měřený v ohmech) v závislosti na tom, kolik světla dopadá na jejich snímací prvky. Jak bylo uvedeno výše, jsou velmi levné, přicházejí v různých velikostech a specifikacích, ale většina z nich není příliš přesná. Každý fotorezistor se chová mírně odlišně od druhého, i když jsou ze stejné šarže od výrobce. Rozdíly v odečtech mohou dosáhnout 50 % nebo i více! Neměli byste tedy počítat s přesností měření. Používají se hlavně k určení obecné úrovně osvětlení ve specifických, „místních“ spíše než „absolutních“ podmínkách.

Fotorezistory jsou vynikající volbou pro řešení problémů jako „je kolem tma nebo světlo“, „je něco před snímačem (co omezuje tok světla)“, „která oblast má maximální úroveň osvětlení“.


Průměrné technické vlastnosti fotorezistorů

Níže uvedené specifikace platí pro fotorezistory z obchodu Adafruit. Tyto fotorezistory mají podobné vlastnosti jako PDV-P8001. Téměř všechny fotorezistory mají různé technické vlastnosti, i když fungují velmi podobně. Pokud vám prodejce poskytne odkaz na katalogový list vašeho fotorezistoru, podívejte se na ně a ne na to, co je uvedeno níže.

  • Velikost: Kulatý, 5 mm (0,2") v průměru (ostatní fotorezistory mohou dosáhnout až 12 mm / 0,4" v průměru!).
  • Cena: Asi 1,00 $ u Adafruit.
  • Rozsah odporu: od 200 kOhm (tma) do 10 kOhm (světlo).
  • Rozsah citlivosti: Snímací prvky detekují vlnové délky v rozmezí od 400 nm (fialová) do 600 nm (oranžová).
  • Napájení: libovolné s napětím do 100 V, použijte proud v průměru cca 1 mA (v závislosti na napájecím napětí).

Problémy při použití více senzorů

Pokud se při přidávání dalších senzorů ukáže, že teplota je nekonzistentní, znamená to, že se senzory při čtení informací z různých analogových pinů navzájem překrývají. To lze opravit přidáním dvou hodnot se zpožděním a zobrazením první.

Měření úrovně osvětlení

Jak jsme již řekli, odpor fotorezistoru se mění v závislosti na úrovni osvětlení. Když je tma, odpor rezistoru se zvyšuje na 10 megaohmů. S rostoucí úrovní světla odpor klesá. Níže uvedený graf ukazuje přibližný odpor snímače za různých světelných podmínek. Nezapomeňte, že vlastnosti každého jednotlivého fotorezistoru se budou mírně lišit, tyto charakteristiky odrážejí pouze obecný trend.


Vezměte prosím na vědomí, že charakteristika není lineární, ale má logaritmický charakter.

Fotorezistory nevnímají celý rozsah světelných vln. Ve většině verzí jsou citlivé na světelné vlny v rozsahu mezi 700 nm (červená) a 500 nm (zelená).


To znamená, že indikace rozsahu vlnových délek světla, která odpovídá modré, nebude tak účinná jako indikace rozsahu zeleno/žluté!

Jaká je měrná jednotka "lux"?

Většina technických listů používá lux (lx) k označení odporu při určité úrovni světla. Ale co to je - lk? Toto není metoda, kterou používáme k popisu jasu, takže je vázána přímo na snímač. Níže je korespondenční tabulka, která byla převzata z Wikipedie.


Kontrola fotorezistoru

Nejjednodušší metodou testování fotorezistoru je připojení multimetru v režimu měření odporu ke dvěma kontaktům senzoru a sledování změny výstupního odporu, když senzor zakryjete dlaní, zhasnete světlo v místnosti atd. Protože se odpor mění ve velkém rozsahu, automatický režim funguje dobře. Pokud nemáte automatický režim nebo nefunguje správně, vyzkoušejte rozsah 1 MΩ a 1 kΩ.



Připojení fotorezistoru

Protože fotorezistory jsou v podstatě odporové, nemají žádnou polaritu. To znamená, že jejich nohy můžete spojit „jakkoli chcete“ a budou fungovat!


Fotorezistory jsou opravdu nenáročné. Můžete je připájet, nainstalovat na prkénko nebo použít svorky pro připojení. Jediné, co byste měli udělat, je příliš často ohýbat „nohy“, protože se mohou snadno zlomit.


Použití fotorezistorů

Analogová metoda čtení napětí

Nejjednodušším případem použití je připojení jedné nohy ke zdroji energie, druhé k zemi přes stahovací odpor. Poté je bod mezi pevným rezistorem a proměnným rezistorem - fotorezistor - připojen k analogovému vstupu mikrokontroléru. Obrázek níže ukazuje schéma připojení k Arduinu.


V tomto příkladu je připojen 5V zdroj, ale pamatujte, že můžete stejně snadno použít 3,3V zdroj V tomto případě budou hodnoty analogového napětí v rozsahu od 0 do 5V, tedy přibližně stejné na napájecí napětí.

Funguje následovně: s klesajícím odporem fotorezistoru klesá celkový odpor fotorezistoru a snižovacího odporu z 600 kOhm na 10 kOhm. To znamená, že proud procházející oběma rezistory se zvyšuje, což způsobí zvýšení napětí na rezistoru 10k. To je vše!


Tato tabulka poskytuje přibližné hodnoty analogového napětí založené na úrovni světla/odporu při připojení 5V zdroje a 10k ohmového stahovacího odporu.

Pokud chcete senzor použít v jasně osvětleném prostoru a použít 10k ohmový odpor, rychle se sfoukne. To znamená, že téměř okamžitě dosáhne povolené úrovně napětí 5 V a nebude schopen rozlišovat mezi intenzivnějším osvětlením. V tomto případě byste měli vyměnit 10k ohmový odpor za 1k ohmový odpor. S tímto obvodem nebude rezistor schopen detekovat úroveň tmy, ale je lepší určit odstíny vysoké úrovně osvětlení. Obecně platí, že byste si s tím měli pohrát v závislosti na vašich podmínkách!

Kromě toho budete také moci použít vzorec "Axel Benz" k základnímu měření minimální a maximální hodnoty odporu pomocí multimetru a poté zjistit hodnotu odporu pomocí: Pull Resistor = Druhá odmocnina (Rmin * Rmax), což vám dá mnohem lepší výsledek ve formě:


Výše uvedená tabulka ukazuje přibližná analogová napětí při použití 5V senzoru s 1K pull-down rezistorem.

Nezapomeňte, že naše metoda nám nedává lineární závislost napětí na osvětlení! Každý senzor má navíc jiné vlastnosti. Jak se úroveň světla zvyšuje, analogové napětí se zvyšuje a odpor klesá:

Vo = Vcc (R / (R + fotobuňka))

To znamená, že napětí je nepřímo úměrné odporu fotorezistoru, který je naopak nepřímo úměrný úrovni osvětlení.

Jednoduchý příklad použití fotorezistoru

Tato skica používá načtené analogové hodnoty k určení jasu LED. Čím je tmavší, tím jasněji bude LED svítit! Nezapomeňte, že aby tento příklad fungoval, musí být LED připojena k pinu PWM. V tomto případě je použit kolík 11.


Tento příklad předpokládá, že jste obeznámeni se základy programování Arduino.

/* jednoduchý testovací náčrt pro fotorezistor.

Jednu větev fotorezistoru připojte na 5 V, druhou na analogový pin Analog 0.

Poté připojte 10k ohmový odpor mezi analogovou 0 a zem.

Připojte LED přes odpor mezi pin 11 a kostru. */

int fotobuňkaPin = 0; // snímač a 10 kOhm stahovací odpor připojený k a0

int fotobuňkaČtení; // čtení analogových hodnot z děliče senzoru

int LEDpin = 11; // připojte červenou LED k pinu 11 (PWM pin)

int jas LED; //

void setup (void) (

// odešleme informace pro ladění na sériový monitor

Serial.begin(9600);

void loop (void) (

Serial.println(fotobuňkaČtení); // analogové hodnoty ze senzoru

// LED se rozsvítí jasněji, pokud se úroveň světla na senzoru sníží

// to znamená, že musíme invertovat načtené hodnoty z 0-1023 na 1023-0

photocellReading = 1023 - photocellReading;

//nyní musíme převést rozsah 0-1023 na 0-255, protože to je rozsah, který analogWrite používá

Jas LED = mapa(fotobuňkaČtení, 0, 1023, 0, 255);

analogWrite (LEDpin, LED jas);


Možná budete chtít vyzkoušet jiné odpory v závislosti na úrovni světla, kterou chcete měřit!

Jednoduchý kód pro analogové měření úrovně světla

Skica neprovádí žádné výpočty, pouze zobrazuje hodnoty, které jsou interpretovány jako úrovně osvětlení. Pro mnoho projektů to stačí.


/* Jednoduchý testovací náčrt pro fotorezistor.

Jednu větev fotorezistoru připojte na 5 V, druhou na pin Analog 0.

Poté připojte kolík 10 kOhm rezistoru k zemi a druhý k analogovému kolíku Analog 0 */

int fotobuňkaPin = 0; // snímač a 10 kOhm stahovací odpor připojený k a0

int fotobuňkaČtení; // data načtená z analogového pinu

void setup (void) (

// Přenese informace pro ladění do sériového monitoru

Serial.begin(9600);

void loop (void) (

photocellReading = analogRead(photocellPin);

Serial.print("Analogové čtení = ");

Serial.print(fotobuňkaČtení); // analogové hodnoty

if (fotobuňkaČtení

Serial.println(" - Tmavý");

) jinak if (fotobuňkaČtení

Serial.println(" - Dim");

) jinak if (fotobuňkaČtení

Serial.println(" - Světlo");

) jinak if (fotobuňkaČtení

Serial.println(" - Bright");

Serial.println(" - Velmi světlý");

Tento test byl prováděn v místnosti během dne. Zakryl jsem senzor rukou a poté kusem látky.


Čtení hodnot z fotorezistoru bez použití analogových pinů

Vzhledem k tomu, že fotorezistory jsou v podstatě pouze odpory, lze je použít, i když váš mikrokontrolér nemá žádné analogové kolíky (nebo pokud jsou všechny analogové kolíky obsazeny). Tato metoda je založena na základních vlastnostech rezistorů a kondenzátorů. Pokud vezmete kondenzátor, který dokáže přenést potenciál a připojíte jej přes odpor ke zdroji energie (např. 5V), ke změně napětí dojde postupně. Čím vyšší je odpor rezistoru, tím pomaleji se bude napětí měnit.

Níže je část oscilogramu, která charakterizuje, co se přesně děje s digitálním kolíkem (žlutá). Modrá čára ukazuje, kdy samotná skica Arduina začíná fungovat a kdy svou práci dokončí (úsek trvající asi 1,2 ms).


Pokud nakreslíme jednoduché analogie, kondenzátor funguje jako koš a rezistor funguje jako trubice. Naplnění košíku tenkou hadičkou zabere hodně času. V závislosti na tloušťce trubky se bude rychlost plnění koše lišit.


V našem případě je „koš“ keramický rezistor s kapacitou 0,1 μF. Můžete experimentovat s kapacitou kondenzátoru. A tento ukazatel přímo ovlivní čas. Pokud chcete měřit úroveň osvětlení, použijte kondenzátor 1 µF. Pokud pracujete za špatných světelných podmínek, můžete použít kondenzátor 0,01 uF.

/* jednoduchý náčrt pro kontrolu funkčnosti fotorezistoru.

Připojte jednu nohu fotorezistoru ke zdroji napájení, druhou ke kolíku 2.

Poté připojte jednu větev kondenzátoru 0,1 uF ke kolíku 2 a druhou k zemi */

int fotobuňkaPin = 2; // fotorezistor připojený na pin 2

int fotobuňkaČtení; // digitální hodnoty

int ledPin = 13; // můžete použít vestavěnou LED

void setup (void) (

// odeslání informací pro ladění, které se zobrazí v okně sériového monitoru

Serial.begin(9600);

pinMode(ledPin, OUTPUT); // použít LED jako výstupní signál

void loop (void) (

// čtení hodnot ze senzoru pomocí technologie RCtime

photocellReading = RCtime(photocellPin);

if (fotobuňkaČtení == 30000) (

// pokud odečet dosáhne 30000, znamená to, že jsme dosáhli limitní hodnoty

Serial.println("Nic připojeno!");

Serial.print("Čtení RCtime = ");

Serial.println(fotobuňkaČtení); // proud načtených analogových dat

// čím jasnější, tím častěji LED bliká!

digitalWrite(ledPin, HIGH);

zpoždění(fotobuňkaČtení);

digitalWrite(ledPin, LOW);

zpoždění(fotobuňkaČtení);

// pro měření odporu použijte digitální pin

//to uděláme přivedením proudu do kondenzátoru a

//výpočet, jak dlouho bude trvat dosažení Vcc/2 (pro většinu Arduin je tato hodnota 2,5V)

int RCtime(int RCpin) (

int čtení = 0; // začíná od 0

// inicializuje pin jako výstup a přiřadí mu hodnotu LOW (zem)

pinMode(RCpin, OUTPUT);

digitalWrite(RCpin, LOW);

// Nyní nastavte pin jako vstup a...

pinMode(RCpin, INPUT);

while (digitalRead(RCpin) == LOW) ( // počítejte čas potřebný k získání hodnoty HIGH

čtení++; // přírůstek pro počítání času

if (čtení == 30000) (

// pokud se dostaneme na tuto úroveň, odpor je tak velký

// že s největší pravděpodobností nic není připojeno!

přestávka; // přejít mimo smyčku

Video projektů Arduino pomocí fotorezistorů

Změna otáček motoru pomocí fotorezistoru:

Robot sleduje dráhu pohybu pomocí fotorezistoru:

Níže zanechte své komentáře, dotazy a podělte se o své osobní zkušenosti. V diskuzích se často rodí nové nápady a projekty!