- Thành phần bắt buộc
- Cách tạo khung cho Cánh tay robot phân loại màu
- Cảm biến màu TCS3200
- Sơ đồ mạch phân loại màu Arduino
- Lập trình Arduino Uno để phân loại các quả bóng nhiều màu sắc
Như tên cho thấy, phân loại màu sắc chỉ đơn giản là sắp xếp các thứ theo màu sắc của chúng. Có thể dễ dàng thực hiện bằng cách nhìn thấy nó nhưng khi có quá nhiều thứ cần được sắp xếp và nó là một công việc lặp đi lặp lại thì máy phân loại màu tự động rất hữu ích. Các máy này có cảm biến màu sắc để cảm nhận màu sắc của bất kỳ vật thể nào và sau khi phát hiện mô tơ servo màu, lấy vật đó và đặt nó vào hộp tương ứng. Chúng có thể được sử dụng trong các lĩnh vực ứng dụng khác nhau, nơi việc xác định màu sắc, phân biệt màu sắc và phân loại màu sắc là rất quan trọng. Một số lĩnh vực ứng dụng bao gồm Công nghiệp Nông nghiệp (Phân loại ngũ cốc trên cơ sở màu sắc), Công nghiệp Thực phẩm, Công nghiệp khai khoáng và kim cương, Tái chế, v.v. Các ứng dụng này không giới hạn và có thể được áp dụng thêm cho các ngành khác nhau.
Cảm biến phổ biến nhất để phát hiện màu sắc là cảm biến màu TCS3200. Trước đây, chúng tôi đã sử dụng cảm biến TCS3200 với Arduino để lấy thành phần RGB (Đỏ, Xanh lục, Xanh lam) của bất kỳ màu nào và cũng giao tiếp nó với Raspberry Pi để phát hiện màu của bất kỳ đối tượng nào.
Ở đây trong hướng dẫn này, chúng tôi sẽ tạo một máy phân loại màu sử dụng cảm biến màu TCS3200, một số động cơ servo và bảng Arduino. Hướng dẫn này sẽ bao gồm việc phân loại các quả bóng màu và giữ chúng trong hộp màu tương ứng. Hộp sẽ ở vị trí cố định và động cơ servo sẽ được sử dụng để di chuyển tay máy phân loại để giữ bóng trong hộp liên quan.
Thành phần bắt buộc
- Arduino UNO
- Cảm biến màu TCS3200
- Động cơ Servo
- Người nhảy
- Breadboard
Cách tạo khung cho Cánh tay robot phân loại màu
Để thiết lập hoàn chỉnh bao gồm khung, cánh tay, con lăn, tấm đệm, chúng tôi đã sử dụng tấm Sunboard màu trắng có độ dày 2mm. Nó dễ dàng có sẵn trong các cửa hàng văn phòng phẩm. Chúng tôi đã sử dụng máy cắt giấy để cắt Tấm Sunboard và FlexKwik hoặc FeviKwik để ghép các phần khác nhau.
Dưới đây là một số bước xây dựng Cánh tay phân loại màu:
1) Lấy tấm Sunboard.
2) Cắt tấm ván che nắng thành nhiều mảnh sau khi đo tất cả các cạnh bằng tỷ lệ và điểm đánh dấu như trong hình.
3) Bây giờ giữ hai miếng ván phơi nắng lại với nhau và đổ một giọt FeviKwik lên đó để dán các miếng lại với nhau. Tiếp tục nối các mảnh bằng cách làm theo hình.
4) Sau khi ghép tất cả các mảnh lại với nhau, máy phân loại màu này sẽ trông giống như sau:
Cảm biến màu TCS3200
TCS3200 là cảm biến màu có thể phát hiện bất kỳ số lượng màu nào với lập trình phù hợp. TCS3200 chứa các mảng RGB (Đỏ xanh lục). Như trong hình ở cấp độ hiển vi, người ta có thể nhìn thấy các hộp vuông bên trong mắt trên cảm biến. Các hộp vuông này là các mảng của ma trận RGB. Mỗi hộp này chứa ba cảm biến, một để cảm nhận cường độ ánh sáng ĐỎ, một để cảm nhận cường độ ánh sáng XANH và cảm biến cuối cùng để cảm nhận cường độ ánh sáng XANH.
Mỗi mảng cảm biến trong ba mảng này được chọn riêng biệt tùy thuộc vào yêu cầu. Do đó nó được gọi là cảm biến có thể lập trình. Mô-đun có thể được đặc trưng để cảm nhận màu cụ thể và để lại các màu khác. Nó chứa các bộ lọc cho mục đích lựa chọn đó. Có một chế độ thứ tư được gọi là 'chế độ không có bộ lọc' trong đó cảm biến phát hiện ánh sáng trắng.
Sơ đồ mạch phân loại màu Arduino
Sơ đồ mạch cho Arduino Color Sorter này khá dễ tạo và không yêu cầu nhiều kết nối. Sơ đồ được đưa ra dưới đây.
Đây là mạch điện đằng sau việc thiết lập máy phân loại màu:
Lập trình Arduino Uno để phân loại các quả bóng nhiều màu sắc
Lập trình Arduino UNO khá đơn giản và đòi hỏi một logic đơn giản để đơn giản hóa các bước liên quan đến phân loại màu. Chương trình hoàn chỉnh với một Video trình diễn được đưa ra ở cuối.
Vì động cơ servo được sử dụng, nên thư viện servo là một phần thiết yếu của chương trình. Ở đây chúng tôi đang sử dụng hai động cơ servo. Các servo đầu tiên sẽ di chuyển các quả bóng màu từ vị trí ban đầu đến vị trí máy dò TCS3200 và sau đó di chuyển đến vị trí sắp xếp nơi bóng sẽ bị loại bỏ. Sau khi di chuyển đến vị trí sắp xếp, servo thứ hai sẽ thả quả bóng bằng cánh tay của nó vào nhóm màu mong muốn. Xem toàn bộ hoạt động trong Video được cung cấp ở cuối.
Bước đầu tiên sẽ là bao gồm tất cả thư viện và xác định các biến servo.
#include
Cảm biến màu TCS3200 có thể hoạt động mà không cần thư viện vì chỉ cần tần số đọc từ chân cảm biến để quyết định màu sắc. Vì vậy, chỉ cần xác định số pin của TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequency = 0; int color = 0;
Đặt các chân đã chọn làm đầu ra vì điều này sẽ làm cho điốt quang màu cao hoặc thấp và lấy chân Ra của TCS3200 làm đầu vào. Chân OUT sẽ cung cấp tần số. Chọn tỷ lệ tần suất là 20% ban đầu.
pinMode (S0, OUTPUT); pinMode (S1, OUTPUT); pinMode (S2, OUTPUT); pinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Các động cơ servo được kết nối tại Pin 9 và 10 của Arduino. Các đón servo mà sẽ đón các quả bóng màu được kết nối tại Pin 9 và thả servo mà sẽ thả các quả bóng màu theo màu sắc được kết nối tại Pin10.
pickServo.attach (9); dropServo.attach (10);
Ban đầu, mô tơ servo chọn được đặt ở vị trí ban đầu, trong trường hợp này là 115 độ. Nó có thể khác nhau và có thể được tùy chỉnh cho phù hợp. Động cơ di chuyển sau một thời gian trễ đến vùng dò và chờ phát hiện.
pickServo.write (115); chậm trễ (600); for (int i = 115; i> 65; i-- ) { pickServo.write (i); chậm trễ (2); } delay (500);
TCS 3200 đọc màu và cung cấp tần số từ Chân ra.
màu = detectorColor (); chậm trễ (1000);
Tùy thuộc vào màu sắc được phát hiện, động cơ servo thả sẽ di chuyển theo một góc cụ thể và thả quả cầu màu vào hộp tương ứng của nó.
switch (màu) { case 1: dropServo.write (50); phá vỡ; trường hợp 2: dropServo.write (80); phá vỡ; trường hợp 3: dropServo.write (110); phá vỡ; trường hợp 4: dropServo.write (140); phá vỡ; trường hợp 5: dropServo.write (170); phá vỡ; trường hợp 0: break; } delay (500);
Động cơ servo quay trở lại vị trí ban đầu để lấy bóng tiếp theo.
for (int i = 65; i> 29; i-- ) { pickServo.write (i); chậm trễ (2); } delay (300); for (int i = 29; i <115; i ++) { pickServo.write (i); trì hoãn (2); }
Hàm DetColor () được sử dụng để đo tần số và so sánh tần số màu để đưa ra kết luận về màu sắc. Kết quả được in trên màn hình nối tiếp. Sau đó, nó trả về giá trị màu cho các trường hợp di chuyển góc thả động cơ servo.
int detectorColor () {
Việc ghi tới S2 và S3 (LOW, LOW) sẽ kích hoạt các điốt quang màu đỏ để thực hiện các phép đọc cho mật độ màu đỏ.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); tần số = xungIn (sensorOut, LOW); int R = tần số; Serial.print ("Red ="); Serial.print (frequency); // in tần số màu ĐỎ Serial.print (""); chậm trễ (50);
Việc ghi tới S2 và S3 (LOW, HIGH) sẽ kích hoạt các điốt quang màu xanh lam để đo mật độ màu xanh lam.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); tần số = xungIn (sensorOut, LOW); int B = tần số; Serial.print ("Blue ="); Serial.print (tần số); Serial.println ("");
Việc ghi tới S2 và S3 (CAO, CAO) sẽ kích hoạt các điốt quang màu xanh lục để thực hiện các phép đọc cho mật độ màu xanh lục.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Đọc tần số đầu ra tần số = xungIn (sensorOut, LOW); int G = tần số; Serial.print ("Green ="); Serial.print (tần số); Serial.print (""); chậm trễ (50);
Sau đó, các giá trị được so sánh để đưa ra quyết định về màu sắc. Các số đọc khác nhau đối với các thiết lập thử nghiệm khác nhau vì khoảng cách phát hiện khác nhau đối với mọi người khi thiết lập.
if (R <22 & R> 20 & G <29 & G> 27) { color = 1; // Red Serial.print ("Màu được phát hiện là ="); Serial.println ("ĐỎ"); } if (G <25 & G> 22 & B <22 & B> 19) { color = 2; // Orange Serial.println ("Cam"); } if (R <21 & R> 20 & G <28 & G> 25) { color = 3; // Green Serial.print ("Màu được phát hiện là ="); Serial.println ("XANH"); } if (R <38 & R> 24 & G <44 & G> 30) { color = 4; // Màu vàng Serial.print ("Màu được phát hiện là ="); Serial.println ("VÀNG"); } if (G <29 & G> 27 & B <22 & B> 19) { color = 5; // Blue Serial.print ("Màu được phát hiện là ="); Serial.println ("BLUE"); } trả lại màu sắc; }
Điều này hoàn thành máy phân loại màu sử dụng TCS3200 và Arduino UNO. Bạn cũng có thể lập trình nó để phát hiện nhiều màu hơn nếu cần. Nếu bạn có bất kỳ nghi ngờ hoặc có bất kỳ đề xuất nào thì hãy viết cho diễn đàn của chúng tôi hoặc bình luận bên dưới. Cũng kiểm tra video dưới đây.