Identifique cores com o Sensor de Cor TCS3200 e Arduino 20

Utilize o sensor de cor TCS3200 e um led RGB para montar facilmente um sistema de reconhecimento de cores com Arduino.

Sensor de cor TCS3200

O sensor de cor TCS3200 (datasheet) utiliza o chip TCS3200 para detectar o nível de cor RGB (Red, Green e Blue, ou Vermelho, Verde e Azul) do objeto que for colocado em frente ao sensor.

O chip TCS3200 tem 64 fotodiodos: 16 com filtro para a cor vermelha, 16 para a verde, 16 para a azul e 16 sem filtro. Esses fotodiodos captam a intensidade da luz, filtrando as cores e gerando a informação correspondente no pino OUT, que vai enviar os dados para o microcontrolador.

O sensor de cor TCS3200

O sensor de cor TCS3200 tem duas fileiras de 5 pinos, onde encontramos os pinos de controle (S0, S1, S2, S3), saída (OUT), controle do Led (LED) e alimentação (VCC e GND). Os pinos Vcc e GND estão em duplicidade, e você pode usar qualquer um deles para alimentar o módulo.

Sensor TCS3200Os pinos S0 e S1 determinam a frequência de saída, e os pinos S2 e S3 determinam qual nível de cor será detectado no momento, segundo a tabela abaixo:

Tabela Sinais

O pino LED serve para ligar (nível 0 – LOW) ou desligar (nível 1 – HIGH), os leds brancos em volta do sensor.

Circuito Arduino e Sensor TCS3200

No nosso circuito, vamos utilizar um Arduino Uno, um sensor de cor TCS3200 e um led RGB difuso 5mm, que vai acender nas cores vermelho, verde ou azul conforme a cor do objeto que for colocado em frente ao sensor:

Circuito detector de cor

O led RGB é do tipo anodo comum, com o esquema de ligação abaixo:

LED RGB

Você pode fazer a ligação com 3 resistores, conforme a imagem acima, ou utilizar, para efeitos de testes, apenas um resistor no anodo (pino maior). No nosso circuito utilizamos apenas um resistor de 10K.

Programa sensor de cor TCS3200

A princípio o sensor de cor TCS3200 não usa nenhuma biblioteca específica, já que vamos acionar os pinos S0, S1, S2 e S3 pelos pinos digitais, e ler o valor da saída OUT também por um pino digital.

A cada ciclo do loop é efetuada uma leitura das cores, e os valores lidos são mostrados no serial monitor. Esses valores também são utilizados para determinar qual das três cores do led serão acesas.

O programa lê as cores primárias (RGB), mas você pode configurar o programa para detectar outras cores. Nas imagens abaixo, temos o sensor detectando a cor azul….

Detectando cor azul

e também a verde….

Detectando cor verde

Gostou ? Ajude-nos a melhorar o blog atribuindo uma nota a este tutorial (estrelas no final do artigo), comente e visite nossa loja FILIPEFLOP!

Posts Relacionados

20 Comentários

  1. Existe a possibilidade de ao invés de enviar o comando para acender um LED RBG, enviar a um alto falante programado com certos áudios para certas cores.

  2. Olá, tenho uma dúvida, como imprime os valores em RGB? Porque os valores que aparecem não é em RGB eu acho…

  3. Alguém sabe me dizer se o pino do LED deve ser ligado diretamente ou necessita de um resistor? Coloquei um resistor, mas acho que o LED perdeu um pouco a intensidade, mas tenho receio de ligar diretamente e queimar.

    1. Bom dia Gleise,

      Usamos ele ligado diretamente, sem problemas.

      Abraço!

      Adilson – Equipe FILIPEFLOP

  4. tem como ligar ele num clp siemens em vez de arduíno?

    Vinicius Gonçalves
  5. Prezado Adilson,
    Sou estudante de Engenharia Mecatrônica vou iniciar o 2o. período. Como faço pra programar para identificar qualquer cor e suas nuances? Da pra você me enviar a programação pra que o microcontrolador faça dessa forma.

  6. Olá! Tenho uma dúvida referente ao módulo TCS230 sensor de cor, usei o programa abaixo para fazer a leitura RBG, porém notei para mesma cor houve uma variação extrema, exemplo: objeto azul primeira medição (43,43,43 ) segunda medição (103; 56; 155); terceira medição com mesmo objeto (205;155;33) e por nas medições seguintes variando, em algumas vez o valor se manteve por 3 medições até alterar novamente. Basicamente a unica cor que não variou foi a branca que se manteve (255;255;255);
    Gostaria de saber o que posso estar fazendo para diminuir esta variação e identificar corretamente as cores, ou se módulo esta apresentando falhas e este seria uma forma de sinal que a identificação da cor não está sendo reconhecida; ou se até mesmo seja algum procedimento de setup que deveria ter feito no primeiro uso.
    Segue abaixo o programa:

    #include
    #include

    // Pinos

    #define S0_OUT 8
    #define S1_OUT 9
    #define S2_OUT 12
    #define S3_OUT 13
    #define OE_OUT 2

    MD_TCS230 CS(S2_OUT, S3_OUT,S1_OUT, S0_OUT, OE_OUT);

    colorData rgb;

    void setup()
    {
    Serial.begin(57600);
    CS.begin();
    }

    int readSensor(int i)
    {
    static bool waiting;
    if (!waiting)
    {
    CS.read();
    waiting = true;
    }
    else
    {
    if (CS.available())
    {
    CS.getRGB(&rgb);
    waiting = false;
    }
    }
    return rgb.value[i];
    }

    void loop()
    {
    Serial.print(readSensor(TCS230_RGB_R));
    Serial.print(“;”);
    Serial.print(readSensor(TCS230_RGB_G));
    Serial.print(“;”);
    Serial.println(readSensor(TCS230_RGB_B));
    delay(1000);
    }

  7. Olá, montei o sensor de cor tcs3200 da mesma maneira que está no post, entretanto, o sensor mesmo sem encostar nenhum objeto sobre ele, ele fica retornando valores R, G, B no serial monitor muito rápido, mesmo sem eu clocar um objeto sobre o sensor. Por que será que isto está ocorrendo?

  8. Olá, como vocês desenham esses esquemáticos? É pelo fritzing? Que bilbiotecas são essas?

    1. Boa tarde Henrique,

      Sim, utilizamos o Fritzing. Alguns componentes não existem no Fritzing e inserimos posteriormente.

      Abraço.

      Adilson – Equipe FILIPEFLOP

  9. como eu posso identificar a cor prata???

  10. Olá…

    Como faço pra detectar as cores preto e branco?
    É possível utilizar esse sensor, ou pode ser o óptico reflexivo?

    1. Também queria saber, estou pendente disto para um trabalho de curso.

  11. Gostaria de saber se pode ser feito a ligação direto no clp da delta.
    No aguardo.
    Obrigado.

  12. bom dia. eu comprei um sensor tcs 3200 e utilizei a sua programação para testa o mesmo, porem ele não esta identificando as cores ele ate acende os ledes do sensor mas não identifica as cores. eu queria saber se vc tem ideia do que pode ser???

  13. Olá comprei o sensor tcs3200 um lcd12x2 e um i2C, realizei o esquema acima indicado e deu tudo certo, mas gostaria de saber como posso informar a cor em texto no LCD, gostaria também se fosse informado outra cor ele escrever no LCD é possível ?

  14. Amigos, vocês conhecem algum tutorial ensinando como desenvolver um calibrador para monitores? sei que alguns modelos utilizam o TCS3200 da keystudio, mas não encontrei nada a respeito

  15. É preciso configurar o timer pra pegar o pulso da frequencia no caso de utilizar o pic?sou novo na eletronica e gostaria de tirrar essa dúvida.

  16. Bom dia. Excelente matéria. Me tire uma dúvida: esse sensor detecta qualquer cor? Qual seria o código para detectar a cor amarela?

  17. Bom dia, poderia disponbilizar a biblioteca fritzing para esse sensor de cor?

    Att.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *