You are on page 1of 47

BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP QUẢNG NINH




BÁO CÁO ĐỒ ÁN
ĐỀ TÀI: NGHIÊN CỨU ROBOT HAI BÁNH TỰ CÂN BẰNG SỬ DỤNG
ARDUINO

Sinh viên thực hiện : VŨ TUẤN ANH, HOÀNG ĐỨC DỰ


Lớp : Tự Động Hóa K13
Ngành học : CNKT Tự Động Hóa
Khóa học : 2020 - 2024
Hình thức đào tạo : Đại học
Giảng viên hướng dẫn : THS. PHẠM HỮU CHIẾN

Quảng Ninh, tháng 10, năm 2023


BỘ CÔNG THƯƠNG

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP QUẢNG NINH




BÁO CÁO ĐỒ ÁN

ĐỀ TÀI: NGHIÊN CỨU ROBOT HAI BÁNH TỰ CÂN BẰNG SỬ DỤNG


ARDUINO

Sinh viên thực hiện : VŨ TUẤN ANH, HOÀNG ĐỨC DỰ


Lớp : Tự Động Hóa K13
Ngành học : CNKT Tự Động Hóa
Khóa học : 2020 - 2024
Hình thức đào tạo : Đại học
Giảng viên hướng dẫn : THS. PHẠM HỮU CHIẾN

Quảng Ninh, tháng 10, năm 2023

2
BỘ CÔNG THƯƠNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA
VIỆT NAM

TRƯỜNG ĐH CÔNG NGHIỆP QUẢNG NINH Độc lập-Tự do-Hạnh phúc

BẢN NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

Sinh viên thực hiện:........................................... Lớp:....................................................


Chuyên Ngành:................................................. Khoa:...................................................
Giảng viên hướng dẫn:.....................................Học hàm, học vị:..................................
Đơn vị công tác:..............................................................................................................
NỘI DUNG NHẬN XÉT
1. Tính cấp thiết, ý nghĩ khoa học và thực tiễn của đề tài:....................................
.........................................................................................................................................
2. Bố cục và trình bày đồ án:.................................................................................
.........................................................................................................................................
3. Kết quả đạt được:..............................................................................................
4. Các vấn đề cần làm rõ hay bổ sung, chỉnh sửa (nếu có):................................
5. Ý kiến khác:......................................................................................................
6. Kết luận chung:.................................................................................................
7. Điểm đánh giá:..................................................................................................

Quảng Ninh, ngày…..tháng….năm 2023


GIẢNG VIÊN HƯỚNG DẪN
(Ký, ghi rõ họ tên )

3
ĐỀ TÀI ROBOT

ĐỀ TÀI: NGHIÊN CỨU ROBOT HAI BÁNH TỰ CÂN


BẰNG SỬ DỤNG ARDUINO

GVHD:
NHÓM SVTH:

Quảng Ninh, tháng 10 năm 2023

4
MỤC LỤC
GIẤY ĐĂNG KÝ ĐỀ TÀI......................................................................................2
LỜI CẢM ƠN..........................................................................................................4
Nhận xét của giảng viên...........................................................................................5
MỤC LỤC................................................................................................................6
DANH SÁCH HÌNH ẢNH......................................................................................8
DANH SÁCH BẢNG..............................................................................................9
CHƯƠNG 1 TỔNG QUAN...............................................................................10
1.1 Tầm quan trọng của đề tài.........................................................................10
1.1.1 Giới thiệu và lí do chọn đề tài..........................................................10
1.2 Xe hai bánh cân tự bằng và ứng dụng trong thực tiễn...............................11
1.2.1 Tại sao phải thiết kế xe hai bánh tự cân bằng..................................11
1.2.2 Ứng dụng trong thực tiễn.................................................................13
1.3 Mục tiêu.....................................................................................................13
1.4 Giới hạn đề tài...........................................................................................14
1.5 Những đề tài liên quan...............................................................................14
1.6 Phương pháp, phương tiên nghiên cứu......................................................15
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT....................................................................16
2.1 Nguyên lý cân bằng robot..........................................................................16
2.1.1 Mô hình toán học xe hai bánh tự cân bằng......................................17
2.2 Bộ điều khiển PID.....................................................................................23
2.2.1 Khái niệm.........................................................................................23

2.2.2 Các phương pháp tìm thông số PID ..............................24

5
2.3 Cảm biến gia tốc góc nghiêng MPU-6050................................................25
CHƯƠNG 3 THIẾT KẾ PHẦN CỨNG VÀ THI CÔNG HỆ THỐNG............27
3.1 Yêu cầu thiết kế.........................................................................................27
3.2 Thiết bị phần cứng.....................................................................................27
3.2.1 Danh sách thiết bị sử dụng...............................................................27
Mạch điều khiển động cơ L298N...................................................................28
3.2.2 Sơ đồ kết nối phần cứng...................................................................29
3.3 Thiết kế phần cứng cho xe hai bánh trên phần mềm Solidworks..............30
3.3.1 Thiết kế khung cho xe hai bánh.......................................................30
3.4 Lưu đồ giải thuật........................................................................................31
CHƯƠNG 4 KẾT QUẢ THỰC TẾ...................................................................33
4.1 Thiết kế bộ điều khiển PID và kiếm chứng trên Arduino IDE..................33
CHƯƠNG 5 KẾT LUẬN...................................................................................37
5.1 Nhận xét.....................................................................................................37
5.2 Kết quả.......................................................................................................37
5.3 Hướng phát triển........................................................................................37
TÀI LIỆU THAM KHẢO......................................................................................38
PHỤ LỤC...............................................................................................................39

6
DANH SÁCH HÌNH ẢNH

Hình 1.1: Xe hai bánh tự cân bằng thực tế...............................................................9


Hình 1.2:(a) Hình xe ba bánh khi xuống dốc. (b) Hình xe ba bánh khi lên dốc....10
Hình 1.3: Xe hai bánh khi lên dốc và xuống dốc...................................................10
Hình 2.1: Nguyên lý hoạt động của hệ xe cân bằng..............................................14
Hình 2.2: Hình mô tả xe hai bánh tự cân bằng.......................................................15
Hình 2.3: (a) Xe hai bánh khi nhìn nghiêng. (b) Xe hai bánh khi nhìn từ trên
xuống......................................................................................................................16
Hình 2.4: Sơ đồ khối hệ thống sử dụng bộ điều khiển PID...................................22
Hình 2.5: Cảm biến góc nghiêng MPU6050..........................................................24
Hình 3.1: Sơ đồ kết nối phần cứng.........................................................................27
Hình 3.2: (a) Tầng dưới của xe. (b) Tầng trên của xe............................................28
Hình 3.3: (a) Xe khi nhìn nghiêng. (b) Mặt trước của xe......................................28
Hình 3.4: Thuật toán chương trình chính...............................................................29
Hình 3.5: (a) Mặt sau của xe. (b) Mặt trước của xe...............................................29
Hình 3.6: Xe hai bánh khi nhìn nghiêng................................................................30
Hình 4.1: Đáp ứng tín hiệu góc nghiêng với thông số PID TH1...........................31
Hình 4.2: Đáp ứng góc nghiêng với thông số bộ điều khiển PID TH2..................32
Hình 4.3: Đáp ứng góc nghiêng với thông số bộ điều khiển PID TH3..................33
Hình 4.4: Đáp ứng góc nghiêng với thông số bộ điều khiển PID TH4..................34

7
DANH SÁCH BẢNG

Bảng 2.1: Ký hiệu và ý nghĩa của các đại lượng....................................................17


Bảng 2.2: Bảng kết nối chân của cảm biến MPU6050..........................................24
Bảng 3.1: Bảng thiết bị sử dụng.............................................................................26
Bảng 3.2: Bảng chú thích chân và chức năng........................................................27
Bảng 3.3: Bảng thông số mô hình..........................................................................30
Bảng 4.1: Bảng thông số PID TH1........................................................................31
Bảng 4.2: Bảng thông số PID TH2........................................................................32
Bảng 4.3: Bảng thông số PID TH3........................................................................33
Bảng 4.4: Bảng thông số PID TH4........................................................................34

8
CHƯƠNG 1 TỔNG QUAN
1.1 Tầm quan trọng của đề tài
1.1.1 Giới thiệu và lí do chọn đề tài
Ngày nay với sự phát triển vượt bậc của khoa học công nghệ hiện nay, song song
với sự phát triển đó chính là nhu cầu về vật chất, cuộc sống của con người ngày một tăng
cao, con người luôn muốn đơn giản hóa các công việc hằng ngày nhưng vẫn mang lại
năng suất và độ chính xác gần tuyệt đối. Và trong khoảng 20 năm trở lại đây con người
đã chế tạo robot với nhiều chức năng và được áp dụng vào các mục đích khác nhau.
Hiện nay khi vào các nhà máy chúng ta không khó bắt gặp hình ảnh những robot làm
thay các công việc của con người, không những vậy robot có thể bắt trước cả hành động,
suy nghĩ của con người và dần dần robot có thể thay thế con người làm việc trong những
môi trường nguy hiểm như các mỏ khoáng sản, các nhà máy hạt nhân và có thể thay thế
con người đi đến những nơi như mặt trăng, sao hỏa.

Với ý tưởng sử dụng robot để thay thế con người thì các dự án robot hai bánh cân
bằng nói chung và xe hai bánh cân bằng nói riêng từ trước đến nay đã và đang là đề tài
được nhiều nhà khoa học khai thác, phát triển. Chính vì vậy đây là một trong nhưng dự
án có rất nhiều ứng dụng trong cuộc sống hiện nay và được sử dụng với nhiều mục đích
khác nhau như: phục vụ nhu cầu giải trí ví dụ như hiện nay chúng ta có sản phẩm xe
điện hai bánh cân bằng thường được giới trẻ sử dụng nhiều, hoặc ở các nước phát triển
xe hai bánh cân bằng có thể thay thế cho xe đạp vì thiết kế nhỏ gọn giá trị sử dụng cao.
Bởi vì mô hình toán học của xe hai bánh cân bằng được thiết kế dựa trên sự hoạt động
của mô hình con lắc ngược, chính vì vậy các nhà khoa học đã khai thác việc đó và áp
dụng vào những mô hình mang tính ứng dụng cao hơn như việc điều chỉnh thăng bằng
cho tên lửa trong quân sự và việc giữ thăng bằng cho máy bay cũng áp dụng từ mô hình
toán học này. Chính vì những ưu điểm và tính ứng dụng thực tiễn cao của mô hình xe

9
hai bánh cân bằng, nên em quyết định lựa chọn đề tài này nhằm để tìm hiểu, khai thác
thêm những ưu điểm, tìm ra những hạn chế để cải tiến và khắc phục.

Hình 1.1: Xe hai bánh tự cân bằng thực tế

1.2 Xe hai bánh cân tự bằng và ứng dụng trong thực tiễn
1.2.1 Tại sao phải thiết kế xe hai bánh tự cân bằng
Đối với các xe 3 bánh hay 4 bánh thông dụng, việc thăng bằng và ổn định của chúng
nằm trong bề mặt chân đế do cái bánh xe tạo ra, nhưng với các loại xe hai bánh có cấu
trúc như xe đạp việc giữ thăng bằng khi không chuyển động là hoàn toàn không thể. Vì
việc 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 hai bánh tự cân bằng được dựa trên mô hình toán học của con lắc
ngược, là loại xe chỉ có 2 bánh với trục của 2 bánh xe trùng nhau, để cho xe cân bằng thì
trọng tâm của xe cần được giữ nằm ngay giữ các bánh xe, điều này giống như khi ta giữ
một cây gậy thẳng đứng trong lòng bàn tay.

Ngày trước những robot hầu hết được xây dựng với 3 bánh xe, với 2 bánh lái được
ráp đồng trục, và một bánh đuôi nhỏ. Nhưng việc thiết kế xe 3 bánh này điều mang lại
những nhược điểm cố hủ, chính vì được thiết kế 3 bánh mà trọng lượng của xe được chia
đều cho các bánh xe lái và bánh đuôi. Chính vì vậy nó luông mang những nhược điểm

10
như: khi lên dốc thì trọng lượng của xe sẽ được dồn vào bánh sau (đuôi xe) làm cho
bánh lái mất khả năng bám và ngã như hình 1, còn khi xuống dốc toàn bộ trọng lượng
của xe sẽ dồn vào phần đầu xe và có thể làm xe bị lật úp như hình 2.

(a) (b)
Hình 1.2:(a) Hình xe ba bánh khi xuống dốc. (b) Hình xe ba bánh khi lên dốc

Nhưng ngược lại xe hai bánh đồng trục lại rất linh động trong việc giữ thăng bằng khi đi
trên các dang địa hình phức tạp, mặc dù bản thân là một hệ thống không ổn định. Cho
nên việc thiết kế và sử dụng xe hai bánh cân bằng có thể phần nào khắc phục được
những nhược điểm mà các thiết kế tiền nhiệm mắc phải.

Hình 1.3: Xe hai bánh khi lên dốc và xuống dốc

11
1.2.2 Ứng dụng trong thực tiễn
Do việc sử dụng điện thay vì sử dụng các loại nhiên liệu khác như xăng, nên xe hai
bánh cân bằng phù hợp và thân thiện với môi trường, do thiết kế nhỏ gọn, đa năng, phù
hợp để di chuyển trong các văn phòng, hoặc đi dạo. Song song với đó vẫn tồn tại những
nhược điểm như giá thành khá mắc, xe chỉ phù hợp cho 1 người sử dụng, không đủ
nhanh và an toàn khi sử dụng ở các đường lớn. Ngoài ra xe hai bánh còn được ứng dụng
vào việc vận chuyển tự động trọng các tòa nhà, các phòng thí nghiệm, hay trong tình
hình dịch bệnh như hiện nay, robot xe hai bánh còn co thể được cải tiến, kết hợp thêm
các robot camera, hay robot dò line nhằm mục đích hỗ trợ việc y tế và xét nghiện Covid.

1.3 Mục tiêu


Nhóm thực hiện đề tài với mục tiêu chính là sử dụng giải thuật điều khiển PID để
mô hình xe hai bánh có thể tự cân bằng ngay cả khi bị tác động bởi những yếu tố môi
trường bên ngoài. Ngoài ra còn những mục tiêu khác của đề tài đặt ra như sau:
 Tìm hiểu các mô hình xe 2 bánh tự cân bằng và các nguyên lý cơ bản của
việc giữ thằng bằng cho xe.
 Tính toán các thông số động lực học, xây dựng các hàm không gian- trạng
thái (state-space) của mô hình.
 Xây dựng thuật toán điều khiển động cơ duy trì trạng thái thăng bằng robot.
 Nghiên cứu lý thuyết điều khiển giải thuật PID cho điểu khiển hệ xe tự cân
bằng.
 Thực hiện mô phỏng Matlab Simulink để kiểm nghiệm và đi tìm bộ trọng số
PID phù hợp, tối ưu cho hệ xe.
 Thiết kế phần cứng hệ xe cân bằng trên Solidworks.
 Thi công thực tế và thực hiện lập trình cho hệ xe cân bằng.
 Lập trình tìm thông số PID bằng phương pháp thử sai trên Arduino IDE.

12
1.4 Giới hạn đề tài
 Robot 2 bánh tự cân bằng sử dụng giải thuật PID, một giải thuật chưa phải là tối
ưu nhất cho hệ xe 2 bánh nên sẽ gặp nhiều hạn chế như sau:
 Xe bị dao động nhiều khi cân bằng.
 Không thể điều khiển xe đi tới, lui, rẻ trái, rẻ phải theo ý muốn
 Vẫn chưa mô phỏng bộ điều khiển PID cho hệ xe
 Thiết kế phần cứng cho xe chưa được tối ưu.
 Chỉ sử dụng bộ điều khiển PID để điều khiển góc nghiêng thân xe, do đó không
thể điều khiển các góc xoay cũng như vị trí của xe.

1.5 Những đề tài liên quan


Những đề tài sinh viên tìm hiểu đều nhắm đến đối tượng là xe hai bánh tự cân bằng
dựa trên phương pháp điều khiển PID và kết hợp với các phương pháp điều khiển khác
để khắc phục những hạn chế của bộ điều khiển PID và nâng cao chất lượng của hệ
thống. Ở đề tài [1], [2], [3] tác giả của bài báo đều dùng phương pháp điều khiển Fuzzy
cho hệ xe hai bánh tự cân bằng, cũng đang là đề tài mà sinh viên đang hướng đến. Còn
đề tài [4], [5] tác giả của 2 bài báo này đã kết hợp thêm 2 phương pháp điều khiển PID,
và phương pháp tối ưu bầy đàn.

Đề tài [1] tác giả đã giới thiệu về mô hình xe hai bánh tự cân bằng là loại robot có hai
bánh quay song song giống như con lắc ngược truyền thống, có tính chất không ổn định.
Robot tự cân bằng là một hệ thống phức tạp có đặc điểm là bậc cao hơn, không ổn định,
đa biến, phi tuyến và khớp nối mạnh. Đề tài [2] tác giả cũng đã giới thiệu về các đặc
điểm của xe hai bánh cân bằng và đã chỉ ra được việc sử dụng phương pháp điều khiển
mờ có thể thực hiện thành công khả năng tự điều khiển cân bằng của robot 2 bánh và
hạn chế robot bị mất cân bằng và rơi xuống, có giá trị lý thuyết tốt hơn và giá trị nghiên
cứu. Đề tài [3] tác giả đã đề cập thêm hai phương pháp điều khiển khác là LQR và PID
và đã chỉ ra phương pháp điều khiển Fuzzy vượt trội hơn so với phương pháp PID, tác

13
giả đã chỉ ra nhưng khó khan của việc thiết kế bộ điều khiển Fuzzy là quá trình kéo dài
của tham số hệ mờ, và việc điều chỉnh các tham số và giải thuật đều dựa trên kinh
nghiệm, phép thử sai. Do đó tác giả đã đề xuất thêm thuật toán di truyền (Genetic
Algorithm) để giảm thời gian điều chỉnh qua đó thu được kết quả điều khiển tốt hơn và
tối ưu hơn so với phương pháp điều khiển Fuzzy thông thường. Đề tài [4] tác giải đã
thiết kế bộ điều khiển mờ dựa trên phương pháp tối ưu bầy đàn (PSO) để khắc phục
nhưng hạn chế khi thiết kế dựa trên LQR, làm cho hệ thống hiệu quả hơn, qua mô phỏng
tác giả cho thấy bất kể góc nghiêng lớn đến đâu, trong mọi trường hợp, bộ điều khiển
mờ dựa trên PSO có khả năng điều khiển tuyệt vời và duy trì sự ổn định của hệ thống.
Đề tài [5] tác giả đã chỉ ra cho người đọc những ưu điểm vượt trội của robot xe 2 bánh
so với các loại xe robot 3 hay 4 bánh như trước. Phân tích rõ những ưu nhược điểm và
hạn chế của các phương pháp điều khiển, qua đó đưa ra được nhứng phương pháp tối ưu
nhất. Ở đây tác giả ứng dụng 2 phương pháp điều khiển đó chính là PID và logic mờ
(Fuzzy) với hệ thống xe 2 bánh, và sử dụng phần mềm Matlab mô phỏng để tìm ra
những thông số PID. Việc kết hợp 2 phương pháp điều khiển PID và Fuzzy mang lại rất
nhiều ưu điểm cho việc thiết kế. Việc sử dụng, khai thác các ưu điểm Fuzzy đã giúp tác
giả khắc phục các tính chất không ổn định và phi tuyến của hệ thống. Kết quả mô phỏng
kết hợp giữ PID và Fuzzy cho thấy rằng lỗi của hệ thống được giảm khoảng 60%.

1.6 Phương pháp, phương tiên nghiên cứu

 Phương pháp nghiên cứu: tham khảo các tài liệu, các bài báo được đăng trong các
diễn đàn về đề tài xe hai bánh tự cân bằng, cũng như lý thuyết về bộ điều khiển
PID

 Phương tiện nghiên cứu: Sử dụng các phầm mềm chuyên dụng cho ngành điều
khiển tự động hóa như Matlab để mô phỏng cũng như thiết kế bộ điều khiển mờ
hay solidworks để xây dựng mô hình.

14
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 Nguyên lý cân bằng robot
Một Robot có khả năng tự giữ thăng bằng khi di chuyển trên hai bánh xe của nó được
gọi là robot hai bánh tự cân bằng. Quá trình cân bằng là quá trình điều khiển hai động cơ
bánh xe sao cho đưa hệ xe về đúng vị trí cân bằng mà ta thiết lập, hay có thể nói cách
khác nó duy trì trạng thái ổn định cho hệ thống. Hai bánh xe là đối tượng điều khiển
chính giúp hệ xe chuyển động qua lại xung quanh ngưỡng cân bằng và ổn định.

Hình 2.4: Nguyên lý hoạt động của hệ xe cân bằng

Khi xe đứng thăng bằng thẳng đứng thì góc nghiêng giữa thân xe và trục thẳng đứng
(lực trong trường) ψ=0.
Khi hệ xe có xu hướng nghiêng về phía trước ψ > 0, nếu không có điều khiển thì theo
quán tính, hai bánh xe sẽ tự động di chuyển ngược về phía sau (phía ngược lại của thân
robot đang nghiêng) điều đó sẽ làm xe bị đổ. Trong tình huống này, chúng ta sẽ điều
khiển làm sao cho 2 bánh xe chạy về phía trước (phía xe đang nghiêng) nhằm giảm góc
lệch ψ = 0, xe sẽ thăng bằng trở lại.
Tương tự như vậy, khi xe nghiêng về phía sau ψ < 0, nếu không có điều khiển thì xe
sẽ di chuyển thẳng về phía trước (phía ngược lại của thân xe đang nghiêng) làm xe sẽ bị

15
đổ. Vì vậy chúng ta sẽ điều khiển sao cho 2 bánh xe chạy về phía sau (phía xe đang
nghiêng) nhằm giảm góc lệch ψ = 0, xe sẽ thăng bằng trở lại.
Loại robot này đặt ra nhiều thử thách cho những người nghiên cứu trong điều kiện
làm việc không ổn định đòi hỏi người thực hiện phải lựa chọn giải thuật và đưa ra các
thông số phù hợp. Lý thuyết để duy trì sự ổn định này dựa trên lý thuyết điều khiển con
lắc ngược là một đối tượng điều khiển phi tuyến tính kinh điển, mô hình xe cân bằng
cũng dựa trên điều đó mà phát triển lên, có nhiều điểm tương đồng giữa hai mô hình
nhưng cả hai đều nhằm mục đích duy trì sự cân bằng và ổn định của hệ thống.
Mục đích của nguyên lý con lắc ngược là giữ cho các bánh xe ở ngay dưới trọng tâm
của khung gầm robot. Khi khung xe có xung hướng nghiêng về phía trước, hai bánh xe
sẽ tự động chuyển động về phía trước sao cho góc nghiêng bằng không thì robot sẽ được
duy trì sự cân bằng. Mặt khác, nếu khung nghiêng về sau hai bánh xe sẽ di chuyển
ngược về phía sau.
2.1.1 Mô hình toán học xe hai bánh tự cân bằng
Sinh viên đã tham khảo 2 bài báo [4], [6] và đưa ra mô hình toán học của xe hai bánh tự
cân bằng, sơ đồ và hệ của xe hai bánh được mô tả trong Hình 5 ,6 ,7 và định nghĩa các
ký hiệu được thiết kế trong Bảng 1.

16
Hình 2.5: Hình mô tả xe hai bánh tự cân bằng

(a) (b)
Hình 2.6: (a) Xe hai bánh khi nhìn nghiêng. (b) Xe hai bánh khi nhìn từ trên xuống
Trong đề tài sẽ sử dụng các ký hiệu như sau:

Ký hiệu Đơn vị Ý nghĩa


m kg Khối lượng bánh xe
M kg Khối lượng robot
R m Bán kính bánh xe
W m Chiều rộng của robot

17
D m Chiều ngang của robot
H m Chiều cao của robot
L m Khoảng cách từ trọng tâm robot
đến trục bánh xe
Hệ số ma sát giữ bánh xe và mặt
phẳn di chuyển
Hệ số ma sát giữ robot và động
cơ DC
kgm2 Monent quán tính động cơ DC

Rm Điện trở động cơ DC


Kb Vs/rad Hệ sô EMF của động cơ DC
Kt Nm/A Monent xoắn của động cơ DC
N Tỉ số giảm tốc
G m/s2 Gia tốc trọng trường
rad Góc trung bình của bánh trái và
ánh phải
rad Góc của bánh trái và phải

rad Góc nghiêng của phần thân


robot
rad Góc xoay của robot

m Tọa độ bánh trái

m Tọa độ bánh phải

m Tọa độ trung bình

18
Nm Monent phát động theo các
phương khác nhau
Nm Monent phát động của động cơ
bánh trái, phải
A Dòng điện động cơ bánh trái,
phải
V Điện áp động cơ bánh trái, phải

Bảng 2.1: Ký hiệu và ý nghĩa của các đại lượng


Sử dụng phương pháp Euler-Lagrange để xây dựng mô hình động học. Giả sử tại thời
điểm t = 0, robot di chuyển theo chiều dương trục x, ta có góc tịnh tiến trung bình của
hai bánh xe và góc xoay của robot được xác đính như sau:

101\* MERGEFORMAT (.)


Trong đó tọa độ trung bình của robot trong hệ qui chiếu:

202\* MERGEFORMAT (.)

Và: 303\* MERGEFORMAT (.)


Tọa độ bánh trái trong hệ qui chiếu:

19
404\* MERGEFORMAT (.)
Tọa độ bánh trái trong hệ qui chiếu

505\* MERGEFORMAT (.)


Tọa độ tâm đối xứng giữ 2 động cơ trong hệ qui chếu:

606\* MERGEFORMAT (.)


Phương trình động năng của chuyển động tịnh tiến:

707\*
MERGEFORMAT (.)
Phương trình động năng của chuyển động quay:

808\*
MERGEFORMAT (.)

20
Với: 909\* MERGEFORMAT (.)
Là động năng của phần ứng động cơ trái và phải

Phương trình thế năng:

10010\* MERGEFORMAT (.)


Phương trình Lagrange:

11011\* MERGEFORMAT (.)

12012\* MERGEFORMAT (.)

13013\* MERGEFORMAT (.)

14014\* MERGEFORMAT (.)


Lấy đạo hàm L theo các biến ta được:

15015\*
MERGEFORMAT (.)

16016\*
MERGEFORMAT (.)

21
17017\*
MERGEFORMAT (.)
Momen động lực do động cơ sinh ra:

18018\* MERGEFORMAT (.)

Và: 19019\* MERGEFORMAT


(.)

20020\* MERGEFORMAT
(.)

21021\*
MERGEFORMAT (.)

Sử dụng phương pháp PWM để điều khiển động cơ nên chuyển từ dòng điện sang điện
áp động cơ.

22022\* MERGEFORMAT
(.)
Xem điện cảm phần ứng tương đối nhỏ (gần bằng 0) có thể bỏ qua, từ đó suy ra:

23023\* MERGEFORMAT (.)

22
Từ đó, các moment lực sinh ra:

24024\*
MERGEFORMAT (.)

25025\* MERGEFORMAT
(.)

Với: 26026\* MERGEFORMAT (.)

27027\*
MERGEFORMAT (.)
Thu được phương trình động lực học mô tả chuyển động robot như sau:

28028\*
MERGEFORMAT (.)

29029\*
MERGEFORMAT (.)

30030\*
MERGEFORMAT (.)

23
2.2 Bộ điều khiển PID
2.2.1 Khái niệm
Bộ điều khiển PID là bộ điều khiển hồi tiếp vòng kín được sử dụng rộng rãi trong các hệ
thống điện, các ngành công nghiệp tự động hóa cũng như điện tử. Bộ điều khiển PID
được kết hợp từ 3 bộ điều khiển: tỉ lệ, tích phân, vi phân, có nghĩa là các tín hiệu sai số
xảy ra sẽ được giảm đến mức thấp nhất bởi ảnh hưởng của tác động tỉ lệ, ảnh hưởng của
tác động tích phân, vi phân. Mục đích sử dụng bộ điều khiển PID để làm giảm, triệt tiêu
sai số xác lập, tăng tốc độ đáp ứng, giảm độ lọt vố nếu thông số của bộ điều khiển được
lựa chọn một cách hợp lí.

Hình 2.7: Sơ đồ khối hệ thống sử dụng bộ điều khiển PID

Công thức bộ điều khiển PID trên miền laplace

31031\*
MERGEFORMAT (.)
Trong đó:

: Độ lợi tỉ lệ

: Độ lợi tích phân

24
: Độ lợi vi phân

: Thời gian khâu tích phân

: Thời gian khâu vi phân

2.2.2 Các phương pháp tìm thông số PID


Phương pháp thử sai

Phương pháp thử sai được sử dụng dựa trên kinh nghiệm của người thiết kế.

Phương pháp Ziegler-Nichols

Phương pháp Ziegler-Nichols là phương pháp thực nghiệm để thiết kế bộ điều khiển P,
PI, hoặc PID bằng cách dựa vào đáp ứng quá độ của đối tượng điều khiển. Bộ điều khiển
PID cần thiết kế có hàm truyền:

32032\*
MERGEFORMAT (.)
Phương pháp dùng phần mềm

 Dùng phần mềm để tự động chỉnh định các thông số bộ PID.


 Dùng các giải thuật khác như GA, Fuzzy, noron để tìm các thông số PID.
2.3 Cảm biến gia tốc góc nghiêng MPU-6050
Cảm biến đo góc nghiêng là một module gồm hai cảm biến đó là:

- Accelerometer: cảm biến đo gia tốc của module (bao gồm cả gia tốc trọng lực), có ba
trục xyz tương ứng với ba chiều không gian.

25
- Gyroscope: cảm biến đo tốc độ quay của module quanh một trục, có ba trục xyz
tương ứng với ba chiều không gian.

Khối điều khiển trung tâm sẽ nhận tín hiệu trả về từ hai cảm biến này và sẽ xử lý tính
toán ra được giá trị góc nghiêng của xe.

MPU-6050 là một trong những cảm biến chuyển động đầu tiên trên thế giới có tới 6 trục
(mở rộng tới 9 trục) cảm biến tích hợp trong 1 chip duy nhất. MPU-6050 sử dụng công
nghệ độc quyền MotionFusion của InvenSense có thể chạy trên các thiết bị di động, tay
điều khiển…

MPU6050 còn có 1 đơn vị tăng tốc phần cứng chuyên xử lý tín hiệu do cảm biến thu
thập và thực hiện các tính toán cần thiết. Điều này giúp giảm bớt đáng kể phần xử lý tính
toán của vi điều khiển. cải thiến tốc độ xử lý và cho ra phản hồi nhanh hơn. Đây chính là
điểm khác biệt đáng kể của MPU6050 so với các cảm biến gia tốc và gyro khác.

MPU-6050 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.

Các cảm biến bên trong MPU-6050 sử dụng bộ chuyển đổi tương tự – số (Anolog to
Digital Converter – ADC) 16-bit cho ra kết quả chi tiết về góc quay, tọa độ… Với 16-bit
sẽ có 2^16 = 65536 giá trị cho 1 cảm biến.

Tùy thuộc vào yêu cầu của người thiết kế, cảm biến MPU6050 có thể hoạt động ở chế
độ tốc độ xử lý cao hoặc chế độ đo góc quay chính xác. MPU6050 có khả năng đo ở
phạm vi

 Con quay hồi chuyển:

 Gia tốc:

26
Hình 2.8: Cảm biến góc nghiêng MPU6050

Chân Kết nối và chức năng

VCC Chân cấp nguồn dương

GND Chân cấp GND

SCL Serial Clock Line

SDA Serial Data Line


Bảng 2.2: Bảng kết nối chân của cảm biến MPU6050

CHƯƠNG 3 THIẾT KẾ PHẦN CỨNG VÀ THI CÔNG


HỆ THỐNG
3.1 Yêu cầu thiết kế

Để thiết kế phần cứng đảm bảo cho xe hoạt động cần lựa chọn các thiết bị phù hợp với
các yêu cầu sau:

 Đảm bảo tổng khổi lượng của xe để động cơ có thể kéo cân bằng được.
 Bố trí các thiết bị phù hợp để trọng tâm của xe được đặt ở giữa.
 Nguồn cung cấp đủ cho hệ thống hoạt động.
 Khung xe chắc chắn.

27
 Cảm biến trả tín hiệu về tránh tối đa nhiễu và sai số.
 Động cơ moment đủ để kéo tải.
 Vi điều khiển và các cảm biến, đảm bảo xử lý tín hiệu nhanh.
3.2 Thiết bị phần cứng
3.2.1 Danh sách thiết bị sử dụng

STT Tên sản phẩm Hình ảnh SL Thông số kỹ thuật


1 Board 1  Chip điều khiển: AT mega328P
Arduino Uno  Điện áp hoạt động: 5V
 Điện áp đầu vào: 7-12V
 Số chân Digital: 14
 Số chân PWM Digital: 6
 Số chân Analog: 6
 Tốc độ thạch anh: 16MHz

2 Cảm biến 1  Bộ chuyển đổi tương tự sang số


MPU 6050 (ADC): 16bit.
 Điện áp sử dụng: 3-5 VDC.
 Điện áp giao tiếp: 3-5 VDC.
 Chuẩn giao tiếp: I2C.
 Giá trị Gyroscope trong
khoảng: ±250, ±500, ±1000,
±2000 o/sec.
 Giá trị Accelerometer trong
khoảng: ±2, ±4, ±8, ±16 g.

28
3 Mạch điều 1  IC chính L298

khiển động cơ  Điện áp đầu vào: 2-30VDC

L298N  Công suất tối đa: 25W 1 cầu


 Dòng tối đa cho mỗi cầu H: 2A
 Mức điện áp logic: Low -0.3V
~1.5V, High: 2.3V~Vss
 Kích thước: 43x43x27mm

4 Động cơ giảm 2  Điện áp cung cấp: 6~12 VDC


tốc GA25-370  Tốc độ không tải: 280 rpm
 Tỉ số truyền: 21.3
 Moment xoắn: 2.5 Kg.cm

5 Pin cell 18650 3  Điện áp: 3.7V


 Dung lượng: 2000mAh
 Điện sạc đầy: 4.2V

Bảng 3.3: Bảng thiết bị sử dụng


3.2.2 Sơ đồ kết nối phần cứng

29
Hình 3.9: Sơ đồ kết nối phần cứng
Arduino Uno Chức năng Kết nối Chú thích
Chân 2 Input Chân ngắt Int mpu6050
Chân 4 Output Input L298N-INT1 L298N
Chân 5 Output Input L298N-INT2
Chân 6 Output Input L298N-INT3
Chân 7 Output Input L298N-INT4
Chân 9 Output L298N-EA
Chân 10 Output L298N-EB
Chân A4 Input SDA cảm biến MPU Giao tiếp chuẩn
Chân A5 Input SCL cảm biến MPU I2C
Bảng 3.4: Bảng chú thích chân và chức năng

30
3.3 Thiết kế phần cứng cho xe hai bánh trên phần mềm Solidworks
3.3.1 Thiết kế khung cho xe hai bánh

(a) (b)
Hình 3.10: (a) Tầng dưới của xe. (b) Tầng trên của xe

(a) (b)
Hình 3.11: (a) Xe khi nhìn nghiêng. (b) Mặt trước của xe

31
3.4 Lưu đồ giải thuật

Hình 3.12: Thuật toán chương trình chính

(a) (b)
Hình 3.13: (a) Mặt sau của xe. (b) Mặt trước của xe

32
Hình 3.14: Xe hai bánh khi nhìn nghiêng
Thông số của mô hình
STT Khối lượng xe 0.5 Kg
1 Chiều cao 0.14 m
2 Chiều rộng 0.07 m
3 Chiều dài 0.2 m
4 Bánh kính bánh xe 0.03 m
5 Chiều rộng bánh xe 0.02 m
6 Khối lượng bánh xe 0.07 kg
7 Khoảng cách từ tâm đến trụ bánh xe 0.11 m
Bảng 3.5: Bảng thông số mô hình

33
CHƯƠNG 4 KẾT QUẢ THỰC TẾ
4.1 Thiết kế bộ điều khiển PID và kiếm chứng trên Arduino IDE

Thử sai nhiều lần với các thông số , , của bộ điều khiển PID kết hợp quan sát
tín hiệu góc nghiêng của thân xe để tìm ra các thông số tối ưu của bộ điều khiển PID

TH1: với các thông số như bảng 4.1

10

Góc nghiêng ban đầu -15 đến -25 độ


Giá trị đặt -2.5 độ
Bảng 4.6: Bảng thông số PID TH1

Hình 4.15: Đáp ứng tín hiệu góc nghiêng với thông số PID TH1

34
Nhận xét: Với các thông số của bộ PID ở TH1 xe dao đông rất mạnh không thể cân
bằng.

TH2: với các thông số như bảng 4.2

30

Góc nghiêng ban đầu -15 đến -25 độ


Giá trị đặt -2.5 độ
Bảng 4.7: Bảng thông số PID TH2

Hình 4.16: Đáp ứng góc nghiêng với thông số bộ điều khiển PID TH2
Nhận xét: Với thông số của bộ PID TH2 thì sẽ dao động ít hơn nhưng vẫn không thể cân
bằng.

35
TH3: với các thông số như bảng 4.3

70

Góc nghiêng ban đầu -15 đến -25 độ


Giá trị đặt -2.5 độ
Bảng 4.8: Bảng thông số PID TH3

Hình 4.17: Đáp ứng góc nghiêng với thông số bộ điều khiển PID TH3
Nhận xét: Với thông số của bộ PID TH3 tín hiệu góc nghiêng thân xe đã cso thể bám
vào tín hiệu đặt, nhưng vẫn còn dao động, nhưng xe vẫn không thể cân bằng.

36
TH4: với các thông số như bảng 4.4

70

1.9

200

Góc nghiêng ban đầu -15 đến -25 độ


Giá trị đặt -2.5 độ
Bảng 4.9: Bảng thông số PID TH4

Hình 4.18: Đáp ứng góc nghiêng với thông số bộ điều khiển PID TH4
Nhận xét: Với thông số của bộ PID TH4 xe đã có thể cân bằng, nhưng vẫn còn dao động
nhỏ, thời gian xác lập khoảng 2s, sai số xác lập khoảng 0.8.

37
CHƯƠNG 5 KẾT LUẬN
5.1 Nhận xét
Với bộ điều khiển PID cho hệ xe hai bánh tự cân bằng cho ra đáp ứng góc
nghiêng chấp nhận được với sai số cũng như thời gian xác lập thấp, tuy nhiên vẫn
không thể so sánh chất lượng đối với các bộ điều khiển khác như LQR hay Fuzzy.

5.2 Kết quả


 Tìm được phương trình toán học của hệ xe hai bánh tự cân bằng
 Thiết kế, tính toán lựa chọn các thiết bị phù hợp với mô hình
 Sử dụng bộ lọc Kalman để lọc nhiễu cho tính hiệu góc nghiêng
 Xây dựng được bộ điều khiển PID để cân bằng xe

5.3 Hướng phát triển


Với đề tài xe hai bánh cân bằng có nhiều hướng phát triển như sau:

 Sử dụng các bộ điều khiển khác như LQR, Fuzzy để điều khiển góc xoay
cũng như vị trí xe.
 Kết hợp điều khiển từ xa cũng như cánh tay robot có thể mang vật nặng

38
TÀI LIỆU THAM KHẢO
[1] P. L. Y. Z. C. F. Y. Qian Hao, "The Fuzzy Controller Designing of the Self-
Balancing Robot," pp. 16-18, 2011.

[2] W. Z. Junfeng Wu, "Design of Fuzzy Logic Controller for Two-wheeled," pp. 1266-
1270, 2011.

[3] C.-P. H. J.-C. H. Jia-Rui Cao, "Stabilizing Controller Design using Fuzzy T-S
Model," pp. 520-523, 2016.

[4] Y.-K. L. H.-T. H. Gwo-Ruey Yu, "PSO-based Fuzzy Control of a Self-Balancing


Two-Wheeled Robot," 2017.

[5] H. S. D. S. I. H. A. A. Adik S. Wardoyo, "An Investigation on the Application of


Fuzzy and PID Algorithm in the Two," pp. 64-68, 2015.

[6] N. V. Đ. H. N. P. L. L. V. T. Nguyễn Minh Tâm, "MODELLING AND OPTIMAL


CONTROL FOR TWO-WHEELED".

[7] H. T. Hoàng, Hệ Thống Điều Khiển Thông Minh, NXB ĐẠI HỌC QUỐC GIA
THÀNH PHỐ HCM, 2006.

39
PHỤ LỤC
Code chương trình
#include "PID_v1.h"
#include "LMotorController.h"
#include "I2Cdev.h"
#include "MPU6050_6Axis_MotionApps20.h"
#include <SimpleKalmanFilter.h>

#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE


#include "Wire.h"
#endif

#define MIN_ABS_SPEED 20
//int estado = 'h';
//int led = 4;
MPU6050 mpu;

// MPU
bool dmpReady = false;
uint8_t mpuIntStatus;
uint8_t devStatus;
uint16_t packetSize;
uint16_t fifoCount;

40
uint8_t fifoBuffer[64];

Quaternion q; // [w, x, y, z]
VectorFloat gravity; // [x, y, z]
float ypr[3]; // [yaw, pitch, roll] goc nghiêng thân xe là yaw
//PID
double originalSetpoint = 181.8; //-2.5
double setpoint = originalSetpoint;
double movingAngleOffset = 0.1;
double input, output, gocnghien, gocdat, input0;

//adjust these values to fit your own design


double Kp = 70; //70
double Kd = 1.9; //1.9
double Ki = 200; //200
PID pid(&input, &output, &setpoint, Kp, Ki, Kd, DIRECT);

double motorSpeedFactorLeft = 0.384;


double motorSpeedFactorRight = 0.38;

//MOTOR CONTROLLER
int ENA = 9;
int IN1 = 4;

41
int IN2 = 5;
int IN3 = 6;
int IN4 = 7;
int ENB = 10;
LMotorController motorController(ENA, IN1, IN2, ENB, IN3, IN4,
motorSpeedFactorLeft, motorSpeedFactorRight);

volatile bool mpuInterrupt = false;


void dmpDataReady()
{
mpuInterrupt = true;
}
SimpleKalmanFilter locnhieu(2, 2, 0.01);

void setup()
{
pinMode(ENA, OUTPUT);/// out
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(ENB, OUTPUT);
// pinMode(led, OUTPUT);

42
//digitalWrite(led,0);
Serial.begin(9600);
// join I2C bus (I2Cdev library doesn't do this automatically)
#if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE
Wire.begin();
TWBR = 24; // 400kHz I2C clock (200kHz if CPU is 8MHz)
#elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE
Fastwire::setup(400, true);
#endif
Serial.print(',');
Serial.print(90);
Serial.print(',');
Serial.print(-90);
Serial.print(',');

mpu.initialize();

devStatus = mpu.dmpInitialize();

mpu.setXGyroOffset(220);
mpu.setYGyroOffset(76);
mpu.setZGyroOffset(-85);
mpu.setZAccelOffset(1788);

43
if (devStatus == 0)
{

mpu.setDMPEnabled(true);

attachInterrupt(0, dmpDataReady, RISING);


mpuIntStatus = mpu.getIntStatus();

dmpReady = true;

packetSize = mpu.dmpGetFIFOPacketSize();

//thiết lập PID


pid.SetMode(AUTOMATIC);
pid.SetSampleTime(10);
pid.SetOutputLimits(-255, 255);
}
else
{

44
// ERROR!
// 1 = initial memory load failed
// 2 = DMP configuration updates failed
// (if it's going to break, usually the code will be 1)
// Serial.print(F("DMP Initialization failed (code "));
// Serial.print(devStatus);
// Serial.println(F(")"));
}
}

void loop()
{
// if programming failed, don't try to do anything
if (!dmpReady) return;

// wait for MPU interrupt or extra packet(s) available


while (!mpuInterrupt && fifoCount < packetSize)
{
//no mpu data - performing PID calculations and output to motors
pid.Compute();
motorController.move(output, MIN_ABS_SPEED);

45
mpuInterrupt = false;
mpuIntStatus = mpu.getIntStatus();

// get current FIFO count


fifoCount = mpu.getFIFOCount();

// check for overflow (this should never happen unless our code is too inefficient)
if ((mpuIntStatus & 0x10) || fifoCount == 1024)
{
// reset so we can continue cleanly
mpu.resetFIFO();
// Serial.println(F("FIFO overflow!"));

// otherwise, check for DMP data ready interrupt (this should happen frequently)
}
else if (mpuIntStatus & 0x02)
{
// wait for correct available data length, should be a VERY short wait
while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount();

// read a packet from FIFO


mpu.getFIFOBytes(fifoBuffer, packetSize);

46
// track FIFO count here in case there is > 1 packet available
// (this lets us immediately read more without waiting for an interrupt)
fifoCount -= packetSize;

mpu.dmpGetQuaternion(&q, fifoBuffer);
mpu.dmpGetGravity(&gravity, &q);
mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);
input = ypr[1] * 180/M_PI + 180;
input0 = (ypr[1]-0.07)*90;
gocnghien = locnhieu.updateEstimate(input0);
Serial.println (gocnghien);
//Serial.print (',');
//Serial.println (-2.50);

}
}

47

You might also like