ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC KỸ THUẬT CÔNG NGHIỆP
ĐẶNG TRUNG DŨNG
ỨNG DỤNG VI MẠCH ĐIỆN TỬ ARDUINO MEGA
TRONG CÀI ĐẶT THUẬT TOÁN ĐIỀU KHIỂN
ỔN ĐỊNH VỊ TRÍ CON LẮC NGƯỢC QUAY LUẬN VĂN THẠC SĨ KỸ THUẬT ĐIỆN TỬ THÁI NGUYÊN - 2014
TS. Nguyễn Văn Chí
KHOA ĐIỆN TỬ
TRƯỞNG KHOA
THÁI NGUYÊN - 2014
ii
LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi, các số
liệu, kết quả nêu trong luận văn này là trung thực và là công trình nghiên cứu
của riêng tôi, luận văn này không giống hoàn toàn bất cứ luận văn hoặc các
công trình đã có trước đó.
Thái Nguyên, ngày tháng năm 2014
Tác giả luận văn
Đặng Trung Dũng
đã tận tình giúp đỡ, hướng dẫn tôi trong thời gian
thực hiện đề tài. Cảm ơn sự giúp đỡ của gia đình, bạn bè và các đồng
nghiệp trong thời gian qua.
Mặc dù đã cố gắng, song do điều kiện thời gian và kinh nghiệm còn
nhiều hạn chế nên không thể tránh khỏi thiếu sót. Vì vậy, tôi rất mong nhận
được sự đóng góp ý kiến của các thầy cô cũng như của các bạn bè, đồng nghiệp.
Tôi xin chân thành cảm ơn!
Thái Nguyên, ngày tháng năm 2014
Tác giả luận văn Đặng Trung Dũng
iv
MỤC LỤC
LỜI CAM ĐOAN ii
2.3.6. Bộ con lắc ngược quay Kri PP-300 (Inverted Pendulum Apparatus Kri
PP-300) 24
2.4. Thuật toán điều khiển hệ thống con lắc ngược quay Kri PP-300 28
2.4.1. Mô hình toán hệ thống 28
2.4.2. Xác định tham số của mô hình 31
2.4.3. Thiết kế bộ điều khiển 34
2.5. Kết luận chương 2 38
Chương 3. ỨNG DỤNG VI MẠCH ĐIỆN TỬ ARDUINO MEGA
TRONG CÀI ĐẶT THUẬT TOÁN ĐIỀU KHIỂN ỔN ĐỊNH VỊ TRÍ
CON LẮC NGƯỢC QUAY KRI PP - 300 39
3.1. Sơ đồ khối hệ thống con lắc ngược quay Kri PP-300 39
3.2. Nhiệm vụ của các khối 40
3.3. Hệ thống điều khiển trên Matlab/Simulink 42
3.3.1. Khối con lắc ngược quay - Rotary Inverted Pendulum: 43
3.3.2. Bộ điều khiển cân bằng - Balance controller: nhằm ổn định con lắc ở vị
trí cân bằng, được thiết kế trên Matlab/Simulink như Hình 3.8: 44
3.3.3. Bộ điều khiển Swing up - Swing up controller 44
3.3.4. Khóa chuyển đổi bộ điều khiển - Switch 45
3.4. Chương trình cho Arduino mega 2560 46
3.5. Kết quả điều khiển 53
3.5.1. Kết quả trên bộ điều khiển có 3 biến trạng thái 53
3.5.2. Kết quả trên bộ điều khiển có 4 biến trạng thái 55
3.5.3. Video kết quả thực nghiệm 57
3.6. Kết luận chương 3 57
KẾT LUẬN VÀ ĐÁNH GIÁ 54
1.1. Kết luận 58
1.2. Đóng góp của luận văn 59
1.3. Hướng phát triển của đề tài 59
TÀI LIỆU THAM KHẢO 60
Hình 1.1. Đầu vào ra số trên Arduino Mega 2560 5
Hình 1.2. Đầu ra PWM trên Arduino Mega 2560 6
Hình 1.3. Cổng Communication trên Arduino Mega 2560 6
Hình 1.4. Đầu vào tương tự trên Arduino Mega 2560 7
Hình 1.5. Vi mạch Arduino Mega 2560 8
Hình 1.6. Cáp USB chuẩn A-B 8
Hình 1.7. Download phần mềm Arduino Sofwave 9
Hình 1.8. Download phần mềm Arduino Sofwave 9
Hình 1.9. Cài đặt phần mềm Arduino Sofwave 10
Hình 1.10. Matlab/Simulink R2012a 10
Hình 1.11. Cài đặt Target installer 11
Hình 1.12. Cài đặt Target installer 11
Hình 1.13.Cài đặt Target installer 12
Hình 1.14. Cài đặt Arduino IO Library 12
Hình 2.1. Cầu trục 14
Hình 2.2. Xe hai bánh tự cân bằng 15
Hình 2.3. Tên lửa khi rời bệ phóng 15
Hình 2.4. Mô hình con lắc ngược quay Kri PP-300 16
Hình 2.5. Mô phỏng hệ thống cẩu tháp 17
Hình 2.6. Cân bằng con lắc 18
Hình 2.7. Swing up và cân bằng con lắc 18
Hình 2.8. Swing up và cân bằng con lắc ở vị trí bất kỳ cho trước 19
Hình 2.9. Tổng quan về Kri PP-300 20
Hình 2.10. Phần mền hệ thống 21
Hình 2.11. Hệ thống máy tính 21
Hình 2.12. Bo mạch điều khiển UC96 22
Hình 2.13. Mạch công suất 22
Hình 2.14. Bộ nguồn 23
Hình 3.12. Đáp ứng góc của cánh tay và góc của con lắc với 3 biến điều khiển 53
Hình 3.13. Đáp ứng vận tốc của cánh tay và góc của con lắc với 3 biến
điều khiển 54
Hình 3.14. Đáp ứng góc của cánh tay và góc của con lắc với 4 biến điều khiển55
Hình 3.15. Đáp ứng vận tốc của cánh tay và góc của con lắc với 4 biến điều khiển.56
ix
DANH MỤC BẢNG BIỂU
Bảng 2.1. Bảng tham số của hệ thống con lắc ngược quay 29
Bảng 2.2. Bảng tham số khối lượng con lắc 31
Bảng 2.3. Bảng khảo sát tham số K
u
32
Bảng 2.4. Bảng hệ số K
t
, K
b
, R
a
của động cơ 33
Bảng 2.5. Bảng giá trị hệ số J
0
, C
0
, J
1
, C
khiển. Hơn 10 năm qua mô hình đã không còn chạy được do phần mềm bị
hỏng, vi mạch điều khiển hỏng. Với những ưu điểm của vi mạch điện tử
Arduino như trên, tác giả đã mạnh dạn lựa chọn đề tài “Ứng dụng vi mạch
điện tử Arduino MEGA trong cài đặt thuật toán điều khiển ổn định vị trí
con lắc ngược quay”
2. Mục tiêu của luận văn
Mục tiêu chính của đề tại này là ứng dụng vi mạch điện tử Arduino
Mega để cài đặt thuật toán điều khiển ổn định vị trí con lắc ngược quay, qua
đó phát triển thêm phương thức ứng dụng vi mạch điện tử mới trong quá trình
điều khiển hệ thống. Các mục tiêu cụ thể của đề tài:
- Tìm hiểu về vi mạch điện tử Arduino Mega và ứng dụng nhúng các
trình điều khiển trên nó.
- Tìm hiểu về con lắc ngược quay và phương pháp điều khiển
cân bằng nó.
- Nghiên cứu kết hợp vi mạch điện tử Arduino Mega cài đặt thuật toán
điều khiển ổn định vị trí con lắc ngược quay Kri PP - 300 có tại trung tâm thí
nghiệm của Trường Đại học kỹ thuật công nghiệp – Đại học Thái Nguyên.
3. Đối tượng và phạm vi nghiên cứu
2
Đối tượng và phạm vi nghiên cứu chính của đề tài là: Ứng dụng vi
mạch điện tử Arduino MEGA 2560 trong cài đặt thuật toán điều khiển ổn
định vị trí con lắc ngược quay Kri PP-300.
4. Ý nghĩa khoa học và thực tiễn của đề tài
Nhằm nghiên cứu kỹ hơn việc ứng dụng vi mạch điện tử Arduino Mega
tạo ra hệ thống có mạch điều khiển với độ chính xác, ổn định cao, góp một
phần nhỏ vào việc phát triển, ứng dụng vi mạch điện tử Arduino.
Ứng dụng vi mạch Arduino Mega để cài đặt tình điều khiển phục hồi
3
Chương 1
GIỚI THIỆU VỀ VI MẠCH ARDUINO MEGA 2560
1.1. Giới thiệu về Arduino
1.1.1. Giới thiệu chung
Trong những năm gần đây, cùng với việc phát triển của cộng nghệ
kỹ thuật, đặc biệt là công nghệ vi mạch đạt được nhiều tiến bộ vượt bậc,
đa dạng. Vi mạch điện tử Ardiuno là một sản phẩm mới ứng dụng mạnh
mẽ những thành tựu công nghệ đó. Arduino thật ra là một bo mạch vi xử
lý được dùng để lập trình tương tác với các thiết bị phần cứng. Vi mạch
điện tử Arduino được chọn làm bộ não xử lý của rất nhiều thiết bị từ đơn
giản đến phức tạp. Trong số đó có một vài ứng dụng thực sự chứng tỏ khả
năng vượt trội của vi mạch điện tử Arduino do chúng có khả năng thực
hiện nhiều nhiệm vụ rất phức tạp và đặc điểm nổi bật hơn cả của vi mạch
điện tử Arduino là môi trường phát triển ứng dụng cực kỳ dễ sử dụng, với
một ngôn ngữ lập trình có thể học một cách nhanh chóng, và điều làm nên
hiện tượng Arduino chính là tích hợp hệ thống điều khiển, mang tính ứng
dụng cao, tính chất nguồn mở từ phần cứng tới phần mềm, và giá thành
hợp lý. Hiện nay trên thế giới, những ứng dụng sử dụng vi mạch điện tử
Arduino được phát triển mạnh mẽ trong nhiều lĩnh vực từ đơn giản đến
phức tạp như: điều khiển Led, điều khiển hệ thống nhà thông minh, sử
dụng làm bộ não cho máy in 3D, Robot, và sử dụng cho cả máy bay
không người lái UAV, không những thế ngay cả Google cũng muốn hỗ trợ
khi cho ra đời bộ kit Arduino Mega ADK dùng để phát triển các ứng dụng
trên hệ điều hành Android. Tuy nhiên tại Việt Nam vi mạch điện tử
Arduino chưa được biết đến nhiều, chưa có nhiều ứng dụng được phát
triển trên loại vi mạch này [1].
số như Hình 1.1, sử dụng các lệnh có cấu trúc: pinMode(); digitalWrite();
digitalRead();
Hình 1.1. Đầu vào ra số trên Arduino Mega 2560
Những đầu vào ra số này hoạt động ở dải điện áp 0 đến +5 VDC, chúng
có thể đọc hoặc xuất ra tín hiệu có dòng điện tối đa là 40mA, và điện trở treo
tại các chân này có giá trị từ 20 - 50 kΩ. Trong số các đầu vào ra này có một
số chân có chức năng đặc biệt.
+ Đầu ra PWM (Pulse Width Modulation) Hình 1.2: gồm các chân số
2 đến chân số 13, chân số 44 đến chân số 46 trên vi mạch điện tử Arduino
Mega 2560, các chân này xuất ra tín hiệu PWM được mã hóa 8bit.
6
Hình 1.2. Đầu ra PWM trên Arduino Mega 2560
+ Cổng Communication Hình 1.3: là cổng nhận và truyền dữ liệu vào,
ra theo kiểu nối tiếp (COM) trên Arduino Mega 2560 gồm các cặp:
RX0(Chân 0), TX0(Chân 1); RX1(Chân 19), TX1(Chân 18); RX2(Chân 17),
TX2(Chân 16); RX3(Chân 15), TX3(Chân 14).
Hình 1.3. Cổng Communication trên Arduino Mega 2560
7
+ Đầu vào tương tự (Analog in) Hình 1.4: Trên vi mạch điện tử
Arduino Mega tích hợp 16 đầu vào tương tự có độ phân giải 10bit (0-1023),
bao gồm các chân từ A0 đến A15 , các chân này đọc được tín hiệu tương tự
9
Hình 1.7. Download phần mềm Arduino Sofwave
Sau khi nhấn chọn Dowload sẽ xuất hiện:
Hình 1.8. Download phần mềm Arduino Sofwave
Tiến hành lựa chọn phiên bản phần mềm tương thích cho hệ điều hành
cảu máy tính, kích chọn máy tính sẽ tải về, tiến hành giải nén file vừa được tải
về. Sau đó chọn, chạy file: “arduino-1.0.5-windows.exe” để cài đặt phần
mềm như Hình 1.9 có môi trường lập trình cho vi mạch Arduino.
10
Hình 1.9. Cài đặt phần mềm Arduino Sofwave
Trong quá trình chạy cài đặt “arduino-1.0.5-windows.exe”, việc cài
đặt kết nối USB đối với vi mạch Arduino sẽ được tự động cài đặt (nếu máy
tính sử dụng hệ điều hành Mac OS không có phần cài đặt kết nối USB này).
1.3. Thiết lập giao tiếp giữa Matlab/Simulink và Arduino [4], [5]
Arduino là vi mạch điện tử được Matlab/Simulink hỗ trợ tốt, trong thư
viện công cụ (toolbox) của Matlab/Simulink có nhiều khối giao tiếp được dùng
để thực hiện điều kiển, giao tiếp với vi mạch Arduino (trong đó phiên bản
Matlab R2012a là phiên bản được hỗ trợ đầy đủ nhất đối với Arduino Mega).
+ Cài đặt phần mềm Matlab/Simulink có phiên bản r2012a (32bit) ra
máy tính có hệ điều hành và cấu hình thích hợp Hình 1.10.
Hình 1.10. Matlab/Simulink R2012a
Trong Matlab commad Window, ta nhập dòng lệnh “install_arduino”,
khi đó Arduino IO Library sẽ được cập nhật vào thư viện Toolbox Simulink
của Matlab như Hình 1.14.
Hình 1.14. Cài đặt Arduino IO Library
13
1.4. Kết luận chương 1
Chương này của luận văn trình bày về nội dung nhằm đánh giá tổng
quan về vi mạch điện tử Arduino với các ưu điểm cũng như cách thức cài đặt,
kết nối vi mạch điện tử Arduino với phần mềm Arduino và với
Matlab/Simulink.
Qua đó làm rõ thêm khả năng có thể kết nối, mở rộng điều khiển đối
với vi mạch điện tử Arduino, khả năng “nhúng” các ứng dụng điều khiển trên
Arduino là rất mạnh nhằm phục vụ các yêu cầu nghiên cứu khoa học, giảng
dạy và ứng dụng điều khiển trong thực tế.
14
Chương 2.
THUẬT TOÁN ĐIỀU KHIỂN
CON LẮC NGƯỢC QUAY KRI PP-300
Chương này sẽ giới thiệu sơ lược về hệ thống con lắc ngược quay; quá
trình xây dựng mô hình toán học của hệ thống con lắc ngược tuyến tính và phi
tuyến; căn cứ vào mô hình toán học và các tham số sẽ sử dụng
Matlab/Simulink tính toán, cài đặt thuật toán vào vi mạch Arduino để xử lý,
điều khiển con lắc ngược quay Kri PP-300 tại phòng thí nghiệm bộ môn Đo