XÂY DỰNG FRAMEWORK GIÚP SỬ DỤNG CÁC THUẬT TOÁN ĐIỀU KHIỂN TỰ ĐỘNG THIẾT KẾ TRÊN MATLAB SIMULINK VÀO HỆ THỐNG NHÚNG SỬ DỤNG VI ĐIỀU KHIỂN ARM

70 458 2
XÂY DỰNG FRAMEWORK GIÚP SỬ DỤNG CÁC THUẬT TOÁN ĐIỀU KHIỂN TỰ ĐỘNG THIẾT KẾ TRÊN MATLAB SIMULINK VÀO HỆ THỐNG NHÚNG SỬ DỤNG VI ĐIỀU KHIỂN ARM

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC CẦN THƠ BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP TRƢỜNG XÂY DỰNG FRAMEWORK GIÚP SỬ DỤNG CÁC THUẬT TOÁN ĐIỀU KHIỂN TỰ ĐỘNG THIẾT KẾ TRÊN MATLAB SIMULINK VÀO HỆ THỐNG NHÚNG SỬ DỤNG VI ĐIỀU KHIỂN ARM Mã số: T2015-17 Chủ nhiệm đề tài: ThS Nguyễn Văn Khanh Cần Thơ, 12/2015 i ii BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC CẦN THƠ BÁO CÁO TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP TRƢỜNG XÂY DỰNG FRAMEWORK GIÚP SỬ DỤNG CÁC THUẬT TOÁN ĐIỀU KHIỂN TỰ ĐỘNG THIẾT KẾ TRÊN MATLAB SIMULINK VÀO HỆ THỐNG NHÚNG SỬ DỤNG VI ĐIỀU KHIỂN ARM Mã số: T2015-17 Chủ nhiệm đề tài: ThS Nguyễn Văn Khanh Cần Thơ, 12/2015 iii Danh sách thành viên tham gia nghiên cứu đề tài TT Họ tên Đơn vị công tác lĩnh vực chuyên môn Nội dung nghiên cứu cụ thể đƣợc giao - Xây dựng thuyết minh đề tài - Lập trình driver cho ngoại Nguyễn Văn Khanh Bộ môn Tự động hóa, vi vi điều khiển ARM Khoa Công Nghệ tổng hợp xây dựng framework - Tổng hợp viết báo cáo báo khoa học Trần Nhựt Thanh Bộ môn Tự động hóa, Khoa Công Nghệ i - Tham gia: Lập trình driver cho ngoại vi vi điều khiển ARM MỤC LỤC MỤC LỤC i CÁC CHỮ VIẾT TẮT iii DANH MỤC HÌNH ẢNH iv DANH MỤC BẢNG BIỂU vi THÔNG TIN KẾT QUẢ NGHIÊN CỨU vii INFORMATION ON RESEARCH RESULTS ix PHẦN MỞ ĐẦU 1 Tình hình nghiên cứu nƣớc Tính cấp thiết Mục tiêu Nội dung nghiên cứu Phƣơng pháp tiếp cận, đối tƣợng phạm vi nghiên cứu PHẦN KẾT QUẢ CHƢƠNG 1: CƠ SỞ LÝ THUYẾT TLC – Target Language Compiler Mạch STM32F4 Discovery (STMicroelectronics, 2015) 10 Thuật đoán điều khiển chiếu điều khiển hệ thống lắc ngƣợc 12 3.1 Mô hình lắc ngƣợc 12 3.2 Bộ điều khiển 14 3.3 Mô điều khiển 15 CHƢƠNG 2: NỘI DUNG NGHIÊN CỨU 17 Mô hình lắc ngƣợc 17 Giải pháp thực điều khiển nhúng 21 2.1 Tổng quan 21 2.2 Thực thủ công 24 i 2.2.1 Thiết kế thuật toán 25 2.2.2 Cấu hình dự án cho vi điều khiển ARM 27 2.2.3 Lập trình thƣ viện giao tiếp ngoại vi 28 2.2.3 Thêm mã lệnh chƣơng trình 31 2.3 Thực thiết kế tự động 33 2.3.1 Tạo khối thƣ viện 33 2.3.2 Thay đổi mã TLC sinh mã chƣơng trình 37 2.3.3 Thiết kế thuật toán cấu hình dự án 39 CHƢƠNG 3: KẾT QUẢ 44 Thực nghiệm với mã C thông thƣờng 44 Thực nghiệm với tảng RTOS 49 PHẦN KẾT LUẬN VÀ KIẾN NGHỊ 53 Kết luận 54 Kiến nghị 54 TÀI LIỆU THAM KHẢO 55 PHỤ LỤC 56 ii CÁC CHỮ VIẾT TẮT ARM Acorn RISC Machine FPU Floating-Point Unit DMA Direct Memory Access PID Proportional–Integral–Derivative ADC Analog-to-Digital Converter QEI Quadrature Encoder Interface USART Universal Synchronous Asynchronous Receiver Transmitter PWM Pulse Width Modulation TLC Target Language Compiler DAC Digital-to-Analog Converter USB OTG Universal Serial Bus On-The-Go GPIO General-Purpose Input/Output DC Direct Current PC Personal Computer RTOS Real-Time Operating System iii DANH MỤC HÌNH ẢNH Hình 1.1 Quá trình sinh mã C cho chƣơng trình Simulink Hình 1.2 Mạch STM32F4Discovery 12 Hình 1.3 Mô hình lắc ngƣợc 12 Hình 1.4 Kết mô điều khiển: a) Vị trí xe b) Góc lắc 16 Hình 2.1 Mô hình khí hệ thống lắc ngƣợc 18 Hình 2.2 Sơ đồ khối mạch điều khiển hệ lắc ngƣợc 18 Hình 2.3 Sơ đồ nguyên lý mạch công suất động DC 20 Hình 2.6 Sơ đồ điều khiển tốc độ động DC 21 Hình 2.7 Card thu thập liệu NI PCI-6204 22 Hình 2.8 myRIO card hãng NI 23 Hình 2.9 Phƣơng pháp thực thủ công 24 Hình 2.10 Thuật toán PID số điều khiển vị trí động DC 25 Hình 2.11 Cấu hình thuộc tính tín hiệu 25 Hình 2.12 Cấu hình thông số mô Solver 26 Hình 2.13 Cấu hình thông số mô Real-Time Workshop 27 Hình 2.14 Cấu trúc dự án KeilC đƣợc cấu hình sẵn 28 Hình 2.15 Phƣơng pháp thực tự động 33 Hình 2.16 Nạp C S-function vào khối Simulink 34 Hình 2.17 Định nghĩa thông số khối Simulink 34 Hình 2.18 Các khối Simulink thƣ viện thiết kế 37 Hình 2.19 Điều khiển vị trí động dùng điều khiển PID số 39 Hình 3.1 Bộ điều khiển chiếu thiết kế Simulink 45 Hình 3.2 Thuật toán Simulink cho giải pháp thủ công 46 Hình 3.3 Kết sinh mã thuật toán 46 iv Hình 3.4 Dự án hoàn chỉnh 47 Hình 3.5 Đáp ứng bƣớc hệ thống: a) Đáp ứng góc lắc, b) Đáp ứng vị trí xe 48 Hình 3.6 Đáp ứng bám vị trí hệ thống: a) Đáp ứng góc lắc, b) Đáp ứng vị trí xe 49 Hình 3.7 Thuật toán điều khiển robot di động hai bánh tự cân (Khanh, Hùng; 2015) 50 Hình 3.8 Đáp ứng robot di động hai bánh tự cân a) Góc nghiêng, b) Vị trí, c) Hƣớng, d) Luật điều khiển động trái, d) Luật điều khiển động phải (Khanh, Hùng; 2015) 51 v DANH MỤC BẢNG BIỂU Bảng 2.1 Các thông số mô hình lắc ngƣợc 17 Bảng 2.1 Kết nối GPIO với mô-đun phần cứng 19 Bảng 2.2 Các hàm thƣ viện CTUProj_Driver 28 vi */ if (testPID_B.feedback_o1 >= testPID_P.Constant_Value) { rtb_Sum = testPID_B.feedback_o1 - testPID_P.Constant1_Value_f; } else { rtb_Sum = testPID_B.feedback_o1; } /* Sum: '/Sum' incorporates: * Constant: '/Reference' */ rtb_Sum = testPID_P.Reference_Value - rtb_Sum; /* Gain: '/Filter Coefficient' incorporates: * DiscreteIntegrator: '/Filter' * Gain: '/Derivative Gain' * Sum: '/SumD' */ rtb_FilterCoefficient = (testPID_P.DerivativeGain_Gain * rtb_Sum testPID_DWork.Filter_DSTATE) * testPID_P.FilterCoefficient_Gain; /* Sum: '/Sum' incorporates: * DiscreteIntegrator: '/Integrator' * Gain: '/Proportional Gain' */ rtb_Saturation = (testPID_P.ProportionalGain_Gain * rtb_Sum + testPID_DWork.Integrator_DSTATE) rtb_FilterCoefficient; + /* Saturate: '/Saturation' */ rtb_Saturation testPID_P.Saturation_LowerSat, = rt_SATURATE(rtb_Saturation, testPID_P.Saturation_UpperSat); /* Switch: '/Switch1' incorporates: * Constant: '/Constant1' * Constant: '/Constant2' */ if (rtb_Saturation > testPID_P.Switch1_Threshold) { testPID_B.Switch1 = testPID_P.Constant2_Value; } else { 42 testPID_B.Switch1 = testPID_P.Constant1_Value; } /* S-Function (Write_GPIO): '/Direction' */ Write_GPIO(GPIOC,GPIO_Pin_0,testPID_B.Switch1); /* Abs: '/Abs1' */ testPID_B.Abs1 = fabs(rtb_Saturation); /* S-Function (Write_PWM): '/Speed' */ Write_PWM(TIM3,1,testPID_B.Abs1); /* Update for DiscreteIntegrator: '/Integrator' incorporates: * Gain: '/Integral Gain' */ testPID_DWork.Integrator_DSTATE = testPID_P.IntegralGain_Gain * rtb_Sum * testPID_P.Integrator_gainval + testPID_DWork.Integrator_DSTATE; /* Update for DiscreteIntegrator: '/Filter' */ testPID_DWork.Filter_DSTATE rtb_FilterCoefficient = testPID_P.Filter_gainval * + testPID_DWork.Filter_DSTATE; } Tóm lại, framework đƣợc đề nghị giúp sử dụng thuật toán điều khiển tự động thiết kế Matlab simulink vào hệ thống nhúng sử dụng vi điều khiển ARM Có hai giải pháp thiết kế sinh mã điều khiển đƣợc đề nghị Thứ giải pháp thủ công, với giải pháp ngƣời dùng phải thực thủ công từ khâu thiết kế Simulink đến việc lập trình thêm mã lệnh kết nối thuật toán với thƣ viện ngoại vi Mặc dù giải pháp phức tạp, tốn nhiều thời gian đòi hỏi ngƣời sử dụng phải am hiểu lập trình cho tảng sử dụng nhƣng có ƣu điểm lớn ngƣời dùng hoàn toàn làm chủ hệ thống, tùy biến để chạy tảng Thứ hai giải pháp tự động, với giải pháp ngƣời dùng sử dụng khối Simulink đƣợc thiết sẵn để liên kết thƣ viện ngoại vi Simulink Do đó, việc sinh mã gần nhƣ tự động mà không đòi hỏi ngƣời sử dụng viết thêm mã lệnh Bên cạnh mã lệnh ngôn ngữ C truyền thống, tác giả đề nghị sử dụng hệ điều hành thời gian thực RTOS vào framework đề nghị 43 CHƢƠNG 3: KẾT QUẢ Để ch ng minh gi i pháp đề nghị đề tài hoạt động yêu cầu đặt r , điều khiển cu n chiếu cân h th ng lắc ng cđ c chọn để th c hi n h th ng sử d ng fr mework đề nghị c h i tr ờng h p thiết kế thủ công t động Ngoài r , tác gi chạy thu t toán sinh mã t ng h điều hành thời gi n th c FreeRTOS đ i t ng robot di động h i bánh t cân th y v h th ng lắc ng c Kết qu th c hi n c h i tr ờng h p: thu t toán đ c chạy tác v RTOS thu t toán đ c chạy nhiều tác v củ RTOS Thực nghiệm với mã C thông thƣờng Luật điều khiển [1.11] đƣợc thiết kế Matlab/Simulink nhƣ Hình 3.1 Các biến trạng thái x theta đƣợc đo trực tiếp từ mô hình sử khối QEI vi điều khiển ARM Hai biến trạng thái sau đƣợc đƣa qua hai khối lấy vi phân rời rạc để tạo đƣợc vi phân biến trạng thái x theta Ngõ thuật toán đƣợc khuếch đại ku lần để phù hợp với đối tƣợng điều khiển Ý nghĩa tín hiệu ngỏ tốc độ quay động DC kéo xe lắc (hay tốc độ di chuyển xe) Tốc động DC đƣợc điều khiển kỹ thuật điều khiển độ rộng xung Hệ số ku đƣợc chọn phƣơng pháp thử sửa sai 44 K Ts c2*c z-1 x -K-C2 x-dot -K- -C- out theta theta-dot d1 K Ts k1*c2*c z-1 Hình 3.1 Bộ điều khiển chiếu thiết kế Simulink Để thuật toán chạy đƣợc mô hình thật, khối chức nhƣ đọc tín hiệu hối tiếp, kiểm tra an toàn tránh xe va đạp vào hai đầu cuối mô hình truyền đáp ứng máy tính cá nhân cần đƣợc thiết kế thêm Thuật toán Simulink hoàn chỉnh cho hai giải pháp thiết kế thủ công tự động đƣợc thiết kế nhƣ Hình 3.2 Thuật toán có ba tín hiệu vào, năm tín hiệu ra: - Position_Ref: Ngỏ vào đặt vị trí tham chiếu, thay đổi dạng tín hiệu tham chiếu đƣa vào dễ dạng - Pos_inp: Ngỏ vào hồi tiếp vị trí, đơn vị tính pulse (Số xung trả từ giải mã vòng quay đọc vị trí) - Ang_inp: Ngỏ vào hồi tiếp góc lắc, đơn vị tính pulse (Số xung trả từ giải mã vòng quay đọc góc quay lắc) - Pwm_out: Ngỏ điều khiển mang ý nghĩa phần trăm độ rộng chuỗi xung điều khiển tốc độ động DC kéo xe lắc - Các ngỏ lại: pos_out, ang_out, pos_dot, ang_dot tƣơng ứng ngỏ vị trí, góc, vi phân vị trí vi phân góc lắc Các ngỏ đƣợc đƣợc gửi máy tính nhân để quan sát đánh giá cần thiết 45 pos In3 PositionError(m) Position_Ref PWM Out ang In1 pos_inp Position Pulse Position in Metre x_dot PulseToMetre Pos_Feedback In2 ang_inp Angle Pulse theta_dot pos_out pwm_out ang_out pos_dot ang_dot Out1 Out2 Out3 Out4 Out5 Controller Hình 3.2 Thuật toán Simulink cho giải pháp thủ công Các kết thực thực nghiệm điều khiển: - Kết sinh mã điều khiển: Sau thiết kế, định nghĩa tín hiệu cần thiết cấu hình thông số Simulink nhƣ trình bày phần Thuật toán Hình 3.2 đƣợc sinh mã thành tập tin ngôn ngữ C có phần mở rộng c h nhƣ Hình 3.3 Hình 3.3 Kết sinh mã thuật toán - Dự án sau tích hợp mã lệnh sinh mã viết thêm mã lệnh cho chƣơng trình nhƣ Hình 3.4 46 Hình 3.4 Dự án hoàn chỉnh - Kết chạy thực nghiệm điều khiển hệ thống lắc ngƣợc: Đáp ng b c: Trong thí nghiệm này, góc lắc vị trí xe đƣợc điều khiển bám vị trí từ vị trí khởi tạo góc lắc 0.2 [rad] Góc lắc đƣợc thay đổi thủ công giá trị 0.2 [rad], vị trí xe [m] Khi đến vị trí 0.2 [rad], điều khiển đƣợc cho phép hoạt động để điều khiển xe phía âm để đƣa lắc [rad] Khi lắc ổn định, điều khiển di chuyển xe vị trí tham chiếu trở lại Theo đáp ứng Hình 3.5, sau khoảng giây hệ thống ổn định Một lực nhỏ tác động vào lắc thời điểm khoảng giây để kiểm tra ổn định điều khiển có nhiễu Kết điều khiển đáp ứng tốt với nhiễu trùy đƣợc ổn định hệ thống sau khoảng giây 47 0.2 0.15 0.1 theta[rad] 0.05 -0.05 -0.1 -0.15 -0.2 time[s] 10 12 10 12 a) 0.05 x[m] -0.05 -0.1 -0.15 -0.2 time[s] b) Hình 3.5 Đáp ứng bƣớc hệ thống: a) Đáp ứng góc lắc, b) Đáp ứng vị trí xe Th y đ i vị tr xe liên t c: Trong thí nghiệm này, góc tham chiếu đƣợc giữ cố định [rad] tham chiếu vị trí thay đổi liên tục giữ 0.1 [m] -0.1[m] với tần số 0.05 [Hz] nhƣ Hình 3.6 Kết cho thấy điều khiển cân đƣợc lắc bám tốt vị trí tham chiếu 0.06 theta[rad] 0.04 0.02 -0.02 -0.04 -0.06 10 15 20 time[s] a) 48 25 30 35 40 0.15 model Reference 0.1 x[m] 0.05 -0.05 -0.1 10 15 20 time[s] 25 30 35 40 b) Hình 3.6 Đáp ứng bám vị trí hệ thống: a) Đáp ứng góc lắc, b) Đáp ứng vị trí xe Thực nghiệm với tảng RTOS Bên cạnh thí nghiệm với mã C thông thƣờng, framework đƣợc thí nghiệm với tảng RTOS Tuy nhiên, đối tƣợng điều khiển thuật toán có thay đổi Cụ thể sử dụng điều khiển PID mờ tự điều chỉnh thông số điều khiển robot di động hai bánh tự cân Sơ đồ khối thuật toán nhƣ Hình 3.7 Mục tiêu thuật toán vừa cân robot vừa điều khiển bám vị trí hƣớng đặt trƣớc Bộ điều khiển Simulink đƣợc thực hai trƣờng hợp sinh mã toàn chƣơng trình để chạy tác vụ FreeRTOS (Khanh, Hùng; 2015) sinh mã theo hệ thống để chạy nhiều tác vụ FreeRTOS (Khanh, Hiếu; 2015) Kết thực nghiệm cho thấy thuật toán đƣợc thực thành công tảng FreeRTOS Đây RTOS đƣợc sử dụng rộng rãi Kết chạy thực nghiệm hai trƣờng hợp nhƣ Hình 3.8 Từ đáp ứng cho thấy robot cân tốt góc theta=0, bám tốt vị trí tham chiếu trùy đƣợc hƣớng robot Tóm lại, kết cho thấy thực thành công điều khiển số sử dụng framework đề nghị Kết thực nghiệm kiểm chứng hai thuật toán hai đối tƣợng khác Frame work chạy mã lệnh C thông thƣờng hệ điều hành thời gian thực cho kết tốt 49 r - uy + + + Bộ điều khiển PD mờ xref x uR Bộ điều khiển PD mờ MR + Fuzzy PD2 Fuzzy PD1 Robot bánh tự cân e ref k1 Bộ điều khiển PID + - ux - uL + ML k2 Bộ điều khiển PD mờ Bộ điều khiển PID tự chỉnh Hình 3.7 Thuật toán điều khiển robot di động hai bánh tự cân (Khanh, Hùng; 2015) Tilt angle [radian] 0.05 -0.05 -0.1 10 15 20 Time [second] 25 30 35 40 a) 0.4 position refference Position [meter] 0.3 0.2 0.1 -0.1 -0.2 10 15 20 Time [second] b) 50 25 30 35 40 0.02 Rotation angle [radian] 0.015 0.01 0.005 -0.005 -0.01 -0.015 -0.02 10 15 20 Time [second] 25 30 35 40 c) 20 15 UL [voltage)] 10 -5 -10 -15 -20 10 15 20 Time [second] 25 30 35 40 25 30 35 40 d) 20 15 UR [voltage] 10 -5 -10 -15 -20 10 15 20 Time [second] e) Hình 3.8 Đáp ứng robot di động hai bánh tự cân a) Góc nghiêng, b) Vị trí, c) Hƣớng, d) Luật điều khiển động trái, d) Luật điều khiển động phải (Khanh, Hùng; 2015) 51 52 PHẦN KẾT LUẬN VÀ KIẾN NGHỊ 53 Kết luận Để tài xây dựng đƣợc framework giúp sử dụng thuật toán điều khiển tự động thiết kế Matlab/Simulink vào hệ thống nhúng sử dụng vi điều khiển ARM Framework thực thủ công tự động chạy mã lệnh C thông thƣờng tảng RTOS Thực nghiệm áp dụng hai thuật toán chạy hai đối tƣợng cho kết nhƣ mong muốn Bƣớc đề tài hoàn thiện thƣ viện Simulink cho vi điều khiển ARM, tích hợp khả sinh mã thành dự án hoàn chỉnh, xây dựng thêm khối thƣ viện Simulink chuyên dụng: thu thập liệu, hiển thị dạng led đơn, led bảy đoạn Kiến nghị - Áp dụng framework cho dòng vi điều khiển giảng dạy - Ứng dựng kết vào giảng dạy nghiên cứu sinh viên 54 TÀI LIỆU THAM KHẢO [1] STMicroelectronics, 2011 Reference manual STM32F405xx, STM32F407xx, STM32F415xx and STM32F417xx advanced ARM-based 32-bit MCUs 1315 papes [2] Geekiyanage, P., Jayarathne, H.T., Jayasinghe, L.A.D.I.T., Amarasinghe, Y.W.R., 2013 Development of Upgradable Mobile Platform for Smart Applications The Seventh International Conference on Sensing Technology, pp.841-847 [3] Chattunyakit, S., Kondo, T., Nilkhamhang, I., 2013 Development of Robotic Platform for Swarm Robots in Fire Detection Application The Kasetsart Journal, 47: pp.967-976 [4] Ngon, N., Truong, N.M., 2014 Applying the MCU-MSP430 to develop digital PID controller kits The 7th Vietnam Conference on Mechatronics.7: pp.96-100 [5] STMicroelectronics, 2015 STM32F4DISCOVERY, assessed on 20 October 2015 Available from http://www.st.com/web/catalog/tools/FM116/SC959/SS1532/PF252419 [6] Khanh, N.V., Hao, N.V., Phong, N.N, 2014 Stabilization control an inverted pendulum using backstepping controller Can Tho University Journal of Science 31: pp.18-25 55 PHỤ LỤC Bản Thuyết minh đề tài đƣợc phê duyệt Xác nhận nộp báo cho Tạp chí Khoa học Trƣờng Đại học Cần Thơ 02 báo đƣợc đăng Kỷ yếu Hội thảo/Hội nghị tạp chí nƣớc 56 ... TỔNG KẾT ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP TRƢỜNG XÂY DỰNG FRAMEWORK GIÚP SỬ DỤNG CÁC THUẬT TOÁN ĐIỀU KHIỂN TỰ ĐỘNG THIẾT KẾ TRÊN MATLAB SIMULINK VÀO HỆ THỐNG NHÚNG SỬ DỤNG VI ĐIỀU KHIỂN ARM Mã... 2.2 Các hàm thƣ vi n CTUProj_Driver 28 vi THÔNG TIN KẾT QUẢ NGHIÊN CỨU Thông tin chung: - Tên đề tài: Xây dựng framework giúp sử dụng thuật toán điều khiển tự động thiết kế matlab simulink. .. tài tập trung vào hai mục tiêu lớn: - - Tạo framework giúp sinh vi n thực đƣợc điều khiển chạy thời gian thực chip STM32F407 sử dụng thuật toán thiết kế Matlab/ Simulink Xây dựng ứng dụng kiểm chứng

Ngày đăng: 13/09/2017, 23:17

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan