Bối cảnh và vấn đề nghiên cứu

Trong kỹ thuật điều khiển tự động, các bài toán điều khiển vị trí, tốc độ và các quá trình công nghiệp ngày càng đòi hỏi thuật toán xử lý phức tạp cùng tốc độ tính toán cao. Các nền tảng vi điều khiển truyền thống thường gặp giới hạn về dung lượng bộ nhớ, tần số xung nhịp và khả năng xử lý số thực khi triển khai các bộ điều khiển hiện đại. Nhằm giải quyết yêu cầu thực tiễn đó, nhóm sinh viên thuộc Trường Điện – Điện tử, Đại học Bách Khoa Hà Nội đã thực hiện đề tài Đồ án II: "Ứng dụng ARM STM32F4 Discovery và Matlab/Simulink trong thiết kế các bộ điều khiển", dưới sự hướng dẫn của ThS. Cao Thành Trung (thực hiện tháng 3/2023).

Đề tài tập trung vào việc nghiên cứu và làm chủ phương pháp thiết kế dựa trên mô hình (Model-Based Design) bằng cách kết hợp phần cứng vi điều khiển 32-bit hiệu năng cao với môi trường mô phỏng trực quan MATLAB/Simulink thông qua bộ công cụ Waijung Blockset. Các mục tiêu và nhiệm vụ nghiên cứu cụ thể bao gồm:

  1. Hệ thống hóa cơ sở lý thuyết điều khiển tự động từ kinh điển, hiện đại đến điều khiển thông minh và nguyên lý các bộ điều khiển vòng kín (PID, hồi tiếp trạng thái).
  2. Nghiên cứu cấu trúc phần cứng bo mạch vi điều khiển ARM STM32F407 Discovery và các công cụ phần mềm hỗ trợ (MATLAB/Simulink, phần mềm nạp ST-LINK/V2, phần mềm giao tiếp Terminal).
  3. Khai thác, cấu hình và kiểm thử toàn diện các khối chức năng trong thư viện Waijung Blockset để giao tiếp với các ngoại vi tích hợp trên chip STM32F4 (ADC, DAC, Digital I/O, Timer/Counter, PWM, Encoder Read, Timer IRQ, UART).
  4. Thiết lập hệ thống truyền nhận dữ liệu hai chiều thời gian thực giữa máy tính và vi điều khiển phục vụ giám sát và điều khiển tham số.

Đối tượng nghiên cứu chính là vi điều khiển STM32F407VGT6 thuộc dòng ARM Cortex-M4F và gói phần mềm Waijung Blockset. Phạm vi nghiên cứu giới hạn trong việc xây dựng các bài thí nghiệm kiểm chứng ngoại vi, đọc/xuất tín hiệu và xử lý giao tiếp phần cứng tại phòng thí nghiệm.


Cơ sở lý thuyết và phương pháp

Khung lý thuyết và mô hình điều khiển

Đề tài tổng hợp ba giai đoạn phát triển của lý thuyết điều khiển:

  • Điều khiển kinh điển (trước năm 1960): Mô tả hệ thống trong miền tần số (Fourier) và mặt phẳng phức $s$ (Laplace), áp dụng chủ yếu cho hệ thống tuyến tính bất biến theo thời gian (LTI) một ngõ vào – một ngõ ra (SISO). Các công cụ phân tích gồm biểu đồ Nyquist, biểu đồ Bode, phương pháp quỹ đạo nghiệm số (QĐNS) và các khâu hiệu chỉnh sớm/trễ pha, PID.
  • Điều khiển hiện đại (từ năm 1960): Phân tích trong miền thời gian dựa trên mô hình không gian trạng thái, mô tả các biến trạng thái nội tại, áp dụng tốt cho hệ nhiều ngõ vào – nhiều ngõ ra (MIMO) và hệ biến đổi theo thời gian. Bộ điều khiển tiêu biểu là hồi tiếp trạng thái với luật điều khiển $u(t) = r(t) - K x(t)$, trong đó $K = [k_1, k_2, \dots, k_n]$ là vector hồi tiếp được xác định qua phân bố cực hoặc điều khiển tối ưu LQR.
  • Điều khiển thông minh: Áp dụng logic mờ (Fuzzy Logic), mạng thần kinh nhân tạo (Neural Network) và thuật toán di truyền (GA) cho các đối tượng phi tuyến phức tạp không xác định được chính xác mô hình toán học.

Cấu trúc cơ bản của hệ thống điều khiển được phân tích gồm 3 thành phần: thiết bị đo lường/cảm biến (thu thập thông tin), bộ điều khiển (xử lý sai số $e(t) = r(t) - cht(t)$ và tạo tín hiệu điều khiển $u(t)$) và đối tượng điều khiển (chịu tác động để tạo ngõ ra $c(t)$). Mục tiêu thiết kế bộ điều khiển PID là tối ưu hóa đáp ứng quá độ: giảm độ vọt lố (POT), giảm thời gian xác lập ($t_s$), giảm dao động và triệt tiêu sai số xác lập.

Phương pháp nghiên cứu

Đề tài sử dụng phương pháp thiết kế hệ thống kỹ thuật kết hợp thực nghiệm:

  • Phương pháp dựa trên mô hình (Model-Based Design): Sử dụng các khối chức năng đồ họa của Simulink để mô hình hóa giải thuật, sau đó tự động biên dịch và nạp xuống phần cứng mà không cần lập trình mã nguồn C thuần túy.
  • Phương pháp đo đạc - thực nghiệm: Đấu nối phần cứng trên breadboard, sử dụng biến trở, LED, nút nhấn, bộ mã hóa xung (encoder) và mạch chuyển đổi USB-UART để kiểm chứng tín hiệu đầu vào/đầu ra, hiển thị dạng sóng qua khối Scope và phần mềm Terminal.

Thiết kế và triển khai kỹ thuật

Hệ thống được xây dựng dựa trên sự liên kết chặt chẽ giữa phần cứng xử lý nhúng và môi trường phần mềm máy tính.

Thành phần Đặc tính kỹ thuật / Cấu hình sử dụng Chức năng trong hệ thống
Vi điều khiển STM32F407VGT6 (ARM 32-bit Cortex-M4F, 1MB Flash, 192KB RAM) Đơn vị xử lý trung tâm, thực thi thuật toán điều khiển và điều khiển ngoại vi
Bo mạch phát triển STM32F407 Discovery tích hợp sẵn ST-LINK/V2, cảm biến LIS302DL, MP45DT02 Môi trường phần cứng thực nghiệm, hỗ trợ nạp và gỡ lỗi trực tiếp qua USB
Mạch chuyển đổi UART Module USB-UART CP2102 (chân Tx nối Rx, chân Rx nối Tx, chung Mass) Cầu nối truyền thông nối tiếp không đồng bộ giữa STM32F4 và máy tính
Thư viện nhúng Waijung Blockset (phiên bản waijung17_03a) tích hợp trong Simulink Cung cấp hệ thống khối giao tiếp trực tiếp với các ngoại vi STM32F4
Môi trường máy tính MATLAB/Simulink, phần mềm Terminal Thiết kế mô hình, giám sát dữ liệu thời gian thực (chế độ vô hạn inf)

Nhóm tác giả thiết lập quy trình triển khai chuẩn từ cấu hình khối Target Setup, thiết lập thông số ngoại vi, mô phỏng trên Simulink, sinh mã tự động nạp xuống chip qua giao tiếp ST-LINK/V2 và kiểm tra dữ liệu phản hồi.


Nội dung chính theo từng chương

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

Chương này tập trung trình bày lịch sử phát triển lý thuyết điều khiển tự động qua ba thời kỳ (kinh điển, hiện đại, thông minh). Tác giả định nghĩa bản chất của điều khiển là quá trình thu nhận thông tin, xử lý và tác động lên hệ thống để đáp ứng đạt mục đích định trước. Cấu trúc toán học của hệ thống hồi tiếp vòng kín được phân tích chi tiết. Chương 1 cũng phân loại hai phương pháp thiết kế chính: hiệu chỉnh nối tiếp (áp dụng cho bộ điều khiển sớm/trễ pha, PID thông qua biểu đồ Bode hoặc quỹ đạo nghiệm số) và điều khiển hồi tiếp trạng thái (áp dụng phương pháp phân bố cực và LQR).

Chương 2: Giới thiệu phần mềm và phần cứng

Chương 2 giới thiệu tổng quan về hai công cụ cốt lõi:

  • MATLAB/Simulink: Phần mềm tính toán kỹ thuật của hãng The MathWorks, hỗ trợ xử lý ma trận, mô phỏng hệ thống động tuyến tính/phi tuyến trong miền thời gian liên tục hoặc rời rạc.
  • Bo mạch ARM STM32F407 Discovery: Trang bị chip 32-bit ARM Cortex-M4F, tích hợp 1MB Flash, 192KB RAM, mạch nạp ST-LINK/V2, các cảm biến tích hợp (gia tốc LIS302DL, âm thanh MP45DT02), hệ thống LED người dùng và các cổng mở rộng I/O.

Chương 3: Hướng dẫn sử dụng thư viện Waijung trong Matlab/Simulink

Đây là chương nội dung thực nghiệm trọng tâm của đồ án, được chia thành 4 phân mục kỹ thuật:

1. Chuyển đổi tín hiệu Analog - Digital (ADC) và Digital - Analog (DAC)

  • Thông số: Điện áp chuyển đổi của ADC từ $0\text{V}$ đến $V_{REF+}$, điện áp nguồn hoạt động từ $1.6\text{V}$; mô-đun DAC cấp điện áp ngõ ra danh định $0.6\text{V}$.
  • Thí nghiệm: Sử dụng khối Regular ADC đọc giá trị điện áp từ biến trở để điều khiển tốc độ chớp tắt của LED; cấu hình khối Regular DAC để phát các dạng tín hiệu tuần hoàn (sóng sin, sóng tam giác) tần số cao và quan sát dạng sóng.

2. Sử dụng Digital Input/Output (GPIO)

  • Đặc tính điện: Phân tích hai cấu hình mạch ngõ ra: Push-Pull (đóng ngắt tần số cao, điều khiển trực tiếp) và Open-Drain (cho phép cấp nguồn ngoài $V_{ext}$ cao hơn $V_{DD}$). Dòng điện định mức tối đa qua các chân STM32F4 là $25\text{ mA}$ (riêng các chân PC13–PC15 giới hạn ở $3\text{ mA}$). Để bảo vệ LED, mạch sử dụng điện trở hạn dòng $R = 660,\Omega$.
  • Cấu hình: Khối Digital OutputDigital Input cho phép tùy chọn các Port từ A đến I, tần số lấy mẫu ($2, 25, 50, 100\text{ Hz}$).
  • Thí nghiệm: Điều chỉnh thời gian sáng LED qua khối Pulse Generator với chu kỳ $T = 4\text{ s}$ ($t_{ON} = 1\text{ s}, t_{OFF} = 3\text{ s}$, độ rộng xung $25%$); thí nghiệm đọc trạng thái nút nhấn qua Digital Input để bật/tắt LED ngõ ra.

3. Sử dụng Timer/Counter, PWM, Encoder và Ngắt (Timer IRQ)

  • Timer/Counter: Bộ đếm sử dụng thanh ghi 16-bit, hỗ trợ các chế độ đếm lên (Up counter), đếm xuống (Down counter), đếm lên-xuống (Up-Down counter) và bộ chia tần số Prescaler ($0$ đến $65535$). Vi điều khiển STM32F407 có 17 mô-đun liên kết tín hiệu Clock, trong đó 14 mô-đun phục vụ chức năng Timer.
  • Điều chế độ rộng xung (Basic PWM): Hoạt động dựa trên việc so sánh giá trị thanh ghi Counter với tín hiệu đặt hoặc sóng tam giác. Thí nghiệm thực hiện biến thiên độ rộng xung bằng biến trở kết nối tại chân PA5 để điều chỉnh độ sáng 3 kênh LED tại các chân PA0, PA1, PA2.
  • Khối Encoder Read: Phục vụ đo vị trí góc và tốc độ động cơ dựa trên đĩa mã hóa quang học. Tín hiệu hai kênh A và B lệch pha nhau $90^\circ$ giúp xác định chiều quay (thuận CW hoặc nghịch CCW). Hệ thống hỗ trợ nhân tần số xung ở các mức $\times 1, \times 2, \times 4$. Công thức xác định tổng số xung đếm được trên một vòng quay: $$\text{Số xung} = [0, \text{PPR} \times 4] \quad (\text{khi dùng cả 2 kênh A và B})$$ $$\text{Số xung} = [0, \text{PPR} \times 2] \quad (\text{khi dùng 1 trong 2 kênh})$$
  • Khối Timer IRQ (Ngắt Timer): STM32F407 hỗ trợ 82 nguồn ngắt. Thí nghiệm thiết lập 4 khối Timer IRQ (sử dụng TIM2 đến TIM5) với mức độ ưu tiên (Priority) khác nhau để kích hoạt các chương trình con (Subsystem) điều khiển trạng thái LED.

4. Sử dụng cổng giao tiếp UART và Host Serial

  • UART: Vi điều khiển hỗ trợ 6 mô-đun UART. Tốc độ baud tối đa đạt $10.5\text{ Mbps}$ đối với mô-đun 1 và 6; đạt $5.25\text{ Mbps}$ đối với các mô-đun 2, 3, 4, 5. Các thông số cấu hình gồm Data bits (8 bit), Parity (None/Odd/Even), Stop bits (0.5/1/1.5/2), chế độ truyền Blocking (chờ gửi xong) hoặc Non-blocking (truyền đồng thời), gói dữ liệu (ASCII, Binary, String Buffer), ký tự kết thúc (CR, LF, CRLF, None).
  • Thí nghiệm truyền dữ liệu: Sử dụng khối UART Tx truyền dữ liệu định dạng ASCII từ STM32F4 lên máy tính qua chân D8 (Tx) và D9 (Rx) ở tốc độ $115200\text{ bps}$, hiển thị kết quả bằng phần mềm Terminal.
  • Giao tiếp Host Serial hai chiều: Xây dựng đồng thời 2 mô hình Simulink: mô hình nạp xuống bo mạch STM32F4 và mô hình Host chạy ở chế độ thời gian thực vô hạn (inf) trên máy tính. Người dùng điều chỉnh thanh trượt (Slider) trên giao diện Simulink máy tính, giá trị được truyền xuống bo mạch qua khối Host Serial Tx/Rx và phản hồi ngược lại đồ thị Scope trên máy tính.

Chương 4: Kết luận

Tổng kết các kết quả đạt được về mặt làm chủ công cụ và đề xuất định hướng phát triển thuật toán điều khiển nâng cao trên mô hình thực tế.


Kết quả và đóng góp

Kết quả thực nghiệm cụ thể

Đề tài đã hoàn thành việc xây dựng và kiểm chứng thực nghiệm toàn bộ các mô hình Simulink giao tiếp với phần cứng STM32F407 Discovery:

Ngoại vi / Chức năng Khối thư viện Waijung Cấu hình & Chân kết nối Kết quả thực nghiệm ghi nhận
ADC / Biến trở Regular ADC Kênh ADC, điện áp $0 - V_{REF+}$ Đọc chính xác điện áp analog, điều chỉnh tần số chớp tắt LED theo vị trí góc xoay biến trở
DAC / Phát sóng Regular DAC Điện áp xuất $0.6\text{ V}$ Tạo và xuất thành công dạng sóng tuần hoàn sin và xung tam giác tần số cao
Digital Output Digital Output Cổng A-I, mạch Push-Pull, $R = 660,\Omega$ Điều khiển LED chớp tắt với chu kỳ $4\text{ s}$, độ rộng xung $25%$ theo đúng dạng sóng từ Pulse Generator
Digital Input Digital Input Cổng A-I, tần số $2 - 100\text{ Hz}$ Đọc trạng thái nút nhấn: LED sáng khi nhấn nút và tắt ngay khi nhả nút
Điều chế PWM Basic PWM Chân PA0, PA1, PA2, nhận áp từ PA5 Thay đổi độ sáng LED tuyến tính theo điện áp biến trở; tạo hiệu ứng sáng dần/tắt dần trên các kênh
Đọc Encoder Encoder Read Kênh A, B; chế độ $\times 1, \times 2, \times 4$ Xác định chính xác chiều quay (CW/CCW) và tính toán độ phân giải góc quay lên tới $0.5^\circ$ (với đĩa 180 xung)
Ngắt Timer Timer IRQ Mô-đun TIM2 - TIM5, chia mức Priority Kích hoạt chính xác chương trình con đọc và điều khiển LED theo chu kỳ ngắt độc lập
Giao tiếp UART UART Setup, UART Tx Module 3, chân Tx (D8), Rx (D9), $115200\text{ bps}$ Gửi chuỗi ký tự ASCII từ STM32F4 hiển thị nguyên vẹn trên màn hình phần mềm Terminal
Host Serial 2 chiều Host Serial Setup/Tx/Rx Cổng COM ảo qua CP2102, chế độ chạy inf Thay đổi giá trị Slider trên Simulink máy tính làm thay đổi đáp ứng phần cứng và vẽ lại đồ thị đồng bộ

Đóng góp kỹ thuật của đề tài

  1. Chuẩn hóa phương pháp lập trình đồ họa cho ARM Cortex-M4: Cung cấp hướng dẫn từng bước từ cài đặt thư viện Waijung (waijung17_03a), cấu hình driver ST-LINK/V2, đến cách lấy và cấu hình từng khối chức năng trong Simulink Library Browser.
  2. Tối ưu hóa thời gian phát triển hệ thống nhúng: Thay thế phương thức viết mã lệnh C truyền thống phức tạp bằng mô hình hóa trực quan, giúp người nghiên cứu tập trung vào thuật toán điều khiển thay vì cấu hình thanh ghi phần cứng mức thấp.

Hạn chế và hướng nghiên cứu tiếp

  • Hạn chế: Các bài thí nghiệm trong đồ án chủ yếu dừng lại ở mức kiểm thử chức năng ngoại vi và thuật toán cơ bản trên các tải giả định (LED, biến trở, tín hiệu máy tính). Đề tài chưa ghép nối và điều khiển trực tiếp trên các đối tượng phần cứng công nghiệp thực tế (động cơ servo, động cơ BLDC, hệ thống bồn nước hay cánh tay robot).
  • Hướng phát triển:
    • Ứng dụng các bộ điều khiển hiện đại và thông minh đã nêu trong cơ sở lý thuyết (bộ điều khiển mờ, mạng nơ-ron, giải thuật di truyền) vào mô hình nhúng Simulink.
    • Thiết kế bo mạch công suất và mạch giao tiếp thực tế để điều khiển các cơ cấu chấp hành trong các bài toán điều khiển vị trí và tốc độ thực tế.

Giá trị tham khảo

Tài liệu là nguồn tham khảo hữu ích cho:

  • Sinh viên ngành Kỹ thuật Điều khiển & Tự động hóa, Điện tử - Viễn thông, Cơ điện tử: Sử dụng làm tài liệu thực hành môn học Hệ thống nhúng, Kỹ thuật vi xử lý và Đồ án thiết kế hệ thống điều khiển tự động.
  • Kỹ sư phát triển hệ thống nhúng: Tham khảo phương pháp Model-Based Design để rút ngắn thời gian tạo mẫu nhanh (rapid prototyping) trên dòng vi điều khiển STM32F4.
  • Phần đáng tham khảo nhất: Chương 3 và phần Phụ lục với các bảng thiết lập thông số chi tiết của từng khối ngoại vi (ADC, PWM, Encoder, UART) và quy trình cài đặt, cấu hình driver phần cứng.

Câu hỏi thường gặp

1. Thư viện Waijung Blockset đóng vai trò gì trong việc lập trình bo mạch STM32F4?

Waijung Blockset là bộ công cụ mở rộng tích hợp vào MATLAB/Simulink, cho phép người dùng cấu hình các ngoại vi của STM32F4 (như GPIO, ADC, DAC, Timer, UART) dưới dạng các khối đồ họa. Khi chạy mô hình, Waijung tự động biên dịch sơ đồ khối Simulink thành mã nguồn C và nạp trực tiếp xuống chip thông qua mạch nạp ST-LINK/V2 mà không cần viết mã thủ công.

2. Dòng điện tối đa cho phép trên các chân GPIO của STM32F407 là bao nhiêu và nhóm tác giả bảo vệ LED bằng cách nào?

Các chân ngõ ra của STM32F4 chịu được dòng điện tối đa là $25\text{ mA}$ (riêng các chân PC13, PC14, PC15 bị giới hạn ở mức $3\text{ mA}$). Trong các thí nghiệm ngõ ra Digital Output Push-Pull điều khiển LED, nhóm tác giả đã mắc nối tiếp điện trở $R = 660,\Omega$ với LED để hạn chế dòng điện, tránh gây quá dòng làm hỏng vi điều khiển.

3. Khối Encoder Read xác định chiều quay và tăng độ phân giải góc quay của động cơ theo nguyên lý nào?

Khối Encoder Read xác định chiều quay dựa vào độ lệch pha $90^\circ$ giữa hai kênh tín hiệu xung vuông A và B: nếu tín hiệu kênh A dẫn trước kênh B thì động cơ quay thuận (CW), ngược lại là quay nghịch (CCW). Độ phân giải góc quay được nâng cao bằng cách đếm tất cả các cạnh lên và cạnh xuống của cả 2 kênh (chế độ $\times 4$), cho phép tạo ra số xung đếm tối đa bằng $\text{PPR} \times 4$ trên mỗi vòng quay.

4. Tốc độ truyền thông nối tiếp tối đa của các mô-đun UART trên STM32F407 được quy định như thế nào?

Theo số liệu cấu hình khối UART Setup trong tài liệu, các mô-đun UART 1 và UART 6 hỗ trợ tốc độ truyền dữ liệu cao nhất lên tới $10.5\text{ Mbps}$, trong khi các mô-đun UART 2, 3, 4, 5 hỗ trợ tốc độ truyền tối đa là $5.25\text{ Mbps}$.

5. Thí nghiệm Host Serial thực hiện việc truyền nhận dữ liệu hai chiều thời gian thực giữa máy tính và STM32F4 như thế nào?

Thí nghiệm sử dụng hai mô hình Simulink đồng thời: một mô hình được nạp xuống bo mạch STM32F4 đóng vai trò thiết bị nhận/phát phần cứng, và một mô hình chạy trực tiếp trên máy tính ở chế độ thời gian vô hạn (inf). Thông qua module USB-UART CP2102 và các khối Host Serial Tx/Rx, người dùng có thể kéo thanh trượt (Slider) trên máy tính để gửi giá trị xuống STM32F4 và nhận tín hiệu phản hồi vẽ trực tiếp lên đồ thị Scope thời gian thực.


Kết luận

Báo cáo Đồ án II của nhóm sinh viên Trường Điện – Điện tử, Đại học Bách Khoa Hà Nội đã nghiên cứu và triển khai thành công giải pháp ứng dụng bo mạch ARM STM32F407 Discovery kết hợp môi trường MATLAB/Simulink và thư viện Waijung Blockset. Đề tài đã xây dựng và kiểm chứng hoàn chỉnh các mô hình mô phỏng - thực nghiệm cho toàn bộ các ngoại vi quan trọng bao gồm ADC, DAC, GPIO, PWM, Timer ngắt, đọc Encoder và giao tiếp UART/Host Serial hai chiều. Kết quả này cung cấp nền tảng kỹ thuật vững chắc để tiếp tục phát triển các bộ điều khiển tự động nâng cao trên các hệ thống cơ điện tử thực tế.