Phát hiện màu sử dụng đèn LED RGB: 4 bước
Phát hiện màu sử dụng đèn LED RGB: 4 bước
Anonim

Bạn đã bao giờ muốn một cách tự động để phát hiện màu sắc của một vật thể chưa? Bằng cách chiếu ánh sáng có màu nhất định lên vật thể và xem lượng ánh sáng bị phản xạ trở lại, bạn có thể biết vật đó có màu gì. Ví dụ, nếu bạn chiếu đèn đỏ vào một vật màu đỏ, thì ánh sáng đó sẽ bị phản xạ trở lại. Nếu bạn chiếu ánh sáng xanh vào một vật màu đỏ, vật đó sẽ hấp thụ một phần ánh sáng đó và ít ánh sáng bị phản xạ trở lại.

Bước 1: Các bộ phận cần thiết

Tôi đã sử dụng Vi điều khiển PIC 16F887, nhưng hầu như bất kỳ vi điều khiển nào có khả năng điều chế độ rộng xung sẽ hoạt động. 1 LED RGB1 Vi điều khiển1 LED đỏ tiêu chuẩn1 Điện trở 1k ohm 1 Điện trở quang (thay đổi điện trở tùy thuộc vào lượng ánh sáng chiếu vào nó) Một số dây dẫn Tôi chỉ cần bộ vi điều khiển và LED RGB để có nhiều bộ dò màu, nhưng nếu bạn chỉ muốn một mạch phát hiện một màu, bạn không cần vi điều khiển - bạn chỉ cần đèn LED sáng có màu bạn muốn phát hiện. Đèn LED màu đỏ tiêu chuẩn là "đèn LED báo hiệu" - nó sáng lên khi phát hiện đúng màu.

Bước 2: Xây dựng mạch

Sơ đồ khá đơn giản và ở dạng tổng quát, được hiển thị bên dưới. Đèn LED RGB được cấp nguồn bên ngoài bởi tín hiệu PWM. Tôi đặt băng điện xung quanh điện trở quang để ánh sáng xung quanh không lọt vào - chỉ ánh sáng ngay phía trên nó mới được phát hiện.

Bước 3: Mã

Mã này được viết cho Microchip PIC 16F887, nhưng hy vọng bạn có thể hiểu được ý tưởng chung. Tôi đã sử dụng chiết áp tích hợp trên bảng phát triển của mình để thay đổi phổ màu của đèn LED RGB (và nó không đi qua toàn bộ quang phổ vì tôi không có 3 mô-đun PWM, nhưng nó đủ tốt). #include #include #include "delay.c" #include #include #use delay (clock = 4000000) #FUSES INTRC, NOWDT, NOPUT, NOMCLR, NOPROTECT, NOCPD, NOBROWNOUT, NOIESO, NOFCMEN, NOLVP # byte CCP1CON = 0x17 # byte CCP2CON = 0x1D # byte PWM1CON = 0x9Bint value = 128; int p1 = 0; int p2 = 0; void my_setup_ccp1 (int8 value) {output_low (PIN_C2); CCP1CON = value; PWM1CON = 0;} void my_setup_ccp2 (int8 value) {output_low (PIN_C1); CCP2CON = value;} // =================================== void main () {// A4 = nguồn điện cho photodiodeoutput_high (PIN_A4); output_high (PIN_B1); setup_adc (ADC_CLOCK_INTERNAL); set_adc_channel (0); setup_adc_ports (sAN0); // Timer / Interrupt setupenable_interrupts (INT1M) my_setup_ccp2 (CCP_PWM); setup_timer_2 (T2_DIV_BY_1, 128, 1); // setup_compare (2, COMPARE_PWM | COMPARE_TIMER2); while (1) {// Ngăn PIC chuyển sang chế độ ngủ.//SET PWM DUTY CYCLE output_high (PIN_A5); // Chân A3 là kết nối điốt quang if (input (PIN_A3) == 1) output_high (PIN_A4); else output_low (PIN_A4); // Đọc giá trị của chiết áp để đổi màu LED value = read_adc (); switch (value) {case 0: p1 = value; output_low (PIN_C0); p2 = giá trị; nghỉ; trường hợp 50: p1 = value; output_high (PIN_C0); p2 = giá trị; nghỉ; case 100: p1 = value; output_high (PIN_C0); p2 = giá trị; nghỉ; case 150: output_high (PIN_C0); p1 = 50; p2 = giá trị; nghỉ; case 200: output_low (PIN_C0); p1 = 0; p2 = giá trị; nghỉ; trường hợp 250: p1 = 0; p2 = giá trị; output_low (PIN_C0); nghỉ; } p1 = giá trị; p2 = 128 - p1; set_pwm1_duty (p1); set_pwm2_duty (p2);}}

Bước 4: Ứng dụng

Một máy dò màu đơn giản như thế này có thể được sử dụng trong chế tạo người máy hoặc cho các dự án thú vị như phân tách các Legos theo màu sắc, phân loại M & Ms hoặc như một biện pháp hỗ trợ cho bệnh mù màu. Hy vọng rằng tài liệu hướng dẫn này hữu ích trong việc nâng cao một dự án mà bạn đã nghĩ đến!:) Đèn LED tốt cho rất nhiều thứ….