Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Tutorial de detecção de cores do Arduino – Sensor de cores TCS230 TCS3200


Neste tutorial do Arduino vamos aprender como detectar cores usando o Arduino e o sensor de cores TCS230 / TCS3200. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo para obter mais detalhes.

Como funciona o sensor de cor TCS230 / TCS3200


O TCS230 detecta a luz colorida com a ajuda de uma matriz 8 x 8 de fotodiodos. Em seguida, usando um conversor de corrente para frequência, as leituras dos fotodiodos são convertidas em uma onda quadrada com uma frequência diretamente proporcional à intensidade da luz. Finalmente, usando a placa Arduino podemos ler a saída de onda quadrada e obter os resultados para a cor.

Se olharmos mais de perto o sensor, podemos ver como ele detecta várias cores. Os fotodiodos têm três filtros de cores diferentes. Dezesseis deles possuem filtros vermelhos, outros 16 possuem filtros verdes, outros 16 possuem filtros azuis e os outros 16 fotodiodos são transparentes sem filtros.

Cada 16 fotodiodos são conectados em paralelo, então usando os dois pinos de controle S2 e S3 podemos selecionar qual deles será lido. Assim, por exemplo, se quisermos detectar a cor vermelha, podemos simplesmente usar os 16 fotodiodos filtrados em vermelho, definindo os dois pinos para nível lógico baixo de acordo com a tabela.

O sensor tem mais dois pinos de controle, S0 e S1, que são usados ​​para dimensionar a frequência de saída. A frequência pode ser dimensionada para três valores predefinidos diferentes de 100%, 20% ou 2%. Esta função de escala de frequência permite que a saída do sensor seja otimizada para vários contadores de frequência ou microcontroladores.

Agora estamos prontos para seguir em frente e conectar o sensor TCS230 à placa Arduino. Aqui está o esquema do circuito.

Você pode obter os componentes necessários para este tutorial do Arduino nos links abaixo:
  • TCS230 Sensor de cores TCS3200…….
  • Placa Arduino ………………………………
  • Breadboard e jump wires ……… 
  •  

Código-fonte do sensor de cores TCS230


Descrição: Primeiro precisamos definir os pinos aos quais o sensor está conectado e definir uma variável para leitura da frequência. Na seção de configuração, precisamos definir os quatro pinos de controle como saídas e a saída do sensor como uma entrada do Arduino. Aqui também precisamos definir a escala de frequência, para este exemplo vou definir para 20%, e iniciar a comunicação serial para exibir os resultados no Serial Monitor.

Na seção de loop, começaremos com a leitura dos fotodiodos filtrados em vermelho. Para isso, definiremos os dois pinos de controle S2 e S3 para nível lógico baixo. Em seguida, usando a função “pulseIn()” vamos ler a frequência de saída e colocá-la na variável “frequency”. Usando a função Serial.print(), imprimiremos o resultado no monitor serial. O mesmo procedimento vale para as outras duas cores, só precisamos ajustar os pinos de controle para a cor apropriada.
/*     Arduino Color Sensing Tutorial
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int frequency = 0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  
  // Setting frequency-scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  Serial.begin(9600);
}

void loop() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(100);
}Code language: Arduino (arduino)

Agora, se executarmos o Serial Monitor, começaremos a obter alguns valores. Esses valores dependem da escala de frequência selecionada, bem como da iluminação circundante.

Observe aqui que três valores diferem devido à sensibilidade diferente de cada tipo de fotodiodo, conforme visto no diagrama de responsividade espectral do fotodiodo da folha de dados do sensor.

No entanto, agora vamos ver como os valores reagem quando trazemos cores diferentes na frente do sensor. Por exemplo, se trouxermos a cor vermelha, o valor inicial cairá, no meu caso de cerca de 70 para cerca de 25.

Então agora se quisermos representar as cores detectadas com o Modelo RGB que possui valores de 0 a 255, usaremos a função map() para mapear ou converter as leituras para os valores de 0 a 255.
//Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,70,255,0);

O valor de 70 será mapeado para 0 e o valor de 25 para 255. O mesmo procedimento vale para as outras duas cores.

Aqui está o código-fonte final para este exemplo:
/*     Arduino Color Sensing Tutorial
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int frequency = 0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  
  // Setting frequency-scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  Serial.begin(9600);
}

void loop() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,72,255,0);
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 30,90,255,0);
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,70,255,0);
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(100);
}Code language: Arduino (arduino)

Observe que as cores não são muito precisas, mas ainda são boas o suficiente para projetos simples. Como outro exemplo do sensor de cores TCS230 no meu próximo vídeo, aprenderemos como fazer uma máquina de classificação automática de cores do Arduino.

Sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo e não se esqueça de conferir minha coleção de projetos do Arduino.

Processo de manufatura

  1. Sensor de luz Raspberry Pi:um tutorial LDR simples
  2. Tutorial de bloqueio RFID do Arduino
  3. Monitoramento de CO2 com Sensor K30
  4. Qual é sua altura?
  5. Sensor capacitivo de impressão digital com um Arduino ou ESP8266
  6. Arduino Cloud Sensor Tower
  7. Arduino RGB Color Mixer
  8. Arduino Color Mixer
  9. Cor musical
  10. Arduino Tutorial 01:Começando