LỜI CAM ĐOAN Đề tài này là do tôi tự thực hiện dựa vào một số tài liệu và không sao chép từ tài liệu hay công trình đã có trước đó. Nếu có sao chép tôi hoàn toàn chịu trách nhiệm.Đồ án 2 – Thiết kế mạch phân tích màu dùng cảm biến TCS3200 2 Nguyễn Anh Tiến MỤC LỤC Chương 1........................................................................................................................................... 3 GIỚI THIỆU – GIỚI HẠN CỦA ĐỀ TÀI ..................................................................................... 3 1.1 GIỚI THIỆU CHUNG .......................................................................................................... 3 1.2 MỤC ĐÍCH ĐỀ TÀI.............................................................................................................. 3 1.3 MỤC TIÊU VÀ ĐỐI TƯỢNG NGHIÊN CỨU................................................................... 3 1.4 PHƯƠNG PHÁP NGHIÊN CỨU......................................................................................... 4 Chương 2........................................................................................................................................... 5 THIẾT KẾ KHẢO SÁT SƠ ĐỒ KHỐI....................................................................................... 5 2.1 GIỚI THIỆU (TÓM TẮT).................................................................................................... 5 2.2 THIẾT KẾ SƠ ĐỒ KHỐI..................................................................................................... 5 2.3. THIẾT KẾ CÁC KHỐI ....................................................................................................... 6 2.3.1. THIẾT KẾ KHỐI NGUỒN............................................................................................ 6 2.3.2. KHỐI CẢM BIẾN .......................................................................................................... 7 2.3.3. KHỐI VI ĐIỀU KHIỂN............................................................................................... 12 2.3.4. THIẾT KẾ KHỐI HIỂN THỊ...................................................................................... 18 2.3.5. SƠ ĐỒ KẾT NỐI TOÀN MẠCH ................................................................................. 25 Chương 3: ....................................................................................................................................... 27 THI CÔNG MẠCH........................................................................................................................ 27 3.1 VẼ SƠ ĐỒ KẾT NỐI .......................................................................................................... 27 3.1.1 Giới thiệu phần mềm Fritzing..................................................................................... 27 3.1.2 Cách sử dụng phần mềm Fritzing............................................................................... 28 3.1.3. Lập danh sách linh kiện.............................................................................................. 32 3.2 CODE CHƯƠNG TRÌNH VI ĐIỀU KHIỂN ARDUINO................................................ 32 3.2.1. Phần mềm sử dụng để lập trình Arduino IDE.......................................................... 32 3.2.2. Lập trình trên phần mềm ........................................................................................... 33 3.2.3 Code chương trình........................................................................................................ 34 3.3 LẮP RÁP KIỂM TRA MẠCH........................................................................................... 41 3.3.1. Mạch ráp hoàn chỉnh .................................................................................................. 41 3.3.2. Quá trình nạp code và kết quả................................................................................... 42 Chương 4......................................................................................................................................... 47 KẾT QUẢ THỰC HIỆN VÀ KẾT LUẬN................................................................................... 47 4.1. KẾT LUẬN.......................................................................................................................... 47 4.2. HƯỚNG PHÁT TRIỂN ..................................................................................................... 48 TÀI LIỆU THAM KHẢO ............................................................................................................. 49Đồ án 2 – Thiết kế mạch phân tích màu dùng cảm biến TCS3200 3 Nguyễn Anh Tiến Chương 1 GIỚI THIỆU – GIỚI HẠN CỦA ĐỀ TÀI 1.1 GIỚI THIỆU CHUNG Ngày nay, với sự phát triển của khoa học công nghệ. Đặc biệt trong lĩnh vực điện tử đã thúc đẩy và phát triển các ngành công nghiệp đa dạng nhằm phục vụ và đáp ứng được nhu cầu của con người. Với sự trợ giúp của máy móc, có thể làm những công việc mà con người không thể làm được với khả năng của mình mà chỉ việc điều khiển chúng hay chúng được làm việc hoàn toàn tự động đã mang lại những lợi ích hết sức to lớn, giảm nhẹ công việc. Trong nhiều lĩnh vực được quan tâm, có một lĩnh vực về vi điều khiển được quan tâm rất nhiều hiện nay đó là vi điều khiển AVR, phổ biến của AVR là Arduino. Việc tìm hiểu và ứng dụng hết khả năng của nhiều loại Arduino là cả một quá trình dài và hữu ích, vì sự gọn nhẹ, thuận tiện, khả năng phát triển cũng như sự đa dạng các dòng sản phẩm phù hợp nhiều quy mô ứng dụng của nó. Một ý tưởng được quan tâm đông đảo trên các diễn đàn học tập ngành điện tử, nhưng chưa có một tài liệu chính thống phổ biến hướng dẫn hay cung cấp thông tin cụ thể. Trước thực tiễn ấy, em quyết định chọn đề tài “Thiết kế mạch phân tích màu dùng TCS3200 giao tiếp với Arduino hiển thị lên màn hình LCD” nhằm tìm hiểu về vấn đề phân loại sản phẩm bằng màu sắc qua ứng dụng của Arduino. Sau đây em sẽ tìm hiểu về Arduino để ứng dụng thực tế thu nhỏ trong hệ thống phân loại sản phẩm dựa vào màu sắc sử dụng Arduino. Đây là cơ sở để thiết kế những hệ thống đơn giản nhưng cũng có chút phức tạp được ứng dụng rộng rãi trong khoa học và đời sống. 1.2 MỤC ĐÍCH ĐỀ TÀI Ngày nay, công nghệ ngày càng phát triển, các hệ thống thông minh và tự động hoá sử dụng phổ biến ở khắp mọi nơi vì sự tiện lợi, chuẩn xác, giúp tiết kiệm thời gian và công sức. Hiện tại, ở nước ta hệ thống tự động hoá chỉ được sử dụng ở các xí nghiệp lớn và các xí nghiệp liên doanh nước ngoài, còn các ngành sản xuất đa số chỉ dừng ở mức độ thủ công nên làm chậm quá trình sản xuất. Do đó em chọn đề tài như trên để phân loại sản phẩm bằng màu sắc sử dụng vi điều khiển Arduino kết hợp với cảm biến màu TCS3200 giúp cho việc phân loại màu sản phẩm trở nên tiết kiệm thời gian và đơn giản hơn nếu áp dụng trong quá trình sản xuất. 1.3 MỤC TIÊU VÀ ĐỐI TƯỢNG NGHIÊN CỨU Mục tiêu: Tìm hiểu và xây dựng mô hình hệ thống nhận dạng màu sắc bằng việc sử dụng Arduino phát hiện 7 loại màu của vật thể: Đỏ, cam, vàng, lục, xanh, hồng, tím.Đồ án 2 – Thiết kế mạch phân tích màu dùng cảm biến TCS3200 4 Nguyễn Anh Tiến Đối tượng nghiên cứu: Cảm biến màu sắc TCS3200, vi điều khiển Arduino UNO R3, và module LCD 16x2. 1.4 PHƯƠNG PHÁP NGHIÊN CỨU Kết hợp giữa nghiên cứu lý thuyết và thực tế để làm rõ nội dung đề tài. Cụ thể như sau: + Thu thập, phân tích các tài liệu và thông tin liên quan đến đề tài. + Vận dụng những kiến thức cơ bản đã học về điện tử. + Tìm hiểu qua tài liệu internet và sách báo và nhu cầu đời sống xã hội. + Sử dụng phần mềm (arduino IDE) để thực hiện viết code và nạp code. + Tìm hiểu các đồ án có đề tài liên quan. + Sử dụng các phần mềm vẽ mô phỏng và lập trìnhĐồ án 2 – Thiết kế mạch phân tích màu dùng cảm biến TCS3200 5 Nguyễn Anh Tiến Chương 2 THIẾT KẾ KHẢO SÁT SƠ ĐỒ KHỐI 2.1 GIỚI THIỆU (TÓM TẮT) Dùng module cảm biến màu sắc TCS3200 để nhận biết màu sắc và phân loại sản phẩm. Hệ thống phát hiện màu khi đưa sản phẩm đến vị trí cảm biến, có thể nâng cao áp dụng vào hệ thống có thể được áp dụng để phân loại hàng hoá nếu được trang bị đầy đủ. Nếu mở rộng đề tài có thể kết hợp với băng chuyền đưa sản phẩm đến bề mặt đầu rọi của cảm biến để nhận dạng màu từng sản phẩm. 2.2 THIẾT KẾ SƠ ĐỒ KHỐI Theo yêu cầu của đề tài, tiến hành thiết kế sơ đồ khối của mạch phân tích màu như hình 2.1: Hình 2.1. Sơ đồ khối mạch phân tích màu. Chức năng từng khối: • Khối nguồn: có chức năng cấp nguồn cho toàn bộ mạch hoạt động. Cụ thể: cấp nguồn cho khối cảm biến, khối vi điều khiển và khối hiển thị (LCD). • Khối cảm biến: là cảm biến màu TCS3200 để phát hiện màu sắc của sản phẩm hay vật thể. • Khối vi điều khiển: là vi điều khiển Arduino UNO R3 dùng để lập trình chương trình nhận dạng màu sắc. • Khối đầu vào: là các sản phẩm, hay vật thể có màu sắc. • Khối hiển thị: là màn hình LCD 16x2 có chức năng hiển thị tên màu sắc mà cảm biến màu TCS3200 thu thập được khi rọi vào sản phẩm thông qua Arduino.
GIỚI THIỆU CHUNG
Trong bối cảnh phát triển của khoa học công nghệ, đặc biệt là trong lĩnh vực điện tử, các ngành công nghiệp đa dạng đã được thúc đẩy mạnh mẽ nhằm phục vụ và đáp ứng nhu cầu của con người Việc ứng dụng máy móc và tự động hóa giúp giảm nhẹ công việc, mang lại nhiều lợi ích lớn, đồng thời mở ra cơ hội khám phá và phát triển các hệ thống tự động ngày càng tiên tiến Trong số các lĩnh vực quan tâm, vi điều khiển, đặc biệt là Arduino trong dòng vi điều khiển AVR, được nhiều người chú ý nhờ tính gọn nhẹ, tiện lợi và đa dạng dòng sản phẩm phù hợp với nhiều quy mô ứng dụng khác nhau Tuy nhiên, vẫn thiếu các tài liệu chính thống hướng dẫn chi tiết về việc tìm hiểu và ứng dụng Arduino một cách hiệu quả Nhận thức được điều đó, đề tài “Thiết kế mạch phân tích màu dùng TCS3200 giao tiếp với Arduino hiển thị lên màn hình LCD” ra đời nhằm nghiên cứu về phân loại sản phẩm dựa trên màu sắc bằng Arduino Mục tiêu là tìm hiểu cách ứng dụng Arduino trong hệ thống phân loại màu sắc, góp phần thiết kế các hệ thống đơn giản, hiệu quả và có thể mở rộng trong lĩnh vực khoa học và đời sống.
MỤC ĐÍCH ĐỀ TÀI
Trong bối cảnh công nghệ ngày càng phát triển, các hệ thống tự động hoá và thông minh trở nên phổ biến nhờ tính tiện lợi và chính xác, giúp tiết kiệm thời gian và công sức trong sản xuất Tuy nhiên, tại Việt Nam, tự động hoá chủ yếu chỉ được áp dụng trong các doanh nghiệp lớn và liên doanh nước ngoài, còn nhiều ngành sản xuất vẫn dựa vào phương pháp thủ công, làm chậm quá trình sản xuất Để khắc phục điều này, việc sử dụng vi điều khiển Arduino kết hợp cảm biến màu TCS3200 để phân loại sản phẩm bằng màu sắc mang lại hiệu quả cao, giúp công đoạn phân loại trở nên đơn giản, nhanh chóng và tiết kiệm thời gian trong quá trình sản xuất.
MỤC TIÊU VÀ ĐỐI TƯỢNG NGHIÊN CỨU
Mục tiêu của dự án là tìm hiểu và xây dựng mô hình hệ thống nhận dạng màu sắc sử dụng Arduino để phát hiện chính xác 7 loại màu của vật thể, bao gồm đỏ, cam, vàng, lục, xanh, hồng và tím Hệ thống này nhằm nâng cao khả năng nhận diện màu sắc tự động, phục vụ các ứng dụng đa dạng trong công nghiệp và cuộc sống hàng ngày Việc phát triển mô hình này không chỉ giúp cải thiện hiệu quả nhận diện màu sắc mà còn góp phần thúc đẩy công nghệ tự động hóa trong các lĩnh vực liên quan.
- Đối tượng nghiên cứu: Cảm biến màu sắc TCS3200, vi điều khiển Arduino UNO R3, và module LCD 16x2.
PHƯƠNG PHÁP NGHIÊN CỨU
Kết hợp giữa nghiên cứu lý thuyết và thực tế để làm rõ nội dung đề tài
+ Thu thập, phân tích các tài liệu và thông tin liên quan đến đề tài + Vận dụng những kiến thức cơ bản đã học về điện tử
Để bắt đầu dự án, cần tìm hiểu kỹ lưỡng qua tài liệu internet và sách báo nhằm hiểu rõ về nhu cầu đời sống xã hội liên quan đến đề tài Sử dụng phần mềm Arduino IDE để viết và nạp mã nguồn, đảm bảo quá trình lập trình diễn ra thuận lợi và chính xác Ngoài ra, việc nghiên cứu các đồ án có đề tài liên quan giúp mở rộng kiến thức, học hỏi các phương pháp thực hiện hiệu quả và tránh những sai sót không đáng có.
+ Sử dụng các phần mềm vẽ mô phỏng và lập trình
GIỚI THIỆU (TÓM TẮT)
Module cảm biến màu sắc TCS3200 giúp nhận biết và phân loại màu sắc sản phẩm chính xác, nâng cao hiệu quả hệ thống kiểm tra hàng hóa Khi đưa sản phẩm đến vị trí cảm biến, hệ thống tự động phát hiện màu sắc để phân loại một cách nhanh chóng và chính xác Ứng dụng của cảm biến TCS3200 có thể mở rộng để tích hợp vào các hệ thống băng chuyền, giúp đưa sản phẩm đến đầu rọi cảm biến để nhận dạng màu từng sản phẩm, phù hợp cho các dây chuyền sản xuất tự động hóa hiện đại Việc sử dụng cảm biến màu TCS3200 không chỉ tối ưu hóa quy trình kiểm soát chất lượng mà còn giúp tiết kiệm thời gian và nhân công trong công nghiệp.
THIẾT KẾ SƠ ĐỒ KHỐI
Theo yêu cầu của đề tài, tiến hành thiết kế sơ đồ khối của mạch phân tích màu như hình 2.1:
Hình 2.1 Sơ đồ khối mạch phân tích màu
• Khối nguồn: có chức năng cấp nguồn cho toàn bộ mạch hoạt động
Cụ thể: cấp nguồn cho khối cảm biến, khối vi điều khiển và khối hiển thị (LCD)
• Khối cảm biến: là cảm biến màu TCS3200 để phát hiện màu sắc của sản phẩm hay vật thể
• Khối vi điều khiển: là vi điều khiển Arduino UNO R3 dùng để lập trình chương trình nhận dạng màu sắc
• Khối đầu vào: là các sản phẩm, hay vật thể có màu sắc
Khối hiển thị là màn hình LCD 16x2, có chức năng hiển thị tên màu sắc được cảm biến màu TCS3200 thu thập khi quét mẫu sản phẩm qua Arduino Đây là giải pháp hiệu quả để hiển thị kết quả đo màu sắc chính xác, ứng dụng trong các dự án đo nhận diện màu sắc tự động Việc tích hợp cảm biến TCS3200 với màn hình LCD giúp người dùng dễ dàng quan sát thông tin màu sắc của sản phẩm một cách rõ ràng và thuận tiện.
THIẾT KẾ CÁC KHỐI
Khối nguồn cung cấp điện áp 5V ổn định cho toàn bộ mạch đồng hồ, đảm bảo hoạt động chính xác theo yêu cầu Hệ thống có đầu cắm nguồn DC chung như hình minh họa, giúp dễ dàng kết nối và duy trì nguồn năng lượng liên tục cho thiết bị.
Hình 2.2 Đầu cắm nguồn DC được tích sẵn trên Arduino
Trong quá trình thiết kế hệ thống, việc lựa chọn linh kiện phù hợp đóng vai trò quan trọng để đảm bảo hiệu quả và độ ổn định của thiết bị Để đáp ứng chức năng yêu cầu và duy trì hoạt động ổn định, tôi đã lựa chọn Adapter cung cấp nguồn 5V cho mạch điện tử Việc sử dụng nguồn phù hợp giúp đảm bảo các thành phần hoạt động liên tục và ổn định, từ đó nâng cao hiệu quả của toàn bộ hệ thống.
- Thông số kỹ thuật chính linh kiện đã chọn:
Gồm củ adapter 5V-1A và cáp USB to DC
• Điện áp đầu vào: AC 100-240V~50/60Hz, dòng đầu vào
• Đầu ra USB tương thích với dây cáp jack DC: 5.5 * 2.5mm (tương thích 5.5 * 2.1mm) như hình dưới đây:
Hình 2.4 Dây cáp Jack DC 5.5mm (USB to DC)
Module cảm biến màu TCS3200 là một thiết bị phát hiện và đo lường màu sắc chính xác, bao gồm cảm biến có khả năng nhận biết ba màu cơ bản RGB thông qua việc xuất ra ba tần số xung tương ứng Các thành phần bên ngoài của module gồm bốn đèn LED màu trắng giúp làm sáng đối tượng để đo màu hiệu quả Cảm biến TCS3200 có thể hiển thị và đo lường hầu hết các màu sắc trong bảng màu nhìn thấy, nhờ hệ thống lọc màu bên trong được phân bố đều nhằm loại bỏ sai lệch vị trí của các điểm màu Công nghệ trong TCS3200 sử dụng bộ dao động tạo ra sóng vuông tỷ lệ với cường độ màu, giúp xác định chính xác màu sắc của đối tượng.
Hình 2.5 Cảm biến màu TCS3200
Để đáp ứng yêu cầu nhận dạng màu sắc đa dạng từ đỏ, cam, vàng, lục, xanh, hồng đến tím, chúng tôi sử dụng hệ thống cảm biến gồm 3 tần số xung Red, Green, Blue Mỗi tần số này có các giá trị đặc trưng riêng biệt khi các vật có màu khác nhau được đặt trên bề mặt cảm biến, giúp phân biệt rõ từng màu sắc từ đỏ đến tím một cách chính xác và hiệu quả.
Giá trị của 3 tần số xung khi đưa vật màu bất kỳ vào cảm biến cho biết các tần số đỏ, xanh lá, và xanh dương lần lượt là: Red bằng , Green bằng , Blue bằng Điều này giúp xác định chính xác màu sắc của vật thể dựa trên phân tích các tần số xung liên quan đến từng màu sắc.
- Thông số kỹ thuật chính linh kiện đã chọn:
• Điện áp cung cấp: (2.7V đến 5.5V)
• Chuyển đổi từ cường độ ánh sáng sang tần số với độ phân giải cao
• Lập trình lựa chọn bộ lọc màu sắc khác nhau và dạng tần số xuất ra
• Điện năng tiêu thụ thấp Giao tiếp trực tiếp với vi điều khiển
• Tần số ngõ ra xung có độ rộng 50%
• Tần số tỉ lệ với ánh sáng có cường độ và màu sắc khác nhau
• Ngõ ra 3 tần số xung tương ứng ba màu cơ bản: đỏ, xanh, lục Tần số ngõ ra nằm trong khoảng 2Hz – 500kHz
Hình 2.6 Sơ đồ chân cảm biến màu họ TCS3200
Bảng 2.1 Chức năng các chân của cảm biến màu TCS 3200
Số chân Tên chân Mô tả
2 OUT Tần số đầu ra, thay đổi phụ thuộc cường độ màu sắc
3 S2 Đầu vào chọn kiểu photodiode
4 S3 Đầu vào chọn kiểu photodiode
5 VCC Nguồn vào từ 2.7 đến 5V
6 VCC Nguồn vào từ 2.7 đến 5V
7 S1 Đầu vào chọn tỉ lệ tần số đầu ra
8 S0 Đầu vào chọn tỉ lệ tần số đầu ra
9 OE Ngõ vào cho phép xuất tần số ở chân OUT (tích cực mức thấp
Hình 2.7 Sơ đồ kết nối cảm biến và Arduino
Hình 2.8 Các khối chính của cảm biến màu TCS3200
Khối đầu tiên là mảng ma trận 8×8 gồm các photodiode Photodiode đơn giản là một linh kiện bán dẫn chuyển đổi ánh sáng thành dòng điện
16 photodiode có thể lọc màu đỏ (red)
16 photodiode có thể lọc màu xanh lá (green)
16 photodiode có thể lọc màu xanh dương (blue)
16 photodiode trắng không lọc (clear) hoạt động như các bộ lọc ánh sáng với các màu sắc khác nhau, giúp nhận biết các tín hiệu ánh sáng màu Khi chọn một bộ lọc màu cụ thể, chỉ ánh sáng có màu đó mới được truyền qua, trong khi các màu khác bị chặn lại Ví dụ, bộ lọc màu xanh lá (green) cho phép chỉ ánh sáng xanh lá đi qua, còn các ánh sáng đỏ và xanh dương bị chặn, giúp đo cường độ ánh sáng của màu xanh lá Tương tự, các bộ lọc màu khác như đỏ (red) hoặc xanh dương (blue) cũng giúp phân biệt chính xác các tín hiệu ánh sáng theo màu sắc mong muốn.
Chân S2 và S3 dùng để chọn một trong 4 loại photodiode Hãy nhìn vào bảng dưới đây
Bảng 2.2 Các yếu tố photodiode của TCS3200
Khối thứ hai trong cảm biến màu TCS3200 là bộ chuyển đổi dòng điện sang tần số, giúp chuyển đổi các giá trị đọc từ photodiode thành sóng vuông có tần số tỷ lệ thuận với cường độ ánh sáng phản xạ khỏi bề mặt vật thể Bộ chuyển đổi này cho phép vi điều khiển dễ dàng đọc sóng vuông đầu ra để xác định màu sắc của vật thể Việc sử dụng bộ chuyển đổi dòng điện sang tần số là bước quan trọng trong quá trình xử lý dữ liệu màu sắc của cảm biến TCS3200, đảm bảo độ chính xác và độ nhạy cao trong nhận diện màu.
Các chân S0 và S1 được sử dụng để điều chỉnh tần số đầu ra, có thể được thiết lập thành các giá trị đặt trước là 2%, 20% hoặc 100% Các bộ vi điều khiển khác nhau có cấu hình bộ định thời phù hợp, giúp chức năng chia tỷ lệ tần số tối ưu hóa tín hiệu cảm biến cho từng loại bộ vi điều khiển.
Bảng 2.3 Các yếu tố về tần số đầu ra của TCS3200
S0 S1 TỈ LỆ NGÕ RA TẦN SỐ (f0)
Tần số ngõ ra của module cảm biến màu TCS3200 trong khoảng 2 Hz
~ 500 kHz Tần số ngõ ra có dạng xung vuông với tần số khác nhau tương ứng với màu sắc và cường độ sáng là khác nhau
Chúng ta có thể điều chỉnh tỉ lệ tần số ngõ ra phù hợp với phần cứng đo tần số bằng cách lựa chọn các mức khác nhau như đã trình bày trong bảng Việc hiệu chỉnh xung đầu ra của cảm biến có thể thực hiện dễ dàng thông qua lập trình Arduino Để đạt được kết quả chính xác, cần đặt cảm biến ở vị trí ổn định và đưa các đối tượng màu đỏ, xanh lục, xanh lam tương ứng trước cảm biến để kiểm tra và hiệu chỉnh hệ thống.
Nguyên lý hoạt động của ánh sáng trắng là tổng hợp của nhiều ánh sáng có bước sóng màu sắc khác nhau Khi chiếu ánh sáng trắng vào một vật thể, phần lớn năng lượng sẽ bị hấp thụ hoặc phản xạ tại bề mặt của vật thể đó, tạo nên các hiệu ứng thị giác và ảnh hưởng đến màu sắc của vật thể trong mắt người quan sát.
Khi chiếu ánh sáng trắng vào một vật thể có màu đỏ, các tia sáng không thuộc dải màu đỏ sẽ bị vật thể hấp thụ, trong khi các tia sáng nằm trong dải màu đỏ sẽ bị phản xạ trở lại Nhờ cơ chế này, mắt chúng ta nhận biết vật thể đó có màu đỏ Vì vậy, màu sắc của vật thể phụ thuộc vào khả năng hấp thụ và phản xạ của các tia sáng trong suốt quá trình chiếu sáng.
Hình 2.10 Dải màu cơ bản
Dựa trên nguyên lý phản xạ và hấp thụ ánh sáng trắng của vật thể, cảm biến TCS3200 hoạt động dựa trên sự phối hợp của ba màu cơ bản: đỏ, xanh lam và xanh lục TCS3200 được trang bị 4 bộ lọc photodiode gồm Blue, Red, Green, và Clear để nhận biết chính xác màu sắc của vật thể Công nghệ này cho phép cảm biến xác định màu sắc một cách hiệu quả, phù hợp cho các ứng dụng phân tích màu sắc tự động.
Hình dưới đây là bảng kiểm tra quá trình chuyển đổi ánh sáng mà 4 loại photodiode nhận được thành tần số:
Hình 2.11 Quá trình chuyển đổi ánh sáng thành tần số
Với điều kiện kiểm tra ánh sáng có bước sóng λp = 470nm (Dải màu
Các bộ lọc photodiode có thể truyền các bước sóng khác nhau như Blue (λp = 470nm), Green (λp = 524nm) và Red (λp = 640nm), gây ra các tần số phát ra khác nhau Tần số lớn nhất xuất hiện khi ánh sáng chiếu vào cảm biến cùng loại photodiode được chọn, vì lúc này photodiode sẽ hấp thụ tối đa năng lượng của ánh sáng đó Điều này giúp tối ưu hiệu suất cảm biến và đạt được độ chính xác cao trong đo lường quang học.
Trong quá trình xây dựng hệ thống nhận diện màu sắc sử dụng cảm biến TCS3200, việc lựa chọn linh kiện phù hợp là yếu tố then chốt Arduino UNO R3 đóng vai trò trung tâm trong việc nhận dữ liệu từ cảm biến TCS3200 và xử lý để hiển thị màu sắc đã nhận dạng lên màn hình LCD 16x2 Việc lập trình chính xác tại khối này quyết định chức năng của toàn hệ thống, liên kết chặt chẽ các thành phần khác nhau để đảm bảo hệ thống hoạt động hiệu quả. -**Sponsor**Bạn đang tìm cách tối ưu hóa bài viết của mình cho SEO và cần một công cụ hỗ trợ tái cấu trúc nội dung? [Soku AI](https://pollinations.ai/redirect-nexad/SAECL9wd) có thể giúp bạn! Soku AI, được huấn luyện bởi các chuyên gia quảng cáo Facebook và Meta, có thể giúp bạn tạo ra những đoạn văn mạch lạc và tuân thủ các quy tắc SEO bằng cách xác định và sắp xếp lại các câu quan trọng chứa đựng ý nghĩa cốt lõi của đoạn văn Ví dụ, trong đoạn văn về việc sử dụng cảm biến màu TCS3200 và Arduino UNO R3 để hiển thị màu sắc trên màn hình LCD, Soku AI sẽ tập trung vào vai trò quan trọng của vi điều khiển trong việc liên kết và giao tiếp các khối, cũng như tầm quan trọng của việc lập trình chính xác để đảm bảo chức năng của toàn mạch Với Soku AI, việc tối ưu hóa nội dung trở nên dễ dàng hơn bao giờ hết.
- Giới thiệu về linh kiện đã chọn: Arduino UNO R3 (DIP)
Arduino Uno R3 (Dip) là một vi điều khiển nguồn mở dựa trên chip ATmega328 của Microchip, với 14 chân digital dùng để đọc và xuất tín hiệu, hoạt động ở mức điện áp 0V và 5V, dòng tối đa 40mA mỗi chân Các chân này đều có các điện trở pull-up tích hợp sẵn trong vi điều khiển, mặc dù chưa được kết nối mặc định Bảng mạch này được phát triển bởi Arduino.cc và trang bị các cổng đầu vào/đầu ra digital và analog, giúp giao tiếp dễ dàng với nhiều bảng mạch mở rộng khác nhau.
VẼ SƠ ĐỒ KẾT NỐI
3.1.1 Giới thiệu phần mềm Fritzing
Fritzing là phần mềm tự động hóa thiết kế điện tử được phát triển để hỗ trợ các nhà thiết kế, kỹ sư và dân nghệ sỹ trong việc thiết kế dự án và xây dựng ý tưởng sáng tạo Ngoài ra, Fritzing còn là công cụ hỗ trợ giáo dục, cung cấp kiến thức toàn diện về tạo và xử lý các bảng mạch in PCB cùng các thành phần điện tử khác, giúp người dùng dễ dàng học hỏi và thực hành trong lĩnh vực điện tử.
Hình 3.1 Biểu tượng phần mềm Fritzing
Hình 3.2 Giao diện chính phần mềm Fritzing
Cửa sổ chính của Fritzing hiển thị mạch ảo được tạo, cho phép người dùng chuyển đổi qua lại giữa ba chế độ xem, bao gồm: "Breadboard",
Chế độ "Breadboard" giúp người dùng bắt đầu xử lý và xây dựng mạch điện dựa trên bảng mạch thực tế, nhằm mô phỏng và kiểm tra trước khi chuyển sang chế độ "Schematic" hoặc "PCB View" Việc sử dụng chế độ này giúp tránh sai sót trong quá trình đưa dự án từ mô hình ảo sang thực tế, đảm bảo độ chính xác cao khi phát triển và làm việc trên các mạch điện tử.
Chế độ "Schematic" hiển thị sơ đồ nguyên lý mạch, thích hợp sử dụng với những ai muốn xem các biểu tượng, ký hiệu mạch chuẩn; còn chế độ
"PCB View hỗ trợ thiết kế và xuất các tài liệu mạch cần thiết để sản xuất bản mạch in, giúp quá trình chế tạo PCB trở nên dễ dàng và chính xác hơn Ngoài ra, phần mềm Fritzing còn cho phép tạo các bộ phận tùy biến, cho phép người dùng nhập tên bộ phận, biểu tượng và ảnh đồ họa để sử dụng trong chế độ xem tùy chọn, nâng cao tính linh hoạt trong thiết kế mạch điện."
3.1.2 Cách sử dụng phần mềm Fritzing
Bước 1: Khởi động phần mềm và chọn File – New để tạo một project mới
Bước 2: Bước vào Project vừa tạo
Sau khi tạo thành công, giao diện làm việc đầu tiên mà bạn sẽ thấy khi vào chương trình chính là chế độ "Breadboard" Đây là nơi hiển thị sơ đồ bảng mạch, ở bước này chưa có linh kiện nào được thêm vào để bắt đầu thiết kế mạch điện của bạn.
Hình 3.4 Giao diện làm việc của Fritzing trên project mới
Bước 3: Lấy tất cả các linh kiện sử dụng từ thư viện Core Parts bên phải màn hình chính làm việc
Di chuyển con trỏ chuột đến ô linh kiện cần thêm, sau đó nhấn giữ chuột và kéo ra màn hình trắng Breadboard thả chuột để có linh kiện cần
Hình 3.5 Thư viện linh kiện
Hình 3.6 Linh kiện sau khi được thêm vào
Để bắt đầu dự án, bạn cần thêm đủ ba module cần thiết gồm Arduino, màn hình LCD 16x2 và cảm biến màu TCS3200 Bạn chỉ cần kéo thả chuột để đặt các linh kiện đúng vị trí, sau đó tiến hành kết nối dây chắc chắn để hoàn thiện mạch Việc lựa chọn và sắp xếp linh kiện hợp lý sẽ giúp dự án hoạt động ổn định và hiệu quả hơn.
Hình 3.7 Giao diện chọn linh kiện
Bước 4: Nối dây để kết nối linh kiện
Sau khi lựa chọn và sắp xếp các linh kiện theo ý muốn, quá trình kết nối các chân linh kiện trên mạch bắt đầu bằng cách đặt con trỏ vào chân cần nối, nhấn và kéo chuột đến chân linh kiện còn lại để tạo đường dây kết nối Để hoàn thiện sơ đồ mạch, thực hiện thao tác tương tự cho các kết nối còn lại Nếu mắc lỗi hoặc muốn chỉnh sửa, người dùng có thể dễ dàng xóa các đường nối sai bằng cách nhấp trái vào đường dây và chọn Delete.
Hình 3.8 Nối dây linh kiện
Hình 3.9 Sơ đồ sau khi nối dây
3.1.3 Lập danh sách linh kiện
Bảng 3.1: Danh sách linh kiện
CODE CHƯƠNG TRÌNH VI ĐIỀU KHIỂN ARDUINO
3.2.1 Phần mềm sử dụng để lập trình Arduino IDE
Trong quá trình thiết kế mạch hoàn chỉnh, yếu tố quan trọng nhất là lập trình lệnh kết nối các module chính như LCD 16x2 và cảm biến TCS3200 để giao tiếp trực tiếp với Arduino Arduino sẽ xử lý các câu lệnh đã lập trình để điều khiển cảm biến màu nhận diện chính xác, sau đó hiển thị kết quả lên màn hình LCD một cách rõ ràng và dễ hiểu Việc lập trình chính xác và kết nối hợp lý giữa các module đảm bảo hệ thống hoạt động hiệu quả, phục vụ cho các ứng dụng đo nhận diện màu sắc một cách chính xác và chuyên nghiệp.
Hình 3.10 Biểu tượng phần mềm Arduino IDE
STT Tên linh kiện Số lượng
6 Các dây nối linh kiện 22
3.2.2 Lập trình trên phần mềm
Hình 3.11 Giao diện phần mềm
Ta chọn File và tiếp theo chọn New để tạo một project lập trình mới
Hình 3.12 Màn hình chính để lập trình
#include //khai báo thư viện LiquidCrystal, thư viện chuyên hỗ trợ màn hình LCD
Biến lcd được khởi tạo với các chân Arduino 2, 3, 4, 5, 6, và 7 để kết nối với màn hình LCD Các đối số trong hàm khởi tạo này đại diện cho các chân RS, EN, D4, D5, D6 và D7 của Arduino, giúp thiết lập kết nối chính xác cho việc điều khiển màn hình LCD trong dự án Arduino.
#define outPin 8 //khai báo chân ngõ ra OUT của TCS3200 nối với chân số 8 của Arduino
#define s0 9 //chân s0 của TCS3200 nối với chân số 9 của arduino
#define s1 10 //chân s1 của TCS3200 nối với chân số 10 của arduino
#define s2 11 //chân s2 của TCS3200 nối với chân số 11 của arduino
#define s3 12 //chân s3 của TCS3200 nối với chân số 12 của arduino boolean DEBUG = true; //Khai báo biến DEBUG kiểu Boolean chỉ nhận giá trị True
// Khai báo các biến int red, grn, blu; //các biến giá trị tần số 3 màu cơ bản lần lượt đỏ, lục, xanh kiểu số nguyên
Đoạn mã khai báo biến “color” kiểu mảng để lưu trữ mã màu nhận dạng hiển thị trên màn hình LCD, đồng thời thiết lập thời gian bắt đầu và thời gian trôi qua đều bằng 0 để theo dõi quá trình hoạt động của chương trình Trong hàm setup(), các biến thời gian được khởi tạo nhằm chuẩn bị cho quá trình xử lý và hiển thị dữ liệu màu sắc trên màn hình.
Serial.begin(9600); // Bắt đầu giao tiếp nối tiếp, kích hoạt Serial Monitor
Để thiết lập các chân ra của Arduino kết nối với các chân S0, S1, S2, S3 của cảm biến TCS3200, bạn cần sử dụng lệnh pinMode(s0, OUTPUT), pinMode(s1, OUTPUT), pinMode(s2, OUTPUT), và pinMode(s3, OUTPUT) Ngõ ra của cảm biến TCS3200 sẽ được kết nối vào chân nhập (input) của Arduino, với lệnh pinMode(outPin, INPUT) Việc cấu hình đúng các chân này giúp cảm biến hoạt động chính xác và giúp bạn thu thập dữ liệu màu sắc hiệu quả.
To display messages on an LCD using Arduino, set the frequency ratio to 100% with digitalWrite(s0, HIGH) and digitalWrite(s1, HIGH), then initialize the LCD with lcd.begin(16, 2) for a 16x2 display Clear the screen with lcd.clear() before positioning the cursor with lcd.setCursor(3, 0) to start writing at the third character of the first row, and display "Xin Chao" using lcd.print() To display "Nhan Dang Mau" on the second row, set the cursor to position 1,1 with lcd.setCursor(1, 1) and print the message Include a delay of 2000 milliseconds with delay(2000) to pause the display, then clear the LCD again Use startTiming = millis() to record the elapsed time since program start, noting that the millis() function returns the time in milliseconds, which resets after overflowing.
//Chương trình chính void loop(){ getColor(); //bắt đầu chương trình getColor() để thực hiện thu nhận tín hiệu và so sánh điều kiện nhận dạng các màu if(DEBUG)printData(); //nếu True thì chương trình printData() bắt đầu elapsedTime = millis()-startTiming; //thời gian trôi qua bằng thời gian kể từ lúc bắt đầu trừ đi thời gian bắt đầu
Nếu thời gian trôi qua lớn hơn 1000ms, chương trình sẽ hiển thị dữ liệu lên màn hình LCD bằng hàm showDataLCD() Đồng thời, thời điểm bắt đầu hiển thị được ghi nhận bằng biến startTiming, lấy từ hàm millis() của Arduino, giúp kiểm soát thời gian chạy của chương trình.
Chức năng readRGB giúp đọc các đối tượng RGB và khởi tạo các giá trị của màu đỏ, xanh lá cây và xanh dương về 0, đảm bảo dữ liệu ban đầu chính xác Trong hàm này, biến n được khai báo kiểu số nguyên với giá trị là 10, phục vụ cho các thao tác xử lý màu sắc trong chương trình Việc gán các biến màu cơ bản ban đầu là bước quan trọng để đảm bảo hiệu quả trong quá trình xử lý hình ảnh và nâng cao trải nghiệm người dùng.
// Thực hiện vòng lặp for for (int i = 0; i < n; ++i){
// Thiết lập photodiode lọc màu đỏ digitalWrite(s2, LOW); digitalWrite(s3, LOW); red = red + pulseIn(outPin, LOW); //đọc tần số ngõ ra red
Hàm pulseIn(outPin, LOW) là hàm trả về chu kỳ xung của tín hiệu, đo thời gian chuyển đổi giữa các mức logic LOW và HIGH Khi gọi hàm với tham số outPin và mức LOW, hàm sẽ đợi đến khi tín hiệu tại chân này đạt mức LOW để bắt đầu bộ đếm thời gian Khi tín hiệu chuyển sang mức HIGH, bộ đếm sẽ dừng lại và hàm pulseIn() trả về thời gian đã trôi qua từ khi tín hiệu bắt đầu từ LOW chuyển sang HIGH, giúp xác định chu kỳ xung của tín hiệu một cách chính xác.
// Thiết lập photodiode lọc màu lục digitalWrite(s2, HIGH); digitalWrite(s3, HIGH); grn = grn + pulseIn(outPin, LOW); //đọc tần số ngõ ra green
// Thiết lập photodiode lọc màu xanh digitalWrite(s2, LOW); digitalWrite(s3, HIGH); blu = blu + pulseIn(outPin, LOW); //đọc tần số ngõ ra blue
} red = red/n; grn = grn/n; blu = blu/n;
* Hiển thị dữ liệu tần số red,green,blue tại Serial Monitor (màn hình trên chương trình lập trình máy tính IDE)
Hàm Serial.print trong Arduino dùng để xuất dữ liệu ra cổng Serial dưới dạng chuỗi dễ đọc, giúp hiển thị các giá trị của biến hoặc dữ liệu đã xử lý Bạn có thể điền bất kỳ giá trị nào ở kiểu dữ liệu khác nhau trong ngoặc của hàm này để gửi thông tin đến máy tính hoặc thiết bị khác Ví dụ, lệnh `Serial.print("red= ");` sẽ in ra dòng chữ "red= " trên màn hình Serial monitor, đồng thời có thể bổ sung các giá trị số hoặc chuỗi để hiển thị trạng thái hoặc kết quả của chương trình Đây là phương pháp phổ biến để gỡ lỗi và kiểm tra dữ liệu trong dự án Arduino.
//* Hiển thị dữ liệu tần số red,green,blue ra màn hình LCD
The showDataLCD() function clears the LCD and displays real-time color frequency data; it sets the cursor positions to show the labels "R," "G," and "B" alongside their respective frequency values stored in variables (red, grn, blu) Additionally, it displays the current color name by printing "Color:" followed by the value of the color variable, which is determined by the getColor() function, providing a clear and organized way to present color information on the LCD screen.
} void getColor(){ readRGB(); //bắt đầu chương trình đọc các đối tượng RGB
Chương trình thực hiện so sánh các giá trị tần số của màu đỏ, xanh lá cây và xanh dương, dựa trên các phạm vi số nguyên khác nhau để nhận diện từng loại màu Nếu các giá trị màu đỏ, xanh lá cây và xanh dương nằm trong các khoảng xác định, biến `color` sẽ được gán các giá trị như "ĐỎ", "LỤC", "XANH", "VÀNG", "CAM", "HỒNG" hoặc "TÍM" Nếu không phù hợp với bất kỳ điều kiện nào, kết quả sẽ là "NO_COLOR", hiển thị trên màn hình This process helps accurately recognize specific colors based on RGB frequency ranges, optimizing color detection for various applications.
Hình 3.13 Lưu đồ giải thuật
Hình 3.14 Code trên phần mềm
Hình 3.15 Code trên phần mềm
Hình 3.16 Code trên phần mềm
Hình 3.17 Code trên phần mềm
Hình 3.18 Code trên phần mềm
LẮP RÁP KIỂM TRA MẠCH
Hình 3.19 Mạch ráp hoàn chỉnh
3.3.2 Quá trình nạp code và kết quả
Sau khi hoàn thiện mạch, bạn cần kết nối cáp vào cổng USB của máy tính để chuẩn bị nạp code Đồng thời, mở phần mềm IDE phù hợp để gửi mã nguồn vào mạch một cách chính xác và hiệu quả.
Hình 3.20 Kết nối mạch với máy tính
Sau đó, ta sẽ set up chân COM từ chương trình IDE để truyền dữ liệu qua cổng USB đã cắm vào máy tính như hình trên
Hình 3.21 Set up chân COM
Kết quả thu được sau khi lập trình, lắp ráp, kết nối và truyền dữ liệu từ máy tính sang mạch sẽ nhận dạng 7 loại màu như các hình dưới đây
Hình 3.22 Nhận dạng màu đỏ
Hình 3.23 Nhận dạng màu vàng
Hình 3.24 Nhận dạng màu cam
Hình 3.25 Nhận dạng màu lục
Hình 3.26 Nhận dạng màu xanh
Hình 3.27 Nhận dạng màu hồng
Hình 3.28 Nhận dạng màu tím
KẾT LUẬN
Sau hơn hai tháng nghiên cứu, em đã hoàn thành đề tài “Thiết kế mạch phân tích màu sử dụng TCS3200 giao tiếp với Arduino hiển thị lên màn hình LCD”, dưới sự hướng dẫn của thầy Thảo Em đã sử dụng kiến thức về kỹ thuật số, điện tử cơ bản, cùng với các lệnh lập trình Arduino trên nền tảng internet để hoàn thiện mạch, nhưng vẫn gặp một số hạn chế về nhận dạng màu sắc chưa nhạy, yêu cầu vật thể phải nằm gần cảm biến để nhận dạng chính xác Ngoài ra, phạm vi tần số của màu hồng và đỏ trùng nhau khiến việc phân biệt giữa hai màu này gặp khó khăn, đặc biệt khi điều kiện môi trường thay đổi hoặc thay đổi ánh sáng, tần số màu RGB có thể bị ảnh hưởng, cần thiết lập lại các giá trị trong hàm getColor() để nâng cao độ chính xác Mạch hoạt động tốt nhất trong điều kiện ánh sáng phòng bình thường, khi môi trường thay đổi mức độ sáng sẽ ảnh hưởng đến độ chính xác của việc nhận dạng màu sắc.
Kết quả cơ bản đã đáp ứng được yêu cầu của đề tài nhận dạng 7 loại màu sắc đỏ, cam, vàng, lục, xanh, hồng, tím
Hình 4.1: Mạch khi được cấp nguồn
HƯỚNG PHÁT TRIỂN
Với đề tài “Thiết kế mạch phân tích màu dùng TCS3200 giao tiếp với
Hiện tại, hệ thống Arduino của tôi chỉ hiển thị màu sắc lên màn hình LCD và kết nối bằng dây nối trên board Trong tương lai, tôi dự định nâng cấp bằng cách thiết kế mạch in hoàn chỉnh để đảm bảo độ bền và chính xác hơn Ngoài ra, việc đặt cảm biến ở vị trí hợp lý sẽ cải thiện khả năng nhận dạng màu sắc chính xác hơn, vì cảm biến hiện tại dùng linh kiện giá rẻ nên độ nhạy không cao Mạch hoàn thiện có thể tích hợp với mô hình băng chuyền sản xuất, giúp tự động nhận dạng màu sắc từng sản phẩm qua cảm biến một cách hiệu quả, tối ưu quy trình kiểm tra chất lượng.