1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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 459 2

Đ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

Thông tin cơ bản

Định dạng
Số trang 70
Dung lượng 1,83 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

i 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Ế

Trang 1

i

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

Trang 2

ii

Trang 3

iii

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

Trang 4

i

Danh sách thành viên tham gia nghiên cứu đề tài

- Xây dựng thuyết minh đề tài

- Lập trình các driver cho ngoại

vi của vi điều khiển ARM và tổng hợp xây dựng framework

- Tổng hợp viết báo cáo và bài báo khoa học

2 Trần Nhựt Thanh Bộ môn Tự động hóa,

Khoa Công Nghệ

- Tham gia: Lập trình các driver cho ngoại vi của vi điều khiển ARM

Trang 5

i

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

1 Tình hình nghiên cứu trong và ngoài nước 1

2 Tính cấp thiết 2

3 Mục tiêu 3

4 Nội dung nghiên cứu 3

5 Phương pháp tiếp cận, đối tượng và phạm vi nghiên cứu 4

PHẦN KẾT QUẢ 5

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 7

1 TLC – Target Language Compiler 7

2 Mạch STM32F4 Discovery (STMicroelectronics, 2015) 10

3 Thuật đoán điều khiển cuốn chiếu điều khiển hệ thống con lắc ngược 12

3.1 Mô hình con lắc ngược 12

3.2 Bộ điều khiển 14

3.3 Mô phỏng bộ điều khiển 15

CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU 17

1 Mô hình con lắc ngược 17

2 Giải pháp thực hiện bộ điều khiển nhúng 21

2.1 Tổng quan 21

2.2 Thực hiện thủ công 24

Trang 6

ii

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 chính 31

2.3 Thực hiện 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 chính 37

2.3.3 Thiết kế thuật toán và cấu hình dự án 39

CHƯƠNG 3: KẾT QUẢ 44

1 Thực nghiệm với mã C thông thường 44

2 Thực nghiệm với nền tảng RTOS 49

PHẦN KẾT LUẬN VÀ KIẾN NGHỊ 53

1 Kết luận 54

2 Kiến nghị 54

TÀI LIỆU THAM KHẢO 55

PHỤ LỤC 56

Trang 7

iii

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

Trang 8

iv

DANH MỤC HÌNH ẢNH

Hình 1.1 Quá trình sinh mã C cho chương trình Simulink 9

Hình 1.2 Mạch STM32F4Discovery 12

Hình 1.3 Mô hình con lắc ngược 12

Hình 1.4 Kết quả mô phỏng bộ điều khiển: a) Vị trí xe b) Góc con lắc 16

Hình 2.1 Mô hình cơ khí hệ thống con lắc ngược 18

Hình 2.2 Sơ đồ khối mạch điều khiển hệ con lắc ngược 18

Hình 2.3 Sơ đồ nguyên lý mạch công suất động cơ DC 20

Hình 2.6 Sơ đồ điều khiển tốc độ động cơ DC 21

Hình 2.7 Card thu thập dữ liệu NI PCI-6204 22

Hình 2.8 myRIO card của hãng NI 23

Hình 2.9 Phương pháp thực hiện thủ công 24

Hình 2.10 Thuật toán PID số điều khiển vị trí động cơ DC 25

Hình 2.11 Cấu hình thuộc tính của tín hiệu 25

Hình 2.12 Cấu hình thông số mô phỏng Solver 26

Hình 2.13 Cấu hình thông số mô phỏng 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 hiện 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 các thông số của khối Simulink 34

Hình 2.18 Các khối Simulink của thư viện đã thiết kế 37

Hình 2.19 Điều khiển vị trí động cơ dùng bộ điều khiển PID số 39

Hình 3.1 Bộ điều khiển cuốn chiếu thiết kế trên 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 quả sinh mã thuật toán 46

Trang 9

v

Hình 3.4 Dự án hoàn chỉnh 47 Hình 3.5 Đáp ứng bước của hệ thống: a) Đáp ứng góc con lắc, b) Đáp ứng vị trí xe 48 Hình 3.6 Đáp ứng bám vị trí của hệ thống: a) Đáp ứng góc con 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 bằng (Khanh, Hùng; 2015) 50 Hình 3.8 Đáp ứng của robot di động hai bánh tự cân bằng a) Góc nghiêng, b) Vị trí, c) Hướng, d) Luật điều khiển động cơ trái, d) Luật điều khiển động cơ phải (Khanh, Hùng; 2015) 51

Trang 10

vi

DANH MỤC BẢNG BIỂU

Bảng 2.1 Các thông số của mô hình con lắc ngƣợc 17 Bảng 2.1 Kết nối GPIO với các mô-đun phần cứng 19 Bảng 2.2 Các hàm trong thƣ viện CTUProj_Driver 28

Trang 11

vii

THÔNG TIN KẾT QUẢ NGHIÊN CỨU

1 Thông tin chung:

- Tên đề tài: 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: ThS Nguyễn Văn Khanh

- Cơ quan: Trường Đại học Cần Thơ

- Thời gian thực hiện: Từ 06/2015 đến 12/2015

2 Mục tiêu:

- Tạo ra một framework giúp sinh viên thực hiện được các bộ điều khiển chạy

thời gian thực trên chip STM32F4 sử dụng thuật toán trên Matlab/Simulink

- Xây dựng ứng dụng kiểm chứng framework

3 Tính mới và sáng tạo:

Đây là nghiên cứu đầu tiên đưa ra một quy trình cho phép người sử dụng thực hiện các thuật toán trên hệ thống nhúng sử dụng vi điều khiển ARM Ngoài giải pháp chạy bằng chương trình C thông thường, đề tài còn đưa ra giải pháp chạy trên hệ điều hành thời gian thực Giải pháp đề nghị trong đề tài hoàn toàn có thể tùy biến để chạy trên bất kỳ một nền tảng phần cứng khác

4 Kết quả nghiên cứu:

- Đã đề nghị được một framework giúp có thể thực hiện các thuật toán thiết

kế trên Matlab/Simulink chạy trên hệ thống nhúng Quá trình thực hiện có thể là thủ công hoặc tự động gần như hoàn toàn

- Đã thực hiện được ứng dụng thực tế chứng minh được sự đúng đắng của

framework đề nghị

- Đã gửi đăng một bài báo trên Tạp chí khoa học Trường Đại học Cần Thơ

Đã gửi và được chấp nhận báo cáo tại Hội nghị toàn quốc về Công nghệ thông tin và Truyền thông năm 2015 tổ chức tại Trường Đại học Cần Thơ và

là một trong những bài được lựa chọn đăng tại Tạp chí Khoa học Trường

Trang 12

viii

Đại học Cần Thơ Ngoài ra giải pháp của đề tài cũng đã được ứng dụng vào điều khiển một robot di động hai bánh tự cân bằng và kết quả cũng được chấp nhận để báo cáo tại Hội nghị toàn quốc về điều khiển và Tự động hóa VCCA 2015

5 Sản phẩm:

- 01 Chương trình C chạy trên nền tảng ARM Cortex – M4, chương trình này

có thể thực hiện thủ công hoặc sinh mã tự động

- 01 quyển báo cáo tổng kết đề tài

- 02 bài báo trên tạp chí Đại học Cần Thơ, 01 bài báo đăng trong kỹ yếu hội

nghị trong nước (ứng dụng kết quả của đề tài)

6 Hiệu quả, phương thức chuyển giao kết quả nghiên cứu và khả năng áp dụng:

+ Về khoa học và đào tạo:

- Cung cấp một công cụ giúp sinh viên có thể ứng dụng trong quá trình học và nghiên cứu khoa học với giá thành thấp

- Đây cũng là một công cụ giúp giảng viên minh họa trong giảng dạy chuyên môn cũng như trong nghiên cứu

+ Về phát triển kinh tế:

- Đây là một giải pháp chạy trên một nền tảng phần cứng mạnh, giá thành thâp nó giúp tiết kiệm chi phí cho sinh viên trong học tập, hạ giá thành nghiên cứu

Cần Thơ, Ngày 25 tháng 12 năm 2015

Xác nhận của Trường Đại học Cần Thơ

Trang 13

ix

INFORMATION ON RESEARCH RESULTS

1 General information:

Project title: Propose a framework to embed an algorithm designed on

Matlab/Simulink to ARM microcontroller embedded system

Code number: T2013-05

Coordinator: Nguyen Van Khanh

Implementing institution: Can Tho University

Duration: from July, 2015 to December, 2015

2 Objective(s):

- Propose a framework to implement control algorithms designed on

Matlab/Simulink to STM32F4 microcontroller embedded system or time system

real Build application to evaluate the result of framework

3 Creativeness and innovativeness:

This is a firstly study proposed a framework to support users implement algorithm which are designed by using Simulink to run on ARM microcontroller based embedded system The proposed framework can run with nornal C code program or a real-time operating system It also has a special ability that is can modify to run on many hardware platforms

4 Research results:

- Proposed a framework to implement algorithm designed by using Simulink

to run on embedded system The design process can do manually or almost automatically

- Finished application to prove the results of framework

- Applied an article to publish on Can Tho University journal of science An other article also accepted to present at CNTT’15 Conference took place at

Trang 14

x

Can Tho University and was chosen to publish on Special Isue of Can Tho University journal of science Beside that, the result of this study is also applied to implement the real-time control algorithm for two-wheeled self-balancing mobile robot and the results of this system is also published on VCCA 2015 Conference

5 Products:

- 01 C programe

- 01 final project report

- 02 reports on Can Tho University journal of science, 01 report on national conference

6 Effects, technology transfer means and applicability:

+ For Education and science:

- Provide a low-cost tool to support students in their study and research

- This is also a helpful illustrated tool in teaching process or research of

lecturers

+ For economic development:

- This is a solution run on a powerful, low-cost platform which can save the

cost for students in academic, reduce the reseach cost

Trang 15

ph ơng pháp nghiên c u

1 Tình hình nghiên cứu trong và ngoài nước

STM32F4 là dòng vi điều khiển được sử dụng kiến trúc ARM® Cortex™-M4

sử dụng công nghệ 90nm, tích hợp công nghệ ST’s ART Accelerator™ (ART - Adaptive Real-Time) hướng tới các ứng dụng công nghiệp Đây là dòng vi điều khiển mạnh, phù hợp cho việc học tập và nghiên cứu Nó tích hợp bộ xử lý xung nhịp 168MHz, dung lượng bộ nhớ lớn (1MB Flash ROM, 192Kb RAM), tích hợp FPU và nhân DSP chuyên dụng (STMicroelectronics, 2015) Đặc biệt, hãng ST đã sử dụng vi điều khiển này để thiết kế mạch STM32F4Discovery với giá thành thấp nên nó được nhiều sinh viên cũng như nhà nghiên cứu quan tâm sử dụng

Hiện tại, STM32F4Discovery đã và đang được sử dụng trong khá nhiều nghiên cứu Một ví dụ điển hình, Geekiyanage và Jayarathne đã nghiên cứu và công bố tại hội nghị quốc tế về công nghệ cảm biến vào năm 2013 một nền tảng robot để sử dụng trong các ứng dụng thông minh (Geekiyanage et al., 2013) Robot này sử dụng STM32F4Discovery làm mạch xử lý trung tâm để thu thập và phân tích dữ liệu từ các cảm biến tích hợp trên robot (Bộ mã hóa vòng quay, cảm biến siêu âm SRF04, cảm biến góc nghiêng MPU6050, la bàn số HMC5883L) Dựa trên các kết quả phân tích vi điều khiển sẽ tính ra tọa độ và luật điều khiển robot Tất cả dữ liệu trong quá trình xử

lý cũng được gửi ngược về máy tính thông qua cổng giao tiếp nối tiếp

Cũng trong năm 2013, STM32F407 cũng được sử dụng để thiết kế một hệ các robot bày đàn có thể di chuyển cùng nhau để tìm các đám cháy Các đám cháy được phát hiện bằng cách thu thập và xử lý liên tục các khung ảnh được chụp từ một máy ảnh CMOS kết hợp với một cặp nhiệt Các kết quả thực nghiệm của nghiên cứu này đã

Trang 16

2

chứng minh được các robot đã có thể di chuyển cùng nhau và phát hiện được các đám

cháy (Chattunyakit et al., 2013)

Trên đây là hai ví dụ điển hình để minh chứng việc sử dụng vi điều khiển STM32F407 vào các nghiên cứu gần đây ở ngoài nước Song song đó, nhiều nghiên cứu liên quan đến sử dụng vi điều khiển vào thực hiện các nghiên cứu cũng đã được công bố trong các hội nghị cũng như tạp chí trong nước Một điển hình đó là tại hội nghị toàn quốc về Cơ điện tử (VCM) năm 2014, PGS.TS Nguyễn Chí Ngôn và các cộng sự đã công bố một nghiên cứu về việc sử dụng vi điều khiển MSP430 để thực hiện bộ điều khiển PID số sử dụng ngôn ngữ lập trình C (Ngôn, Trường; 2014) Kết quả nghiên cứu cũng cho thấy bộ điều khiển đã cho kết quả tốt

Từ những nghiên cứu trên cho thấy nhu cầu sử dụng các vi điều khiển vào nghiên cứu đang phát triển nhanh Tuy nhiên, phần lớn các nghiên cứu đang theo hướng lập trình bằng ngôn ngữ C thuần túy dẫn tới gặp phải khó khăn khi cần phải cài đặt các thuật toán phức tạp Nắm bắt được khó khăn này, nhiều nhóm phát triển phần cứng đã hướng tới việc tạo ra các công cụ cho phép sử dụng các công cụ hỗ trợ như Matlab, Labview vào thiết kế các bộ điều khiển chạy trên các nền tảng nhúng giá rẻ thay vì sử dụng các bảng mạch kết nối chuyên dụng giá thành cao Điển hình có thể kể đến là các công cụ cho phép tích hợp các mạch như Aduino, Raspberry Pi vào Matlab Đặc biệt, STM32F407 hiện tại cũng đã được tích hợp vào Matlab Tuy nhiên, nhìn chung các gói này tích hợp trực tiếp vào Matlab dạng khối để người sử dụng kéo thả khi thiết kế ứng dụng Giải pháp này tạo nên sự dễ dàng cho người thiết kế nhưng họ không thể can thiệp hay viết thêm mã lệnh khi cần thiết dẫn đến phụ thuộc công nghệ

2 Tính cấp thiết

Hiện nhu cầu tự học và tự nghiên cứu của sinh viên nói chung và sinh viên kỹ thuật nói riêng là rất lớn Phong trào này được xuất phát từ việc áp dụng học chế tín chỉ trong giảng dạy tại đại học Cần Thơ Trong đó, nổi bật nhất là sinh viên các ngành

Cơ điện tử và Kỹ thuật điều khiển tại Khoa công nghệ Nhóm sinh viên này phải thực hiện rất nhiều đồ án môn học, nghiên cứu liên quan đến chuyên ngành trong quá trình học tập Đặt biệt là các đồ án, nghiên cứu liên quan đến tự động hóa nhu cầu thực hiện thời gian thực các thuật toán điều khiển rất lớn Để thực hiện các bộ điều khiển này hiện tại sinh viên sẽ thực hiện trên máy tính PC sử dụng phần mềm Matlab hoặc Labview sau đó mô phỏng đáp ứng và chạy trên hệ thống thời gian thực sử dụng bảng mạch chuyên dụng hoặc các mạch Arduino Nếu thuật toán đơn giản không đòi hỏi khả năng xử lý mạnh sinh viên có thể sử dụng Arduino để giải quyết Tuy nhiên, nếu

Trang 17

3

thuật toán nặng đòi hỏi sự tính toán mạnh thì phải đến phòng thí nghiệm để sử dụng các bảng mạch chuyên dụng đã được trang bị sẵn Việc này rất khó vì số bảng mạch chuyên dụng có giới hạn, nếu sinh viên muốn tự sở hữu cũng rất khó vì giá thành khá cao Bên cạnh đó, sinh viên cũng có thể lập trình thực hiện bộ điều khiển trên các dòng

vi điều khiển cơ bản, điều này rất tiện lợi vì việc lập trình gần gủi và giá thành thấp nhưng lại có sự bất tiện là đa số các dòng vi điều khiển cơ bản chỉ có thể tính toán số 8 bit hoặc 16-bit và không tích hợp bộ tính toán số dấu chấm động (tính toán số dấu chấm động bằng phần mềm tốn rất nhiều thời gian) vì thế chỉ có thể thực hiện các bộ điều khiển đơn giản đòi hỏi thời gian lấy mẫu thấp Sinh viên cũng có thể sử dụng các dòng vi điều khiển cao cấp 32-bit tích hợp tính toán số dấu chấm phần cứng, cách này

có thể thực hiện hầu hết các bộ điều khiển nhưng việc lập trình tương đối khó, tốn nhiều thời gian nghiên cứu kiến trúc và thư viện lập trình

Đề tài sẽ đi vào nghiên cứu đưa ra một framework giúp người sử dụng có thể kết hợp Matlab để thiết kế các bộ điều khiển chạy thời gian thực Hệ thống nhúng chạy trên mạch STM32F4Discovery vì giá thành thấp phù hợp với đối tượng mà đề tài đang hướng tới là sinh viên Framework này có thể thực hiện thủ công bằng ngôn ngữ lập trình C nhúng hay tự động bằng phương pháp kéo thả như các gói thư viện hiện hành

Mã lệnh có thể thực thi theo cách tuần tự truyền thống hay theo hướng tác vụ trên một nền tảng hệ điều hành thời gian thực Do đó, giải pháp của đề tài có thể đáp ứng được nhiều đối tượng người dùng

3 Mục tiêu

Đề tài tập trung vào hai mục tiêu lớn:

- Tạo ra một framework giúp sinh viên thực hiện được các bộ điều khiển chạy

thời gian thực trên chip STM32F407 sử dụng thuật toán thiết kế trên Matlab/Simulink

- Xây dựng ứng dụng kiểm chứng

4 Nội dung nghiên cứu

Đề tài tập trung vào hai nội dung lớn:

- Lập trình các thư viện cho ngoại vi của vi điều khiển ARM và tổng hợp xây

dựng framework

o Các ngoại vi cần lập trình: Digital Input/Output, ADC, QEI, PWM, USART, DMA

Trang 18

4

o Nghiên cứu Real-time Embedded Workshop của Matlab/Simulink, xây dựng framework

- Thực hiện ứng dụng để minh chứng kết quả đề tài

5 Phương pháp tiếp cận, đối tượng và phạm vi nghiên cứu

- Phương pháp tiếp cận: Nghiên cứu lý thuyết – thử nghiệm – ứng dụng

- Đề tài sử dụng phương pháp tổng hợp và phân tích tài liệu Thuật toán lập trình

các viện dựa trên việc nghiên cứu tổng hợp các tài liệu về dòng vi điều khiển STM32F4, thư viện ngoại vi chuẩn, Matlab/Simulink và ngôn lập trình C Sau

đó dựa vào các tham số vào/ra của các hàm trong thư viện để tổng hợp, phân tích xây dựng framework

Trang 19

5

PHẦN KẾT QUẢ

 Chương 1: Cơ sở lý thuyết

 Chương 2: Nội dung nghiên cứu

 Chương 3: Kết quả

Trang 20

6

Trang 21

7

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT

Ch ơng này tr nh bày tóm tắc một s lý thuyết đ c áp d ng để th c hi n đề tài này H i phần lý thuyết qu n trọng nhất là cơ b n về TLC và

gi i thi u về con lắc và thu t toán điều khiển nó Ngoài r , phần này cũng tr nh bày sơ l c về mạch STM32F4Discovery để ng ời đọc có thể nắm đ c thông tin cơ b n để có thể chọn ng d ng phù h p

1 TLC – Target Language Compiler

TLC là một công cụ được sử dụng để tùy biến việc phát sinh mã nguồn tự động của Simulink Sử dụng TLC có thể tạo ra mã nguồn cho một nền tảng phần cứng biết trước hay tích hợp một thuật toán giúp thay đổi khả năng thực thi, dung lượng mã lệnh hay tương thích với một phương pháp đã tích hợp trước đó (The MathWork, 2015)

TLC gồm hai thành phần chính:

- Nhóm các tập tin TLC kèm theo các khối Simulink

- Các tập tin TLC chứa thông tin mô hình

Hình 1.1 minh họa quá trình TLC và Simulink Coder sinh mã ngôn ngữ C Quá trình này bắt đầu bằng việc phát sinh tự động tập tin model.rtw (trong hình minh họa là tập tin sample.rtw) Tập tin này chứa các thông tin của nền tảng đích yêu cầu cho quá trình sinh mã từ mô hình Simulink Model.rtw được truyền vào TLC để kết hợp với các tâp tin TLC và các tập tin “block target” để phát sinh mã

Khi biên dịch thành công, các tập tin chương trình quan trọng bao gồm:

- Tập tin mã nguồn C model.c

- Tập tin header model.h

- Tập tin header chứa các thông số và cấu trúc dữ liệu

Trang 22

8

- Tập tin model.mk để biên dịch ứng dụng (nếu cần)

Một số lệnh, cấu trúc và hàm phổ biến trong TLC:

- Cấu trúc gán

o Gán biến cục bộ:

%assign variable_name = value

o Gán biến toàn cục:

%assign ::variable_name = value

- Truy xuất giá trị của biến:

%<variable_name>: truy xuất biến cục bộ

%<::variable_name>: truy xuất biến toàn cục

- Cấu trúc kiểm tra điều kiện:

Trang 24

10

- LibBlockInputSignal(portIdx, ucv, lcv, sigIdx): Truy xuất ngỏ vào của một khối

Simulink Đối số portIdx được dùng để chọn ngỏ vào Lệnh này trả về một tham chiếu đến tín hiệu ngỏ vào của khối Simulink Ví dụ lệnh truy xuất ngỏ vào thứ nhất của một khối Simulink

%assign inp = LibBlockInputSignal(0, "", "", 0) Nếu trước khối đang đọc là một khối hằng số, tên tập tin Simulink là sample.mdl thì kế quả inp=”sample_P Constant1_Value”

- LibBlockOutputSignal(portIdx, ucv, lcv, sigIdx): Truy xuất ngỏ ra của một khối

Simulink Đối số portIdx được dùng để chọn ngỏ ra cần truy xuất Lệnh này trả

về một tham chiếu đến tín hiệu ngỏ ra của khối Simulink Ví dụ lệnh truy xuất ngỏ vào thứ hai của một khối Simulink

%assign py1 = LibBlockOutputSignal(1, "", "", 0)

py1=”sample.test_o2” nếu đang đọc ngỏ ra thứ hai của khối test trong tập tin sample.mdl

- LibGetSampleTimePeriodAndOffset(tid, idx): Đọc thời gian lấy mẫu toàn cục

của hệ thống Lệnh này thường được dùng để đọc tự động thời gian lấy mẫu của tập tin Simulink để thiết lập ngắt bộ định thời tạo thời gian lấy mẫu cho hệ thống nhúng Ví dụ:

%assign t = LibGetSampleTimePeriodAndOffset(0,0)

Nếu tần số lấy mẫu hay Fixed-step size của tập tin Simulink được cấu hình bằng 0.01 hay 10 mili giây thì t=0.01

2 Mạch STM32F4 Discovery (STMicroelectronics, 2015)

STM32F4Discovery (Hình 1.2) là mạch phát triển do STMicroelectronics thiết

kế và cung cấp nhằm giúp nghiên cứu cấu trúc và lập trình dòng vi điều khiển STM32F407/417 được dễ dàng Mạch này được tích hợp đầy đủ các ngoại vi cần thiết

để người bắt đầu cũng như nhà phát triển ứng dụng có thể bắt đầu nhanh chóng

Điểm quan trọng nhất của mạch này là nó được tích hợp sẵn mô-đun LINK/V2, một công cụ hiệu quả giúp dễ dàng nạp và gở rối chương trình ngay trên

Trang 25

ST-11

chương trình phát triển ứng dụng Bên cạnh đó, STM32F4Discovery cũng tích hợp nhiều ngoại vi hữu ích khác như cảm biến gia tốc số, micro số, DAC âm thanh chuyên dụng tích hợp sẵn mạch kích âm thanh lớp D, các led, các nút nhấn và một cổng kết nối USB OTG chuẩn micro-AB

Bên cạnh ngoại vi tích hợp sẵn trên mạch, hãng thiết kế cũng không quên mởi rộng một lượng lớn các GPIO để giúp người sử dụng dễ dàng kết nối với các mạch bên ngoài khi cần thiết

Các t nh năng c thể củ mạch này nh s u:

- Vi điều khiển sử dụng STM32F407VGT6 nhân ARM Cortex-M4 32bit, FPU,

1MB flash ROM, 192kB RAM

- Tích hợp ST-LINK/V2 có thể cấu hình để nạp vi điều khiển khác của hãng

- Nguồn cung cấp sử dụng trực tiếp từ cổng USB hoặc một nguồn +5.0VDC bên

ngoài

- Cảm biến gia tốc công nghệ MEMS LIS302DL hoặc LIS3DSH tùy phiên bản

- Cảm biến âm thanh công nghệ MEMS MP45DT02

- CS43L22 bộ DAC âm thanh tích hợp mạch khuếch đại âm thanh lớp D

Trang 26

12

Hình 1.2 Mạch STM32F4Discovery

3.1 Mô hình con lắc ngược

Con lắc ngược sử dụng trong đề tài có mô hình như Hình 1.3 Trong đó, là

góc của con lắc, x là khoảng di chuyển của xe và F là lực điều khiển song song với phương ngang và tác động trực tiếp vào xe, l là chiều dài, m là khối lượng và J là mô- men quán tính của con lắc M là khối lượng xe

Hình 1.3 Mô hình con lắc ngược

Trang 27

̇ ̇ ( ) ̇,

( ̇ ̇) Thay các biểu thức trên vào hệ (2.6) ta được hệ phương trình động học (1.7) của

hệ thống:

{( ) ̈ ̇ ̈ ̇

̈ ( ) ̈ (1.7)

Trang 28

( )

( )

( ) ( ) ]

[

( ) ( ) ]

bộ điều khiển cuốn chiếu (Khanh, Hảo, Phong; 2014) ta nhận đƣợc luật điều khiển nhƣ công thức (1.11) sau đây:

( ) ( ) (1.11) Trong đó,

Trang 29

3.3 Mô phỏng bộ điều khiển

Trước khi tiến hành thực hiện bộ điều khiển để chạy trên hệ thống nhúng, bộ điều khiển vừa thiết kế sẽ được mô phỏng kết quả trên Matlab/Simulink Con lắc được

mô hình hóa với các thông số của mô hình Các hệ số thiết kế của bộ điều khiển được chọn bằng phương pháp thử sai Kết quả mô bộ điều khiển cuốn chiếu cân bằng hệ con

lắc ngược với giá trị k 2 thay đổi thay đổi lần lượt 0.06, 013 và 0.2; k 1 = 2; d 1=50;

d 2=300 như Hình 1.4 Kết quả này cho thấy bộ điều khiển đã cân bằng được con lắc

ngược và điều khiển xe về vị trí tham chiếu 0 Hệ số k 2 ảnh hưởng lớn đến thời gian về

vị trí tham chiếu của xe, khi k 2 càng lớn thì xe về vị trí tham chiếu càng nhanh Bộ

điều khiển hoạt động tốt khi k 2 nằm trong khoảng [0.06 0.2]

a)

Trang 30

16

b)

Hình 1.4 Kết quả mô phỏng bộ điều khiển: a) Vị trí xe b) Góc con lắc

Trang 31

17

CHƯƠNG 2: NỘI DUNG NGHIÊN CỨU

Ch ơng này tr nh bày các nội dung nghiên

c u ch nh củ đề tài từ vi c thiết kế phần c ng cho

ng d ng minh họ đến các gi i pháp xây d ng

fr mework H i gi i pháp ch nh đ c tr nh bày chi tiết trong phần này là th c hi n thủ công và t động Tuy nhiên, c h i đều t p trung vào cùng một

m c đ ch ch nh là th c hi n một bộ điều khiển (đ c thiết kế trên simulink) trên h th ng nhúng

1 Mô hình con lắc ngược

Để minh chứng sự đúng đắn của giải pháp đề nghị trong đề tài, hệ thống con lắc ngược trên xe tại Bộ môn Tự động hóa, Khoa Công Nghệ được chọn làm đối tượng điều khiển Mô hình cơ khí và mạch điều khiển hệ thống được thể hiện trong Hình 2.1

và 2.2 Thông số của mô hình như Bảng 2.1 thu được bằng cách đo đạt, b và J tham khảo các thông số của mô hình tương tự và hiệu chỉnh lại theo phương pháp thử sai

Bảng 2.1 Các thông số của mô hình con lắc ngược

Trang 32

18

được sử dụng để thiết kế STM32F4 Discovery) đủ để thực hiện hệ thống Vi điều khiển sử dụng hai ngỏ vào đọc bộ mã hóa vòng quay QEI1 và QEI2 (chức năng này được tích hợp vào bộ định thời của STM32F407VG) để đo góc của con lắc và khoảng dịch chuyển của xe Sự dịch chuyển của xe được điều khiển bằng một động vơ DC sử dụng kỹ thuật điều chế độ rộng xung thông qua khối PWM Xung điều chế độ rộng xung điều khiển đông cơ qua một mạch công suất sử dụng vi mạch tích hợp LMD1820 Mạch này cho phép điều khiển cả hướng và tốc động của xe kéo con lắc Ngoài ra để dễ dàng quan sát đáp ứng của hệ thống, một liên kết dữ liệu giữa con lắc

và máy tính PC cũng được thiết kế Tuy nhiên, giao thức truyền dữ liệu nối tiếp vẫn chọn vì lập trình đơn giản, tích hợp và các máy tính dễ dàng qua các bộ chuyển đổi USB-RS232 chuyên dụng

Hình 2.1 Mô hình cơ khí hệ thống con lắc ngược

STM32F4 Discovery Development Kit

USB-RS232 Converter

Hình 2.2 Sơ đồ khối mạch điều khiển hệ con lắc ngược

Khối công suất động cơ DC Motor Driver sử dụng vi mạch tích hợp chuyên

dụng LMD18200 của hãng TI – Texas Instrument Sơ đồ nguyên lý chi tiết và mạch in

Trang 33

19

của mạch như Hình 2.3 và 2.4 Với vi mạch này, mạch công suất động cơ được thiết kế

có các tính năng sau:

- Cách ly quang tín hiệu điều khiển điện áp thấp và điện áp cao

- Hai ngỏ vào điều khiển hướng và tốc độ quay của động cơ, có thể chọn mức tác

động của tín hiệu điều khiển

- Dòng điện tải tối đa 3A

Các ngoại vi kết nối trực tiếp đến mạch STM32F4Discovery, chi tiết các chân kết nối như liệt kê trong Bảng 2.1 sau:

Bảng 2.1 Kết nối GPIO với các mô-đun phần cứng

GPC6 PWM Công suất

động cơ GPD13 DIR

GPA5 A1 QEI1 đo góc

quaycon lắc GPB3 B1

GPA0 A2 QEI2 đo

khoảng dịch chuyển của xeGPA1 B2

GPC12 TX USART

Trang 34

20

Hình 2.3 Sơ đồ nguyên lý mạch công suất động cơ DC

Hình 2.4 PCB của mạch công suất động cơ

24V

1k

104

MOTOR 1

7 6

8 2

LOGIC OA

Dir-5V

1k

c4 Dir-

5

11 8

1

PWM-C8 10uF

PWM_IN

C7 R1

CAP PWM

470

Trang 35

- Sử d ng ngôn ngữ C nhúng: Thuật toán sau khi thiết kế sẽ được cài đặt hoàn

toàn bằng ngôn ngữ C nhúng để có thể chạy trên một nền tảng phần cứng thích hợp Hình 2.6 là một ví dụ điển hình, thuật toán PID số điều khiển động cơ DC được thiết

kế và viết bằng ngôn ngữ C để chạy trên vi điều khiển PIC24EP của hãng Microchip Phương pháp này chỉ hiệu quả đối với các thuật toán cài đặt đơn giản như PID Ngược lại, với các giải thuật phức tạp như bộ điều khiển mờ thì cách này sẽ rất khó khăn và tốn nhiều thời gian Tuy nhiên, giải pháp này có một lợi thế là thuật toán có thể chạy trên một nền tảng bất kỳ nếu đủ khả năng xử lý

Hình 2.6 Sơ đồ điều khiển tốc độ động cơ DC

(Nguồn: http://controlsystemsl b.com/dc-motor-speed-control-part-ii-pid-feedback/)

- Sử d ng c rd chạy v i máy t nh PC: Thuật toán sẽ được thiết kế trên máy tính

PC sử dụng các phần mềm chuyên dụng như Matlab, Labview Các dữ liệu ngõ vào của hệ thống thực được thu thập thông qua một card điều khiển để đưa vào bộ điều khiển Bộ điều khiển dựa vào các dữ liệu này để tính toán ra tín hiệu điều khiển đối tượng Tương tự ngõ vào, tín hiệu ngỏ ra này cũng điều khiển đối tượng thông qua một

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

HÌNH ẢNH LIÊN QUAN

Hình 1.1 Quá trình sinh mã C cho chương trình Simulink. - 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
Hình 1.1 Quá trình sinh mã C cho chương trình Simulink (Trang 23)
Hình 1.2 Mạch STM32F4Discovery. - 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
Hình 1.2 Mạch STM32F4Discovery (Trang 26)
Hình 1.4 Kết quả mô phỏng bộ điều khiển: a) Vị trí xe b) Góc con lắc. - 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
Hình 1.4 Kết quả mô phỏng bộ điều khiển: a) Vị trí xe b) Góc con lắc (Trang 30)
Hình 2.6 Sơ đồ điều khiển tốc độ động cơ DC. - 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
Hình 2.6 Sơ đồ điều khiển tốc độ động cơ DC (Trang 35)
Hình 2.7 Card thu thập dữ liệu NI PCI-6204. - 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
Hình 2.7 Card thu thập dữ liệu NI PCI-6204 (Trang 36)
Hình 2.8 myRIO card của hãng NI. - 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
Hình 2.8 myRIO card của hãng NI (Trang 37)
Hình 2.9 Phương pháp thực hiện thủ cô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
Hình 2.9 Phương pháp thực hiện thủ công (Trang 38)
Hình 2.13 Cấu hình thông số mô phỏng Real-Time Workshop. - 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
Hình 2.13 Cấu hình thông số mô phỏng Real-Time Workshop (Trang 41)
Hình 2.18 Các khối Simulink của thƣ viện đã thiết kế. - 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
Hình 2.18 Các khối Simulink của thƣ viện đã thiết kế (Trang 51)
Hình 3.1 Bộ điều khiển cuốn chiếu thiết kế trên Simulink. - 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
Hình 3.1 Bộ điều khiển cuốn chiếu thiết kế trên Simulink (Trang 59)
Hình 3.2 Thuật toán Simulink cho giải pháp thủ cô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
Hình 3.2 Thuật toán Simulink cho giải pháp thủ công (Trang 60)
Hình 3.4 Dự án hoàn chỉnh. - 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
Hình 3.4 Dự án hoàn chỉnh (Trang 61)
Hình 3.5 Đáp ứng bước của hệ thống: a) Đáp ứng góc con lắc, b) Đáp ứng vị trí xe. - 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
Hình 3.5 Đáp ứng bước của hệ thống: a) Đáp ứng góc con lắc, b) Đáp ứng vị trí xe (Trang 62)
Hình 3.6 Đáp ứng bám vị trí của hệ thống: a) Đáp ứng góc con lắc, b) Đáp ứng vị trí xe - 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
Hình 3.6 Đáp ứng bám vị trí của hệ thống: a) Đáp ứng góc con lắc, b) Đáp ứng vị trí xe (Trang 63)
Hình 3.7 Thuật toán điều khiển robot di động hai bánh tự cân bằng (Khanh, Hù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
Hình 3.7 Thuật toán điều khiển robot di động hai bánh tự cân bằng (Khanh, Hùng; (Trang 64)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w