Světelný senzor TEMT6000

Světelný senzor TEMT6000 je přídavný vstupní modul pro Arduino. Tento modul obsahuje senzor osvětlení, který pracuje podobně jako NPN tranzistor. Při nulovém osvětlení je přechod zavřený a na výstupu naměříme napětí 0 Voltů. Se vzrůstajícím množstvím světla dopadajícího na senzor se pak začne zvedat i napětí na výstupu senzoru, přičemž maximum odpovídá napětí připojenému na napájení senzoru.
Senzor je nejvíce citlivý na záření, které má vlnovou délku 570 nm a poloměr citlivosti senzoru je +- 60 stupňů. Pro napájení senzoru můžeme využít napájecí napětí 3,3 nebo 5 Voltů.

Pro úspěšné propojení senzoru TEMT6000 a Arduino desky je nutné zapojit celkem 3 vodiče. Propojíme S s pinem A0, G se zemí Arduina a V s +5V Arduina. Pro analogový výstup S je možné využít také jiný volný analogový pin, ale je nutné tuto volbu provést také na začátku programu.

Ukázkový kód obsahuje na svém začátku nastavení čísla propojovacího pinu a vytvoření proměnných, do kterých se ukládají výsledky měření. V podprogramu setup provedeme inicializaci komunikace po sériové lince a přejdeme do smyčky loop.
V prvním kroku v nekonečné smyčce loop vždy načteme hodnoty z analogového pinu do proměnné. Pro získání procentuálního vyjádření naměřených dat pak v dalším příkazu namapujeme rozsah analogových dat 0-1023 na kratší rozsah 0-100 a uložíme jeho hodnotu do druhé proměnné. V následujícím kroku vypíšeme obě informace po sériové lince a poté ještě pro ukázku budeme ověřovat hodnotu procentuálního množství světla v okolí. Pomocí podmínky if kontrolujeme, jestli je v okolí více než 50 % z maximálního rozsahu. Pokud je podmínka splněna, vypíšeme informaci o dostatku světla po sériové lince. Pokud je ale hodnota menší, vypíšeme informaci o jeho nedostatku. Na konci programu se nachází už jen pauza před novým během smyčky.

// Světelný senzor TEMT6000

// nastavení čísla propojovacího pinu
#define analogPin A0
// vytvoření proměnných pro výsledky měření
int analogHodnota;
int prepocet;

void setup() {
  // zahájení komunikace po sériové lince
  // rychlostí 9600 baud
  Serial.begin(9600);
}

void loop() {
  // načtení hodnoty z analogového pinu
  analogHodnota = analogRead(analogPin);
  // přepočet analogové hodnoty z celého rozsahu
  //  0-1023 na procentuální rozsah 0-100
  prepocet = map(analogHodnota, 0, 1023, 0, 100);
  // výpis načtených dat po sériové lince
  Serial.print("Nactena hodnota: ");
  Serial.print(analogHodnota);
  Serial.print(", v procentech: ");
  Serial.print(prepocet);
  if (prepocet > 50) {
    Serial.println(" | V okoli je dostatek svetla.");
  }
  else {
    Serial.println(" | V okoli je nedostatek svetla.");
  }
  // pauza před novým během loop smyčky
  delay(500);
}

Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem TEMT6000 dostaneme například tento výsledek v Sériovém monitoru:

Nactena hodnota: 0, v procentech: 0 | V okoli je nedostatek svetla.
Nactena hodnota: 325, v procentech: 31 | V okoli je nedostatek svetla.
Nactena hodnota: 361, v procentech: 35 | V okoli je nedostatek svetla.
Nactena hodnota: 578, v procentech: 56 | V okoli je dostatek svetla.
Nactena hodnota: 990, v procentech: 96 | V okoli je dostatek svetla.
Nactena hodnota: 1003, v procentech: 98 | V okoli je dostatek svetla.
Nactena hodnota: 998, v procentech: 97 | V okoli je dostatek svetla.
Nactena hodnota: 81, v procentech: 7 | V okoli je nedostatek svetla.

Světelný senzor TEMT6000 je jednoduchý modul, kterým nám přes jeden analogový pin dokáže pomoci s detekcí světla v okolí. Hodí se tedy do projektů, kde potřebujeme rozlišovat mezi různými hladinami osvětlení, ale nevyžadujeme přesnou hodnotu v luxech. Například tedy může sloužit pro spínání světla v místnostech, když se venku dostatečně zatmí, nebo jako detektor černé čáry pro malé roboty.
Výhodou tohoto senzoru je rozhodně jeho nízká cena a rozměry. Nevýhodou pak pro někoho může být omezení citlivosti pro zmíněnou vlnovou délku nebo nejasný vztah mezi výstupním napětím a osvětlením v luxech. Avšak po pečlivé kalibraci by bylo i to možné.

 

Seznam použitých komponent:

https://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html
https://dratek.cz/arduino/1737-svetelny-senzor-temt6000-modul-pro-arduino-1502184137.html

Další podobné články