KKM: APDS-9200

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

UVOD

APDS_9200 je senzor koji nam omogućuje mjerenje razine ultra-ljubičastog(UV) zračenja mjereći UV-A(320 nm – 400 nm) te UV-B(290 nm – 320 nm) zrake. Pored mjerenja UV zračenja imamo i mjerenje osvijetljenosti i to vrlo precizno te se zbog toga može koristiti u mobitelima, te vanjskim zaslonima za automatsku regulaciju osvijetljenosti displeja. Senzor ima malu potrošnju struje i troši svega 100uA kada radi odnosno 1uA u mirovanju i zbog toga je pogodan za uređaje koji koriste bateriju za napajanje.

Karakteristike senzora: 

  • Napon: 1.7V - 3.6V
  • Napon na ulazima SDA i SCL: 0.8 VDC - 3.6 VDC
  • Struja prilikom očitavanja: 100uA
  • Struja u stanju mirovanja: 1uA
  • Vrsta komunikacije: I2C

KAKO MODUL RADI?

Senzor se sastoji od puno fotodioda, koje mjere osvijetljenost i UV zračenje, a raspoređene su tako da nam kut svjetlosti što manje utječe na mjerenja. Struja fotodioda se pretvara u digitalne vrijednosti pomoću analogno digitalnog pretvarača (ADC), a rezolucija ADC-a se može mijenjati od 13 bitne do 20 bitne rezolucije pretvaranja analognog signala u digitalni. Vrijeme potrebno za mjerenje ovisi o rezoluciji mjerenja te ako postavimo veću rezoluciju mjerenja trebat će i više vremena za mjerenje, te pri tome treba naći optimalni odnos između vremena i rezolucije mjerenja. Senzor mjerenja UV zračenja prikazuje kao vrijednosti od 0 do nekoliko tisuća, ali iz dijagrama danog u datasheet-u u programu dobijemo i ispis UV indeksa ( od 1 do 11). Senzor je povezan putem I2C komunikacije s mikrokontrolerom i može se koristiti pri maksimalnoj brzini komunikacije od 400 Hz.

Na desnom dijagramu se vidi kako mjerenje UV zračenja ovisi o valnoj duljini svjetlosti , a lijevi dijagram nam prikazuje mjerenje osvjetljenja, te nam prikazuje kako senzor mjeri približno isto kao što i ljudsko oko vidi.

Kod mjerenja senzor odvojeno mjeri UV zračenje i osvjetljenje te su mjerenja neovisna.
Senzor ima mogućnost postavljanja interrupta koji ovisi o osvjetljenju i koristi se na pinu INT.

KAKO POVEZATI?

Ovaj senzor se na Croduino povezuje putem I2C komunikacije što znači da nam trebaju pinovi SDA(A4) i SCL(A5). Kako senzor radi na naponu od 3.3 V a Croduino na 5 V za spajanje senzora sa Croduinom morat ćemo koristiti Logic Level Konverter Modul koji nam napon od 5 V spušta na 3.3 V te na svim pinovima ( VDD, SDA, SCL) te tako osigurava siguran rad sa senzorom. Shema prikazuje kako povezati Croduino sa senzorom koristeći Logic Level Konverter Modul.

ARDUINO KOD

Kako bi mogli koristiti senzor potrebno je preuzeti biblioteku za senzor koja se nalazi ovdje. Ako ne znate kako instalirati biblioteku, pročitajte naš tutorijal.
Dolje je prikazan kod koji nam podatke o UV zračenju, osvjetljenju i UV indeks ispisuje na Serial monitor.

#include "APDS9200.h"  //biblioteka za APDS_9200 UV seznor
#include "Wire.h"      //biblioteka za I2C komunikaciju

APDS9200 light;     
  
double UV_osvjetljenje;   //varijabla za spremanje vrijednosti UV osvjetljenja 
double UV_index;         //varijabla za spremanje vrijednosti UV indexa
double osvjetljenje;      //varijabla za spremanje vrijednosti osvjetljenja
void setup() {
  Serial.begin(9600);  //inicijalizacija serijske komunikacije i postavljanje brzine komunikacije (9600 bauda)
  Wire.begin();        //inicijalizacija I2C komunikacije
}

void loop() {
 //U ovom dijelu se uključuje UV senzor i nakon pauze od 150ms se očitava njegova vrijednost,
 //varijabla UV_osvjetljenje se ispisuje na Serial monitor
  delay(500);
  Serial.print("UV Osvjetljenje:\t");
  light.enableUV();                 //uključenje senzora za mjerenje UV osvjetljenja
  delay(150);                       //pauza d 150ms za očitanje senzora
  UV_osvjetljenje=light.getUV();    //spremanje vrijednosti osvjetljenja sa senzora u varijablu UV_osvjetljenje
  Serial.print(UV_osvjetljenje);    //ispis na Serial monitor
  Serial.print("\t\t");
  
 //Daljnji kod nam omogućuje očitanje senzora svijetla i ispis rezultata na Serial monitor

  Serial.print("Osvjetljenje:  ");
  light.enableLight();             //uključenje senzora za mjerenje osvjetljenja
  delay(150);                      //pauza d 150ms za očitanje senzora
  osvjetljenje=light.getLight();   //spremanje vrijednosti osvjetljenja sa senzora u varijablu osvjetljenje
  Serial.print(osvjetljenje);      //ispis na Serial monitor
  Serial.print("\t\t");

  //Ovaj dio koda služi za dobivanje vrijednosti UV indexa
  
  Serial.print("UV index:\t"); 
  light.enableUV();                //uključenje senzora za mjerenje UV osvjetljenja
  delay(150);                      // pauza d 150ms za očitanje senzora
  UV_index=light.getUVIndex();     //spremanje vrijednosti osvjetljenja sa senzora u varijablu UV_index
  Serial.println(UV_index);       //ispis na Serial monitor
}

Leave a Reply