TEMT 6000
Na redu za predstavljanje je ambijentalni senzor svetla TEMT6000 koji je
već ugrađen na modul zajedno sa pratećim otpornikom. Sve što se zahteva
od nas je da po potrebi zalemimo pinove ili žice u zavisnosti od
projekta.TEMT6000 je fotorezistivni senzor u SMD pakovanju i sposoban je
da registruje svetlost približno ljudskom oku.
Senzor meri
osvetljenje (illuminance) čija je jedinica mere lux. Senzor radi po
principu više svetla = više struje, manje svetla = manje struje. Modul
koji sam ja uzeo je 13x8mm sa tri rupice za pinove sa oznakama S, G i V
što će reći signal, ground i VCC. Senzor se ponaša kao NPN tranzistor,
gde što više svetla pada na bazu, više će struje ići od kolektora prema
emitoru. Ovo važi samo za svetlo u vidljivom spektru od 390nm do 700nm.
Modul može da radi na naponima 3.3V i 5V.
Za povezivanje ispratiti šemu ispod.
S
obzirom da se senzor ponaša kao naponski razdelnik povezujemo ga kao i
Termistor o kome je već bilo reči. Dakle na analogni pin. S obzirom na
to rezultat će direktno zavisiti da li je TEMT6000 povezan na 3,3V ili
5V a što se vrlo lako može ispratiti na terminalu. Pri naponu od 3,3V i
direktnim svetlom blica telefona na par centimetara od senzora
očitavanje reading će biti do 650 dok će isto to pri naponu od 5V biti
do 990. Skeč neću objašnjavati dodatno jer je pojašnjen u komentarima.
/*-----------------------------------------------------------------*
* Skeč za potrebe članka na www.itstreet.org
* Author: Petrović Dejan
* Date: 12/09/2017
* Arduino MEGA, TEMT6000, LED
*-----------------------------------------------------------------*/
#define ledPin 11
#define ambientPin A0
void setup() {
Serial.begin(9600);
pinMode(ambientPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
float reading = analogRead(ambientPin); //ocitavanje analogne vrednosti
float square_ratio = reading/1023.0; //dobijanje procentualne vrednosti od maksimalne
square_ratio = pow(square_ratio,2.0); //dobijamo vrednost sa kojom mozemo da radimo
analogWrite (ledPin, 255.0*square_ratio); //analogno pisemo na digitalnom pinu (pwm)
Serial.println(reading); //ispis vrednosti naterminalu
Serial.println(square_ratio);
delay(100);
}
Da
bi se dobila vrednost u luxima potrebno je malo matematike. Znamo da je
ukupna vrednost koju analogni pin može da očita 1024. Takođe znamo da
je ugrađeni otpornik na modulu 103, to jest 10K (10000oma). Prema
datasheet formula je y = 1/2(x) + 0 za microamps a 1lux=2microamps. U našem slučaju bi to bilo malo drugačije:
float lux = analogRead() * 0.9765625; // 1000/1024