Opis TCS3200D
TCS3200D - Moduł umożliwia pomiar koloru (składowych RGB - Red, Green, Blue), którego wyjściem jest częstotliwość zależna od natężenia światła wybranej barwy.
Obsługiwany przy pomocy dowolnego mikrokontrolera lub zestawu uruchomieniowego, w tym Arduino.
Wyjściem jest sygnał, którego częstotliwość zależna jest od natężenia światła, wybranej za pomocą wyprowadzeń S2 i S3, barwy.
Specyfikacja:
- Napięcie zasilania: 2,7 V do 5,5 V
- Programowalny wybór koloru
- Programowalna częstotliwość wyjściowa:
- 500 - 600 kHz
- 100 - 120 kHz
- 10 - 12 kHz
- Błąd nieliniowości na poziome 0,2% przy 50kHz
- Wyprowadzenia: goldpin
- Prosta komunikacja z mikrokontrolerem (odczyt częstotliwości)
- Zintegrowane 4 diody LED oświetlające badany przedmiot
- Wymiary: 32 x 25 mm
Wyprowadzenia
Czujnik posiada cztery wyprowadzenia typu goldpin - raster 2,54 mm, co umożliwia bezpośrednie wpięcie w płytkę stykową.
Nazwa | Opis |
---|---|
VCC | Napięcie zasilania modułu w zakresie 2.7 -5.5V. |
GND | Masa układu. |
OE | Aktywacja wyjścia częstotliwościowego OUT. Aktywowane stanem niskim. |
OUT | Wyjście częstotliwościowe |
S0, S1 | Wejście służące do skalowania częstotliwości wyjściowej. |
S2, S3 | Wejście służące do wyboru typu fotodiody. |
Dokumentacja czujnika TCS3200D.
TCS3200D + Arduino czujnik kolorów
Za pomocą wejść konfiguracyjnych S0 i S1 wybierany jest preskaler (dzielnik) wyjściowego sygnału częstotliwościowego, dzięki któremu możemy dobrać odpowiedni zakres częstotliwości dla wykorzystywanego mikrokontrolera. Wejścia S2 i S3 służą do wyboru rodzaju fotodiody pomiarowej: czerwonej, zielonej, niebieskiej lub opcji clear czyli bez filtracji (mierzone będą wszystkie składowe RGB jednocześnie).
Wybór dzielnika częstotliwości wyjściowej
S0 |
S1 |
Skala częstotliwości wyjściowej |
---|---|---|
L |
Czujnik wyłączony | |
L |
H |
2 % 10-12 kHz |
H |
L |
20 % 100-120 kHz |
H |
H | 100 % 500-600 kHz |
Wybór typu fotodiody (filtracji)
S0 |
S1 |
Rodzaj fotodiody |
---|---|---|
L |
L | czerwona (R) |
L |
H | niebieska (B) |
H |
L | clear (RGB) (bez filtracji) |
H |
H | zielona (G) |
L (Low) - stan niski
H (High) - stan niski
Schemat podłączenia TCS3200d (fritzing)
int s0 = 3, s1 = 4, s2 = 5, s3 = 6; //piny modułu połączone z Arduino
int out = 2; //pin 2 Arduino i OUT od czujnika
int flag = 0;
byte counter = 0;
byte countR = 0, countG = 0, countB = 0;
void setup() {
Serial.begin(9600); //inicjalizacja monitora szeregowego
pinMode(s0, OUTPUT); //ustawienie pinów jako wyjścia
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
}
void TCS() {
flag = 0;
digitalWrite(s1, HIGH);
digitalWrite(s0, HIGH);
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
attachInterrupt(0, ISR_INTO, LOW);
timer0_init();
}
void ISR_INTO() {
counter++;
}
void timer0_init(void) {
TCCR2A = 0x00;
TCCR2B = 0x07; //częstotliwość zegara - 1024
TCNT2 = 100; //przepełnienie 10 ms
TIMSK2 = 0x01; //pozwolenie na przerwanie
}
int i = 0;
ISR(TIMER2_OVF_vect) { //timer 2, 10ms przepełnienie 10ms. funkcja przerwanie wewnętrzengo przepełnienia
TCNT2 = 100;
flag++;
if (flag == 1) { //pobranie i wyświetlenie na ekranie składowych RGB
countR = counter;
Serial.print("red=");
Serial.print(countR, DEC);
Serial.print("tt");
digitalWrite(s2, HIGH);
digitalWrite(s3, HIGH);
} else if (flag == 2) {
countG = counter;
Serial.print("green=");
Serial.print(countG, DEC);
Serial.print("t");
digitalWrite(s2, LOW);
digitalWrite(s3, HIGH);
} else if (flag == 3) {
countB = counter;
Serial.print("blue=");
Serial.print(countB, DEC);
Serial.print("t");
Serial.println("n");
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
} else if (flag == 4) {
flag = 0;
}
counter = 0;
}
void loop() { //główna pętla programu
TCS();
delay(500);
while (1);
}
Przykładowe działanie czujnika w programie Arduino Studio
Opracowano na podstawie:
https://botland.com.pl/czujniki-swiatla-i-koloru/1477-modul-z-czujnikiem-koloru-tcs3200d.html