---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 3LỜ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 4LỜ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 5DANH 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 6Chươ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 71.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 81.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 11Chươ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 12Hì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 13Interrupt 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 14DDRE |= (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 162.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 17và đ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 20return 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 21Hì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 26TÀ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