ĐẶ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 Chuyên ngành: KỸ THUẬT ĐIỆN TỬ Mã số: 60.. Khi sử dụng vi mạc
Trang 1TRƯỜ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
Chuyên ngành: KỸ THUẬT ĐIỆN TỬ
Mã số: 60 52 02 03
TÓM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT
Trang 3Luận văn được hoàn thành tại:
Trường Đại học Kỹ thuật Công nghiệp - Đại học Thái Nguyên
Người hướng dẫn khoa học: TS Nguyễn Văn Chí
Phản biện 1: PGS.TS Đỗ Xuân Tiến
Trang 4Trong 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ànhtựu công nghệ đó
Khi sử dụng vi mạch điện tử Arduino với những đặc điểm như trên ứngdụng cho bài toán tích hợp điều khiển thực tế cho thấy các ưu điểm:
- Giảm thời gian và chi phí tích hợp phần cứng hệ thống;
- Hoàn toàn có thể sử dụng môi trường Matlab/Simulink để cài đặt các thuậttoán, các ứng dụng một cách linh hoạt;
Qua cách tiếp cận vi mạch điện tử Arduino cho thấy phương thức đơngiản để thực hiện các thí nghiệm, thực nghiệm, ứng dụng trong giảng dạy,nghiên cứu;
Hiện nay, Mô hình con lắc ngược quay Kri PP – 300 có tại phòng thí
nghiệm thuộc bộ môn Đo lường - điều khiển là một mô hình đóng kín về phầnmềm và phần cứng, không cho phép chỉnh định thay đổi chương trình điềukhiể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”
Trang 5Chươ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
Arduino thật ra là một bo mạch vi xử lý được dùng để lập trình tươngtác với các thiết bị phần cứng 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 có môi trườngphát triển ứng dụng dễ sử dụng, với một ngôn ngữ lập trình phổ biến Hiệnnay trên thế giới, những ứng dụng sử dụng vi mạch điện tử Arduino đượcphát triển mạnh mẽ từ đơn giản đến phức tạp như: điều khiển Led, điềukhiể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ả UAV, không những thế ngay cả Google cũng muốn hỗtrợ khi cho ra đời bộ kit Arduino Mega
1.1.2 Giới thiệu về Arduino Mega 2560
Bo mạch điện tử Arduino Mega 2560 là một Vi mạch điện tử điều khiểndựa trên nền tảng của chíp ATmega 2560, Arduino Mega 2560 tích hợp tất cảcác tính năng cần thiết của một vi điều khiển, chỉ cần kết nối vi mạch điện tửnày với máy tính thông qua cổng USB để giám sát và điều khiển
1.1.3 Các thông số cơ bản của Arduino 2560
- Nguồn cấp cho Vi mạch Arduino Mega 2560: Nguồn cho Arduino
Mega 2560 được cấp qua cáp kết nối USB hoặc thông qua một cổng kết nối nguồnriêng
- Bộ nhớ của Vi mạch Arduino Mega 2560: Chíp Vi điều khiển ATmega
2560 có 256 Kb bộ nhớ flash để lưu trữ mã lệnh điều khiển, trong đó có 8KBđược sử dụng để chứa chương trình khởi động
- Đầu vào, ra của vi mạch điện tử Arduino Mega 2560
+ Đầu vào, ra số (Digital I/O): Vi mạch Arduino Mega 2560 có 54 chân được
sử dụng làm đầu vào ra số như Hình 1.1, sử dụng các lệnh có cấu trúc:pinMode(); digitalWrite(); digitalRead();
+ Đầu ra PWM (Pulse Width Modulation) gồm các chân số 2 đến chân số 13,
chân số 44 đến chân số 46, các chân này xuất ra tín hiệu PWM được mã hóa8bit
Trang 6+ Cổng Communication: 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, TX0; RX1, TX1;RX2, TX2; RX3, TX3
+ Đầu vào tương tự (Analog in): Trên vi mạch điện tử Arduino Mega có độ
phân giải 10bit (0-1023), bao gồm các chân từ A0 đến A15, thông qua lệnh:AnalogRead()
1.2 Cài đặt Arduino Mega
* Cài đặt kết nối Arduino trên Arduino Sofwave
Để cài đặt được ta thực hiện theo các bước sau:
- Bước 1: Các điều kiện cần có:
+ Máy tính có cài hệ điều hành (hệ điều hành Windows 7- 32bit hoặc
Windows XP - 32bit)
Hình 1.5 Vi mạch Arduino Mega 2560
+ Cáp kết nối USB chuẩn A-B như Hình 1.6:
Hình 1.6 Cáp USB chuẩn A-B
- Bước 2: Tải phần mềm và cài đặt chương trình để lập trình cho Arduino:
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ủa máy tính Trong quá trình chạy cài đặt “arduino-1.0.5-windows.exe.
Trang 7Hình 1.9 Cài đặt phần mềm Arduino Sofwave
1.3 Thiết lập giao tiếp giữa Matlab/Simulink và Arduino
+ Cài đặt phần mềm Matlab/Simulink có phiên bản r2012a (32bit) như
Hình 1.10
* Cài đặt thư viện Arduino trong Matlab/Simulink
Sau đó tiến hành cài đặt các khối giao tiếp giữa Matlab/Simulink vàArduino thực hiện theo các bước sau:
+ Bước 1: Cài đặt (Target for Use with Arduino hardwave) thư viện giao
tiếp giữa máy tính và Arduino vào toolbox cả Matlab/Simulink Khi đó, Targetfor Use with Arduino hardwave sẽ được tự động cập nhật vào ToolboxSimulink của Matlab
+ Bước 2: Cài đặt thư viện kết nối vào, ra (Arduino IO Libraly) cho
Arduino Mega 2560, ta tiến hành như sau:
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ủaMatlab
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 giá tổng quan về vi mạch điện tử Arduino
- Cách thức cài đặt, kết nối vi mạch điện tử Arduino với phần mềmArduino và với Matlab/Simulink
- Khả năng “nhúng” các ứng dụng điều khiển trên Arduino
Trang 8Chươ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à phituyến; căn cứ vào mô hình toán học và các tham số sẽ sử dụng Matlab/Simulinktính toán, cài đặt thuật toán vào vi mạch Arduino để xử lý, điều khiển con lắcngược quay Kri PP-300
2.1 Hệ thống con lắc ngược quay và những ứng dụng đã được phát triển
Hệ thống con lắc ngược là hệ thống phức tạp có tính phi tuyến cao vàkhông ổn định
2.2 Giới thiệu về con lắc ngược quay Kri PP-300
2.2.1 Tổng quan hệ thống con lắc ngược quay Kri PP-300
* Hệ thống con lắc ngược quay bao gồm:
- Cánh tay (Arm): gắn vào trục động cơ một chiều (DC motor) quay
quanh trục thẳng đứng
Hình 2.4 Mô hình con lắc ngược quay Kri PP-300
- Con lắc (Pendulum): là khớp quay tự do gắn vào trục của cảm biến
góc quay (Potentiometer), trong mặt phẳng vuông góc với cánh tay.
2.2.2 Những bài toán sử dụng hệ thống con lắc ngược quay Kri PP-300
Hệ thống con lắc ngược Kri PP-300 là hệ thống mà trên đó có thể nghiêncứu, phát triển rất nhiều ứng dụng, trong đó có 04 ứng dụng điển hình có cấp độ
từ đơn giản đến phức tạp [7].:
+ Mô phỏng hệ thống cẩu tháp xây dựng
Ứng dụng thuật toán khảo sát hoạt động của cẩu tháp trong xây dựng,nhằm điều khiển con lắc ở vị trí ổn định dưới
+ Cân bằng con lắc
Trang 9Ứng dụng điều khiển cân bằng con lắc ngược nghiên cứu phát triển các thuậttoán ổn định hệ thống tuyến tính và tuyết tính tại các vùng ổn định và cả vùngkhông ổn định để đưa ra giải pháp tối ưu nhất cho các thuật toán điều khiển.
+ Swing up và cân bằng con lắc
Hình 2.7 Swing up và cân bằng con lắc
+ Swing up và cân bằng con lắc ở một trí bất kỳ cho trước
Quá trình Swing up và cân bằng con lắc ở một vị trí bất kỳ cho trước làbài toán ổn định được nghiên cứu ứng dụng để phát triển các hệ thống tự cânbằng trong nhiều lĩnh vực
2.3 Hệ thống con lắc ngược quay Kri PP300 có tại Bộ môn Đo lường điều khiển
-Hệ thống con lắc ngược quay Kri PP-300 được thiết kế và chế tạo bởi nhàsản xuất KentRidge Instruments Pte.Ltd Singapo Hệ thống này đã được ứngdụng, sử dung tại nhiều phòng thí nhiệm thuộc các viện nghiên cứu, nhiềutrường Đại học kỹ thuật trên thế giới, trong đó có Trường Đại học kỹ thuật côngnghiệp - Đại học Thái Nguyên, Việt Nam
Hệ thống con lắc ngược quay Kri PP-300 với đầy đủ các thành phần
của hệ thống bao gồm như Hình 2.9:
Hình 2.9 Tổng quan về Kri PP-300 2.3.1 Phần mềm hệ thống (System sofwave)
Trang 10Cung cấp giao diện giúp cho người dùng dễ dàng nghiên cứu và sử dụng
hệ thống Phần mềm này được lưu trữ trên đĩa mềm (Floppy Disk)
2.3.2 Hệ thống máy tính (Personal Computer System)
Hệ thống máy tính là công cụ cung cấp giao diện giao tiếp giữa ngườidùng và bo mạch điều khiển thông qua cổng COM
2.3.3 Bo mạch điều khiển UC96 (Universal Controller UC96 Microcontroller Board)
Bo mạch vi điều khiển UC96 tích hợp các mạch truyền, nhận, xử lý cáctín hiệu vào, ra để điều khiển hệ thống
2.3.4 Bo mạch công suất điều khiển động cơ (Motor Driver Board)
Được thiết kế để kết nối, điều khiển động cơ thông qua tín hiệu PWM
2.3.5 Bộ nguồn (Power Supply)
Bộ nguồn công suất biến đổi điện áp xoay chiều từ 220VAC-50Hz sangnguồn một chiều đối xứng, đảm bảo dòng, áp cho hệ thống hoạt động
2.3.6 Bộ con lắc ngược quay Kri PP-300 (Inverted Pendulum Apparatus Kri PP-300)
a Cảm biến góc quay (Potentiometer)
Ngoài ra trên cánh tay của hệ thống con lắc còn Trống quay, cơ cấu này
giúp cho quá trình đưa tín hiệu vị trí con lắc về vi xử lý một cách dễ dàng, linh
làm cho hệ thống thí nghiệm Kri PP-300 hoạt động được trở lại và vi mạch
điện tử Arduino Mega là một lựa chọn tốt để đáp ứng được đầy đủ những yêu
cầu của một vi mạch điều khiển hiện đại
Và các bộ phận đã được thay thế thuộc hệ thống con lắc ngược quay KriPP-300 là:
Trang 11+ Encoder của hệ thống được thay thế bằng một encoder khác của hãng
Omron có thông số: Loại: E6B2-CWS6B – Rotary encoder.
+ Bộ nguồn của hệ thống không còn sử dụng được, và đã được thay thế
bằng bộ nguồn Model: RPS 305DU.
+ Bo mạch điều khiển UC96 đã được thay thế bằng Vi mạch điện tử
Arduino Mega 2560, đáp ứng những yêu cầu:
Sử dụng môi trường Matlab/Simulink để cài đặt trực tiếp các thuật toánđiều khiển, các ứng dụng
Giảm thời gian, chi phí tích hợp phần cứng
mã nguồn mở rất thuận tiện cho người sử dụng
Arduino mega 2560 có thể kết nối tín hiệu dễ dàng với bo mạch công suất
điều khiển động cơ có của hệ thống con lắc ngược Kri PP-300
Đó là cơ sở lựa chọn Arduino mega 2560 để ứng dụng cài đặt thuật toánđiều khiển con lắc ngược quay
2.4 Thuật toán điều khiển hệ thống con lắc ngược quay Kri PP-300
2.4.1 Mô hình toán hệ thống
Hình 2.22 Mô hình toán học con lắc ngược quay
Từ Hình 2.22 và theo [7] ta có mô hình toán học của con lắc ngược quaynhư sau:
2 2 2
2
1 0 1 1 1 1
2 1
2 1
0 sin
K K R
K K R
Bảng 2.1 Bảng tham số của hệ thống con lắc ngược quay
Trang 12α rad Góc giữa cánh tay và trục x
Mô hình phi tuyến (2.1) mô tả đầy đủ hành vi của hệ thống Ta có môhình tuyến tính của hệ thống tại điểm làm việc như sau:
t b a
t u a
K K R
K K R
a) Mô hình với 3 biến trạng thái: x3 , , T cho mô hình con lắc ngượcquay:
3 3 3 3
x A x B u
1 2
4 4 4 4
x A x B u
Trang 132.4.2 Xác định tham số của mô hình
Những tham số này có thể chia thành 2 nhóm: nhóm thứ nhất bao gồmcác thông số có thể đo trực tiếp từ mô hình hoặc được xác định thông qua một
số tính toán đơn giản
Đó là (các giá trị: m 1 , l 1 , K u , K t, K b , R a): Từ mô tả thông số chiều dài cánh tay con lắc, qua kiểm tra cân thực tế ta có bảng sau:
Bảng 2.2 Bảng tham số khối lượng con lắc
Ta tính được chiều dài và khối lượng hiệu dụng của con lắc như sau:
Giả sử khối lượng được phân bố đều trên toàn bộ thân con lắc, vậy ta có:
270 17
24.5 22.9574 270
mômen với ứng với biểu thức:
1 1
Trang 14+ Hệ số khuếch đại điều khiển động cơ: K u
Qua khảo sát trên mô hình thực thông qua Matlab/Simulink ta có giá trị
+ Đặc tính của động cơ gồm các thông số:
Theo tài liệu và nhãn động ta có giá trị các hệ số: K t , K b , R a như Bảng 2.4:
Muốn xác định được nhóm các tham số thứ 2 (bao gồm: J C J C0 , 0 , , 1 1), ta
không thể sử dụng các tính toán đơn giản mà phải áp dụng một số phươngpháp nhận dạng phức tạp hơn để xác định Phương pháp xác định tham sốchủ yếu ở đây là phương pháp bình phương cực tiểu
Theo [7]., ta có giá trị các tham số như sau:
Trang 152.4.3 Thiết kế bộ điều khiển
Trong luận văn này, mục tiêu chính là ổn định con lắc ở vị trí cân bằng trên
(upright position) Tác giả xây dựng bộ điều khiển phản hồi trạng thái cho bài
toán ổn định con lắc Một bộ điều khiển swing-up được sử dụng để đưa con lắc
từ vị trí cân bằng dưới (downward position) lên vị trí cân bằng trên.
a Bộ điều khiển Swing up (Swing up controler)
Trong luận văn này, tác giả xây dựng bộ điều khiển swing-up dựa trên việcđiều khiển năng lượng của con lắc đề xuất bởi K.Furuta và K.J.Astrom [8] và [9]
Khi đó bộ điều khiển có dạng:
cos
Hệ số tỷ lệ k được lựa chọn từ thực nghiệm.
b Bộ điều khiển ổn định con lắc ở vị trí cân bằng (Balancing controller)
Bộ điều khiển ổn định con lắc được thiết kế dựa trên mô hình tuyến tính (2.8)hoặc (2.9) của hệ thống Phương pháp thiết kế được sử dụng ở đây là phương pháp
áp đặt điểm cực của Ackerman có nguyên tắc thiết kế tóm tắt như sau:
được xác định bằng lệnh Matlab “acker(A,B,poles)”.
Hình 2.27 Bộ điều khiển sử dụng phương pháp gán điểm cực
A
x
∫
x + u
r
K
u
Trang 16-Để áp dụng cho mô hình con lắc 3 biến trạng thái, trước hết ta xét tínhđiều khiển được của mô hình 3 biến trạng thái:
S B AB A B
Ta có Rank S ( ) 3 3 , do đó hệ thống điều khiển được hoàn toàn
Chọn các điểm cực của hệ thống như sau:
với mô hình 4 biến trạng thái của con lắc là:
Nghiên cứu thuật toán điều khiển mô hình con lắc ngược quay Kri
PP-300 có tại phòng thí nghiệm của bộ môn Đo lường điều khiển
Trong quá trình nghiên cứu đã có những cải tiến, thay thế những bộ phận
cả phần cứng và phần mềm nhằm đảm bảo hệ thống hoạt động đúng yêu cầu
Trang 17Chươ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
Nội dung chương này trình bày:
- Mô tả các kết nối khối tín hiệu vào, tín hiệu ra, tín hiệu điều khiển giữacon lắc và vi mạch điện tử Arduino;
- Mô tả quá trình cài đặt thuật toán điều khiển trên Matlab/Simulink đểđiều khiển hệ thống con lắc ngược quay Kri-PP300;
- Chương này trình bày kết quả điều khiển thực con lắc ngược quay trongmôi trường Matlab/Simulink
3.1 Sơ đồ khối hệ thống con lắc ngược quay Kri PP-300
Hình 3.1 Sơ đồ khối kết nối Arduino mega 2560 điều khiển con lắc ngược quay Kri PP-300
3.2 Nhiệm vụ của các khối
- Arduino board: là vi mạch điện tử Arduino mega 2560, có nhiệm vụ nhận
tín hiệu từ Encoder, cảm biến góc quay, xử lý thuật toán điều khiển sau đó xuất ra tínhiệu PWM, Direction, Break để điều khiển động cơ của hệ thống con lắc
Trong đó, các chân được kết nối để thực hiện nhiệm vụ xử lý tín hiệu,điều khiển con lắc ngươc Kri PP-300 như sau:
+ Tín hiệu góc con lắc (anpha) và tốc độ con lắc (anpha_dot) được lấy từ
Encoder đưa về vi mạch điện tử Arduino mega 2560 thông qua chân số 18 và chân số
21(Digital in) trên vi mạch
Trong đó, Chân tín hiệu PWM (chân số 13-Digital out) là chân đưa ra tín
hiệu điều khiển điện cấp cho động cơ qua cánh tay (Arm) hệ thống con lắc.
Chân tín hiệu Brake (chân số 7-Digital out) là chân đưa ra tín hiệu hãm động
Trang 18cơ, chân này ở mức thấp sẽ cho phép động cơ quay, ở mức cao sẽ thực hiện
hãm động cơ Chân tín hiệu Direction (chân số 3-Digital out) là chân đưa ra tín
hiệu chọn hướng quay thuận hoặc nghịch cho động cơ
+ Tín hiệu góc quay của con lắc (Potention) được đưa về chân tín hiệu A0
(Analog in) của vi mạch, tín hiệu này là tín hiệu được biến đổi ADC (Analog
Digital Converter) từ điện áp có biên độ từ 0 đến +5VDC (0-1023bit) Quá trình
biến đổi ADC được thực hiện trên vi mạch điện tử Arduino mega 2560
- Mạch công suất điều khiển động cơ (Motor driver board): nhận các
tín hiệu điều khiển từ vi mạch điện tử Arduino, sau đó khuếch đại đủ lớn đểđiều khiển chính xác động cơ
- Khối nguồn (Power supply): Cấp điện áp đối xứng 15VDC đến
20VDC
- Hệ thống máy tính (Computer system): có cấu hình phù hợp, được cài
đặt phần mềm Matlab/simulink bản r2012a, và phần mềm Arduino softwavehoàn chỉnh
3.3 Hệ thống điều khiển trên Matlab/Simulink
Từ mô hình thuật toán điều khiển con lắc ngược quay (từ công thức 2.13,
2.15, 2.16, Chương 2) ta tiến hành xây dựng sơ đồ thuật toán điều khiển trên
Matlab/Simulink như sau:
Hình 3.5 Sơ đồ khối điều khiển hệ thống trên Matlab/Simulink
3.3.1 Khối con lắc ngược quay - Rotary Inverted Pendulum: