Tải bản đầy đủ (.pdf) (70 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.83 MB, 70 trang )

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ọ và tên

Đơn vị công tác và
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 các driver cho ngoại

1

Nguyễn Văn Khanh

Bộ môn Tự động hóa, vi của vi điều khiển ARM và
Khoa Công Nghệ.


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ệ

i

- Tham gia: Lập trình các
driver cho ngoại vi của 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
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
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 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

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. ................................................. 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
iv


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

v


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


vi


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
vii



Đạ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ơ

Chủ nhiệm đề tài

(ký, họ và tên, đóng dấu)

(ký, họ và tên)

Nguyễn Văn Khanh

viii


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 realtime system.

-

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
ix


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 selfbalancing 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.

x


PHẦN MỞ ĐẦU

Trong ch ơng m đầu, nhóm nghiên c u gi i
thi u t ng qu n về nhu cầu, t nh cấp thiết ph i
th c hi n nghiên c u,

t ng qu n về t nh h nh

nghiên c u, m c tiêu, cách tiếp c n đ i t
ph ơng pháp nghiên c u.

ng và

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 đã

1


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
2


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.

3


-

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.


4


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ả

5


6


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

Ch ơng này tr nh bày tóm tắc một s
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.
7


-

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:
%if conditional_expression_1
%%statements
%elseif conditional_expression_2
%%statements

%elseif conditional_expression_n
%%statements
%else
%%statements
%endif

-

Cấu trúc chọn lựa:
%switch expression
case value_1
%%statements
8


%break

%default
%%statements
%break
%endswitch
-


Cấu trúc lặp for:
%for ident1 = const-exp1, const-exp2, ident2 = const-exp3
%%statements
%endfor

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


-

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 STLINK/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
10


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.

-

Tích hợp 8 led đơn:
o LD1: hai màu đỏ và xanh lá chỉ thị cho giao tiếp USB.
o LD2: màu đỏ chỉ thị nguồn 3.3V
o Bốn Led ngƣời dùng: LD3 (màu cam), LD4 (màu xanh lá), LD5 (màu
đỏ) và LD6 (màu xanh dƣơng).

o Hai Led chỉ thị cho cổng kết nối USB OTG: LD7 (màu xanh lá) chỉ thị
Vbus và LD8 (màu đỏ) chỉ thị quá dòng.

-

Hai nút nhấn: một nút cho ngƣời dùng và một nút reset vi điều khiển.

11


×