Mạch dò màu với mã Arduino

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Trong bài đăng này, chúng tôi sẽ xây dựng một mạch có thể phát hiện màu sắc và kích hoạt các rơle được chỉ định tương ứng. Dự án này được thực hiện bằng cách sử dụng cảm biến màu TCS3200 và bảng Arduino.

Cảm biến màu sắc bằng TCS3200

Nếu bạn chưa đọc bài viết trước, vui lòng xem qua bài viết mà chúng tôi đã thảo luận về cơ bản về cảm nhận màu sắc bằng TCS3200



Dự án được đề xuất có thể hữu ích, nếu bạn muốn một mạch thực hiện hành động dựa trên màu sắc. Có rất nhiều đại dương ứng dụng dựa trên phát hiện màu sắc trong các lĩnh vực công nghiệp khác nhau.

Dự án này sẽ cung cấp một cái nhìn sâu sắc về cách chúng tôi có thể lập trình cảm biến màu để phát hiện các màu khác nhau và kích hoạt các rơ le.



Chúng tôi sẽ xem xét các màu chính: ĐỎ, XANH LÁ và XANH LÁ cho dự án này. Dự án này có thể phân biệt giữa ba màu này và kích hoạt các rơ le, mỗi rơ le cho mỗi màu.

TCS3200 có thể phát hiện bất kỳ số lượng màu nào, nhưng để giữ cho dự án dễ hiểu và giữ cho mã chương trình đơn giản, chúng tôi chỉ tập trung vào các màu cơ bản.

Sơ đồ mạch:

giao tiếp cảm biến màu Arduino và TCS3200

Sơ đồ trên là để giao tiếp cảm biến màu Arduino và TCS3200.

Kết nối chuyển tiếp:

chuyển tiếp kết nối cảm biến màu Arduino và TCS3200

Cấp nguồn cho Arduino bằng bộ chuyển đổi 9V với ít nhất 500mA. Bóng bán dẫn hoạt động như bộ khuếch đại cho rơ le vì các chân GPIO của Arduino không thể cung cấp đủ dòng điện để chuyển tiếp.

Diode 1N4007 sẽ hấp thụ các xung điện áp cao từ cuộn dây rơ le, bảo vệ phần còn lại của các thành phần bán dẫn.

Điều đó kết luận phần cứng.

Bây giờ, hãy xem cách tải mã lên và hiệu chỉnh cảm biến theo yêu cầu của bạn.
Độ nhạy màu có thể khác nhau giữa các mô-đun và ánh sáng xung quanh có thể làm thay đổi đáng kể độ nhạy màu.

Tất cả các cảm biến TCS3200 đều có một số thay đổi trong khi chế tạo, bạn phải đo các thông số màu cho cảm biến mà bạn đang sở hữu, để các thông số đó có thể được sử dụng trong mã để phát hiện màu chính xác hơn.

Để hiệu chỉnh và tối ưu hóa số đọc cho cảm biến của bạn, hãy làm theo các bước chính xác:

Bước 1: Tải lên mã sau khi thiết lập phần cứng hoàn tất.

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

Bước 2: Mở màn hình nối tiếp, bạn sẽ thấy thông số màu sắc như sau:

Đưa vật màu (ưu tiên dùng giấy màu) đỏ, lam và lục.

Bước 3:

• Đặt tờ giấy màu đỏ gần với cảm biến TCS3200.
• Ghi lại các số đọc R, G, B (cả ba màu) trong khi bạn đặt tờ giấy màu đỏ.
• Tương tự, ghi chú lại cách đọc R, G, B cho các tờ giấy màu xanh lá cây và xanh lam.

• LƯU Ý: khi bạn đặt bất kỳ màu nào trong 3 màu phía trước TCS3200, hãy ghi lại tất cả các giá trị đọc màu đỏ, xanh lam và xanh lục cho mỗi giấy màu, mà bạn cần nhập vào chương trình phát hiện màu chính.

Bước 4: Đọc Bước 5 và tải lên mã chính bên dưới (chương trình phát hiện màu)

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

Bước 5: Trong đoạn mã trên, hãy thay thế các giá trị bằng các giá trị mà bạn đã ghi nhận gần đây:

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

Khi bạn đặt tờ giấy màu đỏ lên cảm biến, bạn sẽ có ba giá trị đọc, ví dụ R = 56 | G = 78 | B = 38.

Đặt các giá trị 56, 78, 38 như sau:

// Đối với màu ĐỎ:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Tương tự, đối với hai màu khác và tải lên mã.

Bước 6:

• Mở màn hình nối tiếp và đặt bất kỳ màu nào trong số ba màu trước cảm biến.
• Bạn sẽ thấy việc phát hiện màu sắc trên màn hình nối tiếp đồng thời với chuyển tiếp màu tương ứng được kích hoạt.

• Bạn đã nhấn nút đặt lại trên bảng Arduino để hủy kích hoạt rơle.

LƯU Ý 1: Mạch có thể không phát hiện ra màu sắc, nếu bạn đặt bóng / màu hơi khác nhau của vật / giấy có màu ĐỎ, XANH LÁ, XANH LÁ, sau khi hiệu chuẩn. Nói cách khác, bạn phải sử dụng vật / giấy có màu chính xác để phát hiện màu sắc và kích hoạt chuyển tiếp.

LƯU Ý 2: Ánh sáng xung quanh có thể ảnh hưởng đến việc phát hiện màu sắc, vì vậy hãy duy trì ánh sáng nhất quán gần cảm biến trong khi hiệu chỉnh và cả khi phát hiện màu sắc.

Nguyên mẫu của tác giả:

Nguyên mẫu cảm biến màu Arduino

Mọi thắc mắc liên quan đến dự án này vui lòng bày tỏ trong phần bình luận, có thể sẽ nhận được hồi đáp nhanh chóng.




Trước: Sử dụng cảm biến TSOP17XX với tần suất tùy chỉnh Tiếp theo: Mạch sạc nhiều pin sử dụng Tụ điện