Circuito detector de cores com código Arduino

Experimente Nosso Instrumento Para Eliminar Problemas





Neste post, vamos construir um circuito que pode detectar cores e disparar os respectivos relés atribuídos. Este projeto é realizado usando o sensor de cores TCS3200 e a placa Arduino.

Detecção de Cor por TCS3200

Se você não leu o artigo anterior, leia-o onde discutimos o noções básicas de detecção de cores usando TCS3200



O projeto proposto pode ser útil, se você deseja que um circuito atue com base em cores. Existem oceanos de aplicações baseadas na detecção de cores em vários campos industriais.

Este projeto dará uma visão de como podemos programar o sensor de cores para detectar cores diferentes e acionar os relés.



Vamos considerar as cores primárias: VERMELHO, VERDE e AZUL para este projeto. Este projeto pode diferenciar entre essas três cores e acionar os relés, cada relé para cada cor.

O TCS3200 pode detectar qualquer número de cores, mas para manter o projeto compreensível e para manter o código do programa simples, estamos nos concentrando apenas nas cores primárias.

Diagrama de circuito:

interface do Arduino e do sensor de cores TCS3200

O esquema acima serve para fazer a interface do sensor de cores Arduino e TCS3200.

Conexões de relé:

relé conecta o sensor de cores Arduino e TCS3200

Alimente o Arduino com um adaptador de 9V com pelo menos 500mA. O transistor atua como amplificador para o relé, uma vez que os pinos GPIO do Arduino não podem fornecer corrente suficiente para o relé.

O diodo 1N4007 absorverá picos de alta tensão da bobina do relé, protegendo o resto dos componentes semicondutores.

Isso conclui o hardware.

Agora vamos ver como fazer upload do código e calibrar o sensor de acordo com seus requisitos.
A sensibilidade da cor pode variar de módulo para módulo e a luz ambiente pode alterar drasticamente a sensibilidade da cor.

Todos os sensores TCS3200 têm alguma variação durante a fabricação, você deve medir os parâmetros de cor do sensor que possui atualmente, de modo que esses parâmetros possam ser usados ​​no código para detectar a cor com mais precisão.

Para calibrar e otimizar as leituras de seu sensor, siga estas etapas precisamente:

Etapa 1: Carregue o código a seguir com a configuração de hardware concluída.

//-----Program Developed by R.GIRISH-----// const int Red_relay = 9 const int Green_relay = 10 const int Blue_relay = 11 const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int var = 25 int red = 0 int green = 0 int blue = 0 int state = LOW int state1 = LOW int state2 = HIGH //-----------Enter Values--------// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //----------------------------// void setup() { Serial.begin(9600) pinMode(Red_relay, OUTPUT) pinMode(Green_relay, OUTPUT) pinMode(Blue_relay, OUTPUT) digitalWrite(Red_relay, LOW) digitalWrite(Green_relay, LOW) digitalWrite(Blue_relay, LOW) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() { int redH1 = Rx1 + var int redL1 = Rx1 - var int redH2 = Rx2 + var int redL2 = Rx2 - var int redH3 = Rx3 + var int redL3 = Rx3 - var int blueH1 = Bx1 + var int blueL1 = Bx1 - var int blueH2 = Bx2 + var int blueL2 = Bx2 - var int blueH3 = Bx3 + var int blueL3 = Bx3 - var int greenH1 = Gx1 + var int greenL1 = Gx1 - var int greenH2 = Gx2 + var int greenL2 = Gx2 - var int greenH3 = Gx3 + var int greenL3 = Gx3 - var //-----Sensing RED colour-----// digitalWrite(s2, state1) digitalWrite(s3, state1) red = pulseIn(out, state) delay(100) //------Sensing Green colour----// digitalWrite(s2, state2) digitalWrite(s3, state2) green = pulseIn(out, state) delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) blue = pulseIn(out, state) delay(400) if(red = redL1) { if(green = greenL1) { if(blue = blueL1) { Serial.println('Detected Colour: RED') Serial.println('') digitalWrite(Red_relay, HIGH) delay(1000) } } } if(red = redL2) { if(green = greenL2) { if(blue = blueL2) { Serial.println('Detected Colour: Green') Serial.println('') digitalWrite(Green_relay, HIGH) delay(1000) } } } if(red = redL3) { if(green = greenL3) { if(blue = blueL3) { Serial.println('Detected Colour: Blue') Serial.println('') digitalWrite(Blue_relay, HIGH) delay(1000) } } } } //------Program Developed by R.GIRISH--------//

Etapa 2: Abra o monitor serial, você encontrará os parâmetros de cor como este:

Traga o objeto colorido (de preferência papel colorido) vermelho, azul e verde.

Etapa 3:

• Coloque o papel de cor vermelha perto do sensor TCS3200.
• Anote as leituras R, G, B (todas as três cores) enquanto coloca o papel de cor vermelha.
• Da mesma forma, anote as leituras R, G, B para papéis de cor verde e azul.

• NOTA: ao colocar qualquer uma das 3 cores na frente do TCS3200, anote todas as leituras de vermelho, azul e verde para cada papel de cor, que você precisa inserir no programa de detecção de cores principal.

Etapa 4: Leia a Etapa 5 e carregue o código abaixo principal (programa de detecção de cores)

//-- -- -- -- Enter Values-- -- --// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //-- -- -- -- -- -- -- -- -- -- -- //

Etapa 5: No código acima, substitua os valores pelos valores que você anotou recentemente:

//--------Program Developed by R.GIRISH-------// const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int frequency1 = 0 int frequency2 = 0 int frequency3 = 0 int state = LOW int state1 = LOW int state2 = HIGH void setup() { Serial.begin(9600) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() ') delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) frequency3 = pulseIn(out, state) Serial.print(' Blue = ') Serial.println(frequency3) delay(100) Serial.println('-----------------------------') delay(400) //---------Program Developed by R.GIRISH---------//

Quando você colocou o papel de cor vermelha no sensor, você teria obtido três leituras, por exemplo R = 56 | G = 78 | B = 38.

Coloque os valores 56, 78, 38 assim:

// Para cor vermelha:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Da mesma forma, para outras duas cores e carregue o código.

Passo 6:

• Abra o monitor serial e coloque qualquer uma das três cores na frente do sensor.
• Você verá a detecção de cores no monitor serial simultaneamente quando o relé de cor correspondente for ativado.

• Você pressionou o botão reset na placa Arduino para desativar o relé.

NOTA 1: O circuito pode não detectar as cores, se você colocar tonalidades / matizes ligeiramente diferentes do objeto / papel das cores VERMELHO, VERDE, AZUL, após a calibração. Em outras palavras, você deve usar exatamente o mesmo objeto / papel colorido para detectar cores e acionar o relé.

NOTA 2: A luz ambiente pode afetar a detecção de cores, portanto, mantenha uma luz consistente perto do sensor durante a calibração e também durante a detecção de cores.

Protótipo do autor:

Protótipo do sensor de cores Arduino

Se você tiver alguma dúvida sobre este projeto, por favor, expresse na seção de comentários, você pode receber uma resposta rápida.




Anterior: Usando Sensores TSOP17XX com Freqüências Personalizadas Próximo: Circuito de carregador de bateria múltipla usando capacitor de despejo