1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ, CHẾ TẠO ROBOT HAI BÁNH TỰ CÂN BẰNG

70 2,1K 45

Đ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 70
Dung lượng 5,06 MB

Nội dung

MỤC LỤCDanh mục hình ảnh6CHƯƠNG 1 TỔNG QUAN VỀ ROBOT HAI BÁNH TỰ CÂN BẰNG71.1 Giới thiệu chung71.2 Thế nào là robot hai bánh tự cân bằng71.3 Tại sao phải thiết kế robot hai bánh tự cân bằng81.4 Mục tiêu của đồ án101.5 Phương pháp nghiên cứu101.6 Giới hạn của đồ án11CHƯƠNG 2 THIẾT KẾ CHẾ TẠO122.1 Sơ đồ khối122.2 Thiết kế phần cứng122.3 Mạch điện tử132.3.1 Nguồn điện132.3.2 Bộ điều khiển trung tâm Arduino Uno R3142.3.2.1 Giới thiệu chung142.3.2.2 Cấu trúc phần cứng và chức năng162.3.2.3 Môi trường phát triển (trình biên dịch IDE)192.3.3 Mạch điều khiển động cơ Robo shield202.3.4 Cảm biến MPU6050212.3.4.1 Giới thiệu cảm biến MPU6050212.3.4.2 Các chân giao tiếp232.3.5 Động cơ Encoder 334 Xung + Giảm Tốc RP201232.4 Các phương thức giao tiếp242.4.1 Điều chế độ rộng xung PWM242.4.2 Giao thức I2C272.4.3 Giao tiếp UART292.5 Giải thuậtlập trình302.5.1 Nguyên lý điều khiển cân bằng302.5.2 Bộ lọc Kalman312.5.2.1 Giới thiệu bộ lọc Kalman312.5.2.2 Quá trình ước lượng332.5.2.3 Giải thuật bộ lọc Kalman rời rạc342.5.2.4 Tại sao phải sử dụng bộ lọc Kalman362.5.2.5 Xây dựng bộ lọc Kalman cho cảm biến MPU6050382.5.3 Giải thuật điều khiển PID432.5.3.1 Giải thuật PID432.5.3.2 Xây dựng giải thuật PID cho robot cân bằng452.5.4 Nguyên lý hoạt động47CHƯƠNG 3 THỬ NGHIỆM VÀ KẾT LUẬN493.1 Thử nghiệm493.2 Kết quả493.3 Hướng phát triển50PHỤ LỤC52Phụ lục 1 Chương trình chính52Phụ lục 2 Chương trình thư viện bộ lọc Kalman58Phụ lục 3 Chương trình thư viện PID

Trang 1

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA ĐIỆN TỬ VIỄN THÔNG

ĐỒ ÁN TỐT NGHIỆP

THIẾT KẾ, CHẾ TẠO ROBOT HAI BÁNH TỰ CÂN BẰNG

Hà Nội, năm 2016

GIẢNG VIÊN HƯỚNG DẪN : THS TRẦN TRỌNG THẮNG

SINH VIÊN THỰC HIỆN : TRẦN ĐÌNH PHÚ

: BÙI ĐỨC CƯỜNG

CHUYÊN NGÀNH : ĐIỆN TỬ VIỄN THÔNG

Trang 2

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA ĐIỆN TỬ VIỄN THÔNG

ĐỒ ÁN TỐT NGHIỆP

THIẾT KẾ, CHẾ TẠO ROBOT HAI BÁNH TỰ CÂN BẰNG

Hà Nội, năm 2016

LỜI CẢM ƠN

GIẢNG VIÊN HƯỚNG DẪN : THS TRẦN TRỌNG THẮNG

SINH VIÊN THỰC HIỆN : TRẦN ĐÌNH PHÚ

: BÙI ĐỨC CƯỜNG

CHUYÊN NGÀNH : ĐIỆN TỬ VIỄN THÔNG

Trang 3

Trong thời gian hiện đề tài nghiên cứu khoa học đó là một trong những bước ngoặtcuối cùng đánh dấu sự trưởng thành của một sinh viên ở giảng đường đại học.Để trởthành một cử nhân hay một kỹ sư đóng góp những gì mình đã học được cho sự phát triểnđất nước.

Lời đầu tiên chúng em xin chân thành cảm ơn sự hướng dẫn tận tình của thầyThS Trần Trọng Thắng, khoa Điện tử-Viễn thông, trường Đại học Điện lực Trong suốtthời gian thực hiện đề tài, thầy đã dành nhiều thời gian để hướng dẫn chúng em thực hiện

đề tài Thầy đã hướng dẫn chúng em tìm hiểu những kiến thức cần thiết để thực hiện đềtài Bên cạnh đó chúng em cũng xin gởi lời cảm ơn chân thành đến thầyThS Hoàng Xuân Đông, thầy luôn nhiệt tình hướng dẫn, sẵn sàng giúp đỡ khi chúng emgặp khó khăn trong việc lập trình, chế tạo robot Em cũng xin chân thành cảm ơn các thầy

cô trong khoa Điện tử-Viễn thông, cũng như các thầy cô trong trường đã giảng dạy, giúp

đỡ chúng em trong suốt bốn năm học qua Chính các thầy cô đã xây dựng cho chúng emnhững kiến thức nền tảng và những kiến thức chuyên môn để em có thể hoàn thành đề tàinày

Hà nội, ngày 7 tháng 1 năm 2016

SINH VIÊN THỰC HIỆN

Trần Đình Phú Bùi Đức Cường

Trang 4

MỤC LỤC

Danh mục hình ảnh 6

CHƯƠNG 1 TỔNG QUAN VỀ ROBOT HAI BÁNH TỰ CÂN BẰNG 7

1.1Giới thiệu chung 7

1.2Thế nào là robot hai bánh tự cân bằng 7

1.3Tại sao phải thiết kế robot hai bánh tự cân bằng 8

1.4 Mục tiêu của đồ án 10

1.5 Phương pháp nghiên cứu 10

1.6Giới hạn của đồ án 11

CHƯƠNG 2 THIẾT KẾ CHẾ TẠO 12

2.1 Sơ đồ khối 12

2.2 Thiết kế phần cứng 12

2.3 Mạch điện tử 13

2.3.1 Nguồn điện 13

2.3.2 Bộ điều khiển trung tâm Arduino Uno R3 14

2.3.2.1 Giới thiệu chung 14

2.3.2.2 Cấu trúc phần cứng và chức năng 16

2.3.2.3 Môi trường phát triển (trình biên dịch IDE) 19

2.3.3 Mạch điều khiển động cơ Robo shield 20

2.3.4 Cảm biến MPU6050 21

2.3.4.1 Giới thiệu cảm biến MPU6050 21

2.3.4.2 Các chân giao tiếp 23

2.3.5 Động cơ Encoder 334 Xung + Giảm Tốc RP201 23

2.4 Các phương thức giao tiếp 24

2.4.1 Điều chế độ rộng xung PWM 24

2.4.2 Giao thức I2C 27

2.4.3 Giao tiếp UART 29

2.5 Giải thuật-lập trình 30

2.5.1 Nguyên lý điều khiển cân bằng 30

2.5.2 Bộ lọc Kalman 31

Trang 5

2.5.2.1 Giới thiệu bộ lọc Kalman 31

2.5.2.2 Quá trình ước lượng 33

2.5.2.3 Giải thuật bộ lọc Kalman rời rạc 34

2.5.2.4 Tại sao phải sử dụng bộ lọc Kalman 36

2.5.2.5 Xây dựng bộ lọc Kalman cho cảm biến MPU6050 38

2.5.3 Giải thuật điều khiển PID 43

2.5.3.1 Giải thuật PID 43

2.5.3.2 Xây dựng giải thuật PID cho robot cân bằng 45

2.5.4 Nguyên lý hoạt động 47

CHƯƠNG 3 THỬ NGHIỆM VÀ KẾT LUẬN 49

3.1 Thử nghiệm 49

3.2 Kết quả 49

3.3 Hướng phát triển 50

PHỤ LỤC 52

Phụ lục 1 Chương trình chính 52

Phụ lục 2 Chương trình thư viện bộ lọc Kalman 58

Phụ lục 3 Chương trình thư viện PID 61

Trang 6

Danh mục hình ảnh

Hình 1.1: Mô tả nguyên lý cân bằng 7

Hình 1.2: Mô tả cách di chuyển 8

Hình 1.3: Xe ba bánh trên mặt phẳng 8

Hình 1.4: Xe 3 bánh đi lên 9

Hình 1.5: Xe 3 bánh đi xuống 9

Hình 1.6: Hai bánh lên và xuống linh động 10

Hình 2.1: Sơ đồ khối của hệ thống của robot 12

Hình 2.2: Mô hình robot sau khi lắp ráp 13

Hình 2.3: Pin 14

Hình 2.4: Arduino UNO R3 15

Hình 2.5: Sơ đồ chân arduino 18

Hình 2.6: Trình biên dịch IDE 19

Hình 2.7: Mạch điều hiển động cơ robo shield 21

Hình 2.8: Chân giao tiếp mpu6050 23

Hình 2.9: Động cơ Encoder 24

Hình 2.10: Điều chế độ rộng xung 25

Hình 2.11: Quan hệ giữa vận tốc không tải của động cơ DC và chu kỳ PWM cho động cơ DC Hitachi 25

Hình 2.12: Kết nối giữa Master và các Slave 27

Hình 2.13: Trạng thái lấy mẫu một bit dữ liệu SDA 28

Hình 2.14: Sơ đồ kết nối giữa arduino với MPU6050 theo chuẩn giao thức I2C 29

Hình 2.15: Nguyên lý điều khiển 30

Hình 2.16: Mô hình bộ lọc 32

Hình 2.17: Tín hiệu chưa được lọc 32

Hình 2.18: Tín hiệu đã qua bộ lọc kalman 33

Hình 2.19: Quy trình của bộ lọc kalman 35

Hình 2.20: Quy trình hoàn chỉnh của bọ lọc kalman 36

Hình 2.21: Hệ thống điều khiển vòng kín 43

Hình 2.22: Đồ thị biểu diễn hệ số PID theo thời gian 45

Hình 2.23: Sơ đồ giải thuật xe tự cân bằng 48

Hình 2.24: Mô hình sản phẩm đã hoàn thành 49

Hình 2.25: Mô hình xe đang chế tạo 50

Trang 7

CHƯƠNG 1 TỔNG QUAN VỀ ROBOT HAI BÁNH TỰ

CÂN BẰNG

1.1 Giới thiệu chung

Cùng với sự phát triển của khoa học kỹ thuật, ngày nay robot cókhả năng thay thế con người làm việc trong những môi trường độc hại,trong sản xuất hoặc bắt chước con người về hình thức, hành vi và cảsuy nghĩ Hiện nay lĩnh vực robot đang phát triển nhanh nhờ vào sựphát triển liên tục của công nghệ, robot đã và đang được chế tạo đểphục vụ cho nhiều mục đích khác nhau Với ý tưởng sử dụng robot thaythế con người thì “Robot hai bánh tự cân bằng” cũng là đề tài hiệnđang được nhiều tác giả quan tâm vì mô hình robot này có khả năng dichuyển linh hoạt nhưng lại không chiếm nhiều không gian

1.2 Thế nào là robot hai bánh tự cân bằng

Hình 1.1: Mô tả nguyên lý cân bằng

Đối với các xe hay robot ba hay bốn bánh, việc thăng bằng và ổnđịnh của chúng là nhờ trọng tâm của chúng nằm trong bề mặt chân đế

do các bánh xe tạo ra Đối với các xe 2 bánh có cấu trúc như xe đạp,việc thăng bằng khi không di chuyển là hoàn toàn không thể, vì việc

Trang 8

thăng bằng của xe dựa trên tính chất con quay hồi chuyển ở hai bánh

xe khi đang quay Còn đối với xe hay robot hai bánh tự cân bằng, làloại chỉ có hai bánh với trục của hai bánh xe trùng nhau, để cho robotcân bằng, trọng tâm của nó cần được giữ nằm ngay giữa các bánh xe.Điều này giống như ta giữ một cây gậy dựng thẳng đứng cân bằngtrong lòng bàn tay Thực ra, trọng tâm của toàn bộ robot không đượcbiết nằm ở vị trí nào, cũng không có cách nào tìm ra nó Do vậy, thay

vì tìm cách xác định trọng tâm nằm giữa các bánh xe ta cho xe dichuyển nhằm triệt tiêu góc nghiêng của xe

Hình 1.2: Mô tả cách di chuyển

1.3 Tại sao phải thiết kế robot hai bánh tự cân bằng

Việc thiết kế robot hai bánh tự cân bằng là nền tảng để phát triển

xe hai bánh tự cân bằng sau này vì vậy ta cần so sánh xe hai bánh tựcân bằng với các thể loại ba bánh hay bốn bánh hiện nay

Những mobile robot xây dựng hầu hết robot là những robot dichuyển bằng ba bánh xe, với hai bánh lái được lắp ráp đồng trục, vàmột bánh đuôi nhỏ Có nhiều kiểu khác nhau, nhưng đây là kiểu thôngdụng nhất Còn đối với các xe 4 bánh, thường mộtđầu xe có hai bánh truyền động và đầu xe còn lại được gắn một hoặchai bánh lái

Trang 9

Hình 1.4: Xe 3 bánh đi lên

Khi di chuyển lên đồi, sự việc còn tệ hơn, trọng tâm thay đổi vềphía sau và thậm chí làm xe/robot bị lật úp khi di chuyển trên bậc

Trang 10

thang.Việc bố trí bốn bánh xe, giống như xe hơi đồ chơi hay các loại xebốn bánh hiện đang sử dụng trong giao thông không gặp vấn đề nhưngđiều này sẽ làm các xe/robot không gọn.

Hình 1.5: Xe 3 bánh đi xuống

Ngược lại, các xe dạng hai bánh đồng trục lại thăng bằng rất linhđộng khi di chuyển trên địa hình dốc, mặc dù bản thân là một hệ thốngkhông ổn định Khi nó leo sườn dốc, nó tự động nghiêng ra trước và giữcho trọng lượng dồn về hai bánh lái chính Tương tự vậy, khi bướcxuống dốc, nó nghiêng ra sau và giữ trọng tâm rơi vào các bánh lái.Chính vì vậy, không bao giờ có hiện tượng trọng tâm của xe rơi rangoài vùng đỡ của các bánh xe để có thể gây ra sự lật úp

Hình 1.6: Hai bánh lên và xuống linh động

1.4 Mục tiêu của đồ án

Trang 11

Mục tiêu của đồ án là xây dựng được robot có khả năng di chuyểntrên hai bánh,làm phương tiện di chuyển hiệu quả linh động, dễ dàngxoay trở trong không gian chật hẹp.Trong khuôn khổ 3 tháng thực hiệnluận văn tốt nghiệp, những mục tiêu được đề ra như sau:

 Tìm hiểu về các loại robot cân bằng, nguyên lý cơ bản về cân bằng

 Thiết kế mạch điện tử kết hợp các cảm biến thực hiện chức năng

1.5 Phương pháp nghiên cứu

Đề tài được tiếp cận dựa trên các phương pháp sau:

 Phương pháp khảo sát tài liệu, tìm hiểu các tài liệu liên quan đếnđến đề tài như: cấu trúc robot hai bánh tự cân bằng, cảm biếnMPU6050, mạch điều khiển động cơ

 Phương pháp khảo sát các thuật toán và lọc nhiễu cho cảm biến như: bộ lọc Kalman và thuật toán điều khiển PID

 Phương pháp thực nghiệm tiến hành xây dựng các thuật toán trên mô hình

1.6 Giới hạn của đồ án

Đề tài tập trung vào việc xây dựng mô hình phần cứng robot như:kết cấu mô hình, mạch điều khiển động cơ, các thuật toán trên vi điềukhiển như bộ lọc Kalman giải thuật cân bằng PID Robot có thể cân

Trang 12

bằng có khả năng điều khiển để di chuyển nhưng chưa có nhiều ứngdụng.

CHƯƠNG 2 THIẾT KẾ CHẾ TẠO

2.1 Sơ đồ khối

Trang 13

Cảm biến

MPU6050

Mạch điều khiển động cơ DC

Arduino UNO R3

Khối nguồn

Trang 14

Hình 2.2: Mô hình robot sau khi lắp ráp

2.3 Mạch điện tử

2.3.1 Nguồn điện

Nguồn điện sủ dụng pin 12v, mỗi PIN có dung lượng khoảng3000mAh được đấu nối tiếp với nhau giúp robot có đủ nguồn điển hoạtđộng trong một thời gian dài

Trang 15

Hình 2.3: Pin

2.3.2 Bộ điều khiển trung tâm Arduino Uno R3

2.3.2.1 Giới thiệu chung

Ardunio thật ra là một bo mạch vi xử lý được dùng để lập trìnhtương tác với các thiệt bị phần cứng như cảm biến, động cơ, đèn hoặccác thiết bị khác Đặc điểm nổi bật của arduino là môi trường phát triểnứng dụng dễ sử dụng, với ngôn ngữ lập trình có thể học một cáchnhanh chóng ngay cả với người ít am hiểu về điện tử và lập trình

Trang 16

Hình 2.4: Arduino UNO R3

Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt tên theomột vị vua vào thế kỉ thứ 9 là King Arduino Arduino chính thức đượcđưa ra giới thiệu vào năm 2005 như là một công cụ khiêm tốn dànhcho các sinh viên của giáo sư Massimo Banzi, một trong những ngườiphát triển Arduino, tại trường Interaction Design Ivrea (IDII) Mặc dùhầu như không được tiếp thị gì cả, tin tức về Arduino vẫn lan truyền vớitốc độ chóng mặt nhờ những lời truyền miệng tốt đẹp của những ngườidùng đầu tiên

Arduino đã và đang được sử dụng rất rộng rãi trên toàn thế giới vàngày càng chứng tỏ được sức mạnh của chúng thông qua một số ứngdụng độc đáo của người dùng trong cộng đồng nguồn mở Tuy nhiêntại Việt Nam Arduino vẫn còn chưa được biết đến nhiều

Arduino cơ bản là một nền tảng tạo bởi mẫu mở về điện tử đượctạo thành từ các phần cứng lẫn phần mềm Về mặt kỹ thuật Arduino cóthể cọi là 1 bộ điều khiển logic có thể lập trình được Đơn giản hơn,

Trang 17

Arduino là một thiết bị có thể tương tác với ngoại cảnh thông qua cáccảm biến và hành vi được lập trình sẵn Với thiết bị này, việc lắp ráp vàđiều khiển các thiết bị điện tử sẽ dễ dàng hơn hơn bao giờ hết.

Hiện tại có nhiều loại vi điều khiển và đa số được lập trình bằngngôn ngữ C/C++ hoặc Assembly nên rất khó khăn cho những người có

ít kiến thức sâu về lập trình và điện tử Nó là trở ngại cho mọi ngườimuốn tạo riêng cho mình một món đồ mang tính công nghệ Do vậyArduino được phát triển nhằm đơn giản hóa việc thiết kế, lắp ráp linhkiện điện tử cũng như lập trình vi xử lý và moị người có thể tiếp cận dễdàng hơn với thiết bị điện tử không cần nhiều kiến thức điện tử và thờigian Sau đây là một số thế mạnh của Arduino so với nền tảng vi điềukhiển khác:

 Chạy trên đa nền tảng:việc lập trình Arduino có thể thực hiện trêncác hệ điều hành khác nhau như Windowns, Mac Os, Linux trênDesktop , Android trên di động

 Ngôn ngữ lập trình đơn giản, dễ hiểu

 Nền tảng mở: Arduino được phát triển dựa trên nguồn mở nênphần mềm chạy trên Arduino được chia sẻ dễ dàng và tích hợp vàcác nền tảng khác nhau

 Mở rộng phần cứng: Arduino được thiết kế và sử dụng theo dạngmodule nên việc mở rộng phần cứng cũng dễ dàng hơn

 Đơn giản và nhanh: rất dễ dàng lắp ráp, lập trình và sử dụng thiếtbị

 Dễ dàng chia sẻ: mọi người dễ dàng chia sẻ mã nguồn với nhau

mà không lo lắng về ngôn ngữ hay hệ điều hành mình đang sửdụng

2.3.2.2 Cấu trúc phần cứng và chức năng

Trang 18

Arduino Uno là một bo mạch vi điều khiển dựa trên chip Atemaga

328 Nó có 14 chân vào bằng tín hiệu số, trong đó có 6 chân có thể sửdụng để điều chế độ rộng xung Có 6 chân đầu vào tín hiệu tương tựcho phép chúng ta kết nối với các bộ cảm biến bên ngoài để thu thập

số liệu, sử dụng một dao động thạch anh tần số dao động 16MHz, cómột cổng kết nối bằng chuẩn USB để chúng ta nạp chương trình vào bomạch và một chân cấp nguồn cho mạch, một ICSP header, một nútreset Nó chứa tất cả mọi thứ cần thiết để hỗ trợ các vi điều khiển,nguôn cung cấp cho Arduino có thể là máy tính thông qua cổng USBhoặc là từ bộ lọc nguồn chuyên dụng được biến đổi từ xoay chiều sangmột chiều hoặc lấy nguồn từ pin

a)Khối nguồn

Arduino có thể hỗ trợ thông qua kết nối USB hoặc với một nguồncung cấp điện bên ngoài Các nguồn năng lượng được lựa chọn tựđộng Hệ thống vi điều khiển có thể hoạt động bằng nguồn cung cấpbên ngoài từ 6V hoặc 20V Tuy nhiên, nếu cung cấp ít hơn 7V, chân 5V

có thể cung cấp ít hơn 5V và hệ thống vi điều khiển có thể không ổnđịnh Nếu cấp nhiều hơn 12V, hoặc chỉnh điện áp có thể quá nó và gâynguy hiểm cho bo mạch Phạm vi khuyến nghị là 7V đến 12V

 Chân Vin: điện áp đầu vào Arduino khi chúng ta dùng nguồn điệnbên ngoài( khác với nguồn 5V lấy từ USB hoặc thông qua jackcắm ngoài riêng) Chúng ta có thể cung cấp nguồn thông quachân này

 Chân 5V: cung cấp nguồn vi điều khiển và các bộ phận khác trên

bo mạch và cung cấp cho các thiết bị ngoại vi khi kết nối tới bomạch

 Chân 3,3V : cung cấp nguồn cho các thiết bị cảm biến

 Chân GND: chân nối đất

Trang 19

 Chân Aref: tham chiếu điện áp đầu vào analog

 Chân IOREF: cung cấp điện áp cho các vi điều khiển hoạt động Một shield được cấu hình đúng có thể đọc điện áp IOREF và lựa chọnnguồn tích hợp hoặc kích hoạt bộ chuyển đổi điện áp để làm việc ởmức 5V hoặc 3,3V

Hình 2.5: Sơ đồ chân arduino

Arduino Uno có 14 chân digital (chân 0-13) và 6 chân analog( chân A0-A5)

Các chân digital chúng ta có thể cấu hình để làm chân nhận dữliệu vào từ các thiết bị ngoại vi hoặc làm chân để truyền tín hiệu racác thiết bị ngoại vi

Bằng cách sử dụng các hàm pinMode(), digitalWrite() vàdigitalRead() Mỗi chân có thể cung cấp hoặc nhận một dòng điện tối

Trang 20

đa 40mA và có một điện trở kéo nối 20 -50 kOhms Ngoài ra có một sốchân có chức năng đặc biệt:

 Chân 0 (Rx): chân được dùng để nhận dữ liệu nối tiếp

 Chân 1 (Tx): chân được dùng để truyền dữ liệu nối tiếp

 Chân 2 và 3: chân ngắt ngoài

 Chân 2, 5, 6, 9, 10, 11: chân vào/ra hoặc có thể điều chỉnh độrộng xung

 Chân 13 được nối tiếp với 1 LED đơn, sáng tắt tương ứng với mứclogic của chân này

 Chân 10(ss) 11(MOSI), 12(MISO), 13 (SCK): chuẩn giao tiếp SPI

 Các chân analog có độ phân giải 10bit (tương ứng với 1024 mứcgiá trị khác nhau) ứng với từ 0-5V Ngoài ra một số chân có chứcnăng đặc biệt:

 Chân A4(SDA) và A5(SCL): hỗ trợ truyền thông TWI

2.3.2.3 Môi trường phát triển (trình biên dịch IDE)

Môi trường phát triển Arduino được phát triển dựa trên ngôn ngữlập trình Processing và dự án Wiring Được thiết kế cho những ngườikhông biết nhiều về lập trình, bao gồm trình soạn thảo có chứ năngđánh dấu cú pháp, tự động đóng mở các cặp ngoặc nhọn, tự động thụtcách đầu dòng Kèm theo đó là khả năng biên dịch và nạp chương trìnhvào chip vi điều khiển Một chương trình viết bằng Arduino gọi là một

“sketch” Như đã nói ở trên, Arduino là một dự án mã nguồn mở, do đó

có thể download mọi thứ miễn phí, bao gồm cả IDE từ trang chủ củaArduino IDE này không cần phải cài đặt, chỉ cần download một tập tinnén về từ trang chủ, giải nén và chạy tập tin arduino.exe Khi đó, trênmàn hình sẽ xuất hiện cửa sổ như sau:

Trang 21

Hình 2.6: Trình biên dịch IDE

*Các nút cơ bản trên thanh công cụ:

Verify: Kiểm tra mã nguồn có khớp với chương trình trên bo

không

Upload: Biên dịch và tải mã nguồn lên Arduino

New: Tạo tập tin mã nguồn mới

Open: Mở tập tin mã nguồn

Trang 22

Save: Lưu tập tin mã nguồn

Serial Monitor: Màn hình giao tiếp nối tiếp, dùng để xem dữ liệu

từ Arduino

Ở giữa là không gian soạn thảo mã nguồn Ở dưới là cửa sốOutput, nơi hiển thị các thông báo khi biên dịch và upload chươngtrình lên bo Arduino

Để sử dụng Arduino, đầu tiên là cắm bo Arduino vào bằng cápUSB Cài driver cho bo Arduino Mở chương trình lập trình Arduinolên và thực hiện việc lập trình

2.3.3 Mạch điều khiển động cơ Robo shield

Robo Shield là sản phẩm chuyên dùng cho việc điều khiển robot.Trên Shield thành phần chính là IC L298 dán, cho phép điều khiển 02động cơ DC, hoặc một động cơ bước Shield được tích hợp các khe cắmcho module ESP8266 - một module wifi mạnh mẽ, Bluetooth HC06,Module RF PT2272 nhằm ứng dụng cho việc nhận tín hiệu điều khiểnkhông dây từ xa Robo Shield tương thích với Arduino Uno, ArduinoMega hoặc có thể cắm dây với các board arduino khác

Trang 23

Hình 2.7: Mạch điều hiển động cơ robo shield

Cấu trúc và chức năng:

Robo shield có thể hoạt động nhờ vào nguồn cung cấp từ 6v đến46v

+ Chân 5V: cung cấp nguồn điều khiển và các bộ phận khác trên

bo mạch và cung cấp cho các thiết bị ngoại vi khi kết nối tới bo mạch.+ Chân 3,3V : cung cấp nguồn cho các thiết bị cảm biến

+ Chân GND: chân nối đất

+ OUT1, OUT2, OUT3, OUT4: là chân cung cấp nguồn cho động cơ+ ngoài ra còn một số chân có chức năng tương ứng với các châncủa Arduino

2.3.4 Cảm biến MPU6050

2.3.4.1 Giới thiệu cảm biến MPU6050

Trang 24

MPU6050 là cảm biến của hãng InvenSense MPU6050 là mộttrong những giải pháp cảm biến chuyển động đầu tiên trên thế giới cótới 6 (mở rộng tới 9) trục cảm biến tích hợp trong 1 chip duy nhất.

MPU6050 sử dụng công nghệ độc quyền MotionFusion củaInvenSense có thể chạy trên các thiết bị di động, tay điều khiển… Nóđược điều hành ra một nguồn cung cấp 3.3V/5V, và giao tiếp thông quaI2C với tốc độ tối đa 400kHz Chip này cũng có sẵn trong một gói SPIđược gọi là MPU6000 cho tốc độ giao tiếp lên tới 10Mbs

 Con quay hồi chuyển 3 trục (3-axis MEMS gyroscope)

 Cảm biến gia tốc 3 chiều (3-axis MEMS accelerometer)

 Một tính năng của chip này là bộ xử lý chuyển động kỹ thuật số(DMP) Trong lý thuyết này có thể được sử dụng để sản xuất trựctiếp các góc Euler, quaternions, hoặc một hướng cosin ma trận,

và thậm chí thực hiện lọc cùng với việc tích hợp dữ liệu từ một labàn I2C bên ngoài

 MPU6050 có thể kết hợp với cảm biến từ trường (bên ngoài) đểtạo thành bộ cảm biến 9 góc đầy đủ thông qua giao tiếp I2C

Trang 25

 Hơn nữa, MPU6050 có sẵn bộ đệm dữ liệu 1024 byte cho phép viđiều khiển phát lệnh cho cảm biến, và nhận về dữ liệu sau khiMPU-6050 tính toán xong.

2.3.4.2 Các chân giao tiếp

Hình 2.8: Chân giao tiếp mpu6050

SCL Chân SCL trong giao tiếp I2C

SDA Chân SDA trong giao tiếp I2C

XDA Chân dữ liệu (kết nối với cảm

2.3.5 Động cơ Encoder 334 Xung + Giảm Tốc RP201

Động cơ 334 xung+ giảm tốc RP201 mạnh mẽ có kèm hộp số vớinhiều loại tỷ số truyền khác nhau Động cơ có thể sử dụng làm các loại

xe robot cần các momen xoắn cao

*Thông số kỹ thuật:

Trang 26

độ tần số xung (PFM) và phương pháp điều độ rộng xung (PWM) Đề tài

xung (PWM) Trong đề tài này ta sử dụng phương pháp điều chế độrộng xung

* Nguyên lý:

Trang 27

Nhìn trên hình vẽ, TON và TOFF lần lượt là khoảng thời gian kích

tỉ lệ TON/TOFF nào đó, nên mối quan hệ giữa vận tốc động cơ và điện

áp trung bình này là không tuyến tính

Trang 28

Hình 2.11: Quan hệ giữa vận tốc không tải của động cơ DC và chu

kỳ PWM cho động cơ DC Hitachi

Điều này dễ hiểu bởi điện áp trung bình được tính bằng tích phântrong một chu kỳ của điện áp ngõ vào, cũng chính là trong khoảngTON

Chu kỳ của một tín hiệu ra PWM là khoảng thời gian mà sau đó

được lặp lại

 Tần số PWM = 1/chu kỳ

 Hệ số duty là tỉ lệ bề rộng của mức ‘1’ so với bề rộng chu kỳ

 Độ phân giải (resolution) tín hiệu PWM là phần mịn nhất là hệ sốduty có thể được điều chế

Có hai cách tạo ra xung PWM:

 Mạch tương tự (analog): có giá trị thay đổi liên tục và có độ phângiải vô hạn cả về thời gian và biên độ, có thể được dùng để điềukhiển trực tiếp nhiều thứ, như độ lớn âm được phát ra từ mộtradio, tốc độ của động cơ Tuy nhiên, việc xây dựng và thiết kếmạch tương tự thường tốn kém Có thể tạo ra một mạch PWM

Trang 29

nhưng độ chính xác thường không cao và dễ điều khiển nhưmạch số.

 Mạch số: bằng cách điều khiển các tín hiệu analog một cách sốhóa, giá thành hệ thống và tiêu hao năng lượng hệ thống có thểgiảm một cách đáng kể Hơn nữa, nhiều vi điều khiển và DSPshiện nay có thêm các bộ điều khiển PWM tích hợp, đưa đến việcđiều khiển trở nên đơn giản hơn rất nhiều Thông qua một bộđếm có độ phân giải cao, hệ số duty của một sóng vuông được

mã hóa thành một mức tín hiệu analog đặc trưng Tín hiệu PWMvẫn là tín hiệu số vì tại một thời điểm bất kỳ, nguồn DC qua tải

là mở hết hoặc ngắt hết

*Cài đặt PWM trong các bộ vi điều khiển:

Đối với điều khiển PWM bằng phần cứng từ các vi điều khiển có

PWM trong các Timer, để bắt đầu PWM thì phần mềm của chip phải

nhiệm vụ sau:

 Đặt chu kỳ của timer/counter điều chế xung vuông

 Đặt thời gian của thanh ghi điều khiển PWM

 Đặt hướng ra của tín hiệu PWM, tín hiệu có đảo hay không đảo

Trang 30

nếu nó đủ mạnh hơn mức tín hiệu số để đổi logic từ 1 thành 0 hoặcngược lại.

Đây là một ưu điểm mà đôi khi được dùng cho truyền thông: tăng

Hình 2.12: Kết nối giữa Master và các Slave

 Master: Là chip khởi động quá trình truyền nhận, phát đi địa chỉcủa thiết bị cần giao tiếp và tạo xung giữ nhịp trên đường SCL

 Slave: Là chip có một địa chỉ cố định, được gọi bởi Master và phục

vụ yêu cầu từ Master

 SDA - Serial Data: Là đường dữ liệu nối tiếp, tất cả các thông tin

về địa chỉ hay dữ l iệu đều được truyền trên đường này theo thứ

tự từng bit một

Trang 31

 SCL - Serial Clock: Là đường giữ nhịp nối tiếp I2C là chuẩntruyền thông nối tiếp đồng bộ, cần có 1 đường tạo xung giữ nhịpcho quá trình truyền/nhận, cứ mỗi xung trên đường giữ nhịp SCL,một bit dữ liệu trên đường SDA sẽ được lấy mẫu.

Hình 2.13: Trạng thái lấy mẫu một bit dữ liệu SDA

Dữ liệu nối tiếp trên đường SDA được lấy mẫu khi đường SCL ởmức cao trong một chu kỳ giữ nhịp, vì thế đường SDA không được đổitrạng thái khi SCL ở mức cao (trừ điều kiện Start và Stop) Chân SDA cóthể được đổi trạng thái khi SCL ở mức thấp

Các tín hiệu Start và Stop:

SDA = SCL = HIGH: Bus I2C ở trạng thái “Free” sẵn sàng cho mộtgiao tiếp

 Điều kiện Start: SDA ↓và SCL = HIGH

 Điều kiện Stop: SDA ↑và SCL = HIGH

Cả hai điều kiện Star và Stop đều được tạo ra bởi Master Sau tínhiệu Start, bus I2C ở trạng thái “busy” thực hiện tác vụ truy xuất nốitiếp Sau Stop bus I2C ở trạng thái “free” cho lần kế tiếp

Trang 32

Hình 2.14: Sơ đồ kết nối giữa arduino với MPU6050 theo chuẩn giao

thức I2C

2.4.3 Giao tiếp UART

UART là viết tắt của (Universal Asynchronous ReceiverTransmitter) Thường là một mạch tích hợp được sử dụng trong việctruyền dẫn dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi Rấtnhiều vi điều khiển hiện nay đã được tích hợp UART, vì vấn đề tốc độ

và độ điện dung của UART không thể so sánh với các giao tiếp mớihiện nay nên các dòng PC và Laptop đời mới không còn tích hợp cổngUART Cũng như giao tiếp SPI và I2C có 1 dây truyền dữ liệu và 1 dâyđược sử dụng để truyền xung clock (SCL) để đồng bộ trong giao tiếp.Với UART thì không có dây SCL, vấn đề được giải quyết khi mà việctruyền UART được dùng giữa hai vi xử lý với nhau, đồng nghĩa với việcmỗi vi xử lý có thể tự tạo ra xung clock Để bắt đầu cho việc truyền dữliệu bằng UART, một START bit được gửi đi sau đó là các bit dữ liệu vàkết thúc quá trình truyền là STOP bit

Khi ở trạng thái chờ mức điện áp ở mức 1 (high) Khi bắt đầutruyền START bit sẽ chuyển từ 1 xuống 0 để báo hiệu cho bộ nhận là

Trang 33

quá trình truyền dữ liệu sắp xảy ra Sau START bit là đến các bit dữ liệuD0-D7 (các bit này có thể ở mức 1 hoặc 0 tùy theo dữ liệu) Sau khitruyền hết dữ liệu thì đến bit Parity để bộ nhận kiểm tra tính đúng đắncủa dữ liệu truyền Cuối cùng là STOP bit báo cho thiết bị rằng các bit

đã được gửi xong Thiết bị nhận sẽ tiến hành kiểm tra khung truyềnnhằm đảm báo tính đúng đắn của dữ liệu

Các thông số cơ bản trong truyền nhận UART:

 Baud rate (tốc độ baud): khoảng thời gian dành cho 1 bit được truyền Phải được cài đặt giống nhau ở gửi và nhận

 Frame (khung truyền): khung truyền quy định về số bit trong mỗi lần truyền

 Start bit: là bit đầu tiên được truyền trong một khung truyền Báo hiệu cho thiết bị nhận có một gói dữ liệu sắp được truyền đến

 Data: dữ liệu cần truyền Bit có trọng số nhỏ nhất LSB được

truyền trước sau đó đến bit MSB

 Parity bit: kiểm tra dữ liệu truyền có đúng không

 Stop bit: là 1 bit hoặc nhiều bit báo cho thiết bị rằng các bit đã được gửi xong

 Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảotính đúng đắn của dữ liệu

2.5 Giải thuật-lập trình

2.5.1 Nguyên lý điều khiển cân bằng

Trang 34

Hình 2.15: Nguyên lý điều khiển

Khi robot đứng thẳng tại vị trí cân bằng robot sẽ bị lực tác độnglàm cho robot ngã về phía trước hoặc phía sau như Hình 2.15 Nếurobot bị đổ về phía trước như Hình 2.15(a) thông qua cảm biến IMUrobot sẽ xác định được góc nghiêng và điều khiển hai bánh xe dichuyển về phía trước theo hướng mà robot bị nghiêng Hay khi robot bị

đổ về phía sau như Hình 2.15(c) thì robot sẽ điều khiển hai bánh xe dichuyển về phía sau theo hướng robot bị nghiêng cho đến khi gócnghiêng của robot bằng với góc mà tại đó robot đứng thẳng thì robot

sẽ dừng lại

2.5.2 Bộ lọc Kalman

2.5.2.1 Giới thiệu bộ lọc Kalman

Được đề xuất từ năm 1960 bởi giáo sư Kalman để thu thập và kết

Trang 35

sẽ cho ướclượng giá trị tối ưu (chính xác do đã được loại sai số, nhiễu) như là đang

quan hệ (vận tốc góc = đạo hàm/vi phân của giá trị góc)

Ta có thể hiểu đơn giản như là từ một tín hiệu cần đo, khi chúng ta

đo, sẽ có những sai số từ cảm biến, ảnh hưởng đến tín hiệu cần đo, môitrường đo có nhiễu Tất cả những thứ này, tổng hợp lại, sẽ cho ta mộtkết quả đo Nhiệm vụ của bộ lọc là giảm thiểu sai số và nhiễu để chomột kết quả đo tối ưu

Ngày đăng: 29/01/2016, 10:12

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w