วงจรตรวจจับสีพร้อมรหัส Arduino

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราจะสร้างวงจรที่สามารถตรวจจับสีและทริกเกอร์รีเลย์ที่กำหนดตามลำดับ โครงการนี้ทำได้โดยใช้เซ็นเซอร์สี TCS3200 และบอร์ด Arduino

การตรวจจับสีโดย TCS3200

หากคุณยังไม่ได้อ่านบทความก่อนหน้านี้โปรดอ่านบทความที่เราได้กล่าวถึง พื้นฐานของการตรวจจับสีโดยใช้ TCS3200



โครงการที่เสนออาจมีประโยชน์หากคุณต้องการให้วงจรดำเนินการตามสี มีมหาสมุทรของการใช้งานตามการตรวจจับสีในสาขาอุตสาหกรรมต่างๆ

โครงการนี้จะให้ข้อมูลเชิงลึกเกี่ยวกับวิธีที่เราสามารถตั้งโปรแกรมเซ็นเซอร์สีเพื่อตรวจจับสีที่แตกต่างกันและเรียกรีเลย์ได้



เราจะพิจารณาสีหลัก ได้แก่ แดงเขียวและน้ำเงินสำหรับโครงการนี้ โครงการนี้สามารถแยกความแตกต่างระหว่างสามสีนี้และเรียกรีเลย์แต่ละรีเลย์สำหรับแต่ละสี

TCS3200 สามารถตรวจจับสีจำนวนเท่าใดก็ได้ แต่เพื่อให้โครงการเข้าใจง่ายและเพื่อให้โค้ดของโปรแกรมง่ายขึ้นเราจึงมุ่งเน้นเฉพาะสีหลักเท่านั้น

แผนภูมิวงจรรวม:

การเชื่อมต่อเซ็นเซอร์สี Arduino และ TCS3200

แผนผังข้างต้นใช้สำหรับเชื่อมต่อเซ็นเซอร์สี Arduino และ TCS3200

การเชื่อมต่อรีเลย์:

รีเลย์เชื่อมต่อเซ็นเซอร์สี Arduino และ TCS3200

จ่ายไฟ Arduino ด้วยอะแดปเตอร์ 9V ที่มีอย่างน้อย 500mA ทรานซิสเตอร์ทำหน้าที่เป็นแอมพลิฟายเออร์สำหรับรีเลย์เนื่องจากพิน GPIO ของ Arduino ไม่สามารถให้กระแสเพียงพอในการถ่ายทอด

ไดโอด 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 สำหรับกระดาษสีเขียวและสีน้ำเงิน

•หมายเหตุ: เมื่อคุณวางสี 3 สีใด ๆ ไว้ด้านหน้า TCS3200 ให้จดการอ่านสีแดงสีน้ำเงินและสีเขียวทั้งหมดสำหรับกระดาษแต่ละสีซึ่งคุณต้องป้อนในโปรแกรมตรวจจับสีหลัก

ขั้นตอนที่ 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

ในทำนองเดียวกันสำหรับสองสีอื่น ๆ และอัปโหลดรหัส

ขั้นที่ 6:

•เปิดจอภาพอนุกรมและวางสีใดก็ได้ในสามสีที่ด้านหน้าของเซ็นเซอร์
•คุณจะเห็นการตรวจจับสีบนจอภาพอนุกรมพร้อมกันรีเลย์สีที่เกี่ยวข้องจะเปิดใช้งาน

•คุณได้กดปุ่มรีเซ็ตบนบอร์ด Arduino เพื่อปิดการใช้งานรีเลย์

หมายเหตุ 1: วงจรอาจตรวจไม่พบสีหากคุณวางวัตถุ / กระดาษสีแดงเขียวน้ำเงินที่แตกต่างกันเล็กน้อยหลังจากปรับเทียบ กล่าวอีกนัยหนึ่งคุณต้องใช้วัตถุ / กระดาษที่มีสีเดียวกันเพื่อตรวจจับสีและเรียกรีเลย์

หมายเหตุ 2: แสงโดยรอบอาจส่งผลต่อการตรวจจับสีดังนั้นโปรดรักษาแสงที่สม่ำเสมอไว้ใกล้เซ็นเซอร์ขณะปรับเทียบและขณะตรวจจับสี

ต้นแบบของผู้แต่ง:

ต้นแบบเซ็นเซอร์สี Arduino

หากคุณมีคำถามใด ๆ เกี่ยวกับโครงการนี้โปรดแสดงความคิดเห็นในส่วนความคิดเห็นคุณอาจได้รับคำตอบอย่างรวดเร็ว




ก่อนหน้านี้: การใช้เซนเซอร์ TSOP17XX กับความถี่ที่กำหนดเอง ถัดไป: วงจรชาร์จแบตเตอรี่หลายตัวโดยใช้ตัวเก็บประจุการถ่ายโอนข้อมูล