Upload
pham-van-bach
View
213
Download
0
Embed Size (px)
Citation preview
8/18/2019 1.Tran Duc Quan 1
1/6
1
Ứ NG DỤ NG THƯ VIỆ N ArduinoIO PHẦ N MỀM MATLAB TRONG HỆ THỐ NGĐIỀU KHIỂ N TỰ ĐỘ NG
APPLICATION ArduinoIO TOOLBOX (MATLAB/SIMULINK) IN AUTOMATICCONTROL SYSTEMS
TS. Đỗ Trung Hải, Trần Đứ c QuânKhoa Điện - Đại học K ỹ thuật Công nghiệ p
TÓM TẮTMATLAB là một môi tr ườ ng tính toán số và lậ p trình, đượ c thiết k ế bở i công ty
MathWorks. Trong quá trình thiết k ế các hệ thống điều khiển tự động, Matlab là một công cụ thiết yếu giúp ngườ i thiết k ế mô hình hóa mô phỏng hệ thống, ngoài ra Matlab còn có thể làmột phần trong hệ thống đó – thực hiện thuật toán điều khiển. Bản báo cáo này trình bày các
bướ c ứng dụng thư viện ArduinoIO trong công cụ Simulink của Matlab để thực hiện thu thậ pdữ liệu, điều khiển hệ thống điều khiển tự động và thực hiện một ví dụ về cụ thể.
ABSTRACTMATLAB is a numerical computing and programming environment, designed by the
MathWorks. During the design of the automatic control systems, Matlab is an essential tool tohelp designer simulation modeling systems, besides Matlab also can be part of them – the partimplements control algorithms. This report presents the steps to use ArduinoIO library inMatlab Simulink toolbox to collect data, control automated control systems and perform aspecific example.
Key word: Matlab, Simulink, Arduino, ArduinoIO. 1. Mở đầu
MATLAB là một môi tr ườ ng tính toánsố và lậ p trình, đượ c thiết k ế bở i công tyMathWorks. MATLAB cho phép tính toánsố vớ i ma tr ận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giaodiện ngườ i dung, liên k ết vớ i những chươ ngtrình máy tính viết trên nhiều ngôn ngữ lậ ptrình khác và truyền thông k ết nối thiết bị thực qua các cổng k ết nối nối tiế p, song songcủa máy tính. Vớ i thư viện Toolbox,MATLAB cho phép mô phỏng tính toán,thực nghiệm nhiều mô hình trong thực tế và
k ỹ thuật.Đặc biệt khi k ết hợ p vớ i các bo mạchthu thậ p dữ liệu, Matlab có thể đóng vai tròlà trung tâm điều khiển trong hệ thống điềukhiển số.
Arduino là một hệ thống sản xuất các bomạch mã nguồn mở đượ c hình thành và pháttriển từ năm 2005. Do các bo mạch là mãnguồn mở nên đến nay hệ thống này đã pháttriển r ất mạnh mẽ và có thư viện hỗ tr ợ chongườ i sử dụng r ất đa dạng, phong phú. Là
một thiết bị phần cứng, Arduino có thể hoạtđộng độc lậ p vớ i chức năng thực hiện các
luật điều khiển, k ết nối vớ i máy tính, hoặcmột thiết bị Arduino khác, các thiết bị điệntử khác...
Thư viện ArduinoIO là một thư việntrong bộ công cụ Simulink hỗ tr ợ các bomạch Arduino làm việc vớ i Matlab-Simulink. K ết hợ p các bo mạch Arduino vàthư viện ArduinoIO, Matlab có thể tiến hànhthu thậ p dữ liệu, thực hiện thuật toán điềukhiển dễ dàng để điều khiên đối tượ ng thực.
2. Bo mạch Arduino và thư việnArduinoIO
2.1. Bo mạch ArduinoCác bo mạch Arduino thật ra là bo mạch vixử lý đượ c dùng để lậ p trình tươ ng tác vớ icác thiết bị phần cứng như cảm biến, độngcơ , đèn hoặc các thiết bị khác. Đặc điểm nổi
bật của Arduino là môi tr ườ ng phát triển ứngdụ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óngngay cả vớ i ngườ i ít am hiểu về điện tử vàlậ p trình. Và điều làm nên hiện tượ ngArduino chính là mức giá r ất thấ p và tính
chất nguồn mở từ phần cứng tớ i phần mềm.
8/18/2019 1.Tran Duc Quan 1
2/6
2
Bo mạch ArduinoUNO là bo mạch thôngdụ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-12VSố đầu vào/ra số 14 (6PWM)Đầu vào tươ ng tự 6Dòng điện vào/ra số 40 mABộ nhơ chươ ng trình 32 KBXung 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 USBchúng ta có thể Upload chươ ng trình choArduino hoạt động, ngoài ra USB còn là
nguồn cho Arduino.- Nguồn cấ p một chiều cho ArduinoUNO (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 webhttp://arduino.cc/en/Main/Software. Sau
khi cài đặt xong thì giao diện chươ ngtrì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 chitiết trong Arduino.
Ví dụ điều khiển tốc độ động cơ mộtchiề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);
}
8/18/2019 1.Tran Duc Quan 1
3/6
3
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ônngữ cho bo mạch Arduino và gói mã lậ ptrì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ảnMatlab 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ụcArduinoIO/pde.
- Thêm thư viện ArduinoIO choMatlab/Simulink: Đưa thư mục làm việc củaMatlab đến thư mục ArduinoIO. Chạy tệ pinstall_arduino.m để thêm thư việnArduinoIO 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. Khik ết nối Arduino vào máy tính sẽ tạo ra mộtcổng giao tiế p nối tiế p (ví dụ Com3, Com4,…). Ngườ i sử dụng phải khai báo choMatlab biết Arduino đượ c k ết nối vào cổnggiao 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ủaArduino. Do bo mạch ArduinoUNO có thể
biến đổi điện áp tươ ng tự 0÷5V từ đầu vàotươ ng tự A0÷A5 thành giá tr ị số 10bit nênkhối này sẽ nhận đượ c k ết quả từ 0÷1024tươ ng ứng vớ i giá tr ị điện áp ở các đầu vàotươ 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 ếtquả khối này có thể là 0 hoặc 1 theo đầu vàosố đượ 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ố đượ ckhai báo.
- Khối chức năng Arduino AnalogWrite: xuất giá tr ị tươ ng tự trên các đầu ratươ ng tự của Arduino. Arduino coi các châncó chức năng điều khiển PWM như là cácchân xuất ra đượ c tín hiệu tươ ng tự. DoArduino sử dụng thanh ghi 8bit để điềukhiển PWM nên giá tr ị của khối ArduinoAnalog Write nhận đượ c từ 0÷255 tươ ngtứ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ếtlậ 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 bomạch ArduinoUNO có chân 2 và 3 hỗ tr ợ nhận tín hiệu xung từ Encoder. ArduinoUNOsẽ tăng hoặc giá tr ị đếm khi có sự thay đổitr ạng thái của tín hiệu xung Encoder tùy theochiều quay của đĩ a Encoder. Do đếm theosườ n xung như vậy nên ArduinoUNO đãthực hiện tăng độ phân giải của Encoder lên4 lần. K ết quả của khối này là số xungArduinoUNO đế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ềucủa Arduino.
- Khối chức năng Stepper Motor: điềukhiển động cơ bướ c. Khối này yêu cầu phảisử dụng bo mạch điều khiển động cơ bướ ccủa Arduino.
- Khối chức năng Servo Read, ServoWrite: điều khiển động cơ servo.
8/18/2019 1.Tran Duc Quan 1
4/6
4
3. Sử dụng bo mạch ArduinoUNO và thư viện ArduinoIO điều khiển tốc độ động cơ một chiều3.1. Thông số động cơ
Hãng sản xuất YASKAWAMã 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ống1. Động cơ một chiều2. Bộ biến đổi xung áp3. Mạch tạo tín hiệu đặt4. Bộ ghép nối Arduino5. 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ệnArduinoIO để xây dựng cấu trúc điều khiểnhệ thống vớ i bộ điều khiển đượ c thực hiệntrê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ụngkhố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ốiAnalogWrite.
Độngcơ mộtchiều
Bộ biếnđổi
Bộ điều
khiển
n* n
(-)
8/18/2019 1.Tran Duc Quan 1
5/6
5
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ôngt ả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ấtlượ ng tốt.
4. K ết luậnTừ 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à bomạ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ệnmã 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 chotừ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ácthuật toán phức tạ p của Matlab để điều khiểncác hệ thống điều khiển tự động phức tạ p, yêucầu lượ ng tính toán lớ n.
udkn_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
PIDController
8/18/2019 1.Tran Duc Quan 1
6/6