KKM: TCS230 Senzor za prepoznavanje boja

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

 
Ovaj modul senzora boja sadrži TCS230, programibilni konverter svjetlosti u frekvenciju. Može filtrirati RGB iz izvora svjetlosti i pretvoriti ga u pravokutne valove s frekvencijom direktno proporcionalnom s intenzitetom svjetlosti. Koristi se u robotici za prepoznavanje objekata, praćenje "linija", u dizajnu za kameleon efekt i drugo.
 
tcs230
Karakteristike:
Napon: 2.7 - 5.5V
Preciznost: 0.2% na 50kHz
Dimenzije: 29x21mm

Kako radi?

 
TCS230 kombinira fotodiode i napon-u-frekvenciju konverter. Sadrži 8x8 niz fotodioda, i to: 16 s plavim, 16 s zelenim, 16 s crvenim filterom i 16 bez filtera. Ako uzmete povećalo i naciljate centar čipa moći ćete vidjeti ove filtere. Veličine su 120x120um, a služe kako bi se filtrirala "slučajna" zračenja. Na modulu se nalaze 4 širokokutne 5mm hladno bijele LED diode kako bi se povećalo zračenje te ostale pasivne komponente koje su nužne za direktno čitanje izlaznog pina.
 
Pinout
 
GND - gnd
OE - Output enable, aktivan LOW
OUT - izlazna frekvencija (fo)
S0, S1 - pinovi za skaliranje izlazne frekvencije (0%, 2%, 20%, 100%)
S2, S3 - pinovi za odabir RGB filtera (crveni, plavi, zeleni, bez)
Vcc - 2.7 - 5.5 VDC
 
Za više pogledaj datasheet.

Modul i Croduino

 
TCS230 on arduino
Prema datasheetu, pinove smo spojili kao na slici gore:
 
GND - gnd
OE - gnd, LOW aktivira OUT pin
OUT - PIN10 Croduina, jedini ulazni pin možemo koristiti bilo koji
S0, S1 - +5V, kombinacija kada su oba pina HIGH skalira nam izlazni pin na 100%. Za veću preciznost koristite manji [%]. U tom slučaju, uz Arduino, nužno je koristiti neku Timer library.
S2 - PIN7 Croduina, kombiniramo s S3 kako bi mijenjali filtere prema tablici dolje
S3 - PIN6 Croduina, kombiniramo s S2 kako bi mijenjali filtere prema tablici dolje
Vcc - +5V
 
Kombinacija S2/S3 za mijenjanje filtera :
TCS230 filter change
 
NAPOMENA: kod ispod prikazuej princip rada modula, za preciznije podatke nužne su kalibracije i točnije mjerenja koja možete dobiti uz pomoć TimerOne librarya.

///////////////////////////////////////////////////////////////////////////////
/* */
/* */
/* (c) e-radionica.com 2015 - http://e-radionica.com/hr/faq/#privatnost */
/* [email protected] */
/* */
/* */
/* TCS230 - KKM tutorial */
///////////////////////////////////////////////////////////////////////////////
/*
GND - GND, OE
+5V - Vcc, S0, S1
D10 - OUT
D7 - S2
D6 - S3
*/
const int s2 = 7;
const int s3 = 6;
const int out = 10;
byte crvena, zelena, plava;
void setup() {
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
Serial.begin(9600);
}
void loop() {
ProvjeriBoje();
Serial.print("Crvena = " + String(crvena) + "\t");
Serial.print("Zelena = " + String(zelena) + "\t");
Serial.print("Plava = " + String(plava) + "\n");
delay(100);
}
void ProvjeriBoje() {
// bez crvenog filtera
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
crvena = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
delay(10);
// bez plavog filtera
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
plava = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
delay(10);
// bez zelenog filtera
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
zelena = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
}
Leave a Reply