Tải bản đầy đủ (.doc) (28 trang)

Tóm tắt luận văn thạc sĩ kỹ thuật ứ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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (640.2 KB, 28 trang )

ĐẠ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
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
THÁI NGUYÊN - 2014

Luậ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
Học viện Quân sự
Phản biện 2: TS. Trần Xuân Minh
Đại học Thái Nguyên
Luận văn được bảo vệ tại hội đồng chấm luận văn họp tại:
Trường Đại học Kỹ thuật Công nghiệp - Đại học Thái Nguyên
Vào ngày 18 tháng 04 năm 2014
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ệ đó.
Khi sử dụng vi mạch điện tử Arduino với những đặc điểm như trên ứng
dụ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ật
toá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 đơn
giả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ần
mềm và phần cứng, không cho phép chỉnh định thay đổi chương trình điều
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”
1
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
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. 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ường
phá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ệ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ẽ 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ả 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ển
dự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ồn
riê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óa
8bit.
+ 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.
2
+ Đầ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)
+ Vi mạch điện tử Arduino như Hình 1.5:

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:
+ Tải phần mềm và cài đặt chương trình trên
website:
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.
3
Hì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 đó, Target
for Use with Arduino hardwave sẽ được tự động cập nhật vào Toolbox
Simulink 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ủa
Matlab
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ềm
Arduino và với Matlab/Simulink.

- Khả năng “nhúng” các ứng dụng điều khiển trên Arduino.
4
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.
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ên
cứ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
5
Ứ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ật

toá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ùng
khô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ân
bằng trong nhiều lĩnh vực.
2.3. Hệ thống con lắc ngược quay Kri PP-300 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 ứng
dụng, sử dung tại nhiều phòng thí nhiệm thuộc các viện nghiên cứu, nhiều
trường Đại học kỹ thuật trên thế giới, trong đó có Trường Đại học kỹ thuật công
nghiệ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)
Cung 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)
6
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ười
dù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ác
tí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 sang
nguồ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)
Cảm biến góc quay là một biển trở có giá trị 5KΩ (
±
20%), được cấp
nguồn +5VDC, có với góc quay từ 0 đến 360
0
, dải mã hóa được 10-bit ADC.
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
hoạt.
b. Encoder
Hệ thống con lắc ngược quay sử dụng Encoder gắn trực tiếp lên trục
động cơ một chiều. Encoder có độ phân giải 1000 xung/vòng.
Cho đến thời điểm tác giả tiến hành nghiên cứu thì hệ thống con lắc
ngược quay Kri PP-300 đã có một số bộ phận bị hỏng, không còn phù hợp để
sử dụng. Trước những điều kiện như vậy, đòi hỏi đặt ra là cần tìm những bộ
phận thiết bị, vi mạch ứng dụng phù hợp để cải tạo, thay thế nhằm mục đích
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 Kri
PP-300 là:
+ 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.
7
+ 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.
Có Arduino softwave sử dụng ngôn ngữ lập trình C
++
thông dụng, có nền
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 quay
như sau:
2 2 2
2
1 0 1 1 1 1
2
1
0 1 0 1 1 1
2
2

1
2
0 1 0 1 1 1 0
1 1 1
2
1 1
1
2
1
1 1
2
cos
sin sin 2
sin 2
0
sin
-
2
0
t b
a
t u
a
K K
R
K K
R
m L l J m l
C m
J m L m l sin m L l sin

m l s L l m l
m l C
u
m
in
gl
β β
β
α
β
α
β α
β
α
β β β
β
β
β
  
+
  
− +
 
 
 
+ +
 
+
 
 


 
 
 
 
 
=
 
 

+
 

 
+

+
&
&&
&&
&
&
&
&
&
(2.1)
Bảng 2.1. Bảng tham số của hệ thống con lắc ngược quay
Ký hiệu Đơn vị Mô tả
α rad Góc giữa cánh tay và trục x
β rad Góc quay của con lắc hướng lên

θ rad Góc quay của con lắc hướng xuống
J
0
kg-m
2
Mômen kích thích của cánh tay
J
1
kg-m
2
Mômen kích thích của con lắc
C
0
kg-m
2
/s Hệ số ma sát của cánh tay
C
1
kg-m
2
/s Hê số ma sat của con lắc
8
m
1
kg Khối lượng hiệu dụng của con lắc
l
1
m Chiều dài hiệu dụng của con lắc
L
0

m Khoảng cách từ trục động cơ đến con lắc
K
t
N-m/A Hằng số mômen của động cơ
K
b
V-s/rad Hằng số sức điện động của động cơ
K
u
V/count Hệ số khuếch đại điều khiển động cơ
R
a
Ω Điện trở phần ứng của động cơ
g m/s
2
Gia tốc trọng trường
u Counts Tín hiệu điều khiển động cơ
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:
2
0
0 1 0 1 0 1
2
1 0 1 1 1 1
1
1 1
0
0
0 0
0

0
t b
a
t u
a
K K
R
K K
R
C
J m L m L l
m L l J m l
C
u
m gl
α α
β β
α
β
 
+
 
   
+ −
+ +
 
 
   
− +
 

   
 
 
 
 
 
=
 
 
 

 
 
 
 
&& &
&& &
(2.2)
Đặt:
2
0 1 0
a J m L
= +
2
1 1
b m l
=
2
1 0 1
c m L l

=
0
t b
a
K K
R
d C
= +
t u
a
K K
R
e =
2
1 1 1
f J m l
= +
1 1
h m gl
=
Để có thế so sánh chất lượng điều khiển ta có thể sử dụng hai mô hình
của con lắc ngược tại điểm làm việc đó là mô hình với 3 biến trạng thái và mô
hình 4 biến trạng thái.
a) Mô hình với 3 biến trạng thái:
3
, ,
T
x
α β β
 

=
 
&
&
cho mô hình con lắc ngược
quay:
3 3 3 3
x A x B u
= +
&
1
2
2 2
1
1 1
0 0 0
df ch cC ef
af c u
af c af c
cd ah aC ce
α
α
β β
β
β
 

     
 
     

= − +
 
     
− −
 
     
− −
     
 
&&
&
&
&
&&
(2.3)
b) Mô hình với 4 biến trạng thái:
4
, , ,
T
x
α α β β
 
=
 
&
&
của hệ thống con lắc là:
4 4 4 4
x A x B u
= +

&
2
1
2 2
2
1
0
0 0 0
0
1 1
0
0 0 0
0
af c
ef
df ch cC
u
af c af c
af c
ce
cd ah aC
α
α
α
α
β
β
β
β
 

 
  

 
 
  
 

 
  
 
= +
 
  
− −

 
 
  
 
− −
  
 
 
 
 
 
 
&
&&

&
&
&
&&
(2.4)
Để có thể sử dụng được các mô hình (2.3) và (2.4) ta cần phải xác định các tham
số vật lý của mô hình.
2.4.2. Xác định tham số của mô hình
9
Những tham số này có thể chia thành 2 nhóm: nhóm thứ nhất bao gồm
cá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
Khối lượng thân con lắc 24.5g
Khối lượng quả lắc 8.9g
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
rod
m g g

= × =
(2.5)
Bỏ qua ảnh hưởng của khối lượng tại hai đầu của con lắc, ta có:
1
22.9574 8.9 31.8574 0.0319
rod bob
m m m g g kg
= + = + = =

(2.6)
Để xác định chiều dài hiệu dụng (l
1
) của con lắc ta áp dụng định luật
mômen với ứng với biểu thức:
1 1 rob rob bob bob
m l m l m l
= +
(2.7)
( )
1
1
1
1

1 270 17 25
22.9574 8.9 224
31.8574 2 2
157.2307 0.1572
rod rod bob bob
l m l m l
m
mm mm mm
l g g mm
g
mm m
⇔ = +
 −
   
⇒ = × + × +
 ÷  ÷
 
   
 
= =
10
+ 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ị
hệ số K
u
như Bảng 2.3:
Bảng 2.3. Bảng khảo sát tham số K
u
u (count) V

m
(V) K
u
(V/count)
70 4.45 0.0636
Giá trị trung bình 0.0636
+ Đặ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:
Bảng 2.4. Bảng hệ số K
t
, K
b
, R
a
của động cơ
u (count) Đơn vị Giá trị
K
t
N-m/A 0.0706
K
b
V-s/rad 0.0707
R
a

Ω 0.9000
Muốn xác định được nhóm các tham số thứ 2 (bao gồm:
0 0 1 1
, , ,J C J C
), 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ương
phá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:
Bảng 2.5. Bảng giá trị hệ số J
0
, C
0
, J
1
, C
1
Tham số:
0
J
0
C
1
J
1
C
Giá trị: 0.008591 0.006408 0.000217 0.000158
Kết luận:
Với các tham số đã xác định được, ta có mô hình tuyến tính của hệ thống
con lắc ngược với 3 biến trạng thái như sau:

1.3705 3.8557 0.01242 0.5721
0 0 1 0
0.9367 51.5747 0.1661 0.3910
u
α α
β β
β β
− −
= +
− −
       
       
       
       
       
&& &
&
&& &
(2.8)
Với 4 biến trạng thái, ta có mô hình:
0 1 0 0 0
0 1.3705 3.8557 0.01242 0.5721
0 0 0 1 0
0 0.9367 51.5747 0.1661 0.3910
u
α α
α α
β β
β β
       

       
− −
       
= +
       
       
− −
       
&
&& &
&
&& &
(2.9)
11
2.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:
cosu kE
β β
= −
&
(2.13)
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:
Cho một hệ thống:
x Ax Bu
= +
&
(2.14)
Hình 2.25. Sơ đồ khối hệ thống
Chất lượng của hệ thống có quan hệ chặt chẽ với việc lựa chọn điểm cực
thường phải thỏa mãn giữa độ tác động nhanh và khả năng chống nhiễu của hệ.
Sơ đồ khối Hình 2.27 để có thể sử dụng phương pháp áp đặt điểm cực của
Ackerman, hệ thống phải điều khiển được hoàn toàn, các giá trị của ma trận K
đượ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
12
u
y
C
B
A
x

x
u
y
C
B
A
x


x
+
u
r
K
-
u
Để á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:
1.3705 3.8557 0.01242 0.5721
0 0 1 0
0.9367 51.5747 0.1661 0.3910
u
α α
β β
β β
− −
      
      
= +
      
      
− −
      
&& &
&
&& &
Với ma trận điều khiển:
2

3
S B AB A B
 
=
 

Ta có
3
( ) 3Rank S =
, 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:
[ ]
3
-13.4227 -1.2575+3.4921i -1.2575-3.4921iP
=
Ta có bộ điều khiển phản hồi trạng thái tương ứng cho mô hình con lắc 3
biến trạng thái là:
[ ]
3
9 255 50K
= −
(2.15)
Tương tự với mô hình 4 biến trạng thái (2.9), ta có ma trận điều khiển là:
2 3
4
S B AB A B A B
 
=
 
Các điểm cực được chọn là:

[ ]
4
-13.9988 -0.8943 + 4.1462i -0.8943 - 4.1462i -0.3891P
=
Vậy bộ điều khiển ứng
với mô hình 4 biến trạng thái của con lắc là:
[ ]
4
3.5 12 265 55K
= − −
(2.16)
2.5. Kết luận chương 2
Trong chương này giới thiệu tổng quan về con lắc ngược quay và những
ứng dụng của nó được ứng dụng nghiên cứu phát triển trên hệ thống này.
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.
13
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
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ữa
con 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 trong
mô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ín
hiệ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
cơ, chân này ở mức thấp sẽ cho phép động cơ quay, ở mức cao sẽ thực hiện
14
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 softwave
hoà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:
Quá trình các tín hiệu Anpha, Anpha_dot, Beta, Beta_dot được chuyển
đổi, xử lý trên Matlab/Simulink.
15
Rotary Inverted Pendulum
Anpha
Anpha_dot
Beta
Beta_dot
U
Hình 3.6. Mô hình mô phỏng hệ thống con lắc
3.3.2. Bộ điều khiển cân bằng - Balance controller:
Hình 3.8. Mô hình bộ điều khiển cân
bằng cho con lắc ngược quay
3.3.3. Bộ điều khiển Swing up - Swing up controller:
Hình 3.9. Mô hình bộ điều khiển Swing up
3.3.4. Khóa chuyển đổi bộ điều khiển - Switch:
Hình 3.11. Mô hình khóa chuyển
đổi bộ điều khiển (Switch)
3.4. Chương trình cho Arduino mega 2560
Vi mạch Arduino thực hiện việc đọc, xử lý tín hiệu của cảm biến góc, tín

hiệu encoder sau đó gửi dữ liệu về bộ điều khiển trong Matlab/Simulink qua
giao tiếp USB. Qua quá trình thử nghiệm thực tế, tốc độ truyền thông cũng như
xử lý dữ liệu còn chậm làm cho bộ điều khiển không tác động kịp với sự thay
đổi trạng thái của hệ thống. Để khắc phục, tác giả đã cải tiến nâng cao tốc độ
bằng cách viết một chương trình riêng để xử lý các tín hiệu vào/ra, bộ điều
khiển trên Simulink được chạy ở chế độ “External”.
Chương trình chế độ “External” cho Arduino mega 2560 được viết
trên Arduino softwave như sau:
#include <avr/io.h>
16
#include <avr/interrupt.h>
#include <avr/stdio.h>
#include < avr/util/delay.h >
volatile unsigned char c;
volatile int encoder,data=0;
volatile boolean state=0;
ISR(USART0_RX_vect)
{ state=1;
c=UDR0;
if(c==255)PORTB|=_BV(7); // Xac dinh huong quay
else if(c==254)PORTB&=~(_BV(7));
else {
if(c<30)OCR0B=c+20;else OCR0B=c;
data=encoder;encoder=0;}
}
ISR(INT0_vect) // Ngat dung doc encoder
{
for(int i=0;i<1000;i++);
if((PIND&0b00000001))
{

if(PIND&0b00001000)encoder++;
else encoder ;
}
}
ISR(INT3_vect)
void serial_init(void) // Khoi tao truyen thong noi tiep
{
UBRR0H=0;
UBRR0L=25;
UCSR0A=0;
UCSR0B=0b10011000; // Khong dung ngat send
UCSR0C|=0b00000000; // 1 bit stop
}
void serial_send(int val) // Lenh gui len matlab
{
if(val<0){
loop_until_bit_is_set(UCSR0A,UDRE0);
UDR0=45;
val=-val;
}
char d=val/1000;
if(d){
17
loop_until_bit_is_set(UCSR0A,UDRE0);
UDR0=d+48;
val=val%1000;
loop_until_bit_is_set(UCSR0A,UDRE0);
UDR0=val/100+48;
__100:
val=val%100;

loop_until_bit_is_set(UCSR0A,UDRE0);
UDR0=val/10+48;
__10:
loop_until_bit_is_set(UCSR0A,UDRE0);
UDR0=val%10+48;
goto endd;
}
d=val/100;
if(d){
loop_until_bit_is_set(UCSR0A,UDRE0);
UDR0=d+48;
goto __100;}
d=val/10;
if(d){
loop_until_bit_is_set(UCSR0A,UDRE0);
UDR0=d+48;}
goto __10;
endd:;
}
void pwm_init(void) // Khoi tao PWM
{
TCCR0A|=0b00100011;
TCCR0B|=0b00000011; // f/64
DDRG|=_BV(5);
PORTG&=~(_BV(5));
}
void encoder_init(void) // Khoi tao cho encoder
{
PORTD|=0b00001001; // Cho phep dien tro pull-up;
EICRA|=0b11000011; // Ngat suon duong

EIMSK|=0b00000001;
}
void adc_init(void) // Khoi tao doc ADC tu bien tro
{
ADMUX=0b01000000; // Chon nguon Vref = AVCC
18
ADCSRA|=0b10000111; // Cho phep ADC
PORTF|=_BV(0); // Khong tro treo
}
int adc_read(void) // Doc adc
{
int high,low;
ADCSRA|=_BV(ADSC); // Bat dau chuyen doi
loop_until_bit_is_clear(ADCSRA,ADSC);
low=ADCL;
high=ADCH;
return (high<<8)|low;
}
int main(void)
{
DDRB|=_BV(7); // Xuat tin hieu ra P7.
pinMode(7,OUTPUT);
serial_init();
pwm_init();
adc_init();
encoder_init();
sei();
OCR0B=0;
digitalWrite(7,LOW);
while(1)

{
if(state)
{
serial_send(adc_read());
loop_until_bit_is_set(UCSR0A,UDRE0);UDR0=32;
serial_send(data);
loop_until_bit_is_set(UCSR0A,UDRE0);UDR0=10;
state=0;
}
}
}
3.5. Kết quả điều khiển
3.5.1. Kết quả trên bộ điều khiển có 3 biến trạng thái
Hệ số khuếch đại của bộ điều khiển:
[ ]
3
9 255 50K = −
có kết quả như Hình
3.12 và Hình 3.13
19
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 khi chạy thực
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
khi chạy thực
20
3.5.2. Kết quả trên bộ điều khiển có 4 biến trạng thái
Hệ số khuếch đại của bộ điều khiển:
[ ]
4

3.5 12 265 55K = − −
có kết
quả như Hình 3.14 và Hình 3.15:
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ển
khi chạy thực
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 khi chạy thực
Nhận xét:
- Chất lượng bộ điều khiển khi sử dụng mô hình 4 biến trạng thái cho kết quả
tốt, mô hình 3 biến trạng thái.
21
3.5.3. Video kết quả thực nghiệm
Kết quả thực nghiệm được ghi lại và đưa lên địa chỉ:
và />3.6. Kết luận chương 3
Trong chương này tác giả trình bày quá trình Ứng dụng 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.
Ứng dụng thành công vi mạch điện tử Arduino mega 2560 kết hợp với
Matlab/Simulink điều khiển được hệ thống con lắc cân bằng, ổn định.
KẾT LUẬN VÀ ĐÁNH GIÁ
1. Kết luận
Đề tài này đã hoàn thành một số công việc sau:
Đánh giá tổng quan về Vi mạch điện tử Arduino, cách thức cài đặt, kết
nối của Vi mạch điện tử Arduino với phần mềm Arduino, 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ế.
Ứng dụng cài đặt thuật toán điều khiển thông qua phần mềm
Matlab/Simulink lên vi mạch điện tử Arduino mega 2560.

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 thuộc hệ thống không còn sử dụng được như: Encoder, vi
mạch điều khiển UC96, phần mền hệ thống… bằng những bộ phận thiết bị, vi
mạch điều khiển, phần mềm phù hợp tương thích nhằm đảm bảo hệ thống hoạt
động đúng yêu cầu.
Kết nối, mô phỏng hoạt động, điều khiển thực hệ thống con lắc ngược
quay trên Matlab/Simulink.
Bên cạnh đó vẫn còn tồn tại một số hạn chế như:
+ Tín hiệu vận tốc của con lắc và cánh tay không được đo trực tiếp mà
phải nội suy từ vị trí, do đó hai giá trị này còn bị sai số đây chính là yếu tố gây
nên nhiễu cho hệ thống.
+ Góc quay của con lắc được phản hồi bằng biến trở quay 360
0
có sai
số lớn (±20%) đây cũng là yếu tố gây mất ổn định không hề nhỏ cho hệ
thống.
1.2. Đóng góp của luận văn
22
- Tìm ra giải pháp mới để điều khiển hệ thống con lắc ngược quay Kri
PP-300 có tại bộ môn Đo lường điều khiển bằng Vi mạch điện tử Arduino mega
dựa trên phần mềm Arduino và Matlab/Simulink.
1.3. Hướng phát triển của đề tài
- Trên cơ sở các kết quả đã đạt được trong quá trình nghiên cứu, để hệ
thống con lắc Kri PP-300 hoạt động ổn định hơn ta cần phát triển, cải tiến cả
phần cứng và thuật toán điều khiển, tìm cách ứng dụng những thuật toán ổn
định hơn, thông minh hơn để điều khiển hệ thống:
+ Tìm cách thay thế cảm biến góc quay con lắc bằng Encoder để tăng độ
chính xác và ổn định.
+ Nghiên cứu thêm các thuật toán điều khiển hiện đại: Neural, Fuzzy…
Xây dựng phương pháp điều khiển ổn định vị trí của con lắc tại mọi điểm mong

muốn cho trước.
23

×