1. Trang chủ
  2. » Giáo Dục - Đào Tạo

đề tài phân loại màu sắc tự động với vi điều khiển atmega 128 và cảm biến màu tcs3200

26 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phân loại màu sắc tự động với vi điều khiển ATmega 128 và cảm biến màu TCS3200
Tác giả Văn Thiên Phúc, Đỗ Tùng Dương, Phạm Hoàng Anh
Người hướng dẫn TS. Nguyễn Chí Nhân
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Vật lý điện tử
Thể loại Báo cáo đồ án môn học
Năm xuất bản 2024
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 26
Dung lượng 1,9 MB

Nội dung

---LỜI MỞ ĐẦU“Phân loại màu sắc với vi điều khiển ATmega128 với cảm biến màu sắcTCS3200” là đề tài được ứng dụng để phân loại 3 màu sắc cơ bản đỏ, xanh dương,xanh lá.. Tự động hóa đông c

Trang 1

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA VẬT LÝ – VẬT LÝ KỸ THUẬT

BỘ MÔN VẬT LÝ ĐIỆN TỬ - -

BÁO CÁO ĐỒ ÁN MÔN HỌC

1 Họ & tên: Văn Thiên Phúc MSSV: 21130234

2 Họ & tên: Đỗ Tùng Dương MSSV: 21130139

3 Họ & tên: Phạm Hoàng Anh MSSV: 21130107

Lớp: 21VLDT-TN

CBHD: TS Nguyễn Chí Nhân

-TP HỒ CHÍ MINH – 2024

Trang 2

ĐẠI HỌC QUỐC GIA TP.HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

KHOA VẬT LÝ – VẬT LÝ KỸ THUẬT

BỘ MÔN VẬT LÝ ĐIỆN TỬ - -

BÁO CÁO ĐỒ ÁN MÔN HỌC

1 Họ & tên: Văn Thiên Phúc MSSV: 21130234

2 Họ & tên: Đỗ Tùng Dương MSSV: 21130139

3 Họ & tên: Phạm Hoàng Anh MSSV: 21130107

Lớp: 21VLDT-TN

CBHD: TS Nguyễn Chí Nhân

-TP HỒ CHÍ MINH – 2024

Trang 3

LỜI MỞ ĐẦU

“Phân loại màu sắc với vi điều khiển ATmega128 với cảm biến màu sắcTCS3200” là đề tài được ứng dụng để phân loại 3 màu sắc cơ bản (đỏ, xanh dương,xanh lá) Đây là một mô hình cơ bản hỗ trợ trong việc phân loại sản phẩm tự độngtrên dây chuyền sản xuất hay điều khiển robot lấy hàng theo màu sắc,…

Đề tài này có những mục tiêu như sau:

-Phát triển mô hình phân loại màu sắc từ sử dụng bằng Arduino sang sử dụng

vi điều khiển ATmega128 Tự động hóa đông cơ thay vì sử dụng tay điều khiển.-Đánh giá hiệu quả hoạt động của hệ thống nhận diện 3 màu sắc cơ bản: đỏ,xanh lá, xanh dương

Các công việc đã thực hiện:

-Nghiên cứu cách cảm biến TCS3200 nhận diện màu sắc

-Viết code chương trình trên vi điều khiển ATmega128

-Lắp ráp và thử nghiệm hệ thống

Nội dung của đề tài được phân thành các phần như sau:

Chương 1: Tổng quan đề tài

Chương 2: Thiết kế và lập trình điều khiển mô hình

Chương 3: Kiểm tra hoạt động của mô hình

Kết luận và hướng phát triển

Trang 4

LỜI MỞ ĐẦU 2

MỤC LỤC 3

DANH SÁCH HÌNH ẢNH 4

Chương 1: TỔNG QUAN ĐỀ TÀI 5

1.1 Mục tiêu ý tưởng đề tài 5

1.2 Sơ đồ khối hệ thống và nguyên lý hoạt động của mô hình 5

1.3 Linh kiện, thiết bị sử dụng trong đề tài 6

1.3.1 Vi điều khiển ATmega128 6

1.3.2 Cảm biến TCS3200 7

1.3.3 Động cơ servo 7

1.3.4 Màn hình LCD 16x2 8

Chương 2: THIẾT KẾ VÀ LẬP TRÌNH ĐIỀU KHIỂN MÔ HÌNH 10

2.1 Thiết kế sơ đồ mạch giao tiếp 10

2.2 Hình sơ đồ mạch điện thực tế 10

2.4 Kỹ thuật điều khiển động cơ 12

2.5 Lưu đồ thuật toán (Flowchart) và viết chương trình điều khiển 15

Chương 3: KIỂM TRA HOẠT ĐỘNG CỦA MÔ HÌNH 19

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 20

PHỤ LỤC 21

TÀI LIỆU THAM KHẢO 25

Trang 5

DANH SÁCH HÌNH Ả

Hình 1 1 Sơ đồ khối hệ thống phân loại màu sắc 5 Hình 1 2 Module ATmega128 – V2 6 Hình 1 3 Cảm biến màu sắc TCS3200 7 Hình 1 4 Động cơ servo 8Y Hình 2 1 Mạch Schematic hệ thống phân loại màu sắc 10 Hình 2 2 Mạch chạy thử trên test board 10 Hình 2 3 Mạch chạy thực tế 11 Hình 2 4 Lưu đồ thuật toán 1

Hình 3 1 Trường hợp nhận diện màu xanh lam 19 Hình 3 2 Trường hợp nhận diện màu đỏ 19 Hình 3 3 Trường hợp nhận diện màu vàng 20

DANH SÁCH BẢNG

Bảng 1: Sơ đồ chân của LCD 16x2 8

Trang 6

Chương 1: TỔNG QUAN ĐỀ TÀI

1.1 Mục tiêu ý tưởng đề tài

Đề tài này được thực hiện với mục đích phát triển hệ thống “Phân loại màusắc” từ sử dụng Arduino thành vi điều khiển ATmega128 Bên cạnh đó phát triển hệthống điều khiển servo trong mô hình từ sử dụng điều khiển bằng tay thành tự độnghóa

1.2 Sơ đồ khối hệ thống và nguyên lý hoạt động của mô hình

Hình 1 1 Sơ đồ khối hệ thống phân loại màu sắc

- Sơ đồi khối các chức năng của mô hình phân loại màu

- Nguyên lý hoạt động của mô hình phân loại màu:

Sử dụng 3 hộp có màu sắc cơ bản (đỏ, xanh lá, xanh dương) vào bằng chuyềncùng đầu với cảm biến màu sắc TCS3200 và cảm biến này được thiết kế nằm songsong với băng chuyền Khi băng chuyền chạy thì cảm biến màu sắc bắt đầu nhậndiện những hộp màu Khi nhận diện được màu đỏ thì servo phụ trách đưa hộp màu

đỏ vào hộp phân loại màu đỏ hoạt động Tương tự như vậy với 2 màu tiếp theo

Trang 7

1.3 Linh kiện, thiết bị sử dụng trong đề tài

Trong mô hình phân loại màu sắc có sử dụng các linh kiện phần cứng như sau:

-Cảm biến màu sắc TCS3200

-Servo điều khiển đưa các hộp màu vào ô phân lại màu sắc

-Motor điều khiển băng chuyền tự động

-Vi điều khiển ATmega128

1.3.1 Vi điều khiển ATmega128

-ATmega128-V2 có các giao tiếp với các IO port được phân theo các chức năng như: Ext.memory, ADC, GPIO, I2C, SPI,…

+ 4 Mbit serial Data Flash with SPI interface (Lựa chọn)

+ User Interface: power and user LED, reset and user button, buzzer

+ Headers 100 mil pitch cho: JTAG, ISP, PORTA, PORTB, PORTC,PORTD, PORTE, PORTF và XMEM

+ +6V to +9V DC power socket

+ 5V DC in/out

Hình 1 2 Module ATmega128 – V2

Trang 8

1.3.2 Cảm biến TCS3200

Chức năng của cảm biến TCS3200: sử dụng để phát hiện và đo lường mức

độ phản xạ ánh sáng của các màu đỏ, xanh lá và xanh lam Được ứng dụng nhận diện màu sắc như phân loại sản phẩm, robot, đồ chơi,…

Trang 9

-Mỗi ô của Text LCD gồm các “chấm” tinh thể lỏng, việc kết hợp “ẩn” và

“hiện” các chấm này tạo ký tự cần hiển thị

-LCD 16x2 là loại có 2 dòng và mỗi dòng có thể hiện tối đa 16 ký tự

Bảng 1: Sơ đồ chân của LCD 16x2

D0 – D7: lệnhD0 – D7: dữ liệu

1

Ghi (từ AVR vàoLCD)

Trang 10

Đọc (từ LCD vàoAVR)

01

Từ 1 xuống 0

Vô hiệu hóa LCDLCD hoạt độngBắt đầu ghi/đọcLCD

Trang 11

Chương 2: THIẾT KẾ VÀ LẬP TRÌNH ĐIỀU KHIỂN MÔ HÌNH

2.1 Thiết kế sơ đồ mạch giao tiếp

Hình 2 1 Mạch Schematic hệ thống phân loại màu sắc

2.2 Hình sơ đồ mạch điện thực tế

Hình 2 2 Mạch chạy thử trên test board

Trang 12

Hình 2 3 Mạch chạy thực tế 2.3 Lập trình giao tiếp cảm biến

Nguyên lý nhận diện màu sắc: cảm biến màu sử dụng nguyên lý ánh sáng cơbản để xác định màu sắc Ta thấy màu trắng được tạo thành từ ba màu cơ bản là Đỏ,Xanh lục và Xanh lam và mỗi màu có bước sóng khác nhau Khi ánh sáng chiếu vàomột bề mặt, tùy thuộc vào tính chất của vật liệu mà nó sẽ bị hấp thụ hoặc phản xạ.Ánh sáng phản chiếu đó được mắt chúng ta thu nhận và kết quả là chúng ta có thểnhìn thấy màu sắc

Hoạt động của cảm biến TCS3200 tương tự như mắt người nhận biết màusắc Các chân S2 và S3 được sử dụng để chọn mảng điốt quang cho mỗi màu màcảm biến hiển thị:

● Nếu ta muốn Filter Red thì trong Code điều khiển ATmega128 ta phải Clear

cả hai chân S2 và chân S3

● Nếu ta muốn Filter Blue thì trong Code điều khiển ATmega128 ta phải Clearchân S2 và Set chân S3

● Nếu ta muốn Filter Green thì trong Code điều khiển ATmega128 ta phải Set

cả hai chân S2 và chân S3

Sau khi thu thập lần lược tần số của các màu sắc từ cảm biến, thì chân OUT củacảm biến sẽ phát xung tín hiệu, số xung này được ATmega ghi nhận lại bằng chế độ

Trang 13

Interrupt Những màu sắc tương ứng với tần số khác nhau sẽ cho ra số xung khácnhau Ta so sánh số xung với nhau thì sẽ tìm được màu sắc tương ứng:

● Nếu: số xung nhận được của màu Blue > Green và Blue > Red => Vật thể cómàu Blue

● Nếu: số xung nhận được của màu Red > Green và Red > Blue => Vật thể cómàu Red

● Nếu: số xung nhận được của màu Red > Blue và Green > Blue => Vật thể cómàu Yellow

2.4 Kỹ thuật điều khiển động cơ

Các động cơ servo đã tích hợp mạch điều kiển góc quay bên trong nên chỉ cầncấp tín hiệu xung PWM vào chân điều khiển là có thể điều kiển góc quay như mongmuốn

Xung PWM có chu kỳ 20ms (hay tần số 50HZ) được sử dụng để điều kiển độngcơ

Độ rộng của xung PWM xác định vị trí góc quay của servo, nó thay đổi trongkhoảng từ 0,5ms đến 2,5ms tương ứng với vị trí góc quay từ 0 độ đến 180 độ

Thời gian tối thiểu và tối đa của các xung PWM có thể thay đổi tùy theo các loạiđộng cơ servo khác nhau

#define servoL PE3

#define servoR PE4

Trang 14

DDRE |= (1 << servoL) | (1 << servoR);

TCNT3 = 0; //Gia trị Bottom = 0

OCR3A = 0;//servo ben trai

OCR3B = 0;//servo ben phai

ICR3 = 2303; //Dat gia trị TOP

//Thiết lập xung Fast PWM và chia ra có 64

TCCR3A = (1 << COM3A1) | (1 << COM3B1) | (1 << WGM31);

TCCR3B = (1 << WGM33) | (1 << WGM32) | (1 << CS31) | (1 << CS30);// Khởi tạo ngưỡng INT7

EICRB |= (1 << ISC70);// Nhưng ky thay doi logic nào trên INT7 sẽ kích hoat ngưỡng

// Blue Servo ben trai hoat dong

else if(b > g && b > r){

display_color("Blue Left Servo");

OCR3A = 65; //goc 90 do

Trang 15

// Red Servo ben phai hoat dong

else if(r > g && r > b){

display_color("Red Right Servo");

Trang 16

2.5 Lưu đồ thuật toán (Flowchart) và viết chương trình điều khiển

Hình 2 4 Lưu đồ thuật toán

(1) Đầu tiên ta khởi tạo các Port I/O cấu hình cho ATmega128

(2) Tiếp theo ta gọi hàm read_color_avg() và hàm read_color() kết hợp với chứcnăng Interrup

 Trong hàm read_color() sẽ điều khiển các chân S2 và S3 để lọc màu, kết hợpvới chế độ Interrupt để trả về giá trị số đếm xung tưởng ứng với mỗi màu

 Trong hàm read_color_avg() sẽ nhận số đếm xung và tính giá trị trung bình

số xung của mỗi màu, mục đích là tăng độ chính xác

(3) Kết tiếp ta lấy số xung trung bình của mỗi màu so sánh lại với nhau:

 Nếu red > blue và green > blue, thì hiển thị lên LCD là “Color:Yellow No Servo” Đồng thời cho động cơ DC của băng chuyền hoạtđộng và hai Servo không hoạt động để vật thể màu vàng được đithẳng

 Nếu blue > green và blue > red, thì hiển thị lên LCD là “Color: Blue.Left Servo” Đồng thời cho động cơ DC của băng chuyền hoạt động

Trang 17

và điều khiển Servo trái hoạt động để vật thể màu xanh được phânloại sang trái.

 Nếu red> green và red > blue, thì hiển thị lên LCD là “Color: Red.Right Servo” Đồng thời cho động cơ DC của băng chuyền hoạt động

và điều khiển Servo phải hoạt động để vật thể màu đỏ được phân loạisang phải

Ngược lại hiển thị lên LCD là “Color Unknown No Servo” Đồng thời chođộng cơ DC của băng chuyền không hoạt động và hai Servo cũng không hoạt động.(4) Và vòng lập cứ tiếp tục xoay vòng như thế để nhận diện màu sắc

Code chương trình điều khiển mô hình phân loại màu

// Blue Servo ben trai hoat dong

else if(b > g && b > r)

{

display_color("Blue Left Servo");

OCR3A = 65;

PORTF &=~ (1 << DC);

Trang 18

// Red Servo ben phai hoat dong

else if(r > g && r > b)

// Ham Filter color Tra ve gia so dem xung

uint32_t read_color(uint8_t s2, uint8_t s3)

{

pulse_count = 0;

Trang 19

// Ham doc mau trung binh

uint32_t read_color_avg(uint8_t s2, uint8_t s3, uint8_t samples){

Trang 20

return total_pulses / samples;

}

Chương 3: KIỂM TRA HOẠT ĐỘNG CỦA MÔ HÌNH

Hình 3 1 Trường hợp nhận diện màu xanh lam

Hình 3 2 Trường hợp nhận diện màu đỏ

Trang 21

Hình 3 3 Trường hợp nhận diện màu vàng

Đánh giá hệ thống: Hệ thống hoạt động ổn định, nhận diện được 3 màu đỏ,vàng và xanh dương như theo yêu cầu Kết hợp được với động cơ DC và Servophân loại được 3 màu vào 3 hộp màu khác nhau

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

- Kết quả đạt được

+ Xác định được chính xác 3 màu sắc đỏ, vàng, xanh dương, và điều chế đượcxung điều khiển Servo để phân loại 3 màu sắc theo đúng yêu cầu

+ Hiển thị trực quan được loại màu sắc, và Servo nào hoạt động lên LCD

- Đề xuất hướng phát triển

+ Thiết kế một mạch riêng lắp các linh kiện được sử dụng để không cần nốinhiều dây ngoài

+ Phân loại được nhiều màu sắc hơn và nhạy hơn, linh động hơn

+ Điều chế một xung PWM có dòng điện đủ lớn để điều khiển trực tiếp từATmega128 lên động cơ DC

Trang 22

#define OUT_PIN PE7

#define servoL PE3

#define servoR PE4

// Filter color Tra ve gia so dem xung

uint32_t read_color(uint8_t s2, uint8_t s3)

Trang 23

}

_delay_ms(100);

return pulse_count;

}

// Ham doc mau trung binh

uint32_t read_color_avg(uint8_t s2, uint8_t s3, uint8_t samples)

DDRE |= (1 << servoL) | (1 << servoR);

TCNT3 = 0; //Gia tri Bottom = 0

OCR3A = 0;

OCR3B = 0;

ICR3 = 2303; //Dat gia tri TOP

//Thiet lap xung Fast PWM va chia tan co 64

TCCR3A = (1 << COM3A1) | (1 << COM3B1) | (1 << WGM31);

TCCR3B = (1 << WGM33) | (1 << WGM32) | (1 << CS31) | (1 << CS30); // Khoi tao ngat INT7

EICRB |= (1 << ISC70);// Bat ky thay doi logic nao tren INT7 se kich hoat ngat EIMSK |= (1 << INT7);

Trang 24

// Blue Servo ben trai hoat dong

else if(b > g && b > r)

// Red Servo ben phai hoat dong

else if(r > g && r > b)

Trang 25

{

display_color("Unknown.No Servo"); PORTF |= (1 << DC);

Trang 26

TÀI LIỆU THAM KHẢO

[1] TS Nguyễn Chí Nhân, “Bài giảng: Vi điều khiển và ứng dụng”, Bộ môn Vật lýĐiện tử, Khoa Vật lý-Vật lý Kỹ thuật, Trường Đại học Khoa học Tự nhiên, ĐHQG

TP.HCM, 2021 (lưu hành nội bộ).

Website:

[2] http://www.tme.vn/Product.aspx?id=253#page=pro_info

[3] 0FKA-2020-600x600.jpg

https://nshopvn.com/wp-content/uploads/2019/03/cam-bien-mau-gy-31-tcs3200-[4] rk7a-1.jpg

https://nshopvn.com/wp-content/uploads/2019/03/dong-co-servo-sg90-180-do-[5]https://m.media.amazon.com/images/I/

41cE3DnVXLSY445SX342QL70FMwebp.jpg

Ngày đăng: 06/08/2024, 14:01

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w