1.Tran Duc Quan 1

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