Popis
GY-31 TCS230 Detector Module
Popis | Senzor rozpoznávania farieb |
---|---|
Vlastnosti |
|
Špecifikácie |
|
Príklady použitia |
|
Príkladový kód pre Arduino | Základný kód pre použitie senzora s Arduinom:
// Inicializácia senzora void setup() { void loop() { |
Príkladový kód pre ESPHome | Príklad integrácie senzora s ESPHome:
sensor: - platform: tcs34725 red_channel: name: "TCS34725 Red Channel" green_channel: name: "TCS34725 Green Channel" blue_channel: name: "TCS34725 Blue Channel" clear_channel: name: "TCS34725 Clear Channel" illuminance: name: "TCS34725 Illuminance" color_temperature: name: "TCS34725 Color Temperature" glass_attenuation_factor: 1.0 address: 0x29 update_interval: 60s illuminance: name: "TCS34725 Illuminance" filters: - or: - delta: 50 - throttle: 60sec |
GY-31 Modul detektora TCS230 Príslušenstvo snímača na rozpoznávanie farieb pre MCU Modul snímača na rozpoznávanie Arduino TCS230
Farebný snímač TCS3200 – znázornený na obrázku nižšie – používa na detekciu farieb snímací čip TAOS TCS3200 RGB. Obsahuje aj štyri biele LED diódy, ktoré osvetľujú predmet pred ním.
špecifikácie snímača:
Napájanie: 2,7V až 5,5V
Veľkosť: 28,4 x 28,4 mm (1,12 x 1,12″)
Rozhranie: digitálne TTL
Premena intenzity svetla na frekvenciu s vysokým rozlíšením
Programovateľná farba a výstupná frekvencia v plnom rozsahu
Komunikuje priamo s mikrokontrolérom
Princíp snímača farieb
TCS230 využíva 8-kolíkový SOIC balík pre povrchovú montáž so 64 fotodiódami integrovanými na jednom čipe. Tieto diódy sú rozdelené do štyroch typov. Medzi nimi 16 fotodiód má červený filter; 16 fotodiód má zelený filter; 16 fotodiód má modrý filter; zvyšných 16 nemá filtre a dokáže prenášať všetky svetelné informácie. Tieto fotodiódy sú v čipe usporiadané do kríža, čo môže minimalizovať nerovnomernosť dopadajúceho svetelného žiarenia, čím sa zvyšuje presnosť rozpoznávania farieb; na druhej strane je paralelne zapojených a rovnomerne rozložených 16 fotodiód rovnakej farby V diódovom poli možno eliminovať polohovú chybu farby. Pri práci sa požadovaný filter dynamicky vyberá cez dva programovateľné kolíky. Typická výstupná frekvencia snímača je v rozsahu od 2 Hz do 500 kHz a užívateľ si tiež môže zvoliť 100 %, 20 % alebo 2 % výstupný mierkový faktor alebo režim vypnutia pomocou dvoch programovateľných kolíkov. Výstupný mierkový faktor umožňuje, aby sa výstup senzora prispôsobil rôznym rozsahom merania a zlepšuje jeho prispôsobivosť. Napríklad, keď používate nízkorýchlostné frekvenčné počítadlo, môžete zvoliť malú hodnotu stupnice, aby sa zhodovala výstupná frekvencia TCS230 s počítadlom.
Predstavenie výrobku:
1. Pôvodne dovezený čip TCS3200 PCB doska využíva proces pozlátenia
2. TCS3200 je vylepšená verzia TCS230 s lepším efektom
3. Napájanie 3-5v
4. Proti rušeniu svetla
5. Bielu LED je možné ovládať na zapnutie a vypnutie.
6. Dokáže rozpoznať farbu nesvietiacich predmetov
7. Veľkosť PCB: (D)33mm*(Š)25mm
Pin Name | I/O | Description |
GND (4) | Power supply ground | |
OE (3) | I | Enable for output frequency (active low) |
OUT (6) | O | Output frequency |
S0, S1(1,2) | I | Output frequency scaling selection inputs |
S2, S3(7,8) | I | Photodiode type selection inputs |
VDD(5) | Voltage supply |
Photodiode type | S2 | S3 |
Red | LOW | LOW |
Blue | LOW | HIGH |
No filter (clear) | HIGH | LOW |
Green | HIGH | HIGH |
Output frequency scaling | S0 | S1 |
Power down | L | L |
2% | L | H |
20% | H | L |
100% | H | H |
Keď modrý objekt umiestnime pred senzor, modré hodnoty frekvencie (B) oscilujú medzi 59 a 223 (pozri zvýraznené hodnoty).
Poznámka: Tieto hodnoty frekvencie (59 a 223) nemôžete použiť vo svojom kóde, mali by ste merať farby pre váš konkrétny objekt pomocou vlastného snímača farieb. Potom si uložte horný a spodný limit frekvencie pre modrú farbu, pretože ich budete potrebovať neskôr.
Opakujte tento proces so zeleným a červeným objektom a zapíšte si horný a spodný limit frekvencie pre každú farbu.
____________________________________________________________________________________KOD 1 // TCS230 or TCS3200 pins wiring to Arduino #define S0 4 #define S1 5 #define S2 6 #define S3 7 #define sensorOut 8 // Stores frequency read by the photodiodes int redFrequency = 0; int greenFrequency = 0; int blueFrequency = 0; void setup() { // Setting the outputs pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); // Setting the sensorOut as an input pinMode(sensorOut, INPUT); // Setting frequency scaling to 20% digitalWrite(S0,HIGH); digitalWrite(S1,LOW); // Begins serial communication Serial.begin(9600); } void loop() { // Setting RED (R) filtered photodiodes to be read digitalWrite(S2,LOW); digitalWrite(S3,LOW); // Reading the output frequency redFrequency = pulseIn(sensorOut, LOW); // Printing the RED (R) value Serial.print("R = "); Serial.print(redFrequency); delay(100); // Setting GREEN (G) filtered photodiodes to be read digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); // Reading the output frequency greenFrequency = pulseIn(sensorOut, LOW); // Printing the GREEN (G) value Serial.print(" G = "); Serial.print(greenFrequency); delay(100); // Setting BLUE (B) filtered photodiodes to be read digitalWrite(S2,LOW); digitalWrite(S3,HIGH); // Reading the output frequency blueFrequency = pulseIn(sensorOut, LOW); // Printing the BLUE (B) value Serial.print(" B = "); Serial.println(blueFrequency); delay(100); }
____________________________________________________________________________________KOD 2
// TCS230 or TCS3200 pins wiring to Arduino #define S0 4 #define S1 5 #define S2 6 #define S3 7 #define sensorOut 8 // Stores frequency read by the photodiodes int redFrequency = 0; int greenFrequency = 0; int blueFrequency = 0; // Stores the red. green and blue colors int redColor = 0; int greenColor = 0; int blueColor = 0; void setup() { // Setting the outputs pinMode(S0, OUTPUT); pinMode(S1, OUTPUT); pinMode(S2, OUTPUT); pinMode(S3, OUTPUT); // Setting the sensorOut as an input pinMode(sensorOut, INPUT); // Setting frequency scaling to 20% digitalWrite(S0,HIGH); digitalWrite(S1,LOW); // Begins serial communication Serial.begin(9600); } void loop() { // Setting RED (R) filtered photodiodes to be read digitalWrite(S2,LOW); digitalWrite(S3,LOW); // Reading the output frequency redFrequency = pulseIn(sensorOut, LOW); // Remaping the value of the RED (R) frequency from 0 to 255 // You must replace with your own values. Here's an example: // redColor = map(redFrequency, 70, 120, 255,0); redColor = map(redFrequency, XX, XX, 255,0); // Printing the RED (R) value Serial.print("R = "); Serial.print(redColor); delay(100); // Setting GREEN (G) filtered photodiodes to be read digitalWrite(S2,HIGH); digitalWrite(S3,HIGH); // Reading the output frequency greenFrequency = pulseIn(sensorOut, LOW); // Remaping the value of the GREEN (G) frequency from 0 to 255 // You must replace with your own values. Here's an example: // greenColor = map(greenFrequency, 100, 199, 255, 0); greenColor = map(greenFrequency, XX, XX, 255, 0); // Printing the GREEN (G) value Serial.print(" G = "); Serial.print(greenColor); delay(100); // Setting BLUE (B) filtered photodiodes to be read digitalWrite(S2,LOW); digitalWrite(S3,HIGH); // Reading the output frequency blueFrequency = pulseIn(sensorOut, LOW); // Remaping the value of the BLUE (B) frequency from 0 to 255 // You must replace with your own values. Here's an example: // blueColor = map(blueFrequency, 38, 84, 255, 0); blueColor = map(blueFrequency, XX, XX, 255, 0); // Printing the BLUE (B) value Serial.print(" B = "); Serial.print(blueColor); delay(100); // Checks the current detected color and prints // a message in the serial monitor if(redColor > greenColor && redColor > blueColor){ Serial.println(" - RED detected!"); } if(greenColor > redColor && greenColor > blueColor){ Serial.println(" - GREEN detected!"); } if(blueColor > redColor && blueColor > greenColor){ Serial.println(" - BLUE detected!"); } }