Kênh Tên Miền chuyên cung cấp tên miền đẹp, giá rẻ! Hãy liên hệ kỹ thuật: 0914205579 - Kinh doanh: 0912191357 để được tư vấn, hướng dẫn miễn phí, Cảm ơn quý khách đã ủng hộ trong thời gian qua!
Sunday, February 16, 2014


Chào các bạn ! Hôm nay mình xin giới thiệu bài viết của mình về loại cảm biến này



Công dụng của loại cảm biến này : dùng để xác định màu sắc của 1 đối tượng  nào đó
Ứng dụng : dùng để phân loại sản phẩm hay đánh giá chất lượng thông qua màu sắc của sản phẩm ...
Giá thành của cảm biến này rất đắt tiền đặt biệt là đối với sinh viên nghèo khi làm đồ án về phân loại sản phẩm có màu sắc khác nhau. Vì vậy mình sẽ hướng dẫn chế tạo cảm biến này với giá thành dưới 10k


Nguyên lý hoạt động của nó cũng giống như cách thức mà mắt chúng ta có thể phân biệt được màu sắc của 1 vật nào đó , ví dụ như khi ta nhìn thấy 1 vật màu đỏ thì cái mà mắt chúng ta nhận được là ánh sáng có bước sóng đỏ bị phản xạ lại từ vật đó , vật đó đã hấp thụ toàn bộ sóng ánh của nguồn sáng mặt trời ngoại trừ ánh sáng đỏ

Hơi rừm rà một chút nên mình sẽ đi vào vấn đề chính luôn:
         Ở đây mình dùng 1 con quang trở LDR kết nối với 1 trở 22k ôm để tạo thành cầu phân áp rồi đưa vào chân AN0 của PIC16F877A và đọc giá trị điện áp đó thông qua bộ ADC 10bit có sẵn trên PIC , còn nguồn sáng thì mình dùng 3 đèn LED màu siêu sáng 5mm : màu đỏ , màu xanh lá cây , màu xanh da trời
         Tại sao mình không dùng LED phát ra ánh sáng trắng để làm nguồn sáng ? Nếu dùng LED sáng trắng như vậy thì cái cảm biến của chúng ta chỉ đọc được các màu trắng , đen và các mức màu xám trung gian ( nếu bạn nào giỏi về cách tính toán giá trị ADC của các màu thì có thể làm thử cách dùng này )


Sau đây là hình của cảm biến màu tự chế này:



 Đây là sơ đồ mạch và cách kết nối vào vi xử lý PIC16F877A:




Cách thức làm việc của nó như sau :
                 PIC sẽ đọc dữ liệu ADC của quang trở (cầu phân áp quang trở - điện trở ) tương ứng khi ta bật sáng mỗi LED , như vậy ta sẽ đọc ADC 3 lần  tương ứng với 3 lần bật sáng mỗi LED . Khi 1 vật có màu đỏ lướt qua bề mặt LDR (giả định) thì vật đó sẽ được chiếu sáng lần lượt bởi 3 LED màu , vì vật có màu đỏ nên sóng ánh sáng của LED đỏ sẽ bị phản xạ mạnh nhất ==> quang trở bị chiếu sáng mạnh nhất ==> nội trở của LDR giảm mạnh nên điện áp trên chân RA0 của PIC sẽ nhỏ nhất ==> giá trị đọc ADC của màu đỏ sẽ là nhỏ nhất so với 2 màu còn lại . Chỉ cần áp dụng 1 cách so sánh các giá trị ADC của từng màu đơn giản thì chúng ta có thể phát hiện ra màu của vật thể đó.


Sau đây là đoạn code viết bằng C :

void main()
{
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(RA0_RA1_RA3_ANALOG);
while(true)
 {
 RE0=1;
 RE1=0;
 RE2=0;
 delay_ms(50);
 set_adc_channel(0);
 delay_us(20);
 value_red=read_adc(); //đọc giá trị ADC màu đỏ
 RE0=0;
 RE1=1;
 RE2=0;
 delay_ms(50);
 set_adc_channel(0);
 delay_us(20);
 value_green=read_adc();//đọc giá trị ADC màu xanh lá cây
 RE0=0;
 RE1=0;
 RE2=1;
 delay_ms(50);
 set_adc_channel(0);
 delay_us(20);
 value_blue=read_adc();//đọc giá trị ADC màu xanh da trời
 RE2=0;

 if((value_red < value_green)&&(value_red < value_blue)){red=1;green=0;}// vật màu đỏ
 if((value_green < value_red)&&(value_green < value_blue)){green=1;red=0;}//vật màu xanh lá cây


 }
}

Chú ý các bạn phải để cảm biến màu này trong 1 cái hộp tối không cho ánh sáng bên ngoài lọt vào làm nhiễu cảm biến , nếu không thì cảm biến sẽ hoạt động không ổn định hoặc có thể không hoạt động.

Ở đoạn code trên mình bật sáng mỗi LED là 50ms ,và mình chỉ dùng để nhận dạng 2 màu thôi , còn các bạn muốn nhận dạng nhiều màu hơn nữa thì có thể chỉnh sửa lại code.

Mình đã ứng dụng đoạn code này để hướng dẫn cho 1 số bạn ở Đà Nẵng làm đồ án về băng chuyền có phân loại màu và kích thước ,và nó chạy tốt .

                                                                                      Nguồn : http://phanhoangthach.blogspot.com/

0 comments:

Post a Comment

domain, domain name, premium domain name for sales

Popular Posts