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

Domine a Detecção de Cores com Arduino e Sensores TCS230/TCS3200 – Guia Passo a Passo

Neste tutorial Arduino, aprenderemos a detectar cores usando Arduino e o Sensor de Cor TCS230 / TCS3200. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo para mais detalhes.

Como Funciona o Sensor de Cor TCS230 / TCS3200

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

Domine a Detecção de Cores com Arduino e Sensores TCS230/TCS3200 – Guia Passo a Passo

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 têm filtros vermelhos, outros 16 têm filtros verdes, outros 16 têm filtros azuis e os outros 16 fotodiodos são claros, sem filtros.

Domine a Detecção de Cores com Arduino e Sensores TCS230/TCS3200 – Guia Passo a Passo

Cada grupo de 16 fotodiodos é conectado em paralelo, então, usando os dois pinos de controle S2 e S3, podemos selecionar qual deles será lido. Por exemplo, se quisermos detectar cor vermelha, podemos apenas usar os 16 fotodiodos com filtro vermelho definindo os dois pinos para nível lógico baixo, de acordo com a tabela.

Domine a Detecção de Cores com Arduino e Sensores TCS230/TCS3200 – Guia Passo a Passo

O sensor tem mais dois pinos de controle, S0 e S1, que são usados para escalar a frequência de saída. A frequência pode ser escalada para três valores predefinidos diferentes: 100%, 20% ou 2%. Essa 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 conectar o sensor TCS230 à placa Arduino. Aqui está o esquema do circuito.

Domine a Detecção de Cores com Arduino e Sensores TCS230/TCS3200 – Guia Passo a Passo

Você pode obter os componentes necessários para este tutorial Arduino nos links abaixo:

  • Sensor de Cor TCS230 TCS3200
  • Placa Arduino
  • Protoboard e Jumpers

Código Fonte do Sensor de Cor TCS230

Descrição: Primeiro, precisamos definir os pinos aos quais o sensor está conectado e definir uma variável para ler a frequência. Na seção setup, 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, definirei como 20%, e iniciaremos a comunicação serial para exibir os resultados no Monitor Serial.

Na seção loop, começaremos lendo os fotodiodos com filtro vermelho. Para esse propósito, definiremos os dois pinos de controle S2 e S3 para nível lógico baixo. Em seguida, usando a função "pulseIn()", leremos a frequência de saída e a colocaremos 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; apenas precisamos ajustar os pinos de controle para a cor apropriada.

/* Tutorial Arduino Detecção de Cor
 * por 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);

  // Definindo escala de frequência para 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);

  Serial.begin(9600);
}

void loop() {
  // Configurando fotodiodos com filtro vermelho para leitura
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);

  // Lendo a frequência de saída
  frequency = pulseIn(sensorOut, LOW);

  // Imprimindo o valor no monitor serial
  Serial.print("R= "); // imprimindo nome
  Serial.print(frequency); // imprimindo frequência da cor VERMELHA
  Serial.print(" ");
  delay(100);

  // Configurando fotodiodos com filtro verde para leitura
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);

  frequency = pulseIn(sensorOut, LOW);

  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);

  // Configurando fotodiodos com filtro azul para leitura
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);

  frequency = pulseIn(sensorOut, LOW);

  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(100);
}

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

Domine a Detecção de Cores com Arduino e Sensores TCS230/TCS3200 – Guia Passo a Passo

Note aqui que os três valores diferem devido à diferente sensibilidade de cada tipo de fotodiodo, como visto no diagrama de responsividade espectral do fotodiodo do datasheet do sensor.

No entanto, agora vamos ver como os valores reagem quando trazemos diferentes cores 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.

Domine a Detecção de Cores com Arduino e Sensores TCS230/TCS3200 – Guia Passo a Passo

Agora, se quisermos representar as cores detectadas com o Modelo RGB, que tem valores de 0 a 255, usaremos a função map() para mapear ou converter as leituras para valores de 0 a 255.

// Re-mapeando o valor da frequência para o Modelo RGB de 0 a 255
frequency = map(frequency, 25, 70, 255, 0);

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

Aqui está o código fonte final para este exemplo:

/* Tutorial Arduino Detecção de Cor
 * por 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);

  // Definindo escala de frequência para 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);

  Serial.begin(9600);
}

void loop() {
  // Configurando fotodiodos com filtro vermelho para leitura
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);

  // Lendo a frequência de saída
  frequency = pulseIn(sensorOut, LOW);

  // Re-mapeando o valor da frequência para o Modelo RGB de 0 a 255
  frequency = map(frequency, 25, 72, 255, 0);

  // Imprimindo o valor no monitor serial
  Serial.print("R= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);

  // Configurando fotodiodos com filtro verde para leitura
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);

  frequency = pulseIn(sensorOut, LOW);

  // Re-mapeando o valor da frequência para o Modelo RGB de 0 a 255
  frequency = map(frequency, 30, 90, 255, 0);

  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);

  // Configurando fotodiodos com filtro azul para leitura
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);

  frequency = pulseIn(sensorOut, LOW);

  // Re-mapeando o valor da frequência para o Modelo RGB de 0 a 255
  frequency = map(frequency, 25, 70, 255, 0);

  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(100);
}

Note que as cores não são tão precisas, mas ainda são boas o suficiente para projetos simples. Como outro exemplo do sensor de cor TCS230, no meu próximo vídeo, aprenderemos a fazer uma Máquina Automática de Classificação de Cores com Arduino.

Domine a Detecção de Cores com Arduino e Sensores TCS230/TCS3200 – Guia Passo a Passo

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 Arduino.

Processo de manufatura

  1. Tutorial de Sensor de Luz no Raspberry Pi – Ligue um LDR e Leia Níveis de Luz com Python
  2. Crie uma Fechadura RFID Segura com Arduino – Guia Passo a Passo
  3. Sensor K30 CO₂: Monitoramento de Qualidade do Ar Interno em Tempo Real
  4. Construa um Estadiómetro Digital: Acompanhe a Altura com Arduino e Sensor a Laser
  5. Integrando Sensor de Impressão Digital Capacitivo DFRobot com Arduino ou ESP8266
  6. Construa uma Torre de Sensores com Arduino Cloud: Monitoramento de Temperatura, Movimento e Gás
  7. Misturador de Cores RGB com Arduino – Projeto DIY para Iniciantes
  8. Misturador de Cores RGB com Arduino – Tutorial Passo a Passo
  9. Ilumine o Ano Novo com Luzes LED Musicais Dinâmicas
  10. Tutorial Arduino Iniciante 01: Comece seu Primeiro Projeto