1.Tran Duc Quan 1
November 12, 2018 | Author: Phạm Văn Bách | Category: N/A
Short Description
Arduino...
Description
VIỆ N ArduinoIO PHẦ N MỀM MATLAB TRONG HỆ THỐ NG Ứ NG DỤ NG THƯ VI ĐIỀU KHIỂ N TỰ Ự ĐỘ ĐỘ NG APPLICATION ArduinoIO TOOLBOX (MATLAB/SIMULINK) IN AUTOMATIC CONTROL SYSTEMS TS. Đỗ Trung H ải, Trần Đứ c Quân
Khoa Điện - Đại học K ỹ thuật Công nghiệ p TÓM TẮT ườ ng MATLAB 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à 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ậ p dữ 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ể. ABSTRACT
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 help designer simulation modeling systems, besides Matlab also can be part of them – the part implements control algorithms. This report presents the steps to use ArduinoIO library in Matlab Simulink toolbox to collect data, control automated control systems and perform a specific example. Key word: Matlab, Simulink, Arduino, ArduinoIO. ở đầu 1. Mở đầ luật điều khiển, k ết nối vớ i máy tính, hoặc ườ ng MATLAB là một môi tr ườ ng tính toán một thiết bị Arduino khác, các thi ết bị điện số và lậ p trình, đượ c thiết k ế bở i công ty tử khác... MathWorks. MATLAB cho phép tính toán Thư viện ArduinoIO là một thư viện ợ các bo số v ớ i ma tr ận, vẽ đồ thị hàm số hay biểu đồ trong bộ công cụ Simulink hỗ tr ợ thông tin, thực hiện thuật toán, tạo các giao mạch Arduino làm vi ệc vớ i Matlabdiện ngườ i dung, liên k ết vớ i những chươ ng ng Simulink. K ết hợ p các bo mạch Arduino và trình máy tính vi ết trên nhiều ngôn ng ữ lậ p thư vi ện ArduinoIO, Matlab có th ể ti ến hành trình khác và truy ền thông k ết nối thiết bị thu thậ p dữ liệu, thực hiện thuật toán điều thực qua các c ổng k ết nối nối tiế p, song song khiển dễ dàng để điều khiên đối tượ ng ng thực. của máy tính. V ớ i thư viện Toolbox, MATLAB cho phép mô ph ỏng tính toán, 2. Bo mạch Arduino và thư viện thực nghiệm nhiều mô hình trong th ực tế và ArduinoIO 2.1. Bo mạch Arduino k ỹ thuật. Đặc biệt khi k ết hợ p vớ i các bo mạch Các bo mạch Arduino thật ra là bo mạch vi thu thậ p dữ liệu, Matlab có th ể đóng vai trò xử lý đượ c dùng để lậ p trình tươ ng ng tác vớ i là trung tâm điều khiển trong hệ thống điều các thiết bị phần cứng như cảm biến, động khiển số. cơ , đèn hoặc các thi ết b ị khác. Đặc điểm nổi ườ ng Arduino là một hệ thống sản xuất các bo bật của Arduino là môi tr ườ ng phát triển ứng ở đượ c hình thành và phát dụng cực k ỳ dễ sử dụng, vớ i một ngôn ngữ mạch mã ngu ồn mở đượ triển từ năm 2005. Do các bo m ạch là mã lậ p trình có thể học một cách nhanh chóng nguồn m ở nên nên đến nay hệ th ống này đã phát ngay cả vớ i ngườ i ít am hiểu về điện tử và ợ cho triển r ất mạnh mẽ và có th ư viện hỗ tr ợ cho lậ p trình. Và điều làm nên hi ện tượ ng ng ngườ i sử dụng r ất đa dạng, phong phú. Là Arduino chính là mức giá r ất thấ p và tính một thiết bị phần cứng, Arduino có th ể hoạt chất nguồn mở từ phần cứng tớ i phần mềm. động độc lậ p vớ i chức năng thực hiện các 1
khi cài đặt xong thì giao diện chươ ng trình như sau:
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 Điện áp hoạt động Nguồn cấ p Số đầu vào/ra số Đầu vào t ươ ng tự Dòng điện vào/ra số Bộ nhơ chươ ng trình Xung nhị p
Atmega328 5V 7-12V 14 (6PWM) 6 40 mA 32 KB 16 MHz
Sơ đồ chân ArduinoUNO: 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 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.
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); }
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 Sau http://arduino.cc/en/Main/Software. 2
2.2. Thư viện ArduinoIO Thư viện ArduinoIO gồm
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 90 o đ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. - Khối chức năng Servo Read, Servo Write: điều khiển động cơ servo.
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 Arduino. Do bo mạch ArduinoUNO có th ể 3
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
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
3.1. Sơ đồ cấu trúc điều khiển hệ thống *
n
(-)
Bộ điều khiển
Bộ biến đổi
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.
Động n cơ một chiều
Hình 4: S ơ đồ cấ u trúc hệ 3.2. Sơ đồ nguyên lý hệ thống
- 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.
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)
4
Setup Arduino1 COM2
Real-Time Pacer Speedup = 1 Dir
Current
1
ArIO Setup Real-Time Pacer Dong dien n_err
1 SP ref
udk
x' =PID Ax+Bu Controller y = Cx+Du
1000
Current
SP
Speed
1 Toc do
Toc do dat Hin controller DCM
1.03 GH tren
Speed
0.97 GH duoi
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 cầu lượ ng tính toán lớ n. 5
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, http://mathworks.com
6
View more...
Comments