- Componentes necessários
- Como fazer o chassi para braço robótico de classificação de cores
- TCS3200 Color Sensor
- Diagrama de circuito do classificador de cores do Arduino
- Programando Arduino Uno para classificar bolas coloridas
Como o nome sugere, a classificação por cores é simplesmente classificar as coisas de acordo com sua cor. Isso pode ser feito facilmente ao vê-lo, mas quando há muitas coisas a serem classificadas e é uma tarefa repetitiva, as máquinas de classificação automática de cores são muito úteis. Essas máquinas possuem sensor de cor para sentir a cor de qualquer objeto e após detectar o servo motor de cor agarre a coisa e coloque-a na respectiva caixa. Eles podem ser usados em diferentes áreas de aplicação onde a identificação de cores, distinção de cores e classificação de cores são importantes. Algumas das áreas de aplicação incluem a indústria agrícola (classificação de grãos com base na cor), a indústria alimentícia, a indústria de diamantes e mineração, a reciclagem, etc.
O sensor mais popular para detectar as cores é o sensor de cores TCS3200. Anteriormente, usamos o sensor TCS3200 com Arduino para obter o componente RGB (vermelho, verde, azul) de qualquer cor e também fizemos a interface com o Raspberry Pi para detectar a cor de qualquer objeto.
Aqui neste tutorial faremos uma máquina de classificação de cores usando um sensor de cores TCS3200, alguns servo motores e uma placa Arduino. Este tutorial incluirá a classificação das bolas coloridas e mantê-las na caixa de cor relevante. A caixa ficará na posição fixa e o servo motor será usado para mover a mão classificadora para manter a bola na caixa relevante.
Componentes necessários
- Arduino UNO
- TCS3200 Color Sensor
- Servo Motors
- Jumpers
- Tábua de pão
Como fazer o chassi para braço robótico de classificação de cores
Para fazer a montagem completa incluindo chassis, braço, rolo, almofada, utilizamos o Sunboard branco de 2mm de espessura. Ele está facilmente disponível nas lojas de papelaria. Usamos um cortador de papel para cortar a folha de Sunboard e FlexKwik ou FeviKwik para unir as diferentes partes.
Abaixo estão algumas etapas de construção do braço de classificação de cores:
1) Pegue a folha de Sunboard.
2) Corte a folha de sunboard em pedaços depois de medir todos os lados com escala e marcador como mostrado na figura.
3) Agora segure os dois pedaços de sunboard juntos e despeje uma gota de FeviKwik nele para colar os pedaços. Continue juntando as peças seguindo a figura.
4) Depois de juntar todas as peças, esta máquina de classificação de cores ficará mais ou menos assim:
TCS3200 Color Sensor
TCS3200 é um sensor de cores que pode detectar qualquer número de cores com a programação correta. TCS3200 contém matrizes RGB (Red Green Blue). Conforme mostrado na figura em nível microscópico, é possível ver as caixas quadradas dentro do olho no sensor. Essas caixas quadradas são matrizes de matriz RGB. Cada uma dessas caixas contém três sensores, um é para detectar a intensidade da luz VERMELHA, um para detectar a intensidade da luz VERDE e o último para detectar a intensidade da luz AZUL.
Cada uma das matrizes de sensores nessas três matrizes é selecionada separadamente, dependendo do requisito. Por isso é conhecido como sensor programável. O módulo pode ser caracterizado para detectar uma cor específica e deixar as outras. Ele contém filtros para essa finalidade de seleção. Existe um quarto modo denominado 'modo sem filtro', no qual o sensor detecta a luz branca.
Diagrama de circuito do classificador de cores do Arduino
O diagrama de circuito para este Arduino Color Sorter é muito fácil de fazer e não requer muitas conexões. O esquema é fornecido abaixo.
Este é o circuito por trás da configuração da máquina de classificação de cores:
Programando Arduino Uno para classificar bolas coloridas
A programação do Arduino UNO é muito simples e requer uma lógica simples para simplificar as etapas envolvidas na classificação de cores. O programa completo com um vídeo de demonstração é fornecido no final.
Visto que o servo motor é usado, a servo-biblioteca é parte essencial do programa. Aqui estamos usando dois servo motores. O primeiro servo irá mover as bolas coloridas da posição inicial para a posição do detector TCS3200 e então mover para a posição de classificação onde a bola será lançada. Depois de mover para a posição de classificação, o segundo servo irá soltar a bola usando seu braço para o balde da cor desejada. Veja o trabalho completo no Vídeo fornecido ao final.
O primeiro passo será toda a inclusão da biblioteca e definir as variáveis servo.
#incluir
O sensor de cores TCS3200 pode funcionar sem biblioteca, pois basta ler a frequência do pino do sensor para decidir a cor. Portanto, basta definir os números dos pinos do TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequencia = 0; cor int = 0;
Faça os pinos selecionados como saída, pois isso tornará o fotodiodo colorido alto ou baixo e tomará o pino de saída do TCS3200 como entrada. O pino OUT fornecerá a frequência. Selecione a escala de frequência como 20% inicialmente.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Os servo motores são conectados nos pinos 9 e 10 do Arduino. O servo pickup que pegará as bolas coloridas é conectado no pino 9 e o servo drop que irá soltar as bolas coloridas de acordo com a cor está conectado no Pin10.
pickServo.attach (9); dropServo.attach (10);
Inicialmente, o servo motor de seleção é definido na posição inicial que, neste caso, é de 115 graus. Pode ser diferente e pode ser personalizado de acordo. O motor se move após algum atraso para a região do detector e aguarda a detecção.
pickServo.write (115); atraso (600); para (int i = 115; i> 65; i--) { pickServo.write (i); atraso (2); } atraso (500);
O TCS 3200 lê a cor e fornece a frequência do pino de saída.
color = detectColor (); atraso (1000);
Dependendo da cor detectada, o servo motor de queda se move com um ângulo específico e solta a bola colorida em sua respectiva caixa.
switch (cor) { case 1: dropServo.write (50); pausa; caso 2: dropServo.write (80); pausa; caso 3: dropServo.write (110); pausa; caso 4: dropServo.write (140); pausa; caso 5: dropServo.write (170); pausa; caso 0: quebra; } atraso (500);
O servo motor retorna à posição inicial para a próxima bola pegar.
para (int i = 65; i> 29; i--) { pickServo.write (i); atraso (2); } atraso (300); para (int i = 29; i <115; i ++) { pickServo.write (i); atraso (2); }
A função detectColor () é usada para medir a frequência e compara a frequência da cor para fazer a conclusão da cor. O resultado é impresso no monitor serial. Em seguida, ele retorna o valor da cor para casos para mover o ângulo do servo motor de queda.
int detectColor () {
Escrever em S2 e S3 (LOW, LOW) ativa os fotodiodos vermelhos para fazer as leituras da densidade da cor vermelha.
digitalWrite (S2, BAIXO); digitalWrite (S3, LOW); frequência = pulseIn (sensorOut, LOW); int R = frequência; Serial.print ("Vermelho ="); Serial.print (frequência); // imprimindo frequência de cor VERMELHA Serial.print (""); atraso (50);
Escrever em S2 e S3 (BAIXO, ALTO) ativa os fotodiodos azuis para fazer as leituras da densidade da cor azul.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); frequência = pulseIn (sensorOut, LOW); int B = frequência; Serial.print ("Azul ="); Serial.print (frequência); Serial.println ("");
Escrever em S2 e S3 (HIGH, HIGH) ativa os fotodiodos verdes para fazer as leituras da densidade da cor verde.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Lendo a frequência de saída frequência = pulseIn (sensorOut, LOW); int G = frequência; Serial.print ("Verde ="); Serial.print (frequência); Serial.print (""); atraso (50);
Em seguida, os valores são comparados para tomar a decisão de cor. As leituras são diferentes para diferentes configurações experimentais, pois a distância de detecção varia para cada pessoa ao fazer a configuração.
if (R <22 & R> 20 & G <29 & G> 27) { cor = 1; // Vermelho Serial.print ("Cor detectada é ="); Serial.println ("RED"); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Orange"); } if (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Green Serial.print ("Detected Color is ="); Serial.println ("VERDE"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Amarelo Serial.print ("Cor detectada é ="); Serial.println ("AMARELO"); } if (G <29 & G> 27 & B <22 e B> 19) { cor = 5; // Blue Serial.print ("Detected Color is ="); Serial.println ("AZUL"); } cor de retorno; }
Isso termina a máquina de classificação de cores usando TCS3200 e Arduino UNO. Você também pode programá-lo para detectar mais cores, se necessário. Se você tiver alguma dúvida ou sugestão, escreva para o nosso fórum ou comente abaixo. Verifique também o vídeo abaixo.