Projetos de circuito eletrônicoSensores e detectoresCircuito detector de cores com código Arduino

Circuito detector de cores com código Arduino

Relacionados

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

Detecção de cor por TCS3200

Se você não leu o artigo anterior, leia-o, onde discutimos os conceitos básicos de detecção de cores usando o TCS3200

O projeto proposto pode ser útil, se você quiser que um circuito aja baseado 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 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 manter o código do programa simples, estamos nos concentrando apenas nas cores primárias.

Diagrama de circuito:

INTERFACEANDO O SENSOR DE CORES ARDUINO E TCS3200

O esquema acima é para interfacear o sensor de cores Arduino e TCS3200.

Conexões do relé:

CONEXÕES DE RELÉ O SENSOR DE COR ARDUINO E TCS3200

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

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

Isso conclui o hardware.

Agora vamos ver como fazer upload do código e calibrar o sensor para suas necessidades.
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ê tem que medir os parâmetros de cor do sensor que você possui atualmente, para que esses parâmetros possam ser usados ​​no código para detectar a cor com mais precisão.

Para calibrar e otimizar as leituras do seu sensor, siga precisamente os passos:

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

//--------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()
{
//-----Sensing RED colour-----//
digitalWrite(s2, state1);
digitalWrite(s3, state1);
frequency1 = pulseIn(out, state);
Serial.print("RED = ");
Serial.print(frequency1);
Serial.print(" |");
delay(100);
//------Sensing Green colour----//
digitalWrite(s2, state2);
digitalWrite(s3, state2);
frequency2 = pulseIn(out, state);
Serial.print(" Green = ");
Serial.print(frequency2);
Serial.print(" |");
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---------//

Passo 2: Abra o monitor serial, você encontrará os parâmetros de cor assim:

IMG 62464DE3E798A

Traga o objeto de cor (papel colorido é preferível) vermelho, azul e verde.

Etapa 3:

• Coloque o papel vermelho próximo ao sensor TCS3200.
• Anote as leituras R, G, B (todas as três cores) enquanto coloca o papel vermelho.
• Da mesma forma, anote a leitura R, G, B para papéis de cor verde e azul.

• NOTA: quando você 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 principal de detecção de cores.

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

//-----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 <= redH1 && red >= redL1)
{
if(green <= greenH1 && green >= greenL1)
{
if(blue <= blueH1 && blue >= blueL1)
{
Serial.println("Detected Colour: RED");
Serial.println("");
digitalWrite(Red_relay, HIGH);
delay(1000);
}
}
}
if(red <= redH2 && red >= redL2)
{
if(green <= greenH2 && green >= greenL2)
{
if(blue <= blueH2 && blue >= blueL2)
{
Serial.println("Detected Colour: Green");
Serial.println("");
digitalWrite(Green_relay, HIGH);
delay(1000);
}
}
}
if(red <= redH3 && red >= redL3)
{
if(green <= greenH3 && green >= greenL3)
{
if(blue <= blueH3 && blue >= blueL3)
{
Serial.println("Detected Colour: Blue");
Serial.println("");
digitalWrite(Blue_relay, HIGH);
delay(1000);
}
}
}
}
//------Program Developed by R.GIRISH--------//

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

//-- -- -- -- 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;
//-- -- -- -- -- -- -- -- -- -- -- //

Ao colocar o papel vermelho no sensor, você teria três leituras, por exemplo R = 56 | G = 78 | B = 38.

Coloque os valores 56, 78, 38 assim:

//Para a cor VERMELHA:
int Rx1 = 56;
int Gx1 = 78;
int Bx1 = 38;

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

Etapa 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, o relé de cor correspondente é ativado.

IMG 62464DE41AB45

• Você tem pressionado o botão de reset na placa Arduino para desativar o relé.

NOTA 1: O circuito pode não detectar as cores, se você colocar um tom/tonalidade ligeiramente diferente do objeto/papel de cor VERMELHA, VERDE, AZUL, após a calibração. Em outras palavras, você precisa usar o objeto/papel exatamente da mesma cor 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 DE SENSOR DE COR 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.

Hashtags: #Circuito #detector #cores #código #Arduino
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc…
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados

Relacionados