이름에서 알 수 있듯이 색상 분류는 단순히 색상에 따라 사물을 분류하는 것입니다. 보기 만해도 쉽게 할 수 있지만 분류 할 것이 너무 많고 반복적 인 작업 일 때는 자동 색상 분류 기가 매우 유용합니다. 이 기계에는 물체의 색상을 감지하는 색상 센서가 있으며 색상 서보 모터를 감지 한 후 물체를 잡고 각 상자에 넣습니다. 색상 식별, 색상 구분 및 색상 분류가 중요한 다양한 응용 분야에서 사용할 수 있습니다. 일부 응용 분야에는 농업 산업 (색상 기준 곡물 분류), 식품 산업, 다이아몬드 및 광업 산업, 재활용 등이 포함됩니다. 응용 분야는 이에 국한되지 않고 다른 산업에 더 적용될 수 있습니다.
색상 감지에 가장 많이 사용되는 센서는 TCS3200 색상 센서 입니다. 우리는 이전에 Arduino와 함께 TCS3200 센서를 사용하여 모든 색상의 RGB 구성 요소 (빨간색, 녹색, 파란색)를 얻었으며 모든 물체의 색상을 감지하기 위해 Raspberry Pi와 인터페이스했습니다.
이 튜토리얼 에서는 컬러 센서 TCS3200, 일부 서보 모터 및 Arduino 보드를 사용하여 색상 정렬 기계를 만들 것 입니다. 이 튜토리얼은 컬러 볼을 분류하고 관련 컬러 박스에 보관하는 방법을 포함합니다. 상자는 고정 위치에 있고 서보 모터는 분류기 손을 움직여 공을 해당 상자에 보관하는 데 사용됩니다.
필요한 구성 요소
- Arduino UNO
- TCS3200 컬러 센서
- 서보 모터
- 점퍼
- 브레드 보드
색상 분류 로봇 암용 섀시를 만드는 방법
섀시, 암, 롤러, 패드를 포함한 완벽한 설정을 위해 2mm 두께 의 흰색 선 보드 를 사용했습니다. 문구점에서 쉽게 구할 수 있습니다. 우리는 종이 커터를 사용하여 Sunboard Sheet를 자르고 FlexKwik 또는 FeviKwik을 사용하여 다른 부품을 결합했습니다.
다음은 색상 정렬 암을 구축하는 몇 가지 단계입니다.
1) 선 보드 시트를 가져갑니다.
2) 그림과 같이 눈금과 마커로 모든면을 측정 한 후 썬 보드 시트를 조각으로 자릅니다.
3) 이제 선 보드 두 조각을 함께 잡고 FeviKwik 한 방울을 그 위에 부어 조각을 서로 붙입니다. 그림을 따라 조각을 계속 결합하십시오.
4) 모든 조각을 결합하면이 색상 분류 기계는 다음과 같이 보입니다.
TCS3200 컬러 센서
TCS3200은 올바른 프로그래밍으로 여러 색상을 감지 할 수 있는 컬러 센서 입니다. TCS3200에는 RGB (Red Green Blue) 어레이가 포함되어 있습니다. 현미경 수준의 그림에서 볼 수 있듯이 eye on sensor 내부의 사각형 상자를 볼 수 있습니다. 이 사각형 상자는 RGB 행렬의 배열입니다. 각 상자에는 3 개의 센서가 포함되어 있습니다. 하나는 RED 광도를 감지하기위한 것이고, 하나는 GREEN 광도를 감지하기위한 것이고, 다른 하나는 청색 광도를 감지하기위한 것입니다.
이 세 어레이의 각 센서 어레이는 요구 사항에 따라 개별적으로 선택됩니다. 따라서 프로그래밍 가능한 센서 로 알려져 있습니다. 모듈은 특정 색상을 감지하고 다른 색상을 남기는 기능을 제공 할 수 있습니다. 선택 목적을위한 필터가 포함되어 있습니다. 센서가 백색광을 감지하는 '필터 없음 모드' 라는 네 번째 모드가 있습니다.
Arduino 색상 분류기 회로도
이 Arduino Color Sorter의 회로도는 만들기가 매우 쉽고 연결이 많이 필요하지 않습니다. 회로도는 아래에 나와 있습니다.
다음은 색상 분류기의 설정 뒤에있는 회로입니다.
다채로운 공을 분류하기위한 Arduino Uno 프로그래밍
Arduino UNO 프로그래밍은 매우 간단하며 색상 정렬과 관련된 단계를 단순화하기 위해 간단한 논리가 필요합니다. 데모 비디오와 함께 완전한 프로그램 이 마지막에 제공됩니다.
서보 모터를 사용하기 때문에 서보 라이브러리는 프로그램의 필수 부분입니다. 여기에서는 두 개의 서보 모터를 사용합니다. 첫 번째 서보 는 컬러 볼을 초기 위치에서 TCS3200 검출기 위치로 이동 한 다음 볼이 떨어질 정렬 위치로 이동합니다. 정렬 위치로 이동 한 후 두 번째 서보 는 팔을 사용하여 원하는 색상 버킷에 공을 떨어 뜨립니다. 마지막에 주어진 비디오에서 전체 작업을 참조하십시오.
첫 번째 단계는 모든 라이브러리를 포함하고 서보 변수를 정의하는 것입니다.
#포함
TCS3200 컬러 센서는 색상을 결정하기 위해 센서 핀에서 주파수를 읽어야하기 때문에 라이브러리없이 작동 할 수 있습니다. 따라서 TCS3200의 핀 번호를 정의하십시오.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int color = 0;
컬러 포토 다이오드를 높거나 낮게 만들고 TCS3200의 Out 핀을 입력으로 가져 오므로 선택 핀을 출력 으로 만드십시오. OUT 핀은 주파수를 제공합니다. 처음에는 주파수 스케일링을 20 %로 선택합니다.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
서보 모터는 Arduino의 9 번 핀과 10 번 핀에 연결되어 있습니다. 픽업 서보 컬러 공은 핀 (9)에 연결되어 획득되고 드롭 서보 10 번 핀에 연결되어있는 색에 의한 색 공 떨어질 것이다.
pickServo.attach (9); dropServo.attach (10);
처음에 픽 서보 모터는이 경우 115 도인 초기 위치에 설정됩니다. 다를 수 있으며 그에 따라 사용자 지정할 수 있습니다. 모터는 약간의 지연 후에 검출기 영역으로 이동하고 검출을 기다립니다.
pickServo.write (115); 지연 (600); for (int i = 115; i> 65; i--) { pickServo.write (i); 지연 (2); } 지연 (500);
TCS 3200 색상을 읽고 출력 핀에서 주파수를 제공합니다.
색상 = detectColor (); 지연 (1000);
감지 된 색상에 따라 드롭 서보 모터가 특정 각도로 이동하고 색상 볼을 해당 상자에 떨어 뜨립니다.
스위치 (색상) { 사례 1: dropServo.write (50); 단절; 사례 2: dropServo.write (80); 단절; 사례 3: dropServo.write (110); 단절; 사례 4: dropServo.write (140); 단절; 사례 5: dropServo.write (170); 단절; 사례 0: 휴식; } 지연 (500);
서보 모터는 다음 볼을 선택하기 위해 초기 위치로 돌아갑니다.
for (int i = 65; i> 29; i--) { pickServo.write (i); 지연 (2); } 지연 (300); for (int i = 29; i <115; i ++) { pickServo.write (i); 지연 (2); }
detectColor () 함수 는 주파수를 측정하고 색상 주파수를 비교하여 색상의 결론을 내리는 데 사용됩니다. 결과는 직렬 모니터에 인쇄됩니다. 그런 다음 드롭 서보 모터 각도를 이동하는 경우의 색상 값을 반환합니다.
int detectColor () {
S2 및 S3 (LOW, LOW)에 쓰기는 빨간색 포토 다이오드 를 활성화하여 빨간색 농도를 판독합니다.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); 주파수 = pulseIn (sensorOut, LOW); int R = 주파수; Serial.print ("빨간색 ="); Serial.print (frequency); // printing RED 색상 주파수 Serial.print (""); 지연 (50);
S2 및 S3 (LOW, HIGH)에 쓰면 파란색 포토 다이오드 가 활성화되어 파란색 농도를 판독합니다.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); 주파수 = pulseIn (sensorOut, LOW); int B = 주파수; Serial.print ("파란색 ="); Serial.print (주파수); Serial.println ("");
S2 및 S3 (HIGH, HIGH)에 쓰면 녹색 포토 다이오드 가 활성화되어 녹색 농도를 판독합니다.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // 출력 주파수 읽기 주파수 = pulseIn (sensorOut, LOW); int G = 주파수; Serial.print ("Green ="); Serial.print (주파수); Serial.print (""); 지연 (50);
그런 다음 값을 비교하여 색상을 결정합니다. 설정을 할 때 감지 거리가 모든 사람에 따라 다르기 때문에 실험 설정에 따라 판독 값이 다릅니다.
if (R <22 & R> 20 & G <29 & G> 27) { 색상 = 1; // 빨간색 Serial.print ("색상 감지 ="); Serial.println ("RED"); } if (G <25 & G> 22 & B <22 & B> 19) { 색상 = 2; // 주황색 Serial.println ("Orange"); } if (R <21 & R> 20 & G <28 & G> 25) { 색상 = 3; // 녹색 Serial.print ("색상 감지 ="); Serial.println ("녹색"); } if (R <38 & R> 24 & G <44 & G> 30) { 색상 = 4; // 노란색 Serial.print ("색상 감지 ="); Serial.println ("YELLOW"); } if (G <29 & G> 27 & B <22 & B> 19) { 색상 = 5; // 파란색 Serial.print ("색상 감지 ="); Serial.println ("파란색"); } 반환 색상; }
이것으로 TCS3200 및 Arduino UNO를 사용 하는 색상 분류 기가 완료 됩니다. 필요한 경우 더 많은 색상을 감지하도록 프로그래밍 할 수도 있습니다. 의심이 가거나 제안 사항이 있으면 포럼에 글을 쓰거나 아래에 의견을 남겨주십시오. 또한 아래 주어진 비디오를 확인하십시오.