Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 28 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
28
Dung lượng
1,63 MB
Nội dung
ĐẠ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 1 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” 2 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 3 + Đầ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: http://www.arduino.cc/ 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 4 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 5 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 6 Ứ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) 7 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 3600, 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 8 + 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: & & J 0 + m1L2 + m1l12 sin 2 β -m1L0l1sin 2 β α 0 & + & −m1 L0l1 cos β J1 + m1l12 β t & & C0 + KRKb + 1 m1l12 β sin 2β m1 L0l1β sin β + 1 m1l12α sin 2 β α & & 2 2 a & + 2 1 β & 2β − 2 m1l1 α sin C1 (2.1) 0 u −m gl sin β = 1 1 0 Kt K u Ra 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 2 J0 kg-m Mômen kích thích của cánh tay 2 J1 kg-m Mômen kích thích của con lắc 2 C0 kg-m /s Hệ số ma sát của cánh tay 2 C1 kg-m /s Hê số ma sat của con lắc 12 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: & u = −kE β cos β (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) u B x ∫ x C y A 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)” u r u B + u x ∫ x y C A K Hình 2.27 Bộ điều khiển sử dụng phương pháp gán điểm cực 13 Để á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 u & 0 1 & −0.9367 51.5747 −0.1661 β 0.3910 & & β Với ma trận điều khiển: S3 = B AB A2 B Ta có Rank ( S3 ) = 3 , 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: P3 = [ -13.4227 -1.2575+3.4921i -1.2575-3.4921i ] 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à: K 3 = [ −9 255 50] (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à: S4 = B AB A2 B A3 B Các điểm cực được chọn là: P4 = [ -13.9988 -0.8943 + 4.1462i -0.8943 - 4.1462i -0.3891] 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à: K 4 = [ − 3.5 − 12 265 55] (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 PP300 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 14 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 15 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 16 Anpha Anpha_dot U Beta Beta_dot Pendulum 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: Rotary Inverted Hình 3.8 Mô hình bằng cho con lắc ngược 3.3.3 Bộ điều khiển Swing up - Swing up controller: Hình 3.9 Mô hình bộ bộ điều khiển cân quay đ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 17 #include #include #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