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 1TRƯỜ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 2TRƯỜ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 3Trong 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 4MỤ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 52.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 6Danh 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 7CHƯƠ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 8thă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 9Hì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 10thang.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 11Mụ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 12bằ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 13Cảm biến
MPU6050
Mạch điều khiển động cơ DC
Arduino UNO R3
Khối nguồn
Trang 14Hì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 15Hì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 16Hì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 17Arduino 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 18Arduino 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 21Hì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 22Save: 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 23Hì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 24MPU6050 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 27Nhì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 28Hì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 29như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 30nế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 32Hì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 33quá 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 34Hì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 35sẽ 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