Đăng ký Đăng nhập
Trang chủ Kỹ thuật - Công nghệ Điện - Điện tử Sử dụng cảm biến màu tcs3200 để phân biệt màu sắc...

Tài liệu Sử dụng cảm biến màu tcs3200 để phân biệt màu sắc

.DOCX
14
5609
84

Mô tả:

Sử dụng cảm biến màu tcs3200 để phân biệt màu sắc
BỘ CÔNG THƯƠNG TRƯỜNG CAO ĐẲNG CÔNG THƯƠNG TP.HCM KHOA ĐIỆN-ĐIỆN TỬ BÁO CÁO ĐO LƯỜNG CẢM BIẾẾN Nhóm 12 ĐẾỀ TÀI: SỬ DỤNG CẢM BIẾẾN MÀU TCS3200 ĐỂ PHÂN BIỆT MÀU SẮẾC Tp .HỒỒ CHÍ MINH ngày14 tháng 10 năm 2015 1 BÀI BÁO CÁO: SỬ DỤNG CẢM BIẾN MÀU TCS3200 ĐỂ PHÂN BIỆT MÀU SẮC 2 I.Module Cảm Biến Màu TCS3200. 1.Định nghĩa. Cảm biến nhận biết màu sắc và xuất ra 3 tần số xung tương ứng với 3 màu cơ bản là Đỏ, Xanh lá và Xanh dương, đo 3 tần số xung này và qua 1 vài bước chuyển đổi nhất định là bạn sẽ có đươc thông tin của màu sắc cần đo. 2.Thông tin kỹ thuật:  Nguồn 2.7 -> 5.5VDC  Ngõ ra: 3 tần số xung tương ứng 3 màu đỏ, xanh dương và xanh lá. 3.Tính năng : +Chuyển đổi cường độ ánh sáng thành tần số có độ 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. +Dễ dàng giao tiếp với vi điều khiển. +Điện áp đầu vào 2.7-5.5V. 4. Nguyên lý hoạt động: -Cấu tạo cảm biến TCS3200 gồm 2 khối như hình vẽ phía dưới: 3 +Khối đầu tiên là mảng ma trận 8x8 gồm các photodiode.Bao gồm 16 photodiode có thể lọc màu sắc xanh dương (Blue),16 photodiode có thể lọc màu đỏ (Red),16 photodiode có thể lọc màu xanh lá(Green) và 16 photodiode trắng không lọc (Clear).Tất cả photodiode cùng màu được kết nối song song với nhau ,và được đặt xen kẽ nhau nhằm mục đích chống nhiễu. Bản chất của 4 loại photodiode trên như là các bộ lọc ánh sáng có mầu sắc khác nhau .Có nghĩa nó chỉ tiếp nhận các ánh sáng có cùng màu với loại photodiode tương ứng và không tiếp nhận các ánh sáng có màu sắc khác. Việc lựa chọn 4 loại photodiode này thông qua 2 chân đầu vào S2,S3 : 4 +Khối thứ 2 là bộ chuyển đổi dòng điện từ đầu ra khối thứ nhất thành tần số : Tần số đầu ra có độ rộng xung 50% và tỉ lệ với ánh sáng có cường độ và mầu sắc khác nhau ,số đầu ra nằm trong khoảng 2Hz500Khz . Ta có thể lựa chọn tỉ lệ tần số đầu ra ở các mức khác nhau như bảng trên cho phù hợp với phần cứng đo tần số . Ví dụ : Tần số khi S0=H,S1=H -Fout=500Khz thì: S0=H,S1=L -Fout=100Khz S0=L,S1=H -Fout=10Khz S0=L,S1=L -Fout=0 -Nguyên lý hoạt động : Ánh sáng trắng là hỗn hợp rất nhiều ánh sáng có bước sóng màu sắc khác nhau . Khi ta chiếu ánh sáng trắng vào một vật thể bất kì .Tại bề mặt vật thể sẽ xảy ra hiện tượng hấp thụ và phản xạ ánh sáng . Màu sắc bất kì được tổng hợp từ 3 mầu cơ bản Blue,Green,Red : 5 Dựa trên nguyên lý sự phản xạ , hấp thụ ánh sáng trắng của vật thể và sự phối chộn màu sắc bởi 3 màu cơ bản Blue,Green,Red thì TCS3200 có cấu tạo là 4 bộ lọc photodiode Blue,Green,Red và clear để nhận biết màu sắc vật thể. Với điều kiện test là ánh sáng có bước sóng λp = 470 nm(Dải màu Blue),λp = 524 nm(dải màu Green),λp = 640 nm(dải màu Red) thì 4 bộ lọc photodiode sẽ cho ra tần số khác nhau.Tần số ra lớn nhất khi ánh sáng chiếu vào cảm biến cùng loại photodiode được chọn vì khi đó photodiode sẽ hấp thụ nhiều nhất. II. Giao tiếp module cảm biến mầu TCS3200 với Arduino : 1.Định Nghĩa Arduino: LCD? RS RW E D0 D1 D2 D3 D4 D5 D6 D7 7 8 9 10 11 12 13 14 1 2 3 vcc +5v 4 5 6 VSS VDD VEE LM016L SIM? vcc +5v AREF ATMEL www.arduino.cc blogembarcado.blogspot.com DIGITAL (PWM~) SIMULINO ANALOG IN A0 A1 A2 A3 A4 A5 POWER A0 A1 A2 A3 A4 A5 ATMEGA328P 5V GND 13 12 ~11 ~10 ~9 8 ARDUINO RESET 7 ~6 ~5 4 ~3 2 TX > 1 RX < 0 13 12 11 10 9 8 7 6 5 4 3 2 1 0 VCC S0 VCC S2 S1 S3 LED OUT GND GND SIMULINO UNO Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn. Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit. Những Model hiện tại được trang bị gồm 1 cổng giao tiếp USB, 6 chân đầu vào analog, 14 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau. 2. Arduino tạm thời chia làm 3 phần: • Thứ nhất là mạch phần cứng được làm chuẩn của chuẩn, thường dùng các chip của 6 atmel, các chân của vi điều khiển được nối một ra các hàng rào theo thứ tự và vị trí , các vị trí này cần chính xác để gắn các bo mở rộng mà ta gọi là shield. Như vậy ai nhìn vào một bo arduino cũng biết đâu là chân nguồn, đâu là chân đất, đâu là chân analog hay pwm... Trên bo mạch chính có hệ thống ổn định nguồn với nhiều mức lựa chọn nguồn. Chế độ hoạt động của chip cũng được định sẵn, có những thiết kế để mở rộng cho những giao tiếp có thể (UART, SPI, I2C...). Có những tín hiệu hoạt động của mạch.... • Thứ hai là firm ware cho chip điều khiển, nghĩa là trên bo Arduino có con chip điều khiển, và con chip này được nạp sẵn một chương trình bootloader. Cái gọi là bootloader này có nhiệm vụ chính là chuyển từ phương thức nạp ISP truyền thống của avr sang một kiểu chung là nạp qua uart. Như vậy nghĩa là sao, nghĩa là bạn không cần phải mua thêm mạch nạp riêng, chỉ cần mạch giao tiếp USB2COM rất thông dụng, rồi khi đang viết chương trình, bấm nạp, nhai một cái kẹo cao su, sau đó khởi động chương trình terminal lên, như vậy là sẵn sàng cho điều khiển các thiết bị điện ở dưới qua máy tính, sẵn sàng cho debug, sẵn sàng cho kiểm soát chương trình dạng như Serial.println • Thứ ba là phần mềm trên máy tính với giao diện đơn giản, viết chương trình, bấm nạp, xong :Chương trình của Arduino được thiết kể để những người thậm chí chưa biết lập trình cũng có thể làm được. Thêm nữa việc dùng thư viện đơn giản, nhất là hệ thống thư viện này luôn có nhiều example hay còn gọi là ví dụ. Như vậy chỉ cần gọi ra một cái ví dụ, copy thêm code, save as, thế là có một cái project của riêng bạn. Tất cả phầm mềm của arduino đều là open source, nghĩa là khả năng tùy chỉnh rất cao. Một hệ thống Arduino có thể cung cấp cho bạn rất nhiều sự tương tác với môi trường xung quanh với:  Hệ thống cảm biến đa dạng về chủng loại (đo đạc nhiệt độ, độ ẩm, gia tốc, vận tốc, cường độ ánh sáng, màu sắc vật thể, lưu lượng nước, phát hiện chuyển động, phát hiện kim loại, khí độc,…),…  Các thiết bị hiển thị (màn hình LCD, đèn LED,…). 7  Các module chức năng (shield) hỗ trợ kêt nối có dây với các thiết bị khác hoặc các kết nối không dây thông dụng (3G, GPRS, Wifi, Bluetooth, 315/433Mhz, 2.4Ghz,…), …  Định vị GPS, nhắn tin SMS,… và nhiều thứ thú vị khác đang chờ bạn khám phá. 3.Ứng dụng: - phân loại các sản phẩm màu sắc trong công nghiệp..v..v - một số máy phân loại như sau|:  Máy tách màu ngũ cốc Mã code: /* The circuit: * LCD RS pin to digital pin 12 * LCD Enable pin to digital pin 11 * LCD D4 pin to digital pin 5 * LCD D5 pin to digital pin 4 * LCD D6 pin to digital pin 3 * LCD D7 pin to digital pin 2 * LCD R/W pin to ground * 10K resistor: * ends to +5V and ground * wiper to LCD VO pin (pin 3) */ #include LiquidCrystal lcd(7, 6, 5, 4, 3, 2); 8 int red; int green; int blue ; /* // TCS230 color recognition sensor Color Sensor ----------- Arduino -------- VCC 5V GND GND s0 8 s1 9 s2 12 s3 11 OUT OE 10 GND */ const int s0 = 8; const int s1 = 9; const int s2 = 12; const int s3 = 11; const int out = 10; void setup() 9 { // set up the LCD's number of columns and rows: lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print(" COLOR SENSOR "); lcd.setCursor(1,1); lcd.print(" TCS3200 "); delay(3000); lcd.setCursor(0,0); lcd.print(" NHOM 12 "); lcd.setCursor(1,1); lcd.print("BAO LUU HUONG NHAT"); for(int x=0; x < 3; x++) { lcd.noDisplay(); delay(500); lcd.display(); delay(300); } for(int x=0; x<14; x++) { lcd.scrollDisplayLeft(); // cuon man hinh sang trai delay(500); } 10 Serial.begin(9600); pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(out, INPUT); digitalWrite(s0, HIGH); digitalWrite(s1, HIGH); lcd.clear(); } void loop() { color(); Serial.print("R Intensity:"); Serial.print(red, DEC); Serial.print(" G Intensity: "); Serial.print(green, DEC); Serial.print(" B Intensity : "); Serial.print(blue, DEC); if (red < blue && red < green && red < 20 && red >8) { Serial.println(" - (Red Color)"); lcd.setCursor(0,0); lcd.print(" SENSOR-TCS3200 "); 11 lcd.setCursor(1,1);//Thiet lap con tro cot 0 hang thu 0 lcd.print(" RED Color ");//Xuất ra màn hình delay (1500); } else if (blue < red && blue < green ) { Serial.println(" - (Blue Color)"); lcd.setCursor(0,0); lcd.print(" SENSOR-TCS3200 "); lcd.setCursor(1,1); lcd.print(" BLUE Color "); delay (1500); } else if (green < red && green < blue) { Serial.println(" - (Green Color)"); lcd.setCursor(0,0); lcd.print(" SENSOR-TCS3200 "); lcd.setCursor(1,1); lcd.print(" GREEN Color "); delay (1500); } else if (red = green && green < blue) { Serial.println(" - (Yellow Color)"); lcd.setCursor(0,0); 12 lcd.print(" SENSOR-TCS3200 "); lcd.setCursor(1,1); lcd.print(" YELLOW Color "); delay (1500); } else if (green = blue && green < red) { Serial.println(" - (Cyan Color)"); lcd.setCursor(0,0); lcd.print(" SENSOR-TCS3200 "); lcd.setCursor(1,1); lcd.print(" CYAN Color "); delay (1500); } else if (blue = red && blue > green) { Serial.println(" - (Magenta Color)"); lcd.setCursor(0,0); lcd.print(" SENSOR-TCS3200 "); lcd.setCursor(1,1); lcd.print(" MAGENTA Color "); delay (1500); } else { Serial.println(); 13 lcd.setCursor(0,0); lcd.print(" SENSOR-TCS3200 "); lcd.setCursor(1,1); lcd.print(" NO Color "); delay (1000); } } void color() { digitalWrite(s2, LOW); digitalWrite(s3, LOW); //count OUT, pRed, RED red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s3, HIGH); //count OUT, pBLUE, BLUE blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s2, HIGH); //count OUT, pGreen, GREEN green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); } Hết./. 14
- Xem thêm -

Tài liệu liên quan