Ứ
Ứ
NG D
NG D
Ụ
Ụ
NG TH
NG TH
Ư
Ư
VI
VI
Ệ
Ệ
N ArduinoIO PH
N ArduinoIO PH
Ầ
Ầ
N M
N M
Ề
Ề
M MATLAB TRONG H
M MATLAB TRONG H
Ệ
Ệ
TH
TH
Ố
Ố
NG
NG
Đ
Đ
II
Ề
Ề
U KHI
U KHI
Ể
Ể
N T
N T
Ự
Ự ĐỘ
ĐỘ
NG
NG
APPLICATION ArduinoIO TOOLBOX (MATLAB/SIMULINK) IN AUTOMATIC
APPLICATION ArduinoIO TOOLBOX (MATLAB/SIMULINK) IN AUTOMATIC
CONTROL SYSTEMS
CONTROL SYSTEMS
TS.
TS. ĐỗĐỗ Trung H Trung Hảải, Tri, TrầầnnĐứ Đứ c Quânc Quân Khoa
KhoaĐĐiiệện -n -ĐạĐại hi họọc K c K ỹỹ thu thuậật Công nghit Công nghiệệ p p TÓM T
TÓM TẮẮTT MATLAB là m
MATLAB là mộột môi tr t môi tr ườ ườ ng tính toán sng tính toán sốố và và llậậ p p trình,trình, đượ đượ c thic thiếết t k k ếế bbở ở i công tyi công ty MathWorks. Trong quá trình thi
MathWorks. Trong quá trình thiếết k t k ếế các h các hệệ th thốốngng đđiiềều khiu khiểển tn tựự độđộng, Matlab là mng, Matlab là mộột công ct công cụụ
thi
thiếết yt yếếu giúp ngu giúp ngườ ườ i thii thiếết k t k ếế mô hình hóa mô ph mô hình hóa mô phỏỏng hng hệệ th thốống, ngoài ra Matlab còn có thng, ngoài ra Matlab còn có thểể l làà m
mộột pht phầần trong hn trong hệệ th thốốngng đđó – thó – thựực hic hiệện thun thuậật toánt toán đđiiềều khiu khiểển. Bn. Bảản báo cáo này trình bày cácn báo cáo này trình bày các b
bướ ướ cc ứứng dng dụụng thng thưư vi việện ArduinoIO trong công cn ArduinoIO trong công cụụ Simulink c Simulink củủa Matlaba Matlab đểđể th thựực hic hiệện thu thn thu thậậ p p ddữữ li liệệu,u,đđiiềều khiu khiểển hn hệệ th thốốngng đđiiềều khiu khiểển tn tựự độđộng và thng và thựực hic hiệện mn mộột ví dt ví dụụ v vềề c cụụ th thểể..
ABSTRACT ABSTRACT
MATLAB is a numerical computing and programming environment, designed by the MATLAB is a numerical computing and programming environment, designed by the MathWorks. During the design of the automatic control systems, Matlab is an essential tool to MathWorks. During the design of the automatic control systems, Matlab is an essential tool to help designer simulation modeling systems, besides Matlab also can be part of them
help designer simulation modeling systems, besides Matlab also can be part of them – the – the partpart implements
implements control control algorithms. algorithms. This This report report presents presents the the steps steps to to use use ArduinoIO ArduinoIO library library inin Matlab
Matlab Simulink Simulink toolbox toolbox to to collect collect data, data, control control automated automated control control systems systems and and perform perform aa specific example.
specific example.
Key word: Matlab, Simulink, Arduino,
Key word: Matlab, Simulink, Arduino, ArduinoIO.ArduinoIO. 1. M
1. Mở ở đầđầuu MATLAB
MATLAB là là mmộột môi tr t môi tr ườ ườ ng tính toánng tính toán ssốố và và llậậ p p trình,trình, đượ đượ c thic thiếết t k k ếế bbở ở i công tyi công ty MathWorks. MATLAB cho phép tính toán MathWorks. MATLAB cho phép tính toán ssốố v vớ ớ i ma tr i ma tr ậận, vn, vẽẽ đồđồ th thịị hàm s hàm sốố hay bi hay biểểuu đồđồ
thông tin, th
thông tin, thựực c hihiệện thun thuậật toán, tt toán, tạạo các giaoo các giao di
diệện n ngngườ ườ i dung, liên k i dung, liên k ếết t vvớ ớ i i nhnhữững chng chươ ươ ngng trình máy tính vi
trình máy tính viếết trên nhit trên nhiềều ngôn ngu ngôn ngữữ llậậ p p trình khác và truy
trình khác và truyềền thông k n thông k ếết t nnốối thii thiếết t bbịị
th
thựực qua các cc qua các cổổng k ng k ếết nt nốối ni nốối tii tiếế p, song song p, song song ccủủa máy tính. Va máy tính. Vớ ớ i i ththưư viviệện Toolbox,n Toolbox, MATLAB cho phép mô ph
MATLAB cho phép mô phỏỏng tính toán,ng tính toán, th
thựực nghic nghiệệm nhim nhiềều mô hình trong thu mô hình trong thựực c ttếế vàvà k
k ỹỹ thu thuậật.t.
Đặ
Đặc c bibiệệt khi k t khi k ếết t hhợ ợ p p vvớ ớ i các bo mi các bo mạạchch thu th
thu thậậ p p ddữữ liliệệu, Matlab có thu, Matlab có thểể đđóng vai tròóng vai trò là trung tâm
là trung tâm đđiiềều khiu khiểển trong hn trong hệệ ththốốngng đđiiềềuu khi khiểển sn sốố.. Arduino là m Arduino là mộột ht hệệ th thốống sng sảản xun xuấất các bot các bo m mạạch mã nguch mã nguồồn mn mở ở đượ đượ c hình thành và phátc hình thành và phát tri triểển n ttừừ nnăăm 2005. Do các bo mm 2005. Do các bo mạạch là mãch là mã ngu
nguồồn mn mở ở nên nên đếđến nay hn nay hệệ th thốống nàyng này đđã phátã phát tri
triểển n r r ấất t mmạạnh nh mmẽẽ và có th và có thưư viviệện n hhỗỗ tr tr ợ ợ cho cho ng
ngườ ườ i i ssửử ddụụng ng r r ấấtt đđa a ddạạng, phong phú. Làng, phong phú. Là m
mộột thit thiếết t bbịị phphầần n ccứứng, Arduino có thng, Arduino có thểể hohoạạtt
độ
độngng độđộc c llậậ p p vvớ ớ i i chchứức c nnăăng thng thựực c hihiệện cácn các
lu
luậậtt đđiiềều khiu khiểển, n, k k ếết t nnốối i vvớ ớ i máy tính, hoi máy tính, hoặặcc m
mộột thit thiếết t bbịị Arduino khác, các thi Arduino khác, các thiếết t bbịị đđiiệệnn ttửử khác... khác...
Th
Thưư viviệện ArduinoIO là mn ArduinoIO là mộột t ththưư viviệệnn trong b
trong bộộ công c công cụụ Simulink h Simulink hỗỗ tr tr ợ ợ các bo các bo m
mạạch Arduino làm vich Arduino làm việệc c vvớ ớ i Matlab-i Matlab-Simulink. K
Simulink. K ếết t hhợ ợ p p các các bo bo mmạạch Arduino vàch Arduino và th
thưư vi việện ArduinoIO, Matlab có thn ArduinoIO, Matlab có thểể ti tiếến hànhn hành thu th
thu thậậ p p ddữữ liliệệu, thu, thựực hic hiệện thun thuậật toánt toán đđiiềềuu khi
khiểển dn dễễ dàng dàng đểđể đđiiềều khiênu khiên đốđối ti tượ ượ ng thng thựực.c. 2. Bo m 2. Bo mạạch Arduino và thch Arduino và thư ư viviệệnn ArduinoIO ArduinoIO 2.1. Bo m 2.1. Bo mạạch Arduinoch Arduino Các bo m Các bo mạạchch ArduinoArduino ththậật ra là bo mt ra là bo mạạch vich vi xxửử lýlý đượ đượ c dùngc dùng đểđể llậậ p p trình trình ttươ ươ ng tác vng tác vớ ớ ii các thi các thiếết t bbịị phphầần n ccứứng nhng nhưư ccảảm m bibiếến,n, độđộngng ccơ ơ ,, đđèn hoèn hoặặc các thic các thiếết bt bịị khác. khác. ĐặĐặcc đđiiểểm nm nổổii b
bậật ct củủa Arduino là môi tr a Arduino là môi tr ườ ườ ng phát tring phát triểểnn ứứngng ddụụng ng ccựực c k k ỳỳ ddễễ ssửử ddụụng, vng, vớ ớ i i mmộột ngôn ngt ngôn ngữữ llậậ p p trình trình có có ththểể hhọọc c mmộột cách nhanh chóngt cách nhanh chóng ngay c ngay cảả vvớ ớ i i ngngườ ườ i ít am hii ít am hiểểu u vvềề đđiiệện n ttửử vàvà llậậ p p trình. trình. VàVà đđiiềều làm nên hiu làm nên hiệện n ttượ ượ ngng Arduino chính là m
Arduino chính là mứức giá r c giá r ấất t ththấấ p p và và tínhtính ch
Bo mạch ArduinoUNO là bo mạch thông dụng nhất.
ArduinoUno sử dụng chip Atmega328. có 14 chân vào/ra sô, 6 chân vào tươ ng tự, thạch anh dao động 16Mhz. Một số thông số k ỹ thuật như sau: Viđiều khiển Atmega328 Điện áp hoạt động 5V Nguồn cấ p 7-12V Số đầu vào/ra số 14 (6PWM) Đầu vào tươ ng tự 6 Dòngđiện vào/ra số 40 mA Bộ nhơ chươ ng trình 32 KB Xung nhị p 16 MHz Sơ đồ chân ArduinoUNO: Hình 1: ArduinoUNO
- USB (1): Arduino sử dụng cáp USB để
giao tiế p vớ i máy tính. Thông qua cáp USB chúng ta có thể Upload chươ ng trình cho Arduino hoạt động, ngoài ra USB còn là nguồn cho Arduino.
- Nguồn cấ p một chiều cho Arduino UNO (2,3), 7÷12V
-Đầu vào tươ ng tự (4), A0÷A5. -Đầu vào/ra số (5,6), D0÷D13. Môi trườ ng lập trình:
Môi tr
ườ
ng l
ậ
p trình cho Arduino
đượ
c
t
ả
i
v
ề
t
ừ
trang
web
http://arduino.cc/en/Main/Software
.
Sau
khi cài
đặ
t xong thì giao di
ệ
n ch
ươ
ng
trình nh
ư
sau:
Hình 2: Môi tr ườ ng l ậ p trình Arduino
Để tìm hiểu lậ p trình cho Arduino có thể
tìm hiểu qua các ví dụ và phần tr ợ giúp chi tiết trong Arduino. Ví dụ điều khiển tốc độ động cơ một chiều bằng xung PWM: Hình 3: S ơ đồ mạch Mã nguồn: int potPin = 0; int transistorPin = 9; int potValue = 0; void setup() { pinMode(transistorPin, OUTPUT);} void loop() { potValue = analogRead(potPin) / 4; analogWrite(transistorPin, potValue); }
2.2. Thư viện ArduinoIO
Thư viện ArduinoIO gồm hai gói phần mềm mã nguồn mở : gói mã lậ p trình ngôn ngữ cho bo mạch Arduino và gói mã lậ p trình .m cho các khối trong môi tr ườ ng Simulink. Để sử dụng đượ c thư viện này, Matworks khuyến cáo sử dụng phiên bản Matlab 2012a tr ở lên.
Các bướ c càiđặt thư viện ArduinoIO: - Tải và giải nén thư viện ArduinoIO từ
trang web http://mathworks.com.
- Tải gói phần mềm xuống bo mạch ArduinoUNO. Gói phần mềm trong thư mục ArduinoIO/pde.
- Thêm thư viện ArduinoIO cho Matlab/Simulink: Đưa thư mục làm việc của Matlab đến thư mục ArduinoIO. Chạy tệ p install_arduino.m để thêm thư viện ArduinoIO cho Simulink.
Các khối trong thư viện ArduinoIO:
Hình 1: Thư viện ArduinoIO
- Khối chức năng Arduino IO setup: thiết lậ p cài đặt giao tiế p vớ i Arduino. Khi k ết nối Arduino vào máy tính sẽ tạo ra một cổng giao tiế p nối tiế p (ví dụ Com3, Com4, …). Ngườ i sử dụng phải khai báo cho Matlab biết Arduino đượ c k ết nối vào cổng giao tiế p nào.
- Khối chức năng Real-Time Pacer: Cài
đặt cho Simulink chạy vớ i thờ i gian thực. - Khối chức năng Arduino Analog Read:
đọc giá tr ị ADC trên các đầu vào analog của
biến đổi điện áp tươ ng tự 0÷5V từ đầu vào tươ ng tự A0÷A5 thành giá tr ị số 10bit nên khối này sẽ nhận đượ c k ết quả từ 0÷1024 tươ ng ứng vớ i giá tr ị điện áp ở các đầu vào tươ ng tự đượ c khai báo.
- Khối chức năng Arduino Digital Read:
đọc giá tr ị các đầu vào số của Arduino. K ết quả khối này có thể là 0 hoặc 1 theo đầu vào số đượ c khai báo.
- Khối chức năng Arduino Digital Write: ghi giá tr ị 0 hoặc 1 ra các đầu ra số đượ c khai báo.
- Khối chức năng Arduino Analog Write: xuất giá tr ị tươ ng tự trên các đầu ra tươ ng tự của Arduino. Arduino coi các chân có chức năng điều khiển PWM như là các chân xuất ra đượ c tín hiệu tươ ng tự. Do Arduino sử dụng thanh ghi 8bit để điều khiển PWM nên giá tr ị của khối Arduino Analog Write nhận đượ c từ 0÷255 tươ ng tứng vớ i xung PWM có độ r ộng xung từ
0÷100%. Tần số PWM của ArduinoUNO là 980Hz.
- Khối chức năng Encoder Read: thiết lậ p và đọc giá tr ị bộ đếm xung của Arduino. Thư viện ArduinoIO hỗ tr ợ cảm biến tốc tộ
mã hóa dướ i dạng xung (Encoder) loại tươ ng
đối 2 kênh lệch pha nhau 90o điện. Trên bo mạch ArduinoUNO có chân 2 và 3 hỗ tr ợ
nhận tín hiệu xung từ Encoder. ArduinoUNO sẽ tăng hoặc giá tr ị đếm khi có sự thay đổi tr ạng thái của tín hiệu xung Encoder tùy theo chiều quay của đĩ a Encoder. Do đếm theo sườ n xung như vậy nên ArduinoUNO đã thực hiện tăng độ phân giải của Encoder lên 4 lần. K ết quả của khối này là số xung ArduinoUNO đếm đượ c trong 100ms. - Khối chức năng Encoder Reset. - Khối chức năng DC Motor: điều khiển
động cơ một chiều. Khối này yêu cầu phải sử
dụng bo mạch điều khiển động cơ một chiều của Arduino.
- Khối chức năng Stepper Motor: điều khiển động cơ bướ c. Khối này yêu cầu phải sử dụng bo mạch điều khiển động cơ bướ c của Arduino.
3. Sử dụng bo mạch ArduinoUNO và thư viện ArduinoIO điều khiển tốc độ động cơ một chiều 3.1. Thông số động cơ Hãng sản xuất YASKAWA Mã hiệu UGFMED 03SRI21 Điện ápđịnh mức 24V Công suất định mức 50W Tốc độ định mức 1500(vòng/phút) Enconder 5V, 400 xung/vòng 3.1. Sơ đồ cấu trúc điều khiển hệ thống Hình 4: S ơ đồ cấ u trúc hệ 3.2. Sơ đồ nguyên lý hệ thống 1. Động cơ một chiều 2. Bộ biến đổi xung áp 3. Mạch tạo tín hiệu đặt 4. Bộ ghép nối Arduino 5. Tín hiệu phản hồi tốc độ 6. Máy tính (Matlab/Simulink) Hình 5: S ơ đồ nguyên lý hệ 3.3. Xây dự ng cấu trúc điều khiển hệ thống sử dụng Matlab/Simulink Sử dụng các khối trong thư viện ArduinoIO để xây dựng cấu trúc điều khiển hệ thống vớ i bộ điều khiển đượ c thực hiện trên Matlab/Simulink trên hình 6. Chi tiết khối Động cơ một chiều (DCM) gồm: - Đọc tín hiệu tốc độ động cơ , sử dụng khối Encoder Read. - Xuất tín hiệu từ bộ điều khiển ra bộ biến đổi (xuất tín hiệu PWM), sử dụng khối AnalogWrite. Động cơ một chiều Bộ biến đổi Bộ điều khiển n* n (-)
Hình 6: S ơ đồ cấ u trúcđ iề u khiể n hệ thố ng sử d ụng Matlab/Simulink 3.4.Đápứ ng tốcđộ của động cơ Đáp ứng tốc độ động cơ vớ i tín hiệu đặt Nref = 1000 v/ph. Hình 7. Đápứ ng t ố c độ động cơ Sai lêch tốc độ động cơ so vớ i tín hiệu đặt: Hình 8. Sai l ệch t ố c độ động cơ khi không t ải vớ i tín hiệu đặt Từ hình 7 và hình 8 ta thấy: - Đáp ứng tốc độ động cơ khi luôn bám theo tín hiệu đặt.
- Thờ i gian xác lậ p nhanh, khoảng 0.6s. - Lượ ng quá điều chỉnh r ất nhỏ. - Bộ điều khiển thực hiện trên Matlab/Simulink điều khiển hệ thống đạt chất lượ ng tốt. 4. K ết luận Từ các k ết quả nghiên cứu và thực nghiệm ở trên ta thấy: K ết hợ p Matlab/Simulink và bo mạch Arduino vớ i thư viện ArduinoIO có thể
thực hiện tôt việc thu thậ p dữ liệu, tính toán và
điều khiển trong các hệ thống điều khiển tự động.
Ngoài ra, thư viện ArduinoIO là thư viện mã nguồn mở nên ngườ i dùng hoàn toàn có thể
chỉnh sửa, thêm, bớ t các công cụ cần thiết cho từng ứng dụng cụ thể. Có thể khai thác triệt để
khả năng tính toán mạnh mẽ và thực hiện các thuật toán phức tạ p của Matlab để điều khiển các hệ thống điều khiển tự động phức tạ p, yêu udk n_err 1000 Toc do dat 1 Toc do Speed 1 SP ref Real-Time Pacer Speedup = 1 Real-Time Pacer x' = Ax+Bu y = Cx+Du Hin controller 1.03 GH tren 0.97 GH duoi 1 Dong dien Current Speed Dir SP DCM Current Setup Arduino1 COM2 ArIO Setup PID Controller
TÀI LIỆU THAM KHẢO
[1]. Bùi Quốc Khánh – Phạm Quốc Hải – Dươ ng Văn Nghi, Điề u chỉ nh t ự động truyề n động đ iện, NXB Khoa học và k ỹ thuật, 1999.
[2]. Nguyễn Phùng Quang, Matlab & Simulink dành cho k ỹ sư đ iề u khiể n t ự
động , NXB Khoa học và k ỹ thuật, 1996. [3]. Arduino, http://arduino.cc
[4]. Mathworks,