Arduino 코드를 사용한 색상 검출기 회로

문제를 제거하기 위해 도구를 사용해보십시오





이 게시물에서는 색상을 감지하고 할당 된 각 릴레이를 트리거 할 수있는 회로를 구성 할 것입니다. 이 프로젝트는 TCS3200 컬러 센서와 Arduino 보드를 사용하여 수행됩니다.

TCS3200에 의한 색상 감지

이전 기사를 읽지 않았다면 우리가 논의한 곳에서 TCS3200을 사용한 색상 감지의 기본



회로가 색상에 따라 조치를 취하도록하려는 경우 제안 된 프로젝트가 유용 할 수 있습니다. 다양한 산업 분야에서 색상 감지를 기반으로 한 응용 분야가 있습니다.

이 프로젝트는 다양한 색상을 감지하고 릴레이를 트리거하도록 색상 센서를 프로그래밍하는 방법에 대한 통찰력을 제공합니다.



이 프로젝트에서는 기본 색상 인 RED, GREEN 및 BLUE를 고려할 것입니다. 이 프로젝트는이 세 가지 색상을 구분하고 각 색상에 대한 릴레이, 릴레이를 트리거 할 수 있습니다.

TCS3200은 여러 색상을 감지 할 수 있지만 프로젝트를 이해하기 쉽게 유지하고 프로그램 코드를 단순하게 유지하기 위해 기본 색상에만 집중하고 있습니다.

회로도 :

Arduino 및 TCS3200 컬러 센서 인터페이스

위의 회로도는 Arduino 및 TCS3200 컬러 센서를 인터페이스하기위한 것입니다.

릴레이 연결 :

Arduino 및 TCS3200 컬러 센서의 릴레이 연결

최소 500mA의 9V 어댑터로 Arduino에 전원을 공급하십시오. Arduino의 GPIO 핀은 릴레이에 충분한 전류를 제공 할 수 없기 때문에 트랜지스터는 릴레이 용 증폭기 역할을합니다.

다이오드 1N4007은 릴레이 코일의 고전압 스파이크를 흡수하여 나머지 반도체 구성 요소를 보호합니다.

이것으로 하드웨어를 마칩니다.

이제 코드를 업로드하고 요구 사항에 맞게 센서를 보정하는 방법을 살펴 보겠습니다.
색상 감도는 모듈마다 다를 수 있으며 주변 광은 색상 감도를 크게 변경할 수 있습니다.

모든 TCS3200 센서는 제작하는 동안 약간의 차이가 있으므로 현재 소유하고있는 센서의 색상 매개 변수를 측정해야 코드에서 해당 매개 변수를 사용하여 색상을 더 정확하게 감지 할 수 있습니다.

센서 판독 값을 교정하고 최적화하려면 다음 단계를 정확하게 따르십시오.

1 단계 : 하드웨어 설정이 완료된 다음 코드를 업로드합니다.

//-----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 = redL1) { if(green = greenL1) { if(blue = blueL1) { Serial.println('Detected Colour: RED') Serial.println('') digitalWrite(Red_relay, HIGH) delay(1000) } } } if(red = redL2) { if(green = greenL2) { if(blue = blueL2) { Serial.println('Detected Colour: Green') Serial.println('') digitalWrite(Green_relay, HIGH) delay(1000) } } } if(red = redL3) { if(green = greenL3) { if(blue = blueL3) { Serial.println('Detected Colour: Blue') Serial.println('') digitalWrite(Blue_relay, HIGH) delay(1000) } } } } //------Program Developed by R.GIRISH--------//

2 단계 : 직렬 모니터를 열면 다음과 같은 색상 매개 변수를 찾을 수 있습니다.

색상 개체 (색지가 선호 됨)를 빨간색, 파란색 및 녹색으로 가져옵니다.

3 단계 :

• TCS3200 센서 가까이에 붉은 색 종이를 놓습니다.
• 빨간색 용지를 놓는 동안 R, G, B 판독 값 (세 가지 색상 모두)을 기록해 둡니다.
• 마찬가지로 녹색 및 파란색 용지에 대한 R, G, B 판독 값을 기록해 둡니다.

• 참고 : TCS3200 앞에 3 가지 색상 중 하나를 배치 할 때 기본 색상 감지 프로그램에 입력해야하는 각 컬러 용지에 대한 모든 빨간색, 파란색 및 녹색 판독 값을 기록해 둡니다.

4 단계 : 5 단계를 읽고 아래 기본 코드 (색상 감지 프로그램)를 업로드합니다.

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

5 단계 : 위 코드에서 값을 최근에 적어 둔 값으로 바꿉니다.

//--------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() ') 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---------//

센서에 붉은 색 종이를 놓으면 세 번의 판독 값을 얻게됩니다. 예를 들어 R = 56 | G = 78 | B = 38.

값 56, 78, 38을 다음과 같이 배치하십시오.

// 빨간색의 경우 :
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

마찬가지로 다른 두 색상의 경우 코드를 업로드하십시오.

Step6 :

• 직렬 모니터를 열고 센서 앞에 세 가지 색상 중 하나를 놓습니다.
• 해당 컬러 릴레이가 활성화되는 동시에 직렬 모니터에서 컬러 감지를 볼 수 있습니다.

• Arduino 보드의 리셋 버튼을 눌러 릴레이를 비활성화했습니다.

참고 1 : 보정 후 RED, GREEN, BLUE 색상의 물체 / 종이의 음영 / 색조가 약간 다른 경우 회로가 색상을 감지하지 못할 수 있습니다. 즉, 색상을 감지하고 릴레이를 트리거하려면 정확히 동일한 색상의 물체 / 용지를 사용해야합니다.

참고 2 : 주변 광은 색상 감지에 영향을 줄 수 있으므로 보정하는 동안 및 색상을 감지하는 동안 센서 근처에 일정한 빛을 유지하십시오.

저자의 프로토 타입 :

Arduino 컬러 센서 프로토 타입

이 프로젝트에 대한 질문이 있으시면 댓글란에 적어 주시면 빠른 답변을 받으실 수 있습니다.




Previous : 맞춤형 주파수로 TSOP17XX 센서 사용 다음 : 덤프 커패시터를 사용하는 다중 배터리 충전기 회로