Báo cáo đồ án ii ứng dụng arm stm32f4 discovery và matlab simulink trong thiết kế các bộ điều khiển

Báo cáo đồ án II: Ứng dụng ARM STM32F4 Discovery và Matlab Simulink thiết kế bộ điều khiển. Tìm hiểu chi tiết về ứng dụng, kết quả và phân tích.

Trường đại học

Đại Học Bách Khoa Hà Nội

Chuyên ngành

Điện - Điện Tử

Người đăng

Ẩn danh

Thể loại

Báo cáo đồ án

2023

50
4
0

Phí lưu trữ

30 Point

Tóm tắt

I. Toàn cảnh đồ án ứng dụng ARM STM32F4 và Matlab Simulink

Báo cáo đồ án này tập trung vào việc ứng dụng ARM STM32F4 Discovery và Matlab/Simulink trong thiết kế các bộ điều khiển. Đây là một hướng tiếp cận hiện đại, kết hợp sức mạnh của mô hình hóa hệ thốnglập trình nhúng để giải quyết các bài toán điều khiển tự động phức tạp. Trong bối cảnh công nghiệp 4.0, vai trò của các hệ thống điều khiển thông minh và hiệu suất cao ngày càng trở nên quan trọng. Việc làm chủ công nghệ thiết kế dựa trên mô hình (Model-Based Design) không chỉ rút ngắn thời gian phát triển sản phẩm mà còn nâng cao độ tin cậy và chính xác của hệ thống. Đồ án sử dụng kit ARM STM32F4 Discovery, một nền tảng phần cứng mạnh mẽ với vi điều khiển ARM Cortex-M4, có khả năng xử lý tín hiệu số (DSP) và vận hành trong các hệ thống nhúng thời gian thực. Sự kết hợp giữa phần cứng này và môi trường mô phỏng trực quan của Matlab Simulink mở ra khả năng xây dựng, kiểm thử và triển khai các thuật toán điều khiển một cách liền mạch, từ mô phỏng đến thực nghiệm. Nội dung chính của đồ án xoay quanh việc sử dụng thư viện Waijung Blockset để tạo cầu nối giữa Simulink và phần cứng STM32, cho phép tự động sinh mã C/C++ từ mô hình và nạp trực tiếp lên vi điều khiển. Qua đó, các bộ điều khiển kinh điển như bộ điều khiển PID và các thuật toán phức tạp hơn có thể được hiện thực hóa một cách nhanh chóng và hiệu quả, thay thế cho phương pháp lập trình thủ công truyền thống vốn tốn nhiều thời gian và dễ phát sinh lỗi. Báo cáo sẽ trình bày chi tiết từ cơ sở lý thuyết điều khiển, giới thiệu phần cứng và phần mềm, đến hướng dẫn thực hành cụ thể và các kết quả thực nghiệm đạt được.

1.1. Tầm quan trọng của vi điều khiển ARM Cortex M4 hiện nay

Dòng vi điều khiển ARM Cortex-M4 là một bước tiến vượt bậc trong lĩnh vực lập trình nhúng, mang lại hiệu suất xử lý cao cùng khả năng tiết kiệm năng lượng. Kit STM32F4 Discovery được trang bị vi điều khiển STM32F407VGT6, tích hợp lõi ARM Cortex-M4F 32-bit, bộ nhớ Flash 1MB và RAM 192KB. Đặc điểm nổi bật của lõi M4F là việc tích hợp sẵn bộ xử lý dấu phẩy động (FPU) và tập lệnh xử lý tín hiệu số (DSP). Điều này cho phép vi điều khiển thực thi các thuật toán toán học phức tạp như biến đổi Fourier nhanh (FFT), các bộ lọc số với tốc độ cao mà không cần đến vi xử lý chuyên dụng bên ngoài. Nhờ vậy, nó trở thành lựa chọn lý tưởng cho các ứng dụng yêu cầu tính toán chuyên sâu trong các hệ thống nhúng thời gian thực, từ điều khiển động cơ, xử lý âm thanh, đến các hệ thống robot tự hành. Sự phổ biến của kiến trúc ARM cũng đảm bảo một hệ sinh thái công cụ phát triển phong phú, bao gồm các trình biên dịch như Keil C và các bộ gỡ lỗi mạnh mẽ, giúp đơn giản hóa quá trình phát triển phần mềm.

1.2. Sức mạnh kết hợp giữa Matlab Simulink và lập trình nhúng

Sự kết hợp giữa Matlab Simulinklập trình nhúng đại diện cho phương pháp Model-Based Design (MBD), một cuộc cách mạng trong quy trình thiết kế hệ thống điều khiển. Thay vì viết mã thủ công bằng ngôn ngữ C/C++, kỹ sư có thể xây dựng toàn bộ hàm truyền đạt và logic điều khiển dưới dạng sơ đồ khối trực quan trong Simulink. Môi trường này cho phép thực hiện mô phỏng và thực nghiệm ngay trên máy tính để kiểm tra đáp ứng hệ thống trước khi triển khai. Các công cụ như Simulink CoderEmbedded Coder sau đó sẽ tự động dịch mô hình Simulink thành mã C/C++ được tối ưu hóa cho vi điều khiển. Cách tiếp cận này giúp phát hiện lỗi sớm trong giai đoạn thiết kế, giảm thiểu thời gian gỡ lỗi trên phần cứng, và đảm bảo tính nhất quán giữa mô hình và sản phẩm thực tế. Đối với đề tài này, Waijung Blockset đóng vai trò là lớp trung gian, cung cấp các khối chức năng tương ứng với các ngoại vi của STM32F4 (ADC, PWM, UART), giúp quá trình chuyển đổi từ mô hình sang phần cứng trở nên liền mạch.

1.3. Tổng quan mục tiêu và cấu trúc của báo cáo đồ án II

Mục tiêu cốt lõi của đồ án là làm chủ quy trình thiết kế bộ điều khiển sử dụng kit ARM STM32F4 Discovery và môi trường Matlab/Simulink. Cụ thể, đồ án hướng đến việc: (1) Nghiên cứu cơ sở lý thuyết về điều khiển tự động, đặc biệt là bộ điều khiển PID. (2) Tìm hiểu và khai thác các tính năng của phần cứng STM32F4 và phần mềm Simulink. (3) Sử dụng thành thạo thư viện Waijung Blockset để lập trình các ngoại vi cơ bản như GPIO, ADC, PWM, và giao tiếp UART. (4) Xây dựng và triển khai các mô hình điều khiển từ đơn giản đến phức tạp, thực hiện mô phỏng và thực nghiệm để đánh giá hiệu quả. Cấu trúc báo cáo được tổ chức một cách logic, bắt đầu từ nền tảng lý thuyết, sau đó giới thiệu công cụ, hướng dẫn thực hành chi tiết qua các thí nghiệm cụ thể, và cuối cùng là tổng kết kết quả và đề ra phương hướng phát triển trong tương lai, chẳng hạn như ứng dụng các bộ điều khiển thông minh hơn như bộ điều khiển mờ (Fuzzy Logic).

II. Thách thức khi thiết kế bộ điều khiển nhúng thời gian thực

Thiết kế các bộ điều khiển cho hệ thống nhúng thời gian thực đặt ra nhiều thách thức đáng kể, đòi hỏi sự cân bằng giữa lý thuyết điều khiển và giới hạn của phần cứng. Một trong những khó khăn lớn nhất là khoảng cách giữa mô phỏng và thực nghiệm. Các mô hình toán học và hàm truyền đạt trong môi trường mô phỏng như Simulink thường lý tưởng hóa hệ thống, bỏ qua các yếu tố như nhiễu, độ trễ cảm biến, và tính phi tuyến của cơ cấu chấp hành. Khi triển khai thuật toán lên vi điều khiển ARM Cortex-M4, những yếu tố này có thể làm cho đáp ứng hệ thống thực tế khác xa so với dự đoán. Thêm vào đó, việc lập trình cấp thấp cho vi điều khiển đòi hỏi kiến thức sâu về kiến trúc phần cứng, thanh ghi và quản lý tài nguyên. Quá trình này không chỉ tốn thời gian mà còn dễ gây ra lỗi, đặc biệt với các hệ thống phức tạp có nhiều ngõ vào-ra (MIMO). Một thách thức khác là đảm bảo tính thời gian thực, nghĩa là thuật toán điều khiển phải hoàn thành trong một chu kỳ lấy mẫu nhất định. Điều này yêu cầu mã chương trình phải được tối ưu hóa để có tốc độ xử lý nhanh, một yêu cầu mà kit ARM STM32F4 Discovery với lõi hiệu suất cao có thể đáp ứng tốt. Việc sử dụng phương pháp Model-Based Design với các công cụ như Embedded Coder và thư viện Support Package for STM32 chính là giải pháp để vượt qua những rào cản này, tự động hóa quá trình sinh mã và giúp kỹ sư tập trung hơn vào thuật toán thay vì chi tiết triển khai.

2.1. Khó khăn khi chuyển đổi thuật toán từ mô phỏng ra phần cứng

Quá trình chuyển đổi một thuật toán điều khiển từ môi trường mô phỏng lý tưởng sang phần cứng thực tế thường gặp nhiều trở ngại. Trong Simulink, các tín hiệu là các số thực có độ chính xác cao, trong khi trên vi điều khiển ARM Cortex-M4, chúng thường được biểu diễn dưới dạng số nguyên hoặc số chấm động có độ chính xác giới hạn. Sự khác biệt này có thể dẫn đến sai số lượng tử hóa và làm giảm hiệu năng của bộ điều khiển PID. Hơn nữa, các mô hình mô phỏng thường không tính đến độ trễ của các bộ chuyển đổi ADC/DAC, thời gian xử lý của CPU, hay nhiễu điện từ trong môi trường vận hành. Việc lập trình thủ công để xử lý các vấn đề này, chẳng hạn như triển khai các bộ lọc số để loại bỏ nhiễu hay quản lý ngắt để đảm bảo định thời, là một công việc phức tạp. Đây chính là lúc các công cụ tự động sinh mã như Simulink Coder phát huy tác dụng, giúp tạo ra mã C hiệu quả và xử lý các vấn đề liên quan đến kiểu dữ liệu và định thời một cách tự động.

2.2. Yêu cầu về tốc độ xử lý trong hệ thống nhúng thời gian thực

Một hệ thống nhúng thời gian thực yêu cầu hệ thống phải phản hồi với các sự kiện đầu vào trong một khoảng thời gian xác định nghiêm ngặt. Đối với các ứng dụng điều khiển tự động như điều khiển động cơ DC hay điều khiển con lắc ngược, vòng lặp điều khiển phải được thực thi với tần số cao và ổn định để đảm bảo hệ thống hoạt động chính xác. Điều này đặt ra yêu cầu khắt khe về tốc độ xử lý của vi điều khiển. ARM STM32F4 Discovery với xung nhịp lên tới 168 MHz và khả năng thực thi lệnh DSP giúp đáp ứng tốt yêu cầu này. Tuy nhiên, hiệu suất không chỉ phụ thuộc vào phần cứng mà còn vào chất lượng của mã chương trình. Một thuật toán được lập trình không tối ưu có thể chiếm dụng quá nhiều chu kỳ CPU, dẫn đến việc bỏ lỡ các thời hạn (deadline) và gây mất ổn định cho hệ thống. Phương pháp Model-Based Design giúp giải quyết vấn đề này bằng cách cho phép các kỹ sư cấu hình và tối ưu hóa mã được sinh ra bởi Embedded Coder, đảm bảo hiệu suất thời gian thực.

2.3. Sự phức tạp của việc lập trình vi điều khiển ARM cấp thấp

Lập trình trực tiếp trên vi điều khiển ARM bằng ngôn ngữ C/C++ đòi hỏi người lập trình phải am hiểu sâu sắc về kiến trúc phần cứng. Cần phải cấu hình hàng loạt các thanh ghi để khởi tạo các ngoại vi như Timer/Counter, ADC, giao tiếp UART, hay PWM. Ví dụ, để tạo ra một tín hiệu PWM cho điều khiển động cơ DC, người lập trình phải thiết lập thanh ghi chu kỳ, thanh ghi so sánh, bộ chia tần số (prescaler) và chế độ hoạt động của bộ Timer. Quá trình này phức tạp, dễ xảy ra lỗi và khó gỡ lỗi. Các công cụ như STM32CubeMX đã giúp đơn giản hóa việc cấu hình ban đầu, nhưng việc viết logic điều khiển vẫn là thủ công. Báo cáo đồ án này giới thiệu giải pháp sử dụng Waijung Blockset, một thư viện Simulink giúp trừu tượng hóa toàn bộ sự phức tạp này. Thay vì thao tác với thanh ghi, người dùng chỉ cần kéo thả các khối chức năng, cấu hình tham số một cách trực quan và để công cụ tự động sinh ra mã cấu hình phần cứng tương ứng.

III. Phương pháp Model Based Design với Matlab và STM32F4

Phương pháp Model-Based Design (MBD) là trọng tâm của đồ án, cung cấp một quy trình thiết kế hiệu quả từ ý tưởng đến sản phẩm. Cách tiếp cận này sử dụng Matlab Simulink làm môi trường trung tâm để mô hình hóa hệ thống, phân tích, mô phỏng và cuối cùng là tự động sinh mã cho phần cứng đích là kit ARM STM32F4 Discovery. Thay vì chia tách hai công đoạn thiết kế thuật toán và lập trình nhúng, MBD hợp nhất chúng thành một luồng công việc liền mạch. Bắt đầu bằng việc xây dựng một mô hình toán học hoặc hàm truyền đạt của đối tượng điều khiển, sau đó thiết kế bộ điều khiển PID hoặc các bộ điều khiển khác trong Simulink. Giai đoạn mô phỏng cho phép tinh chỉnh các thông số điều khiển để đạt được đáp ứng hệ thống mong muốn, chẳng hạn như giảm độ vọt lố và thời gian xác lập. Sau khi mô hình được xác thực, các công cụ như Simulink CoderEmbedded Coder sẽ chuyển đổi mô hình đồ họa thành mã C/C++ có thể biên dịch và nạp trực tiếp lên vi điều khiển ARM Cortex-M4. Thư viện Waijung Blockset, một Support Package for STM32, đóng vai trò cực kỳ quan trọng bằng cách cung cấp các khối Simulink đại diện cho các ngoại vi của chip, giúp việc tương tác với phần cứng như đọc cảm biến hay điều khiển cơ cấu chấp hành trở nên trực quan và đơn giản.

3.1. Giới thiệu quy trình thiết kế dựa trên mô hình MBD

Quy trình Model-Based Design (MBD) là một phương pháp luận hệ thống, bao gồm bốn bước chính: (1) Mô hình hóa hệ thống: Xây dựng một mô hình thực thi của đối tượng cần điều khiển (plant) và bộ điều khiển trong Simulink. (2) Mô phỏng và phân tích: Chạy mô phỏng để phân tích hành vi của hệ thống vòng kín, kiểm tra sự ổn định và tinh chỉnh các tham số của bộ điều khiển PID để tối ưu hóa hiệu năng. (3) Tự động sinh mã: Sử dụng Embedded Coder để tự động tạo mã C/C++ từ mô hình bộ điều khiển đã được xác thực. (4) Xác minh và kiểm thử: Triển khai mã lên phần cứng ARM STM32F4 và tiến hành kiểm thử trên hệ thống thực. Quy trình này cho phép phát hiện lỗi từ sớm, giảm sự phụ thuộc vào nguyên mẫu vật lý, và tái sử dụng các mô hình cho các dự án khác nhau. Nó đặc biệt hiệu quả trong các lĩnh vực yêu cầu độ an toàn và tin cậy cao như hàng không và ô tô, và ngày càng được áp dụng rộng rãi trong điều khiển tự động công nghiệp.

3.2. Hướng dẫn cài đặt và cấu hình thư viện Waijung Blockset

Để kết nối Matlab Simulink với kit ARM STM32F4 Discovery, việc cài đặt và cấu hình thư viện Waijung Blockset là bước đầu tiên và quan trọng nhất. Theo tài liệu, quá trình này bắt đầu bằng việc tải tệp cài đặt từ trang web của nhà phát triển (aimagin.com). Sau khi giải nén, người dùng cần chạy tệp install_waijung.m từ bên trong môi trường Matlab. Quá trình cài đặt sẽ tự động thêm thư viện Waijung vào trình duyệt thư viện của Simulink. Sau khi cài đặt, bước cấu hình mô hình là cần thiết. Mỗi mô hình Simulink mới cần một khối 'Target Setup' từ thư viện Waijung. Trong khối này, người dùng phải chọn đúng loại vi điều khiển là STM32F4 Discovery, thiết lập tần số hoạt động và cấu hình các chân ngoại vi. Waijung Blockset cung cấp một giao diện trực quan để thực hiện các cài đặt này, loại bỏ nhu cầu phải viết mã cấu hình cấp thấp, giúp người dùng tập trung hoàn toàn vào việc xây dựng logic điều khiển.

3.3. Vai trò của Simulink Coder và Embedded Coder trong MBD

Simulink Coder (trước đây là Real-Time Workshop) và Embedded Coder là hai công cụ cốt lõi của MathWorks, hiện thực hóa khả năng tự động sinh mã của phương pháp MBD. Simulink Coder có chức năng chuyển đổi một mô hình Simulink thành mã nguồn C hoặc C++ có thể đọc được. Mã này có thể được sử dụng cho các mục đích như mô phỏng tăng tốc, kiểm thử thời gian thực, hoặc triển khai trên phần cứng. Embedded Coder là một sản phẩm mở rộng của Simulink Coder, cung cấp các tính năng nâng cao dành riêng cho các hệ thống nhúng. Nó cho phép tối ưu hóa mã nguồn về tốc độ thực thi và kích thước bộ nhớ, hỗ trợ các chuẩn công nghiệp (MISRA C), và cho phép tích hợp mã nguồn tùy chỉnh. Trong khuôn khổ đồ án, sự kết hợp giữa Waijung BlocksetEmbedded Coder tạo ra một luồng công việc mạnh mẽ: Waijung cung cấp các khối giao tiếp phần cứng, trong khi Embedded Coder chịu trách nhiệm tạo ra mã nguồn hiệu quả nhất để chạy trên vi điều khiển ARM Cortex-M4.

IV. Hướng dẫn khai thác ngoại vi STM32F4 qua Waijung Blockset

Việc khai thác hiệu quả các ngoại vi trên kit ARM STM32F4 Discovery là chìa khóa để xây dựng các ứng dụng điều khiển tự động hoàn chỉnh. Báo cáo đồ án đã trình bày chi tiết cách sử dụng thư viện Waijung Blockset trong Matlab Simulink để tương tác với các khối chức năng phần cứng một cách trực quan. Thay vì phải làm việc với các thanh ghi phức tạp, người dùng chỉ cần kéo thả và cấu hình các khối tương ứng trong môi trường Simulink. Các thí nghiệm thực tế được mô tả trong tài liệu gốc là minh chứng rõ ràng cho sức mạnh của phương pháp này. Từ việc điều khiển bật tắt đèn LED bằng khối Digital Output, điều chỉnh độ sáng bằng tín hiệu PWM, đến đọc giá trị từ nút nhấn bằng Digital Input, tất cả đều được thực hiện thông qua việc xây dựng các mô hình đơn giản. Một phần quan trọng khác là việc sử dụng Timer/Counter để tạo xung, đo lường tần số, và đọc tín hiệu từ Encoder. Đặc biệt, giao tiếp UART được khai thác triệt để thông qua các khối 'Host Serial', cho phép truyền dữ liệu hai chiều giữa kit STM32F4 và máy tính. Điều này không chỉ giúp hiển thị kết quả đo lường, giám sát đáp ứng hệ thống theo thời gian thực mà còn tạo ra giao diện người dùng đơn giản để gửi lệnh điều khiển xuống bo mạch, một công cụ không thể thiếu trong quá trình mô phỏng và thực nghiệm.

4.1. Kỹ thuật lập trình Digital I O và điều chế độ rộng xung PWM

Tài liệu hướng dẫn chi tiết cách sử dụng các khối Digital Input và Digital Output trong Waijung Blockset. Thí nghiệm điều khiển LED bằng nút nhấn cho thấy cách đọc trạng thái của một chân đầu vào và xuất tín hiệu tương ứng ra một chân đầu ra. Bên cạnh đó, kỹ thuật điều chế độ rộng xung (PWM) là nền tảng cho nhiều ứng dụng điều khiển tự động, đặc biệt là điều khiển động cơ DC và điều chỉnh độ sáng đèn LED. Báo cáo đã thực hiện thí nghiệm sử dụng khối 'Basic PWM', trong đó một biến trở được nối với chân ADC để tạo ra một giá trị điện áp thay đổi. Giá trị này được dùng để điều chỉnh trực tiếp độ rộng xung của tín hiệu PWM. Kết quả là độ sáng của đèn LED thay đổi tuyến tính theo vị trí của biến trở. Mô hình này minh họa một cách trực quan nguyên lý hoạt động của PWM và cách triển khai nó trên ARM STM32F4 mà không cần viết một dòng code C nào.

4.2. Phương pháp đọc Encoder và sử dụng ngắt Timer IRQ

Để điều khiển vị trí hoặc tốc độ động cơ một cách chính xác, việc đọc tín hiệu từ encoder là bắt buộc. Đồ án giới thiệu khối 'Encoder Read' trong Waijung Blockset, được thiết kế để làm việc với các bộ mã hóa vòng quay (rotary encoder). Khối này tận dụng chế độ Encoder Interface của các bộ Timer trên vi điều khiển ARM Cortex-M4, tự động đếm các xung từ kênh A và B để xác định cả vị trí và chiều quay. Ngoài ra, khối 'Timer IRQ' (Interrupt Request) cũng được giới thiệu. Đây là một công cụ mạnh mẽ để thực thi các tác vụ định kỳ trong các hệ thống nhúng thời gian thực. Bằng cách cấu hình một bộ Timer để tạo ra ngắt sau mỗi khoảng thời gian nhất định, có thể tạo ra một vòng lặp điều khiển với chu kỳ lấy mẫu chính xác, đảm bảo hoạt động ổn định cho bộ điều khiển PID và các thuật toán nhạy cảm về thời gian khác.

4.3. Triển khai giao tiếp UART để giám sát và gỡ lỗi hệ thống

Giao tiếp UART là một công cụ không thể thiếu trong quá trình phát triển và gỡ lỗi hệ thống nhúng. Báo cáo đồ án đã trình bày hai cách tiếp cận để sử dụng UART với Waijung Blockset. Cách thứ nhất sử dụng các khối 'UART Setup' và 'UART Tx/Rx' để truyền dữ liệu giữa bo mạch và một phần mềm terminal trên máy tính. Cách này phù hợp để gửi các chuỗi dữ liệu thô hoặc các giá trị đo đạc. Cách thứ hai, mạnh mẽ hơn, là sử dụng bộ ba khối 'Host Serial Setup', 'Host Serial Tx', và 'Host Serial Rx'. Bộ khối này cho phép mô hình Simulink chạy trên máy tính có thể giao tiếp trực tiếp với mô hình chạy trên ARM STM32F4. Thí nghiệm truyền giá trị từ một thanh trượt (slider) trên máy tính xuống bo mạch để điều khiển một tham số, sau đó gửi giá trị phản hồi ngược lại để hiển thị trên đồ thị (Scope) đã minh họa rõ ràng khả năng giám sát và tương tác với hệ thống theo thời gian thực, giúp việc tinh chỉnh và kiểm thử bộ điều khiển trở nên dễ dàng hơn bao giờ hết.

V. Kết quả mô phỏng và thực nghiệm trên kit STM32F4 Discovery

Phần kết quả của đồ án là minh chứng cho tính hiệu quả của phương pháp Model-Based Design khi áp dụng ARM STM32F4 Discovery và Matlab/Simulink. Thông qua các thí nghiệm cụ thể được trình bày, đồ án đã thành công trong việc chuyển đổi các mô hình điều khiển từ môi trường mô phỏng sang hệ thống phần cứng thực tế một cách nhanh chóng và chính xác. Các kết quả thu được không chỉ giới hạn ở việc điều khiển các ngoại vi đơn giản mà còn cho thấy khả năng xây dựng một hệ thống phản hồi hoàn chỉnh. Thí nghiệm truyền nhận dữ liệu qua giao tiếp UART bằng khối Host Serial là một ví dụ tiêu biểu. Kết quả đồ thị cho thấy tín hiệu gửi từ máy tính xuống bo mạch và tín hiệu phản hồi từ bo mạch lên máy tính có sự tương quan chặt chẽ, chứng tỏ hệ thống giao tiếp hoạt động ổn định và có độ trễ thấp. Tương tự, thí nghiệm điều chỉnh độ sáng LED bằng PWM cho thấy đáp ứng hệ thống mượt mà, đúng như thiết kế trong Simulink. Việc so sánh giữa kết quả mô phỏng và kết quả thực nghiệm cho thấy sự tương đồng cao, khẳng định rằng Waijung BlocksetEmbedded Coder đã tạo ra mã nhúng hiệu quả, bảo toàn được đặc tính động học của bộ điều khiển được thiết kế. Những thành công này đã chứng minh rằng việc kết hợp vi điều khiển ARM Cortex-M4 và Simulink là một giải pháp mạnh mẽ cho các bài toán điều khiển tự động.

5.1. Thực nghiệm điều khiển độ sáng LED bằng tín hiệu PWM

Thí nghiệm điều khiển độ sáng LED bằng PWM là một bài thực hành cơ bản nhưng rất quan trọng, thể hiện khả năng điều khiển tương tự bằng tín hiệu số. Mô hình Simulink được xây dựng với khối 'Regular ADC' để đọc giá trị điện áp từ một biến trở, sau đó giá trị này được đưa vào đầu vào của khối 'Basic PWM' để điều chỉnh độ rộng xung. Tín hiệu PWM được xuất ra chân kết nối với một đèn LED. Kết quả thực nghiệm cho thấy khi xoay biến trở, độ sáng của LED thay đổi một cách liên tục và mượt mà từ tắt hoàn toàn đến sáng tối đa. Đồ thị trong báo cáo cũng cho thấy tín hiệu PWM được tạo ra có chu kỳ không đổi nhưng độ rộng xung (duty cycle) biến thiên theo giá trị ADC. Thí nghiệm này không chỉ xác nhận hoạt động chính xác của các khối ADC và PWM trong Waijung Blockset mà còn là nền tảng cho các ứng dụng phức tạp hơn như điều khiển động cơ DC.

5.2. Phân tích đáp ứng hệ thống qua giao tiếp Host Serial UART

Một trong những kết quả ấn tượng nhất của đồ án là việc xây dựng thành công một hệ thống giám sát và điều khiển hai chiều thời gian thực qua giao tiếp UART. Hai mô hình Simulink được tạo ra: một để nạp xuống kit ARM STM32F4 Discovery và một để chạy trên máy tính. Mô hình trên máy tính có một thanh trượt (Slider) để người dùng thay đổi một giá trị và một đồ thị (Scope) để hiển thị dữ liệu nhận về. Mô hình trên bo mạch nhận giá trị từ máy tính qua khối 'Host Serial Rx', xử lý nó (ví dụ như dùng để đặt giá trị cho PWM), sau đó gửi lại chính giá trị đó qua khối 'Host Serial Tx'. Kết quả thực nghiệm được thể hiện qua Hình 3.57 trong tài liệu gốc, cho thấy đồ thị trên máy tính bám sát gần như tức thời theo sự thay đổi của thanh trượt. Điều này chứng minh khả năng của hệ thống trong việc thực hiện mô phỏng và thực nghiệm đồng thời (Hardware-in-the-Loop), một kỹ thuật tiên tiến trong điều khiển tự động.

5.3. So sánh và đánh giá sự tương đồng giữa mô hình và thực tế

Mục tiêu cuối cùng của Model-Based Design là tạo ra một hệ thống thực tế hoạt động đúng như mô hình mô phỏng của nó. Đồ án đã đạt được điều này ở mức độ cao. Trong các thí nghiệm, hành vi của hệ thống vật lý (đèn LED, dữ liệu UART) phản ánh chính xác logic được thiết kế bằng các khối trong Simulink. Ví dụ, khi khối 'Pulse Generator' được thiết lập để tạo xung với chu kỳ 4 giây và độ rộng xung 25%, đèn LED trên bo mạch thực sự sáng trong 1 giây và tắt trong 3 giây. Sự tương đồng này cho thấy quá trình tự động sinh mã của Embedded Coder và các driver phần cứng do Waijung Blockset cung cấp hoạt động rất hiệu quả. Nó giúp giảm thiểu sai lệch giữa các giai đoạn thiết kế, cho phép các kỹ sư tin tưởng vào kết quả mô phỏng và rút ngắn đáng kể chu trình phát triển sản phẩm lập trình nhúng.

VI. Kết luận đồ án và định hướng phát triển trong tương lai

Báo cáo đồ án “Ứng dụng ARM STM32F4 Discovery và Matlab/Simulink trong thiết kế các bộ điều khiển” đã hoàn thành xuất sắc các mục tiêu đề ra. Nhóm nghiên cứu đã tìm hiểu và làm chủ thành công phương pháp Model-Based Design, một quy trình làm việc hiện đại và hiệu quả trong lĩnh vực điều khiển tự độnglập trình nhúng. Việc sử dụng thành thạo kit ARM STM32F4 cùng với thư viện Waijung Blockset trong Simulink đã được chứng minh qua hàng loạt các thí nghiệm thành công, từ điều khiển I/O cơ bản đến xây dựng hệ thống giao tiếp dữ liệu thời gian thực. Kết quả thu được khẳng định giải pháp này giúp rút ngắn đáng kể thời gian phát triển, tăng độ tin cậy của sản phẩm và cho phép thực hiện các thuật toán điều khiển phức tạp một cách dễ dàng. Đồ án đã tạo ra một nền tảng vững chắc, không chỉ về kiến thức lý thuyết mà còn về kỹ năng thực hành. Từ nền tảng này, nhiều hướng phát triển tiềm năng có thể được khai thác. Tương lai của dự án có thể tập trung vào việc áp dụng các kỹ thuật điều khiển thông minh, xây dựng các hệ thống điều khiển hoàn chỉnh và phức tạp hơn, đáp ứng nhu cầu ngày càng cao của công nghiệp và nghiên cứu khoa học. Phương pháp này mở ra một con đường hiệu quả để biến những ý tưởng điều khiển trên mô hình thành các sản phẩm nhúng hoạt động trong thực tế.

6.1. Đánh giá ưu nhược điểm của giải pháp ARM STM32F4 Simulink

Giải pháp kết hợp ARM STM32F4Matlab Simulink thông qua Waijung Blockset mang lại nhiều ưu điểm vượt trội. Ưu điểm lớn nhất là việc trừu tượng hóa phần cứng, cho phép người thiết kế tập trung vào thuật toán thay vì lập trình cấp thấp. Quy trình làm việc trực quan, liền mạch từ mô hình hóa hệ thống đến triển khai giúp giảm lỗi và tăng tốc độ phát triển. Khả năng giám sát thời gian thực qua Host Serial là một công cụ gỡ lỗi và tinh chỉnh cực kỳ mạnh mẽ. Tuy nhiên, giải pháp cũng có một số nhược điểm. Việc phụ thuộc vào các công cụ bản quyền như Matlab, Simulink và Embedded Coder có thể tốn kém chi phí. Mã được sinh tự động, mặc dù hiệu quả, đôi khi có thể không được tối ưu bằng mã viết tay bởi một lập trình viên kinh nghiệm cho các ứng dụng đòi hỏi hiệu suất cực cao. Ngoài ra, việc sử dụng một thư viện của bên thứ ba như Waijung Blockset có thể gặp hạn chế về việc hỗ trợ các ngoại vi mới nhất hoặc các tính năng đặc thù của vi điều khiển.

6.2. Triển vọng ứng dụng điều khiển mờ và mạng nơ ron

Với nền tảng đã xây dựng, một hướng phát triển rất hứa hẹn là áp dụng các kỹ thuật điều khiển thông minh. Thay vì sử dụng bộ điều khiển PID kinh điển, có thể triển khai bộ điều khiển mờ (Fuzzy Logic) hoặc các bộ điều khiển dựa trên mạng nơ-ron nhân tạo. Logic mờ đặc biệt hữu ích cho các hệ thống phức tạp, phi tuyến mà việc xây dựng mô hình toán học chính xác là rất khó khăn. Matlab/Simulink cung cấp sẵn các toolbox mạnh mẽ như Fuzzy Logic Toolbox và Deep Learning Toolbox, cho phép thiết kế và huấn luyện các bộ điều khiển này một cách trực quan. Sau đó, chúng có thể được triển khai lên ARM STM32F4 bằng chính quy trình Model-Based Design đã được trình bày. Việc này sẽ mở ra khả năng giải quyết các bài toán điều khiển phức tạp hơn, chẳng hạn như điều khiển con lắc ngược hoặc các hệ thống robot tự hành.

6.3. Hướng phát triển sản phẩm điều khiển hoàn chỉnh thực tế

Phương hướng phát triển cuối cùng và tham vọng nhất là thiết kế một mạch điều khiển hoàn chỉnh để ứng dụng vào một hệ thống thực tế. Dựa trên kinh nghiệm từ việc sử dụng kit STM32F4 Discovery, nhóm có thể tự thiết kế một bo mạch PCB (Printed Circuit Board) nhỏ gọn, tích hợp vi điều khiển, các mạch công suất để điều khiển động cơ, các khối cảm biến và mạch giao tiếp. Toàn bộ phần mềm điều khiển cho bo mạch này vẫn sẽ được phát triển bằng Matlab SimulinkWaijung Blockset. Mục tiêu là tạo ra một sản phẩm hệ thống nhúng thời gian thực hoàn chỉnh, có thể ứng dụng trực tiếp vào các bài toán công nghiệp như điều khiển vị trí của một cánh tay robot, ổn định một drone, hoặc điều khiển một dây chuyền sản xuất tự động nhỏ. Đây là bước đi quan trọng để chuyển từ nghiên cứu học thuật sang ứng dụng kỹ thuật thực tiễn.

15/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 1.1 Lịch sử phát triển lý thuyết điều khiển Định nghĩa điều khiển: Điều khiển là quá trình thu nhập thông tin, xử lý thông tin và tác động lên hệ thống để đáp ứng của hệ thống “gần” với mục đích định trước. Điều khiển tự động là quá trình điều khiển không cần sự tác động của con người.1 Điều khiển kinh điển (classical control) Lý thuyết điều khiển kinh điển (trước 1960) mô tả hệ thống trong miền tần số (phép biến đổi Fourier) và mặt phẳng s (phép biến đổi Laplace). Do dựa trên các phép biến đổi này, lý thuyết điều khiển kinh điển chủ yếu áp dụng cho hệ thống tuyến tính bất biến theo thời gian, mặc dù có một vài mở rộng để áp dụng cho hệ phi tuyến, thí dụ phương pháp hàm mô tả. Lý thuyết điều khiển kinh điển thích hợp để thiết kế hệ thống một ngõ vào – một ngõ ra (SISO: single-input/single-output), rất khó áp dụng cho các hệ thống nhiều ngõ vào – nhiều ngõ ra (MIMO: multi-input/multi-ouput) và các hệ thống biến đổi theo thời gian.

Các phương pháp phân tích và thiết kế hệ thống trong lý thuyết điều khiển kinh điển gồm các phương pháp Nyquist, Bode, và phương pháp quỹ đạo nghiệm số. Để thiết kế hệ thống dùng phương pháp Nyquist và Bode cần mô tả hệ thống dưới dạng đáp ứng tần số (đáp ứng biên độ và đáp ứng pha), đây là một thuận lợi vì đáp ứng tần số có thể đo được bằng thực nghiệm. Mô tả hệ thống cần để thiết dùng phương pháp quỹ đạo nghiệm số là hàm truyền, hàm truyền cũng có thể tính được từ đáp ứng tần số. Hàm truyền của các hệ thống phức tạp được tính bằng cách sử dụng sơ đồ khối hay sơ đồ dòng tín hiệu.

Mô tả chính xác đặc tính động học bên trong hệ thống là không cần thiết đối với các phương pháp thiết kế kinh điển, chỉ có quan hệ giữa ngõ vào và ngõ ra quan trọng. Các khâu hiệu chỉnh đơn giản như hiệu chỉnh vi tích phân tỉ lệ PID (Proportional Integral Derivative), hiệu chỉnh sớm trễ pha,… thường được sử dụng trong các hệ thống điều khiển kinh điển. Ảnh hưởng của các khâu hiệu chỉnh này đến biểu đồ Nyquist, biểu đồ Bode và quỹ đạo nghiệm số có thể thấy được dễ dàng, nhờ đó có thể dễ dàng lựa chọn được khâu hiệu chỉnh thích hợp.2 Điều khiển hiện đại (modern control) Từ khoảng năm 1960 đến nay 8 Kỹ thuật thiết kế hệ thống điều khiển hiện đại dựa trên miền thời gian. Mô tả toán học dùng để phân tích và thiết kế hệ thống là phương trình trạng thái.

Mô hình không gian trạng thái có ưu điểm là mô tả được đặc tính động học bên trong hệ thống (các biến trạng thái) và có thể dễ dàng áp dụng cho hệ MIMO và hệ thống biến đổi theo thời gian. Lý thuyết điều khiển hiện đại ban đầu được phát triển chủ yếu cho hệ tuyến tính, sau đó được mở rộng cho hệ phi tuyến bằng cách sử dụng lý thuyết của Lyapunov. Bộ điều khiển được sử dụng chủ yếu trong thiết kế hệ thống điều khiển hiện đại là bộ điều khiển hiện đại là bộ điều khiển hồi tiếp trạng thái. Tùy theo cách tính vector hồi tiếp trạng thái mà ta có phương pháp phân bố cục, điều khiển tối ưu, điều khiển bền vững,… Với sự phát triển của lý thuyết điều khiển số và hệ thống rời rạc, lý thuyết điều khiển hiện đại rất thích hợp để thiết kế các bộ điều khiển là các chương trình phần mềm chạy trên vi xử lý và máy tính số.

Điều này cho phép thực thi được các bộ điều khiển có đặc tính động phức tạp hơn cũng như hiệu quả hơn so với các bộ điều khiển đơn giản như PID hay sớm trễ pha trong lý thuyết điều khiển kinh điển.3 Điều khiển thông minh (intelligent control) Điều khiển kinh điển và điều khiển hiện đại, gọi chung là điều khiển thông thường (conventional control) có khuyết điểm là để thiết kế được hệ thống điều khiển cần phải biết mô hình toán học của đối tượng. Trong khi đó thực tế có những đối tượng điều khiển rất phức tạp, rất khó hoặc không thể xác định được mô hình toán. Các phương pháp điều khiển thông minh như điều khiển mờ, mạng thần kinh nhân tạo, thuật toán di truyền mô phỏng/bắt chước các hệ thống thông minh sinh học, về nguyên tắc không cần dùng mô hình toán học để thiết kế hệ thống, do đó có khả năng ứng dụng thực tế rất lớn. Khuyết điểm của điều khiển mờ là quá trình thiết kế mang tính thử sai, dựa vào kinh nghiệm của chuyên gia.

Nhờ kết hợp logic mờ với mạng thần kinh nhân tạo hay thuật toán di truyền mà thông số bộ điều khiển mờ có thể thay đổi thông qua quá trình học hay quá trình tiến hóa, vì vậy khắc phụ được khuyết điểm thử sai. Hiện nay các bộ điều khiển thông thường kết hợp với các kỹ thuật điều khiển thông minh tạo nên các bộ điều khiển lai điều khiển các hệ thống phức tạp với chất lượng rất tốt.2 Thành phần cơ bản của hệ thống điều khiển 9 Hình 1.1 Sơ đồ khối hệ thống điều khiển Chú thích các ký hiệu viết tắt: - r(t): tín hiệu vào, tín hiệu chuẩn - c(t): tín hiệu ra - cht(t): tín hiệu hồi tiếp - e(t): sai số - u(t): tín hiệu điều khiển Để thực hiện được quá trình điều khiển như định nghĩa ở trên, một hệ thống điều khiển bắt buộc gồm có ba thành phần cơ bản là thiết bị đo lường (cảm biến), bộ điều khiển và đối tượng điều khiển. Thiết bị đo lường có chức năng thu nhập thông tin, bộ điều khiển thực hiện chức năng xử lý thông tin, ra quyết định điều khiển và đối tượng điều khiển chịusự tác động của tín hiệu điều khiển. Hệ thống điều khiển trong thực tế rất đa dạng, sơ đồ khối trên là cấu hình của hệ thống điều khiển thường gặp nhất.3 Thiết kế bộ điều khiển 1.1 Phần loại thiết kế bộ điều khiển Thiết kế là toàn bộ quá trình bổ sung các thiết bi phần cứng cũng như thuật toán, phần mềm vào hệ cho trước để được hệ mới thỏa mãn yêu cầu về tính ổn định, độ chính xác, đáp ứng quá độ.

Có 2 cách thiết kế: Hiệu chỉnh nối tiếp: thêm các bộ điều khiển nối tiếp với hệ hở cho trước.2 Sơ đồ khối hiệu chỉnh nối tiếp 10 - Các bộ điều khiển thường được sử dụng: sớm pha, trễ pha, sớm trễ pha, P, PI, PD, PID. - Phương pháp thiết kế ở dạng này là phương pháp QĐNS, phương pháp biểu đồ Bode. • Điều khiển hồi tiếp trạng thái: Tất cả các trạng thái của hệ thống được phản hồi trở về ngõ vào.3 Sơ đồ khối hồi tiếp trạng thái - Khi đó, bộ điều khiển sẽ là: r(t) - Kx(t), với K = [ki k2. kn] lá vector hồi tiếp trạng thái.

- Phương pháp thiết kế: phân bô cực, LQR.2 Bộ điều khiển PID Hình 1.4 Sơ đồ khối PID Bộ điều khiển PID là bộ điều khiển hồi tiếp vòng kín, kết hợp ba bộ điều khiển vi phân, tích phân, tỉ lệ. Nó có chức năng điều khiển hệ thống đáp ứng nhanh, vọt lố thấp, sai số xác lập bằng không nếu chọn thông số phù hợp. Mục tiêu điều khiển của bộ PID là giảm độ vọt lố (POT), giảm thời gian xác lập (ts), triệt tiêu sai số xác lập và giảm dao động. 11 CHƯƠNG 2 GIỚI THIỆU PHẦN MỀM VÀ PHẦN CỨNG 2.1 Giới thiệu về MATLAB/SIMULINK MATLAB/SIMULINK là một chương trình viết cho máy tính PC hoạt động trong môi trường MS-DOS và môi trường WINDOWS nhằm hỗ trợ cho lập trình, các tính toán khoa học và kỹ thuật được thiết kế với công ty “The MATHWORKS”.

Thuật ngữ MATLAB được viết tắt của hai từ MATRIX và LABORATORY. MATLAB được điều khiển với các tập lệnh, tác động qua bàn phím. Nó cho phép tính toán số với ma trận, vẽ đồ thị hàm số hay biểu đồ thông tin, thực hiện thuật toán, tạo các giao diện người dùng và liên kết với những chương trình máy tính viết trên nhiều ngôn ngữ lập trình khác. Matlab giúp đơn giản hóa việc giải quyết các bài toán tính toán kỹ thuật so với các ngôn ngữ lập trình truyền thống như C, C++, và Fortran.

Các câu lệnh trong MATLAB rất mạnh và có những vấn đề chỉ cần một câu lệnh là đủ giải quyết bài toán. Mô phỏng trong MATLAB sẽ cho ta hình ảnh tọa độ không gian hai chiều (2D) và ba chiều (3D).1 Phần mềm MATLAB & SIMULINK SIMULINK là một phần mềm mở rộng của MATLAB (1 Toolbox của Matlab) dùng để mô hình hóa, mô phỏng và phân tích một hệ thống động. Nó cho phép mô tả hệ thống tuyến tính, hệ phi tuyến, các mô hình trong miền thời gian liên tục, hay gián đoạn hoặc một hệ gồm cả liên tục và gián đoạn. MATLAB/SIMULINK được sử dụng trong nhiều lĩnh vực, bao gồm xử lý tín hiệu và ảnh, truyền thông, thiết kế điều khiển tự động, đo lường kiểm tra, phân tích mô hình tài chính, hay tính toán sinh học.

Với hàng triệu kỹ sư và nhà khoa học làm việc trong môi trường công nghiệp cũng như ở môi trường hàn lâm, MATLAB/SIMULINK là ngôn ngữ của tính toán khoa học.2 Giới thiệu về board mạch ARM STM32F407 DISCOVERY 12 Board mạch STM32F407 Discovery là một loại kit thuộc họ vi điều khiển ARM. Dòng ARM Cortex KIT STM32F4 Discovery là một bộ xử lí thế hệ mới đưa ra một kiến trúc chuẩn cho nhu cầu đa dạng về công nghệ. Nó được ứng dụng vào rất nhiều thị trường khác nhau bao gồm các ứng dụng doanh nghiệp, mạng gia đình, cộng nghệ mạng không dây và các hệ thống ô tô. Board mạch STM32F407 Discovery có vi điều khiển chính là STM43F04VGT6 microcontroller tích hợp với chip 32-bit ARM Cortex-M4F, 1MB bộ nhớ Flash, 192Kb RAM.

Bo mạch tích hợp sẵn mạch nạp ST-LINK/V2 và các cảm biến khác như cảm biến gia tốc LIS302DL, bộ xử lý âm thanh MP45DT02, đèn LED thông báo trạng thái nguồn, nút nhấn, nút Reset.2 Board mạch ARM STM32F407 DISCOVERY 13 CHƯƠNG 3 HƯỚNG DẪN SỬ DỤNG THƯ VIỆN WAIJUNG TRONG MATLAB/SIMLINK 3.1 Chuyển đổi tín hiệu Analog sang Digital và Digital sang Analog 3.1 Giới thiệu chân ADC, DAC 3.1 Số lượng chân Số chân ADC để đọc tín hiệu điện áp từ thiết bị bên ngoài và số chân DAC gửi tín hiệu điện áp đến thiết bị bên ngoài được thể hiện ở hình bên dưới: Hình 3.1 Số lượng chân mô-đun ADC 3.2 Đặc tính điện áp • Đặc tính điện áp của mô-đun ADC - Điện áp chuyển đổi từ 0V đến VREF+ - Điện áp nguồn từ 1.6V • Đặc tính điện áp của mô-đun DAC - Điện áp cấp ra 0.6V 14 Nếu mắc LED theo mạch hình 3.17 thì LED sáng khi trạng thái “0”.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ