1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ án Thiết kế và thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh

105 142 0

Đ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

Định dạng
Số trang 105
Dung lượng 5,23 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Các số liệu ban đầu: Mô hình dây chuyền phân loại đai ốc ứng dụng xử lý ảnh sử dụng động cơ DC 12V, khung xây dựng bằng nhôm định hình, camera sử dụng là loại webcam C270, vi điều khiển

Trang 1

BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

-

ĐỒ ÁN TỐT NGHIỆP

NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG

ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG DÂY CHUYỀN PHÂN LOẠI ĐAI ỐC ỨNG DỤNG XỬ LÝ ẢNH

GVHD: THS VÕ ĐỨC DŨNG SVTH: NGUYỄN VĂN TÀI 15141273 NGUYỄN MINH ĐỨC 15141135

Tp Hồ Chí Minh - 6/2019

Trang 3

i

TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH

KHOA ĐIỆN-ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC

Hệ đào tạo: Đại học chính quy Mã hệ: 1

I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG DÂY CHUYỀN PHÂN LOẠI

ĐAI ỐC ỨNG DỤNG XỬ LÝ ẢNH

II NHIỆM VỤ

1 Các số liệu ban đầu:

Mô hình dây chuyền phân loại đai ốc ứng dụng xử lý ảnh sử dụng động cơ DC 12V, khung xây dựng bằng nhôm định hình, camera sử dụng là loại webcam C270,

vi điều khiển sử dụng STM32F103C8T6, phần xử lý ảnh dùng máy vi tính Giao tiếp giữa máy tính và vi điều khiển qua IC PL2303 dựa trên giao tiếp UART

Chương trình xử lý ảnh trên máy tính viết bằng ngôn ngữ C++ dựa trên bộ thư viện

mã nguồn mở OpenCV và được tạo giao diện bằng phần mềm QT Creator

2 Nội dung thực hiện:

- Tìm hiểu cách thức hoạt động của các hệ thống phân loại dùng xử lý ảnh

- Tìm hiểu chuẩn giao tiếp UART, động cơ DC, cảm biến hồng ngoại, encoder

- Tìm hiểu về vi điều khiển STM32F103C8T6

- Thiết kế và thi công mô hình dây chuyền phân loại

- Thiết kế và thi công mạch điện cho hệ thống

- Viết chương trình xử lý ảnh trên máy tính dùng phần mềm QT Creator

- Viết chương trình điều khiển cho vi điều khiển STM32F103C8T6

- Chạy thử nghiệm mô hình, chỉnh sửa và hoàn thiện hệ thống

- Thực hiện viết luận văn báo cáo

- Tiến hành báo cáo đề tài tốt nghiệp

III NGÀY GIAO NHIỆM VỤ: 18/2/2019

IV NGÀY HOÀN THÀNH NHIỆM VỤ: 20/6/2019

V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Võ Đức Dũng

CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

Trang 4

TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH

KHOA ĐIỆN-ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC

Tp HCM, ngày 18 tháng 02 năm 2019

LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP

Họ tên sinh viên 1: Nguyễn Minh Đức Lớp: 15141DT2C MSSV: 15141135

Họ tên sinh viên 2: Nguyễn Văn Tài Lớp: 15141DT2C MSSV: 15141273

Tên đề tài: THIẾT KẾ VÀ THI CÔNG DÂY CHUYỀN PHÂN LOẠI

- Gặp GVHD để nghe phổ biến yêu cầu làm đồ

án, tiến hành chọn đề tài, GVHD tiến hành xét duyệt đề tài

Trang 5

- Tiến hành thi công mạch

- Kiểm tra mạch thi công

- Nộp quyển báo cáo và báo cáo đề tài

- Thiết kế Slide báo cáo

GV HƯỚNG DẪN (Ký và ghi rõ họ và tên)

Trang 6

LỜI CAM ĐOAN

Đề tài này là do nhóm tự thực hiện, dựa vào một số đề tài trước đó cũng như các tài liệu tham khảo và không sao chép từ tài liệu hay công trình đã có trước đó

TP Hồ Chí Minh, ngày 20/6/2019 Người thực hiện đề tài

Nguyễn Văn Tài Nguyễn Minh Đức

Trang 7

v

LỜI CẢM ƠN

Lời đầu tiên, nhóm thực hiện đề tài xin gửi lời cảm ơn chân thành đến thầy

Võ Đức Dũng - giảng viên khoa Điện-Điện tử, đã theo sát hỗ trợ và hướng dẫn nhóm một cách chi tiết trong quá trình thực hiện đề tài Thầy luôn hỗ trợ hết mình, giải đáp thắc mắc, chỉ ra sai sót cũng như gợi ý những phương án thực hiện sao cho khả thi và

dễ tiếp cận nhất

Trong quá trình thực hiện Đồ án tốt ngiệp chúng em đã nhận được sự giúp đỡ

và ủng hộ của các thầy, cô trong khoa Điện-Điện tử Sự hỗ trợ của các thầy, cô đã góp phần không nhỏ giúp chúng em hoàn thành đề tài này

Nhóm đề tài cũng xin cảm ơn các bạn sinh viên trong khoa Điện-Điện tử đã nhiệt tình giúp đỡ, hỗ trợ nhóm, chia sẻ kinh nghiệm Những đóng góp của các bạn luôn được nhóm tiếp nhận và xem xét kĩ lưỡng

Cuối cùng, nhóm xin cảm ơn chân thành và sâu sắc đến những người thân đặc biệt là quý phụ huynh - những người luôn bên cạnh hỗ trợ hết mình về tài chính cũng như tinh thần trong suốt quá trình học tập cũng như thực hiện đề tài này

Dù đã cố gắng và nỗ lực tuy nhiên với những hạn chế về kiến thức và kinh nghiệm, đề tài không thể tránh được còn nhiều thiếu sót Nhóm mong nhận được sự đóng góp, nhận xét để của các thầy, cô và bạn bè để có thể hoàn thiện đề tài hơn Xin chân thành cảm ơn!

Người thực hiện đề tài

Nguyễn Văn Tài Nguyễn Minh Đức

Trang 8

MỤC LỤC

LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ii

LỜI CAM ĐOAN iv

LỜI CẢM ƠN v

LIỆT KÊ HÌNH viii

LIỆT KÊ BẢNG x

TÓM TẮT xi

Chương 1 TỔNG QUAN 1

1.1 ĐẶT VẤN ĐỀ 1

1.2 MỤC TIÊU VÀ GIỚI HẠN 2

1.3 NỘI DUNG NGHIÊN CỨU 2

1.4 GIỚI HẠN 3

1.5 BỐ CỤC 3

Chương 2 CƠ SỞ LÝ THUYẾT 5

2.1 TỔNG QUAN VỀ XỬ LÝ ẢNH 5

2.1.1 Giới thiệu về ảnh số 5

2.1.2 Phương pháp thu nhận ảnh 6

2.1.3 Giới thiệu về thư viện OpenCV và camera Logitech C270 6

2.1.4 Điều chỉnh độ sáng và độ tương phản 7

2.1.5 Lọc nhiễu ảnh 8

2.2 TÌM ĐƯỜNG BIÊN CỦA ẢNH 13

2.3 GIAO TIẾP UART 15

2.4 VI ĐIỀU KHIỂN STM32F103C8T6 17

2.4.1 Tổng quan 17

2.4.2 Cấu trúc hệ thống 18

2.4.3 Tìm hiểu GPIO 21

2.4.4 Timer và PWM 23

2.5 ĐỘNG CƠ DC 25

2.6 ENCODER 26

2.7 CẢM BIẾN HỒNG NGOẠI 29

Chương 3 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 31

3.1 THIẾT KẾ SƠ ĐỒ KHỐI 31

3.2 TÍNH TOÁN THIẾT KẾ MẠCH 32

3.2.1 Khối vi điều khiển và giao tiếp máy tính 32

Trang 9

vii

3.2.2 Khối cảm biến và encoder 35

3.2.3 Khối công suất điều khiển tải 35

3.2.4 Khối nguồn 39

3.2.5 Mạch PCB 41

3.2.6 Sơ đồ nguyên lý toàn mạch 43

3.3 TÍNH TOÁN THIẾT KẾ MÔ HÌNH 44

3.3.1 Cơ cấu cấp phôi 44

3.3.2 Băng tải 46

3.3.3 Cơ cấu phân loại 46

3.3.4 Hộp điện 49

Chương 4 THI CÔNG HỆ THỐNG 50

4.1 GIỚI THIỆU 50

4.2 THI CÔNG MẠCH ĐIỆN 50

4.2.1 Linh kiện sử dụng trong mạch điện 50

4.2.2 Lắp ráp và kiểm tra mạch điện 51

4.3 THI CÔNG MÔ HÌNH 52

4.3.1 Vật liệu, linh kiện sử dụng 52

4.3.2 Các bước thi công 53

4.4 LẬP TRÌNH HỆ THỐNG 57

4.4.1 Lưu đồ giải thuật cho vi điều khiển 57

4.4.2 Lưu đồ giải thuật cho chương trình xử lý ảnh 63

4.4.3 Phần mềm QT Creator 65

4.4.4 Trình biên dịch Keil µVision 5 70

Chương 5 KẾT QUẢ - NHẬN XÉT – ĐÁNH GIÁ 75

Chương 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 81

6.1 KẾT LUẬN 81

6.2 HƯỚNG PHÁT TRIỂN 81

TÀI LIỆU THAM KHẢO 82

PHỤ LỤC 83

Trang 10

LIỆT KÊ HÌNH

Hình 2 1 Các bước xử lý ảnh 5

Hình 2 2 Hình ảnh Webcam Logitech C270 7

Hình 2 3 Một mặt nạ lọc kích thước 3x3 9

Hình 2 4 Ví dụ về phần tử trung vị 10

Hình 2 5 Các hướng xét giá trị 15

Hình 2 6 Sơ đồ cấu trúc các khối của STM32F103C8T6 18

Hình 2 7 Sơ đồ nguồn xung clock của STM32F103C8T6 20

Hình 2 8 Thanh ghi cấu hình chức năng chân GPIO của port 22

Hình 2 9 Thanh ghi đọc giá trị ngõ vào 23

Hình 2 10 Thanh ghi chọn giá trị ngõ ra của port 23

Hình 2 11 Động cơ GA25 26

Hình 2 12 Đĩa encoder tương đối kiểu quay 28

Hình 2 13 Hình ảnh encoder quang 100 xung 28

Hình 2 14 Led phát hồng ngoại 29

Hình 2 15 Kí hiệu đi-ốt quang 29

Hình 2 16 Kí hiệu transistor quang 30

Hình 2 17 Cảm biến hồng ngoại E18-D80NK 30

Hình 3 1 Sơ đồ khối của hệ thống 31

Hình 3 2 Sơ đồ mạch vi điều khiển 33

Hình 3 3 Mạch chuyển USB UART PL2303 34

Hình 3 4 Cổng domino kết nối cảm biến và encoder 35

Hình 3 5 Sơ đồ kết nối cảm biến và encoder 35

Hình 3 6 Sơ đồ mạch công suất điều khiển động cơ DC dùng PWM 36

Hình 3 7 Sơ đồ mạch công suất điều khiển động cơ DC bằng relay 37

Hình 3 8 Sơ đồ mạch công suất điều khiển servo 38

Hình 3 9 Sơ đồ mạch công suất điều khiển led rọi 38

Hình 3 10 Sơ đồ mạch led báo trạng thái các tải 39

Hình 3 11 Sơ đồ mạch nguồn 41

Hình 3 12 Hình ảnh mạch PCB 41

Hình 3 13 Hình ảnh 3D của mạch in mặt trên 42

Hình 3 14 Hình ảnh 3D của mạch in nhìn nghiêng 42

Hình 3 15 Sơ đồ nguyên lý toàn mạch 43

Hình 3 16 Hình ảnh con lăn thiết kế 44

Hình 3 17 Hình ảnh bánh răng thiết kế 45

Hình 3 18 Mặt trước puly 46

Hình 3 19 Trục phụ của đĩa quay 47

Hình 3 20 Puly trục đĩa 48

Hình 3 21 Sơ đồ nối dây hộp điện 49

Trang 11

ix

Hình 4 1 Mạch sau khi hàn linh kiện 51

Hình 4 2 Hình ảnh bánh răng thực tế 53

Hình 4 3 Hình ảnh cơ cấu cấp phôi sau khi thi công 53

Hình 4 4 Băng tải mặt bên 54

Hình 4 5 Băng tải mặt trên 54

Hình 4 6 Cảm biến hồng ngoại phát hiện phôi 55

Hình 4 7 Hộp camera và khung đĩa quay 55

Hình 4 8 Cơ cấu gạt phôi 56

Hình 4 9 Encoder và puly truyền động cho đĩa quay 56

Hình 4 10 Mô hình nhìn từ phía trước 57

Hình 4 11 Mô hình nhìn từ trên xuống 57

Hình 4 12 Lưu đồ chương trình chính 58

Hình 4 13 Lưu đồ hàm khởi tạo GPIO 59

Hình 4 14 Lưu đồ hàm khởi tạo UART 60

Hình 4 15 Lưu đồ hàm xử lý PWM 61

Hình 4 16 Lưu đồ hàm điều khiển Servo 62

Hình 4 17 Lưu đồ hàm nhận dữ liệu 63

Hình 4 18 Lưu đồ chương trình chính xử lý ảnh 64

Hình 4 19 Cửa sổ làm việc của QT Creator 66

Hình 4 20 Giao diện khởi động QT Creator 67

Hình 4 21 Cửa sổ tạo New Project 67

Hình 4 22 Đặt tên và chọn đường dẫn lưu project 68

Hình 4 23 Giao diện chương trình sau khi tạo project mới 68

Hình 4 24 Thêm đường dẫn thư viện OpenCV vào project 69

Hình 4 25 Giao diện lập trình UI của QT Creator 69

Hình 4 26 Biểu tượng trình biên dịch Keil µVision 5 70

Hình 4 27 Giao diện của trình biên dịch Keil µVision 5 70

Hình 4 28 Thư viện cho STM32F1 71

Hình 4 29 Cây thư mục chứa project 71

Hình 4 30 Tạo project mới 72

Hình 4 31 Menu dùng để chọn chip STM32F103C8 72

Hình 4 32 Cửa sổ cấu hình cho project 73

Hình 4 33 Tạo thư mục main.c 74

Hình 4 34 Cây thư mục của project 74

Hình 5 1 Cấp nguồn cho mô hình 75

Hình 5 2 Giao diện chương trình xử lý ảnh trên máy tính 75

Hình 5 3 Đai ốc từ lồng cấp phôi rơi xuống băng tải 76

Hình 5 4 Đai ốc sau khi được chụp bởi camera 77

Hình 5 5 Các đai ốc từ băng tải tới đĩa phân loại 77

Hình 5 6 Thanh gạt đai ốc đạt yêu cầu 78

Trang 12

Hình 5 7 Servo gạt vật không đạt yêu cầu 78

Hình 5 8 Các hình chụp được lưu lại trong thư mục 79

LIỆT KÊ BẢNG Bảng Trang Bảng 3 1 Bảng cấu hình chế độ nạp của vi điều khiển 33

Bảng 3 2 Điện áp hoạt động và dòng tiêu thụ của một số linh kiện 40

Bảng 4 1 Danh sách các linh kiện 50

Bảng 4 2 Các linh kiện, vật liệu được sử dụng trong mô hình 52

Trang 13

xi

TÓM TẮT

Ứng dụng thị giác máy vào đời sống và sản xuất là một điều tất yếu hiện nay nhằm giúp tăng năng suất và đảm bảo sự tin cậy, chính vì vậy nhằm tiếp cận các kiến thức mới và theo kịp sự phát triển của kỹ thuật, nhóm quyết định thực hiện đề tài

“Thiết kế và thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh”, đây là mô hình phân loại sản phẩm Hoạt động của mô hình dựa trên nguyên lý xử lý tín hiệu số (hình ảnh) với ngôn ngữ lập trình C++ và thư viện OpenCV nhằm phân biệt các đai

ốc không đúng kích thước, sau đó chuyển tín hiệu về cho mạch điện trung tâm xử lý điều khiển các cơ cấu chấp hành Mục tiêu của đề tài là thi công một mô hình dây chuyền có thể phân loại các đai ốc kích cỡ khác nhau Việc xử lý hình ảnh được máy tính đảm nhiệm nhằm đảm bảo tốc độ xử lý Chương trình xử lý được viết thành phần mềm có giao diện để trực quan và dễ quản lý

Trang 14

Chương 1 TỔNG QUAN

1.1 ĐẶT VẤN ĐỀ

Công nghiệp ngày càng phát triển, các nhà máy được xây dựng khắp nơi Trong các nhà máy thì dây chuyền tự động hóa cũng ngày càng phổ biến, thay thế cho việc sử dụng nhân công, giảm công sức bỏ ra nhưng lại đạt được hiệu quả cao hơn Đi kèm với các dây truyền sản xuất tự động luôn là vấn đề phân loại sản phẩm Đây là vấn đề không mới và có mặt ở hầu hết mọi nhà máy nó không chỉ giúp tiết giảm nhân lực mà còn giúp đảm bảo chất lượng của sản phẩm trước khi xuất xưởng

Phân loại sản phẩm có nhiều cách, tùy vào yếu tố cần phân loại và sản phẩm mà

ta có thể chọn lựa cách thức phù hợp như phân loại theo kích thước, theo màu sắc, theo hình dạng, theo lỗi… Trong đó phân loại theo sản phẩm lỗi là phức tạp nhất tuy nhiên đây cũng là vấn đề xuất hiện ở tất cả các dây chuyền sản xuất Để có thể phân loại theo sản phẩm lỗi ta có thể sử dụng thị giác máy tính cụ thể là phương pháp xử lý hình ảnh, với phương pháp này có thể xử lý nhanh và chính xác các lỗi mà ngay cả mắt thường cũng khó nhận biết, với những sản phẩm nhiều chi tiết, các lỗi phức tạp thì ta cần kết hợp với các phương pháp như mạng nơ-ron, học máy… để xử lý đạt được hiệu quả [1-2]

Hiện nay đã có nhiều nghiên cứu về phân loại sản phẩm dùng thị giác máy mà cụ thể

là xử lý ảnh, các công ty cũng cho ra đời nhiều loại smart camera tích hơp sẵn bộ xử lý hình ảnh ứng dụng cho công nghiệp Tuy nhiên giá thành các camera này là rất cao và chỉ phù hợp cho các nhà máy lớn với những dây chuyền hiện đại Ngoài ra cũng đã có nhiều đề tài của sinh viên nghiên cứu về ứng dụng xử lý ảnh hoặc về điều khiển động

cơ, dây chuyền Phan Văn Phương và Trần Trí Tâm nghiên cứu đề tài “Ứng dụng xử lý ảnh cảnh báo tài xế ngủ gật” sử dụng thư viện OpenCV lập trình trên nền tảng Window

và Linux (kit Raspberry) để cảnh báo tài xế ngủ gật qua việc xử lý hình chụp để xác định tài xế nhắm hay mở mắt, có cảnh báo nếu tài xế ngủ gật [3] Phan Trọng Thuật và Nguyễn Văn Đúng thực hiện đề tài “Phân loại sản phẩm dùng camera” qua đó nghiên cứu các phương thức ứng dụng xử lý ảnh để phân loại đối tượng [4] Lê Quốc Nhật và Châu Thái Bảo thực hiện “Nhận dạng thứ tự màu cho cáp kết nối trong công nghiệp dùng xử lý ảnh”, sử dụng thư viện OpenCV và phần mềm Visual Studio 2013 (C++) để

Trang 15

nhận diện thứ tự màu cho dây cáp kết nối, hệ thống có giao diện thống kê thông số màu, kiểm tra sai số so với màu chuẩn [5] Trần Thanh Sang và Trần Mạnh Hùng thực hiện

đề tài “Thiết kế hệ thống nhận dạng biển số xe” từ đó đưa ra những phương pháp phát hiện biển số xe dựa trên việc xử lý hình ảnh [6] Lê Doãn Thắng với đề tài “Thiết kế thi công bộ điều khiển máy chạy bộ điện” đã nghiên cứu kit STM32F103VET6 và sử dụng kit này để điều khiển tốc độ động cơ động cơ DC của máy chạy bộ [7]

Với mục đích nghiên cứu, học hỏi và áp dụng những kiến thức đã được học về xử lý ảnh, vi điều khiển, điện tử cơ bản…, chúng em quyết định thực hiện đề tài “Thiết kế và thi công dây chuyền phân loại đai ốc ứng dụng xử lý ảnh” Dây chuyền sử dụng vi điều khiển trung tâm là STM32F103C8T6, cảm biến hồng ngoại, động cơ DC, USB camera

để lấy ảnh, đèn led chiếu sáng mẫu, máy tính với hệ điều hành Window để xử lý ảnh sử dụng thư viện mã nguồn mở OpenCV Dây chuyền có thể phân loại các đai ốc bị sai kích thước, bị lệch tâm, bị méo Các thông số của dây chuyền có thể cài đặt và giám sát qua phần mềm trên máy tính Ưu điểm của việc sử dụng USB camera kết hợp máy tính cùng bộ xử lý dùng vi điều khiển là giá thành rẻ, nhỏ gọn, có thể thực hiện, vận hành và sửa chữa dễ dàng [8]

1.2 MỤC TIÊU VÀ GIỚI HẠN

Thiết kế và thi công một dây chuyền có thể phân loại đai ốc ứng dụng xử lý ảnh dùng thư viện mã nguồn mở OpenCV viết trên ngôn ngữ C++ Dây chuyền có thể phân loại các đai ốc bị sai kích thước, bị méo Các thông số của dây chuyền có thể cài đặt và giám sát qua phần mềm trên máy tính sử dụng hệ điều hành Window Máy tính sẽ giao tiếp với vi điều khiển thông qua giao tiếp UART

1.3 NỘI DUNG NGHIÊN CỨU

- Tìm hiểu cách thức hoạt động của các hệ thống phân loại dùng xử lý ảnh

- Tìm hiểu chuẩn giao tiếp UART, động cơ DC, cảm biến hồng ngoại, encoder

- Tìm hiểu về vi điều khiển STM32F103C8T6

- Thiết kế và thi công mô hình dây chuyền phân loại

- Thiết kế và thi công mạch điện cho hệ thống

- Viết chương trình xử lý ảnh trên máy tính dùng phần mềm QT Creator

- Viết chương trình điều khiển cho vi điều khiển STM32F103C8T6

Trang 16

- Chạy thử nghiệm mô hình, chỉnh sửa và hoàn thiện hệ thống

- Thực hiện viết luận văn báo cáo

- Tiến hành báo cáo đề tài tốt nghiệp

- Dây chuyền chỉ dừng ở mức mô hình, kích thước nhỏ

- Dây chuyền sử dụng động cơ giảm tốc DC 12V

1.5 BỐ CỤC

Chương 1: TỔNG QUAN

Trình bày, đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn thông số và bố cục đồ án

Chương 2: CƠ SỞ LÝ THUYẾT

Giới thiệu các cơ sở lý thuyết gồm lý thuyết về xử lý ảnh, các linh kiện và thiết bị sử dụng để thiết kế hệ thống và trình bày các chuẩn truyền, giao thức

Chương 3: TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG

Thiết kế sơ đồ khối của hệ thống, đưa ra sơ đồ nguyên lí của các khối trong hệ thống

và thực hiện việc tính toán thiết kế

Chương 4: THI CÔNG HỆ THỐNG

Trình bày về thiết kế lưu đồ, đưa ra giải thuật và viết chương trình Quá trình thi công mạch điện, mô hình hệ thống hoàn chỉnh

Chương 5: KẾT QUẢ - NHẬN XÉT - ĐÁNH GIÁ

Đưa ra kết quả đạt được sau khi thi công mô hình, rút ra những nhận xét, đánh giá toàn bộ hệ thống

Trang 17

Chương 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Trình bày những kết luận về hệ thống những phần đã làm và chưa làm, đồng thời nêu

ra hướng phát triển cho hệ thống

Trang 18

Chương 2 CƠ SỞ LÝ THUYẾT

2.1 TỔNG QUAN VỀ XỬ LÝ ẢNH

Xử lý ảnh là quá trình xử lý số tín hiệu ở đây là tín hiệu hình ảnh Hiện nay xử lý ảnh đang phát triển rất mạnh mẽ, vì ứng dụng của nó rất rộng và hữu ích bao gồm ở rất nhiều lĩnh vực: sản xuất, kinh tế, đời sống, y tế, quân sự… Chúng ta có thể chia xử lý ảnh thành bốn nhóm ứng với bốn lĩnh vực chính: xử lý nâng cao chất lượng ảnh, nhận dạng ảnh, truy vấn ảnh và nén ảnh Trong đề tài này sẽ tìm hiểu về lĩnh vực nhận dạng

ảnh Các bước cơ bản của xử lý ảnh như hình 2.1

2.1.1 Giới thiệu về ảnh số

Ảnh số là tập hợp các điểm ảnh (Pixel) có giá trị mức xám xác định dùng để mô

tả ảnh gần với ảnh thật, trong đề tài này chỉ xét đến ảnh 2 chiều, một ảnh sau khi được

số hóa có thể được mô tả như một ma trận điểm A[M, N] trong không gian hai chiều trong đó M và N là số cột và số hàng của các điểm ảnh Một điểm ảnh bất kì lúc này sẽ

có tọa độ A(x, y) với 0=<x<=M-1 và 0=<y<=N-1 Số điểm ảnh xác định độ phân giải của ảnh Ảnh có độ phân giải càng cao thì ảnh càng trở nên chân thực và sắc nét hơn Giá trị của mỗi điểm ảnh sẽ quyết định màu sắc của ảnh ta gọi là mức xám của điểm ảnh, giá trị này có thể là một số (ảnh nhị phân, ảnh xám) hoặc một tập hợp các giá trị (ảnh màu) Xử lý ảnh là ta xử lý các giá trị này trong ma trận ảnh để được một kết quả mong muốn Số bit của một bức ảnh chính là số các giá trị mức xám có thể có, ví dụ một ảnh 8bit sẽ có 28=256 giá trị mức xám từ 0 đến 255 tương tự ảnh 16bit thì sẽ có 216 giá trị

Tùy theo giá trị dùng để biểu diễn điểm ảnh mà ta có thể phân ra 3 loại ảnh chính thông dụng:

+ Ảnh nhị phân: giá trị mỗi điểm ảnh là 0 hoặc 1, nghĩa là trắng hoặc đen Chính

vì vậy mà còn gọi là ảnh đen trắng

Hình 2.1 Các bước xử lý ảnh Hình 2 1 Các bước xử lý ảnh 1

Trang 19

+ Ảnh xám: giá trị mỗi điểm ảnh nằm trong giải giá trị từ 0 đến 255, nghĩa là cần

8 bits hay 1 byte để biểu diễn mỗi điểm ảnh này

+ Ảnh màu RGB: mỗi điểm ảnh có giá trị gồm 3 màu đỏ (Red) + xanh lục (Green) + xanh dương (Blue) Mỗi màu có giá trị từ 0 đến 255, nghĩa là mỗi điểm ảnh cần 24bits hay 3bytes để biểu diễn Ngoài hệ màu RGB còn có nhiều hệ màu khác phù hợp với những mục đích khác nhau như hệ CMYK, hệ HSV…

đề tài này sử dụng camera loại webcam để thu nhận hình ảnh thực tế

2.1.3 Giới thiệu về thư viện OpenCV và camera Logitech C270

Thư viện OpenCV

OpenCV (Open Computer Vision) là một thư viện mã nguồn mở hàng đầu cho

xử lý về thị giác máy tính, machine learning, xử lý ảnh OpenCV đươc viết bằng C/C++,

vì vậy có tốc độ tính toán rất nhanh, có thể sử dụng với các ứng dụng liên quan đến thời gian thực Opencv có thể hỗ trợ cho C/C++, Python Java vì vậy hỗ trợ được cho Window, Linux, MacOs lẫn Android, iOS OpenCV có cộng đồng hơn 47 nghìn người dùng và

số lượng download vượt quá 6 triệu lần và vẫn đang mở rộng liên tục

Trang 20

OpenCV vẫn đang được đóng góp và phát triển liên tục, nó đặc biệt phù hợp cho

những ứng dụng xử lý hình ảnh đơn giản vì thư viện dễ sử dụng và nhiều hỗ trợ từ cộng đồng

Camera Logitech C270

Webcam Logitech C270 chụp hình và quay film có thể đạt độ phân giải HD 720p (1280 x 720 pixel) Với độ phân giải này hình ảnh thu được trung thực và khá sắc nét Ngoài ra, Webcam C270 có chế độ chỉnh sáng tự động sẽ giúp hình ảnh sáng hơn kể cả trong điều kiện ánh sáng tối, góc chụp lên tới 60 độ Tốc độ khung hình đạt 30fps (30 khung hình một giây) tốc độ này giúp việc chụp các vật chuyển động với tốc độ không quá nhanh được thực hiện chính xác Sử dụng chuẩn giao tiếp USB nên việc kết nối với

máy tính rất dễ dàng

2.1.4 Điều chỉnh độ sáng và độ tương phản

Độ sáng của ảnh phụ thuộc vào giá trị của mỗi pixel tạo nên ảnh Vì vậy để thay đổi độ sáng ảnh ta thay đổi giá trị mức sáng các pixel Với g và f là ảnh trước và sau khi biến đổi ta có công thức điều chỉnh độ sáng như sau:

g(x,y) = a*f(x,y)+b (2.1)

 a, b: hằng số tự chọn

 f(x,y): mức sáng của pixel trong ảnh tại điểm có tọa độ (x,y)

 g(x,y): mức sáng của pixel trong ảnh tại điểm có toạ độ (x,y) sau khi biến đổi

Hình 2 2 Hình ảnh Webcam Logitech C270

Trang 21

Ngoài việc thay đổi bằng phần mềm ta có thể tăng độ sáng ảnh bằng phần cứng như lắp thêm đèn rọi, dùng tấm nền màu sáng…

2.1.5 Lọc nhiễu ảnh

Một ảnh khi được chụp thường kèm theo các nhiễu, các nhiễu này có nhiều nguyên nhân gây nên: ánh sáng không đủ, chất lượng thiết bị thu không tốt, ảnh hưởng

do các yếu tố môi trường xung quanh, do sai số lượng tử hóa hay sai số truyền … Một

số loại nhiễu phổ biến thường xuất hiện trong ảnh:

Nhiễu độc lập với dữ liệu ảnh:

- Là một loại nhiễu cộng (additive noise): ảnh thu được f(i,j) là tổng của ảnh đúng (true image) và nhiễu n(i,j): f(i,j) = s(i,j) + n(i,j)

- Thông tin ảnh có tần số thấp, còn nhiễu ảnh hưởng đến tần số cao và ảnh hưởng này có thể được giảm đi khi sử dụng bộ lọc thông thấp

Nhiễu phụ thuộc vào dữ liệu:

- Nhiễu xuất hiện khi có sự bức xạ đơn sắc nằm rải rác trên bề mặt ảnh, độ lởm chởm trên bề mặt tùy thuộc vào bước sóng của điểm ảnh

- Do có sự giao thoa giữa các sóng ảnh nên làm xuất hiện những vết lốm đốm trên ảnh

Nhiễu muối – tiêu (Salt & Pepper noise):

- Là một loại nhiễu xung, sinh ra do xảy ra sai số trong quá trình truyền dữ liệu

- Những điểm ảnh có thể mang giá trị cực đại hoặc cực tiểu Với ảnh xám nếu một điểm ảnh có giá trị cực đại (tức cường độ sáng bằng 255) thì nó sẽ tạo ra một đốm trắng trên ảnh, trông giống như hạt “muối” Và ngược lại nếu một điểm ảnh

Trang 22

có giá trị cực tiểu (tức cường độ sáng bằng 0) thì sẽ tạo ra một đốm đen, giống như “tiêu” Vậy nên còn gọi là ảnh muối tiêu

Để có thể xử lý một cách chính xác và hiệu quả, ảnh cần được lọc nhiễu Nguyên tắc chung của các phương pháp lọc ảnh số là cho ma trận ảnh nhân chập với một ma trận lọc (Kernel) hay còn được gọi là các phép tính nhân chập trên ảnh Ma trận lọc lọc (Kernel) còn có thể được gọi là cửa số chập, cửa sổ lọc, mặt nạ

Hình 2 3 Một mặt nạ lọc kích thước 3x3

Trang 23

các điểm ảnh trong cửa sổ này theo thứ tự (tăng dần hoặc giảm dần tùy ý) Cuối cùng, gán điểm ảnh nằm chính giữa (trung vị) của dãy giá trị điểm ảnh đã được sắp xếp ở trên cho giá trị điểm ảnh đang xét của ảnh đầu ra output

Cho một dãy số 𝑋1, 𝑋2, 𝑋3, , 𝑋𝑛 được sắp xếp theo thứ tự tăng dần hoặc giảm dần Khi đó 𝑋𝑡𝑣 được tính bởi công thức sau:

Các bước thực hiên khi sử dụng bộ lọc trung vị:

- Quét ma trận lọc lên các thành phần của ảnh gốc, điền các giá trị được quét vào

ma trận lọc

- Lấy các thành phần trong của sổ lọc để xử lý

- Sắp xếp theo thứ tự các thành phần trong cửa sổ lọc

- Lưu lại thành phần trung vị, gán cho ảnh output

Ví dụ cho ảnh I kích thước 5x5 như sau:

Trang 24

Kết quả 3 chính là giá trị trung vị cần tìm, lúc này ta gán giá trị 3 cho pixel tại vị trí I(3,3) trong ảnh

Vì phải sắp xếp lại mỗi khi ma trận lọc di chuyển đến một pixel nên bộ lọc này

có tốc độ không cao, hiệu quả giảm nếu ảnh có kích thước lớn Tuy nhiên bộ lọc trung

vị có nhiều ưu điểm như giúp loại bỏ nhiễu nhưng vẫn đảm bảo độ phân giải, nó khá hiệu quả đối với hai loại nhiễu: nhiễu đốm (speckle noise) và nhiễu muối tiêu (salt-pepper noise)

Lọc trung bình

Lọc trung bình là loại lọc tuyến tính, với phương pháp thay thế giá trị mỗi điểm ảnh bằng trung bình trọng số của các điểm trong vùng lân cận Giả sử rằng dùng một ma trận lọc (3x3) quét qua từng điểm ảnh của ảnh đầu vào Tại vị trí mỗi điểm ảnh lấy giá trị của các điểm ảnh tương ứng trong vùng (3x3) của ảnh gốc đặt vào ma trận lọc Giá trị điểm ảnh của ảnh đầu ra là giá trị trung bình của tất cả các điểm trong ảnh trong ma trận lọc

Các bước thực hiện lọc trung bình với ảnh đầu vào I và I(x,y) là điểm ảnh đang xét,

mộ ngưỡng α:

- Bước 1: Quét ma trận lọc lên các thành phần của ảnh gốc, điền các giá trị được

quét vào ma trận lọc

- Bước 2: Tính tổng các thành phần trong ma trận lọc, chia tổng này với số lượng

các phần tử của cửa sổ lọc ra một giá trị Itb = (x, y)

- Bước 3: Hiệu chỉnh:

+ Nếu I(x, y) - Itb(x, y) > α thì I(x,y) = Itb(x, y)

Trang 25

+ Nếu I(x, y) - Itb(x, y) ≤ α thì I(x,y) = I(x,y)

Giá trị ngưỡng α có thể có hoặc không tùy vào mục đích sử dụng

Vậy I(3,3) sau khi lọc sẽ có giá trị 3

Sau khi sử dụng bộ lọc trung bình, chênh lệch độ sáng các điểm ảnh sẽ giảm xuống nghĩa là sẽ không có sự đột biến về giá trị của các điểm ảnh lân cận nhau Vì các nhiễu ngẫu nhiên thường là các điểm có giá trị đột biến mạnh so với điểm xung quanh nên bộ lọc trung bình sẽ giúp giảm các nhiễu này hiệu quả ví dụ như nhiễu muối tiêu Tuy nhiên bởi vì các cạnh hoặc đường biên trong ảnh cũng đặc trưng bởi quá trình biến đổi mạnh về cường độ nên lọc trung bình có thể làm mờ các cạnh và đường biên

Lọc Gauss

Bộ lọc Gauss là một bộ lọc rất hữu ích và thông dụng, được thực hiện bằng cách nhân chập ảnh đầu vào với một ma trận lọc Gauss sau đó cộng chúng lại để tạo thành ảnh đầu ra Vì biến đổi Fourier của một Gaussian sẽ tạo ra một Gaussian khác cho nên

Trang 26

nếu xét trên miền tần số thì phương pháp này sẽ làm giảm các thành phần có tần số cao trong hình Hay nói cách khác đây là một bộ lọc tần số cao (low pass filter: chỉ giữ lại các thành phần tần số thấp)

Ứng dụng của bộ lọc Gaussian là làm mịn ảnh, nó khác với bộ lọc trung bình ở chổ: thứ nhất, mức độ làm mịn được điều khiển bởi sự lựa chọn các tiêu chuẩn thông số độ lệch, chứ không phải bởi giá trị tuyệt đối của kích thước hạt nhân, thứ hai, hàm Gaussian

có một thuộc tính khá đặc biệt, đó là biến đổi Fourier của nó là một hàm Gaussian, điều

đó rất thuận tiện cho việc phân tích miền tần số của bộ lọc

2.2 TÌM ĐƯỜNG BIÊN CỦA ẢNH

Một điểm được coi là điểm biên nếu có sự thay đổi nhanh hoặc đột ngột về mức xám, tuy nhiên một điểm nhiễu cũng có đặc trưng giống như một điểm biên, tập hợp các điểm biên liên tiếp được gọi là đường biên hoặc đường bao Đường biên có thể dùng để xác định hình dạng một vật thể, hoặc ngăn cách giữa các khu vực có mức xám khác nhau

Tìm đường biên của ảnh là làm nổi lên những điểm ảnh mà tại đó có sự biến đổi lớn về giá trị độ sáng Từ đó ta có các phương pháp tìm đường biên ảnh:

 Phát hiện biên trực tiếp

 Phát hiện biên gián tiếp

 Phát hiện biên dựa vào trung bình cục bộ

 Phát hiện biên dựa vào các phép toán hình thái

Phương pháp phổ biến là phát hiện biên trực tiếp mà hiệu quả hơn cả là việc lấy đạo hàm bậc nhất của f(x,y) điều này sẽ làm nổi bật lên đường biên của ảnh dựa vào sự biến thiên độ sáng Việc lấy đạo hàm bậc nhất này gọi là phương pháp Gradient

Trang 27

Gradient là một vector có các thành phần biểu thị tốc độ thay đổi giá trị của điểm

ảnh theo 2 hướng x, y; đại diện cho sự thay đổi về hướng và độ lớn của một vùng ảnh

(2.6)

Một kĩ thuật tiêu biểu ứng dụng Gradient là kĩ thuật Canny, kĩ thuật này cho ra kết

quả đường biên mảnh và khá chính xác, phân biệt được điểm biên và điểm nhiễu

Các bước thực hiện kĩ thuật Canny:

Bước 1: Loại bỏ nhiễu trong ảnh và làm mờ ảnh bằng cách nhân chập với một bộ lọc

Gaussian

Bước 2: Tính toán giá trị Gradient trong ảnh, ta có thể sử dụng bộ lọc Sobel hoặc Prewitt

theo hai hướng x, y gọi là Gx, Gy

Bước 3: Tính độ lớn Gradient trong ảnh:

𝐺 = √𝐺𝑥2+ 𝐺𝑦2 và θ = arctan(𝐺𝑥

𝐺 𝑦) (2.7) Trong đó 𝐺𝑥, 𝐺𝑦 là đạo hàm theo hướng x, y của điểm ảnh đang xét Góc θ sẽ

được làm tròn theo các hướng thẳng đứng, nằm ngang và chéo tương ứng với các giá trị

0, 45, 90 và 135 độ

( , )( , )

f

f x y x

f x y y

Trang 28

Bước 4: Loại bỏ những điểm không phải cực đại nhằm xóa bỏ những điểm không thuộc

biên Trong bước này ta sẽ so sánh giá trị Gradient của điểm ảnh với các điểm lân cận

theo 4 hướng đã nói ở trên

Với θ = 0, điểm A sẽ là biên độ nếu Gradient tại A lớn hơn Gradient tại A3 và A7 Với θ = 45, điểm A sẽ là biên độ nếu Gradient tại A lớn hơn Gradient tại A2 và A6 Với θ = 90, điểm A sẽ là biên độ nếu Gradient tại A lớn hơn Gradient tại A1 và A5 Với θ = 135, điểm A sẽ là biên độ nếu Gradient tại A lớn hơn Gradient tại A8 và A4

Bước 5: Chọn ra biên của đối tượng trong ảnh

Sau các bước trên ta thu được một tập các điểm tương ứng trên đường biên khá mỏng Vì những điểm có giá trị gradient lớn bao giờ cũng có xác suất là biên thật sự hơn những điểm có giá trị của gradient nhỏ do đó để xác định chính xác hơn nữa biên của các đối tượng ta sử dụng các ngưỡng Theo đó bộ lọc canny sẽ sử dụng một ngưỡng trên

và một ngưỡng dưới nếu gradient tại một điểm trong ảnh có giá trị lớn hơn ngưỡng trên thì ta xác nhận đó là một điểm trên biên của ánh Nếu giá trị này nhỏ hơn ngưỡng dưới thì đó không phải là điểm biên, trong trường hợp giá trị gradient nằm giữa ngưỡng trên

và dưới thì nó chỉ được tính là điểm trên biên khi các điểm bên cạnh của nó có giá trị gradient lớn hơn ngưỡng trên

2.3 GIAO TIẾP UART

USART là viết tắt của cụm từ Universal synchronous asynchronous receiver transmitter nghĩa là bộ truyền nhận nối tiếp đồng bộ và không đồng bộ Thuật ngữ UART nói đến bộ truyền nhận nối tiếp không đồng bộ Đây là một ngoại vi cơ bản và thường

Hình 2 5 Các hướng xét giá trị

Trang 29

dùng trong các quá trình giao tiếp với máy tính, với các vi điều khiển khác và với các module như: RF, Wifi, Bluetooth…

Nếu ta sử dụng một dây để đồng bộ xung CLK giữa 2 thiết bị thì lúc này giao tiếp UART sẽ trở thành giao tiếp đồng bộ và không dùng sẽ là chuẩn giao tiếp không đồng bộ

Ưu điểm của giao tiếp UART là tiết kiệm chân vi điều khiển vì chỉ cần sử dụng

2 chân là TX và RX, đây là ngoại vi mà tất cả các vi điều khiển đều có, ngoài ra thì cũng

có khá nhiều module, cảm biến dùng UART để truyền nhận dữ liệu Tuy vậy nhược điểm của UART là tốc độ chậm, quá trình truyền nhận dễ xảy ra lỗi làm mất, sai dữ liệu nên trong quá trình truyền nhận cần tuân thủ các tiêu chuẩn và cần có các phương pháp

để kiểm tra (thường là truyền thêm bit hoặc byte kiểm tra lỗi)

Tốc độ Baud

Vì không sử dụng chung xung CLK nên để có thể truyền và nhận dữ liệu ta cần thống nhất tốc độ giữa 2 thiết bị, tốc độ này được tạo độc lập ở mỗi thiết bị, tốc độ này được đặt trước, gọi là tốc độ Baud được định nghĩa là số bit truyền được trong một giây, và

có một số giá trị thường dùng như 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400,

56000, 57600, 115200

Khung truyền

Một trong những vấn đề quan trọng khi sử dụng UART là việc đảm bảo dữ liệu truyền nhận không bị lỗi, thiếu hoặc sai lệch vì đặc điểm của nó là không sử dụng chung nguồn xung Để có thể giao tiếp được thì ngoài việc thiết lập chung tốc độ Baud thì khung truyền cũng là một yếu tố không thể thiếu Khung truyền (Frame) là một luật quy định về số bit trong mỗi lần truyền và việc có các bit đặc biệt như Start, Stop, Parity hay không

- Start bit là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng

báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới Start là bit bắt buộc phải có trong khung truyền, và nó là một bit thấp (0)

- Data bits hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận

Số lượng bit data tùy thuộc vào các loại vi điều khiển khác nhau, thường thì data

Trang 30

có 8bit Trong truyền thông nối tiếp UART, bit có trọng số nhỏ nhất (LSB – Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có trọng số lớn nhất (MSB – Most Significant Bit, bit bên trái) Tuy nhiên thứ tự truyền này có thể được cài đặt bởi người dùng

- Parity bit là bit dùng để kiểm tra dữ liệu truyền có bị sai không Có 2 loại parity

là parity chẵn (even parity) và parity lẻ (odd parity) Parity chẵn nghĩa là số lượng

số “1” trong dữ liệu bao gồm bit parity luôn là số chẵn Ngược lại tổng số lượng các số “1” trong parity lẻ luôn là số lẻ Ví dụ: nếu dữ liệu cần truyền là 10111011,

có tất cả 6 bit có giá trị “1” trong dữ liệu này, nếu quy định parity chẵn được dùng, bit parity sẽ mang giá trị 0 để đảm bảo tổng các số “1” là số chẵn Nếu quy định parity lẻ thì giá trị của parity bit là 1 Sau khi truyền chuỗi dữ liệu kèm theo

cả bit parity trên, bên nhận thu được và kiểm tra lại tổng số số “1” (bao gồm cả bit parity), nếu sai so với quy định parity đã đặt trước thì ta khẳng định là dữ liệu nhận được là sai, tuy nhiên nếu đúng thì ta cũng không thể khẳng định được dữ liệu truyền đúng Parity bit không phải là bit bắt buộc và vì thế chúng ta có thể loại bit này khỏi khung truyền

- Stop bits là một hoặc nhiều bit báo cho thiết bị nhận rằng một gói dữ liệu đã được

gởi xong Sau khi nhận được stop bits, thiết bị nhận sẽ tiến hành kiểm tra khung truyền để đảm bảo tính chính xác của dữ liệu Stop bits là các bit bắt buộc phải

có trong khung truyền

2.4 VI ĐIỀU KHIỂN STM32F103C8T6

2.4.1 Tổng quan

STM32 là một trong những dòng chip phổ biến của ST với nhiều họ thông dụng như F0, F1, F2, F3, F4… Stm32F103 thuộc họ F1 với lõi là ARM COTEX M3 STM32F103 là vi điều khiển 32 bit, tốc độ tối đa là 72Mhz Giá thành cũng khá rẻ so với các loại vi điều khiển có chức năng tương tự Mạch nạp cũng như công cụ lập trình khá đa dạng và dễ sử dụng

Một số ứng dụng chính: dùng cho driver để điều khiển ứng dụng, điều khiển ứng dụng thông thường, thiết bị cầm tay và thuốc, máy tính và thiết bị ngoại vi chơi game, GPS cơ bản, các ứng dụng trong công nghiệp, thiết bị lập trình PLC, biến tần, máy in, máy quét, hệ thống cảnh báo, thiết bị liên lạc nội bộ…

Trang 31

Phần mềm lập trình: có khá nhiều trình biên dịch cho STM32 như IAR Embedded Workbench, Keil C…

Thư viện lập trình: có nhiều loại thư viện lập trình cho STM32 như: STM32snippets, STM32Cube LL, STM32Cube HAL, Standard Peripheral Libraries, Mbed core Mỗi thư viện đều có ưu và khuyết điểm riêng, ở đây nhóm sử dụng bộ thư viện chuẩn của ST là Standard Peripheral Libraries vì nó ra đời khá lâu và thông dụng, hỗ trợ nhiều ngoại vi

và cũng như dễ hiểu rõ bản chất của lập trình

Mạch nạp: có khá nhiều loại mạch nạp như: ULINK, J-LINK, CMSIS-DAP, STLINK…thông dụng và giá thành thấp nhất là STlink

2.4.2 Cấu trúc hệ thống

Dòng ARM Cortex là một bộ xử lí thế hệ mới đưa ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ Không giống như các chip ARM khác, dòng Cortex là một lõi xử lí hoàn thiện, đưa ra một chuẩn CPU và kiến trúc hệ thống chung Dòng Cortex gồm có 3 phân nhánh chính:

Hình 2 6 Sơ đồ cấu trúc các khối của STM32F103C8T6

Trang 32

+ Dòng A dành cho các ứng dụng cao cấp,

+ Dòng R dành cho các ứng dụng thời gian thực như các đầu đọc

+ Dòng M dành cho các ứng dụng vi điều khiển và chi phí thấp

STM32F103C8T6 được thiết kế dựa trên dòng Cortex-M3, dòng Cortex-M3 được thiết kế đặc biệt để nâng cao hiệu suất hệ thống, kết hợp với tiêu thụ năng lượng thấp, CortexM3 được thiết kế trên nền kiến trúc mới, do đó chi phí sản xuất đủ thấp để cạnh tranh với các dòng vi điều khiển 8 và 16-bit truyền thống, xung clock tối đa là 72Mhz

 Bộ nhớ

Bộ nhớ Flash được tổ chức như là 1 khối chính (main block) và 1 khối thông tin (information block) lên đến 64 Kb (hoặc 128 Kb) chia thành 128 pages, mỗi page 1 Kbytes (medium-density devices) Ngoài ra bộ nhớ SRAM có dung lượng 20 kbytes

 Clock, reset và quản lý nguồn

- Điện áp hoạt động 2.0V -> 3.6V

- Có các chế độ quản lý nguồn như Power on reset(POR), Power down reset(PDR) và programmable voltage detector (PVD)

- Thạch anh nội dùng dao động RC ở mode 8Mhz hoặc 40khz

- Sử dụng thạch anh ngoài 32.768khz được sử dụng cho RTC

Trang 33

- Single mode hay Continuous mode

- Tự động calib và có thể điều khiển hoạt động ADC bằng xung Trigger

- Thời gian chuyển đổi nhanh: 1us tại tần số 65Mhz

- Có bộ DMA giúp tăng tốc độ xử lí

 Khối timer

- Có 7 timer

- 3 timer 16 bit hỗ trợ các mode IC/OC/PWM

Hình 2 7 Sơ đồ nguồn xung clock của STM32F103C8T6

Trang 34

- 1 timer 16 bit hỗ trợ để điều khiển động cơ với các mode bảo vệ như ngắt input, dead-time

- Watchdog timer dùng để bảo vệ và kiểm tra lỗi

- 1 sysTick timer 24 bit đếm xuống

 Hỗ trợ 9 kênh giao tiếp bao gồm:

- 2 bộ I2C (SMBus/PMBus)

- 3 bộ USART (ISO 7816 interface, LIN, IrDA capability, modem control)

- 2 SPIs (18 Mbit/s)

- 1 bộ CAN interface (2.0B Active)

- USB 2.0 full-speed interface

2.4.3 Tìm hiểu GPIO

GPIO là từ viết tắt của General purpose I/O ports là nơi giao tiếp chung giữa tín hiệu

ra và tín hiệu vào Ở STM32 thì các chân GPIO chia ra làm nhiều Port như PortA, PortB

Số lượng Port phụ thuộc vào số lượng chân (pin) và cách gọi phụ thuộc vào nhà sản xuất (ví dụ có loại vi điều khiển có PortA mà lại không có PortD) Mỗi Port thường có 16 chân đánh số từ 0 -> 15 tương ứng với mỗi chân là 1bit Mỗi chân có 1 chức năng khác nhau như analog input, external interrupt hay đơn thuần chỉ là xuất tín hiệu on/off ở mức 0,1 Chức năng của mỗi chân được cung cấp trong datasheet của nhà sản xuất Các chế độ hoạt động với GPIO của STM32:

- Input floating: cấu hình chân I/O là ngõ vào và để nổi

- Input pull-up: cấu hình chân I/O là ngõ vào, có trở kéo lên nguồn

- Input-pull-down: cấu hình chân I/O là ngõ vào, có trở kéo xuống GND

- Analog: cấu hình chân I/O là Analog

- Output open-drain: cấu hình chân I/O là ngõ ra, khi output control = 0 thì N-MOS

sẽ dẫn, chân I/O sẽ nối VSS, còn khi output control = 1 thì P-MOS và N-MOS đều không dẫn, chân I/O được để nổi

- Output push-pull: cấu hình chân I/O là ngõ ra, khi output control = 0 thì N-MOS

sẽ dẫn, chân I/O sẽ nối VSS, còn khi output control = 1 thì P-MOS dẫn, chân I/O được nối VDD

Trang 35

- Alternate function push-pull: sử dụng chân I/O vừa là ngõ ra và vừa là ngõ vào, tuy nhiên sẽ không có trở kéo lên và kéo xuống ở input, chức năng output giống Output push-pull

- Alternate function push-pull: sử dụng chân I/O vừa là ngõ ra và vừa là ngõ vào, tuy nhiên sẽ không có trở kéo lên và kéo xuống ở input, chức năng output giống Output open-drain

Các thanh ghi cấu hình GPIO trong stm32F103C8T6

 Thanh ghi cấu hình port GPIOx_CRx

Mỗi chân GPIO có 2 cặp bit để cài đặt CNF quyết định là chế độ là analog, floating, pull-up… còn MODE quyết định là ngõ vào hay ngõ ra Ngõ ra với tốc độ bao nhiêu Thông số cài đặt chi tiết như sau:

2bit mode:

- 00: Input mode (reset state)

- 01: Output mode, max speed 10 MHz

- 10: Output mode, max speed 2 MHz

- 11: Output mode, max speed 50 MHz

Trang 36

- 01: Floating input (reset state)

- 10: Input with pull-up / pull-down

- 11: Reserved

• Khi là output:

- 00: General purpose output push-pull

- 01: General purpose output Open-drain

- 10: Alternate function output Push-pull

- 11: Alternate function output Open-drain

 Thanh ghi đọc giá trị ngõ vào- GPIOx_IDR với x là tên port

Đây là thanh ghi đọc giá trị đầu vào của từng chân Khi đầu vào ở chân nào đó có mức logic là 1 thì bit tương ứng với chân đó sẽ có giá trị là 1 Và ngược lại là 0

 Thanh ghi chọn giá trị ngõ ra của port- GPIOx_ODR với x là tên port

Đây là thanh ghi quyết định mức logic của đầu ra trên chân STM32 tương ứng với mode output Giá trị của bit nào ở mức cao thì output của nó sẽ ở mức cao nếu sử dụng mode output push pull và ngược lại Riêng mode output open drain thì có chút khác biệt

2.4.4 Timer và PWM

STM32F103C8 có tất cả 7 timer nhưng trong đó bao gồm 1 systick timer, 2 watchdog timer nên chỉ còn lại 4 timer dùng cho các chức năng khác như ngắt, PWM,

Hình 2 9 Thanh ghi đọc giá trị ngõ vào

Hình 2 10 Thanh ghi chọn giá trị ngõ ra của port

Trang 37

Encoder, Input capture… Trong đó TIM1 là Timer đặc biệt, chuyên dụng cho việc xuất xung với các mode xuất xung, các mode bảo vệ đầy đủ hơn so với các timer khác TIM1 thuộc khối clock APB2, còn các TIM2, TIM3, TIM4 thuộc nhóm APB1

Có 3 vấn đề cần quan tâm khi sử dụng timer đó là:

- Timer clock

- Prescaler

- Auto Reload Value

Prescaler là bộ chia tần số của timer Bộ chia này có giá trị tối đa là 16 bit tương ứng với giá trị là 65535 Các giá trị này có thể được thay đổi và điều chỉnh bằng lập trình

Tần số sau bộ chia này sẽ được tính là:

𝑓CK_CNT =𝑓CK_PSC

𝑃𝑆𝐶+1 (2.8) Trong đó:

𝑓CK_CNT: tần số sau bộ chia

𝑓CK_PSC: tần số clock đầu vào cấp cho timer

PSC: giá trị truyền vào được lập trình bằng phần mềm

Auto Reload Value là giá trị bộ đếm tối đa có thể được điều chỉnh để nạp vào cho timer Giá trị bộ đếm này được cài đặt tối đa là 16bit tương ứng với giá trị là 65535.Từ các thông số trên ta rút ra công thức cần tính cuối cùng đó là:

𝐹TIMER = 𝑓SYSTEM

(𝑃𝑆𝐶+1)(𝑃𝐸𝑅𝐼𝑂𝐷+1) (2.9)

𝐹TIMER : là giá trị cuối cùng của bài toán, đơn vị là hz

𝑓SYSTEM : tần số clock hệ thống được chia cho timer sử dụng, đơn vị là hz PSC: giá trị nạp vào cho bộ chia tần số của timer Tối đa là 65535

Period: giá trị bộ đếm nạp vào cho timer Tối đa là 65535

Trang 38

Ngắt timer: khi giá trị đếm của bộ đếm timer (thanh ghi CNT) vượt qua giá trị của Auto Reload Value thì cờ báo tràn sẽ được kích hoạt Trình phục vụ ngắt tràn sẽ xảy

ra nếu được cấu hình cho phép trước đó

bộ phận đặc biệt là bộ cổ góp và chổi than tiếp xúc cổ góp, điều này giúp cấp điện cho động cơ kể cả khi động cơ quay Vì là bộ phận tiếp xúc nên sau một thời gian chổi quét

sẽ bị mài mòn và cần phải thay thế Động cơ DC thường có tốc độ cao, đáp ứng nhanh kích thước nhỏ gọn, momen cao dù ở tốc độ nhỏ nên được sử dụng phổ biến trong các

mô hình, các máy móc, thiết bị, đồ gia dụng, dùng khởi động các động cơ xe

Dòng điện chạy qua động cơ được tính như sau:

𝐼Độ𝑛𝑔 𝑐ơ =𝑉𝑁𝑔𝑢ồ𝑛−𝑉đ𝑖ệ𝑛 độ𝑛𝑔

𝑅𝑃ℎầ𝑛 ứ𝑛𝑔 (2.10) Công suất động cơ được tính như sau:

𝑃độ𝑛𝑔 𝑐ơ = 𝐼Độ𝑛𝑔 𝑐ơ∗ 𝑉đ𝑖ệ𝑛 độ𝑛𝑔 (2.11) Trong đó 𝑉đ𝑖ệ𝑛 độ𝑛𝑔 là sức điện động của rotor sinh ra khi quay

𝑅𝑃ℎầ𝑛 ứ𝑛𝑔 là điện trở nội của các cuộn dây

Dòng điện khi khởi động của động cơ thường bằng 4-7 lần dòng điện hoạt động định mức, khi tính toán dòng cho động cơ cần chú ý đến dòng khởi động để đảm bảo an toàn cho mạch điện

Phương pháp điều khiển động cơ DC

Để điều khiển động cơ DC thì phương pháp phổ biến nhất là điều khiển điện áp rotor vì tốc độ quay của động cơ DC sẽ tỉ lệ thuận với điện áp nguồn Chiều quay có

Trang 39

Để điều khiển điện áp DC cấp cho động cơ ta có thể dùng phương pháp thay đổi thời gian cấp điện - 𝑡𝑂𝑁, nghĩa là dòng điện được đóng và ngắt liên tục để qua đó thay đổi điện áp trung bình Để làm được điều này ta cần dùng các phần tử chuyển mạch có điều khiển như transistor hoặc MOSFET Giả sử điện áp cấp là 24V và thời gian 𝑡𝑂𝑁 là 50% thì điện áp trung bình là 12V Phương pháp này được gọi là phương pháp điều biến

độ rộng xung (pulse width modulation- PWM) Tùy vào công suất động cơ mà ta chọn loại linh kiện chuyển mạch cho phù hợp

Trong đề tài, nhóm sử dụng động cơ DC có bộ giảm tốc loại GA25 có các thông

số như sau:

- Điện áp hoạt động trong khoảng 6 - 18V, điện áp định mức 12V

- Tốc độ sau bộ giảm tốc 17rpm

- Dòng không tải 50mA, dòng có tải là 240mA

- Momen xoắn khi có tải là 14kg.cm

2.6 ENCODER

Encoder ở các hệ thống điều khiển tự động là bộ phận để đo lường dịch chuyển thẳng hoặc góc, đồng thời chuyển đổi vị trí góc/vị trí thẳng mà nó ghi nhận được thành

Hình 2 11 Động cơ GA25

Trang 40

tín hiệu nhị phân Chính nhờ những tín hiệu nhị phân này mà hệ thống vi tính cho ta biết được vị trí chính xác

Cấu tạo và nguyên lý hoạt động

Nguyên lý cơ bản của encoder, đó là một đĩa tròn xoay, quay quanh trục Trên đĩa có các lỗ (rãnh) Dùng một đèn led để chiếu lên mặt đĩa Khi đĩa quay, chỗ không có

lỗ, đèn led không chiếu xuyên qua được, chỗ có lỗ (rãnh), đèn led sẽ chiếu xuyên qua Khi đó, phía mặt bên kia của đĩa, đặt một con mắt thu Với các tín hiệu có hoặc không

có ánh sáng chiếu qua, thì ghi nhận được đèn led có chiếu qua lỗ hay không Như vậy là encoder sẽ tạo ra các tín hiệu xung vuông và các tín hiệu xung vuông này được cắt từ ánh sáng xuyên qua lỗ Nên tần số của xung đầu ra sẽ phụ thuộc vào tốc

độ quay của tấm tròn đó Đối với encoder nhóm đang dùng thì nó có 2 tín hiệu ra lệch pha nhau 90 Hai tín hiệu này có thể xác định được chiều quay của động cơ

Phân loại

Ecoder được phân hai loại chính:

- Encoder tuyệt đối: sử dụng đĩa theo mã nhị phân hoặc mã Gray

- Encoder tương đối: có tín hiệu tăng dần hoặc theo chu kỳ

Ecoder tuyệt đối

Encoder kiểu tuyệt đối có kết cấu gồm những phần sau: Bộ phát ánh sáng, đĩa mã hóa (có chứa dải băng mang tín hiệu), một bộ thu ánh sáng nhạy với ánh sáng phát ra Đĩa mã hóa ở encoder tuyệt đối được chế tạo từ vật liệu trong suốt, người ta chia mặt đĩa thành các góc đều nhau và các đường tròn đồng tâm

Ecoder tương đối

Về cơ bản thì Encoder kiểu tương đối đều giống nhau, chỉ khác ở đĩa mã hóa Ở encoder tương đối thì đĩa mã hóa gồm 1 dải băng tạo xung Ở dải băng này được chia làm nhiều lỗ bằng nhau và cách đều nhau (có thể chất liệu trong suốt để ánh sáng chiếu qua)

Ngày đăng: 10/10/2019, 07:14

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Nguyễn Đình Phú, “Giáo trình vi xử lý”, Trường ĐHSPKT, Tp.HCM, 2013 Sách, tạp chí
Tiêu đề: “Giáo trình vi xử lý”
[2] Nguyễn Đình Phú, “Giáo trình: Thực hành vi điều khiển - ARM STM32”, Trường ĐHSPKT, Tp.HCM, 2014 Sách, tạp chí
Tiêu đề: “Giáo trình: Thực hành vi điều khiển - ARM STM32”
[3] Phan Văn Phương, Trần Trí Tâm, “Ứng dụng xử lý ảnh cảnh báo tài xế ngủ gật”, Đồ án tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2014 Sách, tạp chí
Tiêu đề: “Ứng dụng xử lý ảnh cảnh báo tài xế ngủ gật”
[4] Phan Trọng Thuật, Nguyễn Văn Đúng, “Phân loại sản phẩm dùng camera”, Đồ án tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2014 Sách, tạp chí
Tiêu đề: “Phân loại sản phẩm dùng camera”
[5] Lê Quốc Nhật, Châu Thái Bảo, “Nhận dạng thứ tự màu cho cáp kết nối trong công nghiệp dùng xử lý ảnh”, Đồ án tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2016 Sách, tạp chí
Tiêu đề: “Nhận dạng thứ tự màu cho cáp kết nối trong công nghiệp dùng xử lý ảnh”
[6] Trần Thanh Sang, Trần Mạnh Hùng, “Thiết kế hệ thống nhận dạng biển số xe”, Đồ án tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2014 Sách, tạp chí
Tiêu đề: Thiết kế hệ thống nhận dạng biển số xe
[7] Lê Doãn Thắng, “Thiết kế thi công bộ điều khiển máy chạy bộ điện”, Đồ án tốt nghiệp, Trường ĐHSPKT Tp. HCM, 2015 Sách, tạp chí
Tiêu đề: “Thiết kế thi công bộ điều khiển máy chạy bộ điện”
[8] T.Lê, ” Dùng webcam phân loại sản phẩm”, nld.com.vn, 8/2008 Sách, tạp chí
Tiêu đề: ”Dùng webcam phân loại sản phẩm”
[9] Nguyễn Đình Phú, Nguyễn Trường Duy, “Giáo Trình: Kỹ Thuật Số”, Nhà xuất bản ĐH Quốc Gia Tp.HCM, 2013 Sách, tạp chí
Tiêu đề: “Giáo Trình: Kỹ Thuật Số”
Nhà XB: Nhà xuất bản ĐH Quốc Gia Tp.HCM
[10] Trần Thu Hà, Trương Thị Bích Ngà, Nguyễn Thị Lưỡng, Bùi Thị Tuyết Đan, Phù Thị Ngọc Hiếu, Dương Thị Cẩm Tú, “Giáo Trình: Điện tử cơ bản”, Nhà xuất bản ĐH Quốc Gia Tp.HCM, 2013 Sách, tạp chí
Tiêu đề: Giáo Trình: Điện tử cơ bản”
Nhà XB: Nhà xuất bản ĐH Quốc Gia Tp.HCM

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w