Bối cảnh và vấn đề nghiên cứu
Trong kỹ thuật điều khiển tự động, điều khiển động cơ một chiều (DC Motor) là một trong những bài toán kinh điển và ứng dụng nền tảng. Động cơ DC được sử dụng rộng rãi trong các dây chuyền sản xuất công nghiệp và các mô hình robot học thuật (như các cuộc thi FanLed 2009 của Câu lạc bộ Nghiên cứu Khoa học Khoa Điện - Điện tử hay cuộc thi Robocon) nhờ đặc tính cơ tuyến tính, dải điều chỉnh vận tốc rộng và khả năng sinh mômen khởi động lớn ở vùng vận tốc thấp.
Đồ án tốt nghiệp "Điều khiển động cơ DC với PID số trên DSPIC 33FJ64GP802" do nhóm sinh viên Lê Văn Quý, Đinh Quang Trường và Trần Văn Vinh thực hiện dưới sự hướng dẫn của TS. Huỳnh Thái Hoàng (Khoa Điện - Điện tử). Đề tài ra đời nhằm giải quyết những hạn chế cố hữu của các bộ điều khiển PID tương tự (analog). Các hệ thống analog dùng mạch khuếch đại thuật toán (Op-Amp), điện trở, tụ điện và biến trở thường có phần cứng cồng kềnh, dễ bị nhiễu tác động (đặc biệt ở mạch công suất cầu H), độ chính xác suy giảm và không hỗ trợ cơ chế tự động hiệu chỉnh thông số. Do đó, việc ứng dụng bộ điều khiển tín hiệu số (Digital Signal Controller - DSC) chuyên dụng kết hợp với giải thuật PID số hóa là giải pháp kỹ thuật cần thiết để nâng cao độ chính xác và tính linh hoạt trong quá trình vận hành.
Mục tiêu và nhiệm vụ nghiên cứu của đồ án bao gồm:
- Nghiên cứu kiến trúc phần cứng, cấu hình hệ thống và tập lệnh của vi điều khiển tín hiệu số dsPIC 33FJ64GP802.
- Xây dựng cơ sở lý thuyết điều khiển PID liên tục và số hóa giải thuật PID để thực thi trên môi trường vi điều khiển.
- Thiết kế, thi công mạch phần cứng hoàn chỉnh gồm khối xử lý trung tâm, khối nguồn, khối công suất cầu H cách ly quang, khối hiển thị LCD, khối nút nhấn và khối giao tiếp máy tính.
- Đọc phản hồi vị trí và vận tốc từ bộ mã hóa quang học tương đối (incremental optical encoder) bằng kỹ thuật ngắt ngoài.
- Xây dựng chương trình giao diện người dùng (GUI) trên phần mềm Matlab, kết nối qua cổng truyền thông nối tiếp RS-232 để giám sát đồ thị đáp ứng thời gian thực, thiết lập điểm đặt (vận tốc, vị trí, sóng sin) và hiệu chỉnh trực tiếp các thông số bộ điều khiển.
Đối tượng và phạm vi nghiên cứu:
- Đối tượng điều khiển: Động cơ điện một chiều kích từ độc lập tích hợp bộ mã hóa quang học tương đối có độ phân giải 240 xung/vòng.
- Phạm vi phần cứng: Họ vi điều khiển 16-bit dsPIC 33FJ64GP802 (Microchip), đóng gói 28 chân; mạch nạp PICkit 2; IC công suất cầu H 33887; IC chuyển đổi mức điện áp MAX232.
- Phạm vi thuật toán: Giải thuật điều khiển PID vị trí và PID vận tốc số hóa; phạm vi khảo sát vận tốc động cơ từ dưới 100 vòng/phút đến 800 vòng/phút, tần số ngắt encoder cực đại khoảng 10,2 kHz (tương ứng tốc độ động cơ 50 vòng/giây).
Cơ sở lý thuyết và phương pháp
Cơ sở lý luận của đồ án dựa trên tài liệu "Lý Thuyết Điều Khiển Tự Động" của TS. Huỳnh Thái Hoàng, tập trung vào mô hình toán học của động cơ điện một chiều và các giải thuật điều khiển hồi tiếp.
Mô hình toán học của động cơ DC được mô tả thông qua hai phương trình vi phân cơ bản:
- Phương trình cân bằng điện áp mạch phần ứng:
$$U_ư(t) = R_ư \cdot i_ư(t) + L_ư \frac{di_ư(t)}{dt} + E_ư(t)$$
Trong đó $E_ư(t) = K \cdot \Phi \cdot \omega(t)$ là sức phản điện động, $U_ư$ là điện áp phần ứng, $R_ư$ là điện trở phần ứng, $L_ư$ là điện cảm phần ứng, $\omega$ là vận tốc góc của trục động cơ, $K$ là hệ số cấu tạo và $\Phi$ là từ thông kích từ.
- Phương trình chuyển động quay theo định luật II Newton:
$$M(t) = M_t(t) + B \cdot \omega(t) + J \frac{d\omega(t)}{dt}$$
Trong đó $M(t) = K \cdot \Phi \cdot i_ư(t)$ là mômen điện từ sinh ra bởi động cơ, $M_t$ là mômen tải, $B$ là hệ số ma sát nhớt, $J$ là mômen quán tính của phần quay.
Hàm truyền đạt của bộ điều khiển PID liên tục trong miền tần số Laplace có dạng:
$$G_{PID}(s) = K_P + \frac{K_I}{s} + K_D s = K_P \left(1 + \frac{1}{T_I s} + T_D s\right)$$
Các phương pháp xác định tham số bộ điều khiển được tác giả trình bày bao gồm:
- Phương pháp thực nghiệm Ziegler - Nichols:
- Cách 1: Áp dụng cho đối tượng có đáp ứng quá độ hệ hở dạng chữ S (như tốc độ động cơ).
- Cách 2: Áp dụng cho đối tượng có khâu tích phân lý tưởng (như vị trí góc quay). Tăng hệ số khuếch đại $K$ của hệ kín đến giá trị giới hạn $K_{gh}$ làm hệ thống xuất hiện dao động xác lập với chu kỳ $T_{gh}$.
- Phương pháp kinh nghiệm thực tế (dựa trên kinh nghiệm thi đấu Robocon của tác giả):
- Thiết lập ban đầu $K_I = 0$ và $K_D = 0$.
- Tăng dần $K_P$ cho đến khi đồ thị vận tốc trên Matlab xuất hiện dao động. Giá trị $K_P$ làm việc được chọn bằng một nửa giá trị làm xuất hiện dao động.
- Giá trị $K_I$ được tính bằng 0,6 lần giá trị $K_P$ gây dao động.
- Giá trị $K_D$ được tính bằng 0,2 lần giá trị $K_P$ gây dao động.
Về phương pháp số hóa giải thuật:
- Phương pháp rời rạc hóa xấp xỉ hình chữ nhật: Đạo hàm được tính theo sai phân lùi $\frac{de}{dt} \approx \frac{e(k) - e(k-1)}{h}$, tích phân tính bằng phương pháp cộng dồn diện tích các khối chữ nhật $I(k) = I(k-1) + h \cdot e(k)$ với $h$ là chu kỳ lấy mẫu. Thực nghiệm cho thấy phương pháp này đáp ứng tốt ở dải tốc độ từ 100 đến 800 vòng/phút, nhưng gây dao động lớn khi tốc độ đặt nhỏ hơn 100 vòng/phút.
- Phương pháp biến đổi Z (Chương 8, Lý thuyết điều khiển rời rạc): Tác giả áp dụng hàm truyền rời rạc:
$$G_{PID}(z) = \frac{U(z)}{E(z)} = K_P + \frac{K_I}{1 - z^{-1}} + K_D (1 - z^{-1})$$
Phương trình sai phân rút ra để tính tín hiệu điều khiển $u(k)$ (độ rộng xung PWM) khắc phục được hiện tượng dao động ở vùng vận tốc thấp, giúp hệ thống ổn định và giảm vọt lố.
Thiết kế và triển khai hệ thống kỹ thuật
Hệ thống được thiết kế theo cấu trúc phần cứng mô-đun hóa, vẽ trên phần mềm OrCAD 9.2 và lập trình nhúng bằng trình biên dịch C MPLAB.
+-------------------------------------------------------------+
| Máy tính PC |
| (Giao diện Matlab GUI / RS-232) |
+------------------------------+------------------------------+
| Cổng COM / DB9 (MAX232)
v
+-------------------------------------------------------------+
| Khối xử lý trung tâm |
| (dsPIC 33FJ64GP802 - 40 MIPS) |
+-------+----------------------+----------------------+-------+
| | |
v v v
+--------------+ +--------------+ +----------------+
| Khối LCD | | Khối nút bấm | | Khối công suất |
| (2 hàng x 20)| | (4 nút) | | (Opto + 33887) |
+--------------+ +--------------+ +-------+--------+
|
v
+----------------+
| Động cơ DC |
+-------+--------+
|
v
+----------------+
| Encoder quang |
| (240 xung/v) |
+-------+--------+
|
Tín hiệu phản hồi (Kênh A: INT2, Kênh B: I/O) |
+-------+
-
Khối xử lý trung tâm (Main Board):
- Sử dụng vi điều khiển dsPIC 33FJ64GP802 gắn trên bo mạch riêng kết nối qua 2 hàng rào cắm (header cái 14 chân) giúp dễ thay thế khi có sự cố.
- Mạch dao động dùng thạch anh ngoài kết hợp bộ nhân tần số PLL cấu hình qua thanh ghi OSCCON: tần số dao động sau PLL đạt 80 MHz, chu kỳ thực thi lệnh đạt 40 MIPS (chu kỳ máy $0,05,\mu\text{s}$).
- Mạch Reset chân MCLR gồm nút nhấn, điện trở treo $10,\text{k}\Omega$, điện trở hạn dòng $470,\Omega$ và tụ lọc $0,1,\mu\text{F}$.
- Tụ ổn định điện áp nối giữa chân VCAP/VDDCORE và mass; các tụ lọc nguồn $0,1,\mu\text{F}$ và tụ hóa $10,\mu\text{F}$ được bố trí sát các cặp chân VDD, VSS, AVDD, AVSS.
-
Khối công suất:
- Sử dụng IC cầu H tích hợp MC33887 (33887) cấp nguồn động lực 12V DC.
- Cách ly hoàn toàn mạch điều khiển logic và mạch công suất thông qua 2 bộ cách ly quang (opto B621 / OPB700AL). Các tín hiệu điều khiển gồm xung PWM và tín hiệu đảo chiều (REL).
- Tích hợp diode chống dòng ngược và tụ hóa lọc nguồn $47,\mu\text{F}/50\text{V}$.
-
Khối nguồn và khối nạp:
- Khối nguồn dùng IC biến đổi điện áp tuyến tính IL1117-3.3, hạ áp từ nguồn 5V ngoài xuống 3,3V cấp cho vi điều khiển dsPIC.
- Khối nạp tích hợp cổng kết nối PICKit 2 thông qua các đường tín hiệu MCLR, 3V3, GND, PGED1 và PGEC1.
-
Khối truyền thông và giao tiếp ngoại vi:
- Khối UART dùng IC MAX232 và các tụ $10,\mu\text{F}$ để chuyển đổi mức điện áp TTL/CMOS sang chuẩn RS-232, kết nối qua cổng DB9 tới máy tính.
- Khối hiển thị sử dụng màn hình LCD 2 hàng 20 chân để theo dõi các giá trị $K_P, K_I, K_D$ và tốc độ động cơ.
- Khối nút nhấn gồm 4 phím: Mode (chọn chế độ), Increase (tăng), Decrease (giảm) và Enter (xác nhận).
-
Thuật toán đọc bộ mã hóa (Encoder) và điều khiển động cơ:
- Sử dụng bộ mã hóa quang học tương đối với 3 kênh ra: Kênh A, Kênh B (lệch pha nhau $90^\circ$) và Kênh I (phát 1 xung mỗi vòng quay). Độ phân giải đĩa quay là 240 xung/vòng.
- Tín hiệu kênh A được nối vào ngắt ngoài INT2, kênh B nối vào một chân I/O số thông thường. Khi có cạnh xuống tại chân INT2, chương trình phục vụ ngắt (ISR) kiểm tra mức logic tại kênh B: nếu kênh B ở mức thấp thì tăng biến đếm xung (quay thuận), nếu kênh B ở mức cao thì giảm biến đếm xung (quay nghịch).
- Tại vận tốc cực đại 50 vòng/giây, tần số ngắt ngoài sinh ra là: $240 \times 50 = 10,2,\text{kHz}$, hoàn toàn nằm trong năng lực xử lý của chip 40 MIPS.
-
Giao diện phần mềm trên máy tính (Matlab GUI):
- Cung cấp 2 chế độ điều khiển: Mode PID (cho phép chọn điều khiển vận tốc theo đơn vị vòng/phút hoặc vị trí theo số xung) và Mode Sin (nhập tần số sóng mong muốn).
- Khối hiệu chỉnh tham số cho phép trượt thanh kéo (slider) để thay đổi trực tiếp $K_P, K_I, K_D$.
- Đồng bộ hai chiều: Khi người dùng chỉnh thông số bằng nút bấm phần cứng, giá trị trên GUI cập nhật tức thời và ngược lại.
- Khối trạng thái và vẽ đồ thị: Hiển thị trạng thái cổng COM, thời gian chạy, số byte nhận được và vẽ đường cong đáp ứng vận tốc/vị trí thời gian thực.
Nội dung chính theo từng chương
Chương I: Giới thiệu về dsPIC 33FJ64GP802
Chương I trình bày tổng quan cấu trúc phần cứng và các khối ngoại vi tích hợp của họ vi điều khiển 16-bit dsPIC 33F, tập trung vào mã chip dsPIC 33FJ64GP802:
- Cấu trúc CPU Harvard với hai bus dữ liệu riêng biệt X data bus và Y data bus, tích hợp bộ nhớ RAM DMA.
- Bộ dao động linh hoạt với 7 chế độ chọn xung nhịp; bộ nhân tần số PLL cho phép nhân tần số để vi điều khiển đạt tốc độ xử lý tối đa 40 MIPS tại tần số dao động 80 MHz từ thạch anh ngoài.
- Tổ chức bộ nhớ: Bộ nhớ chương trình Flash 64 Kbyte (24-bit word) và bộ nhớ dữ liệu RAM 16 Kbyte. Tác giả lưu ý cấu trúc sắp xếp word chẵn (word-aligned); các lệnh truy xuất word không thẳng hàng sẽ gây lỗi địa chỉ phần cứng.
- Hệ thống ngoại vi: 5 khối Timer 16-bit (phân thành loại A, B, C; có thể ghép cặp Timer B và Timer C thành Timer 32-bit); hệ thống ngắt với 126 vector ngắt và 7 mức ưu tiên lập trình được; khối truyền thông nối tiếp UART với bộ tạo tốc độ Baud 16-bit tích hợp (tính toán tốc độ baud 9600 tại $F_{CY} = 4,\text{MHz}$ cho giá trị thanh ghi UxBRG = 25 với sai số chỉ 0,16%).
Bảng so sánh thông số phần cứng giữa dsPIC 33FJ64GP802 với các dòng vi điều khiển thông dụng:
| Thông số kỹ thuật |
8051 |
PIC 16F690 |
dsPIC 33FJ64GP802 |
| Độ rộng từ dữ liệu |
8-bit |
8-bit |
16-bit |
| Bộ nhớ Flash chương trình |
4 Kbyte |
4 Kbyte |
64 Kbyte |
| Bộ nhớ RAM / SRAM |
128 byte |
256 byte |
16 Kbyte |
| Bộ nhớ EEPROM |
Không có |
256 byte |
Không có |
| Số chân vào/ra (I/O pins) |
32 |
18 |
21 |
| Kênh chuyển đổi A/D |
0 |
12 |
10 (10-bit / 12-bit) |
| Tốc độ thực thi tối đa |
1 MIPS |
5 MIPS |
40 MIPS |
| Số bộ định thời (Timer) |
2 |
3 |
5 (16-bit) |
| Số nguồn ngắt (Interrupts) |
6 |
4 |
49 |
| Số chân PWM |
0 |
1 |
4 |
| Mô-đun truyền thông |
1 UART |
1 UART, 1 SPI, 1 I2C |
2 UART, 2 SPI, 1 ECAN, 1 I2C |
Chương II: Giải thuật điều khiển PID & điều khiển PID số
Chương II hệ thống hóa lịch sử phát triển và bản chất toán học của thuật toán PID:
- Phân tích cơ chế tác động của ba thành phần P (tỉ lệ), I (tích phân) và D (vi phân) thông qua bài toán điều khiển vị trí của xe chuyển động: thành phần P tạo lực đẩy ban đầu nhưng dễ gây vọt lố; thành phần D đóng vai trò lực "thắng" cản trở tốc độ biến thiên sai số để dập tắt dao động; thành phần I đảm nhận việc cộng dồn sai số theo thời gian nhằm triệt tiêu hoàn toàn sai số xác lập tĩnh (steady-state error).
- Trình bày bảng tính toán tham số bộ điều khiển P, PI, PID theo phương pháp Ziegler - Nichols cho cả hệ hở (đáp ứng hình chữ S) và hệ kín (dao động giới hạn):
| Loại bộ điều khiển |
$K_P$ (Hệ kín) |
$T_I$ (Hệ kín) |
$T_D$ (Hệ kín) |
| P |
$0,5 K_{gh}$ |
$\infty$ |
0 |
| PI |
$0,45 K_{gh}$ |
$0,83 T_{gh}$ |
0 |
| PID |
$0,6 K_{gh}$ |
$0,5 T_{gh}$ |
$0,125 T_{gh}$ |
- So sánh hai công thức tính PID số: Thuật toán xấp xỉ hình chữ nhật cổ điển và thuật toán thiết kế theo biến đổi Z rời rạc từ hàm truyền $G_{PID}(z)$. Kết quả phân tích cho thấy công thức rời rạc miền Z giúp hệ thống triệt tiêu dao động ở dải vận tốc đặt thấp dưới 100 vòng/phút.
Chương III: Thiết kế phần cứng
Chương III trình bày chi tiết sơ đồ nguyên lý mạch điện và cấu tạo các khối thiết bị:
- Mô hình hóa động cơ DC và cơ chế đo vận tốc, vị trí bằng encoder quang tương đối (incremental optical encoder) 240 xung/vòng.
- Sơ đồ nguyên lý chi tiết vẽ trên OrCAD 9.2 cho 8 khối chức năng: Khối vi điều khiển trung tâm (Main), Khối công suất (IC 33887 và cách ly quang OPB700AL), Khối nguồn (IL1117-3.3), Khối nạp PICkit 2, Khối UART (MAX232), Khối LCD, Khối nút bấm và Khối giao tiếp máy tính Matlab GUI.
- Phân tích ưu nhược điểm của khối 4 nút nhấn: Thiết kế đơn giản, tiết kiệm chân I/O cho chip 28 chân nhưng lập trình chuyển đổi trạng thái phức tạp; tác giả đề xuất giải pháp ma trận phím nếu dùng chip nhiều chân hơn.
Chương IV: Lưu đồ giải thuật, kết quả thực nghiệm & kết luận
Chương IV trình bày cấu trúc phần mềm điều khiển và đánh giá kết quả chạy thực nghiệm:
- Xây dựng hệ thống lưu đồ giải thuật hoàn chỉnh gồm: Lưu đồ hàm chính (Main), hàm cấu hình ánh xạ chân (Mappin), ngắt ngoài INT2 đọc encoder, ngắt Timer lấy mẫu định thời, thuật toán PID vị trí, thuật toán PID vận tốc và lưu đồ truyền nhận dữ liệu qua UART.
- Kết quả thực nghiệm hiệu chỉnh hệ thống: Khảo sát chất lượng đáp ứng quá độ của vận tốc động cơ ở các dải đặt khác nhau, so sánh độ vọt lố và tính ổn định giữa hai công thức số hóa PID.
- Đưa ra các kết luận kỹ thuật về khả năng đáp ứng của dsPIC 33FJ64GP802, tính khả thi của giải thuật PID số trên miền Z và độ ổn định của mạch in thiết kế.
Kết quả và đóng góp
Đồ án đã hoàn thành toàn bộ các mục tiêu đặt ra với những kết quả thực nghiệm cụ thể:
- Chế tạo thành công hệ thống phần cứng điều khiển nhúng sử dụng chip dsPIC 33FJ64GP802 chạy ở điện áp 3,3V, tốc độ xử lý 40 MIPS với xung nhịp 80 MHz từ bộ dao động ngoài kết hợp PLL.
- Mạch công suất cầu H dùng IC 33887 và cách ly quang bảo vệ hoạt động tin cậy, điều khiển đảo chiều và điều chế độ rộng xung PWM cho động cơ DC 12V.
- Xử lý chính xác tín hiệu từ encoder 240 xung/vòng bằng ngắt ngoài INT2 ở tần số xung lên tới 10,2 kHz mà không xảy ra hiện tượng đếm thiếu hay mất xung.
- Giao tiếp truyền thông nối tiếp RS-232 giữa vi điều khiển và máy tính hoạt động ổn định ở tốc độ baud 9600 với sai số tính toán 0,16%.
- Phát hiện và giải quyết triệt để vấn đề dao động hệ thống ở dải vận tốc thấp: Thay vì dùng xấp xỉ hình chữ nhật thông thường (vốn làm động cơ dao động mạnh khi chạy dưới 100 vòng/phút), nhóm tác giả đã áp dụng công thức sai phân từ hàm truyền miền Z, giúp động cơ chuyển động êm, đáp ứng nhanh và ít vọt lố trên toàn dải từ dưới 100 đến 800 vòng/phút.
- Xây dựng giao diện Matlab GUI hoàn chỉnh, thực hiện giám sát đồ thị thời gian thực và đồng bộ hai chiều tham số với màn hình LCD và nút bấm phần cứng.
Đóng góp kỹ thuật do nhóm tác giả tự nêu: Đồ án cung cấp một giải pháp tiếp cận thực tế, tích hợp hoàn chỉnh từ thiết kế mạch in, số hóa thuật toán điều khiển tự động đến phần mềm giao tiếp máy tính thời gian thực; khắc phục hoàn toàn nhược điểm cồng kềnh, dễ nhiễu và khó tinh chỉnh tham số của các mạch điều khiển động cơ analog truyền thống.
Hạn chế và hướng nghiên cứu tiếp
Các hạn chế được văn bản đề cập:
- Số lượng chân của vi điều khiển dsPIC 33FJ64GP802 bị hạn chế (phiên bản đóng gói 28 chân), dẫn đến việc phải sử dụng cụm 4 nút bấm đơn lẻ để thao tác chuyển đổi chế độ và tăng giảm giá trị, gây phức tạp cho quá trình lập trình thuật toán quét phím.
- Việc xác định các hệ số $K_P, K_I, K_D$ vẫn phụ thuộc vào quá trình tinh chỉnh thủ công hoặc bán tự động thông qua thanh kéo trên giao diện Matlab GUI và kinh nghiệm thực nghiệm, chưa xây dựng được thuật toán tự động chỉnh định hoàn toàn (auto-tuning) trên hệ thống số.
Hướng nghiên cứu tiếp theo được tác giả đề xuất:
- Nâng cấp phần cứng lên các dòng vi điều khiển có số chân lớn hơn nhằm ứng dụng bàn phím ma trận, giúp việc nhập dữ liệu trực tiếp tại chỗ thuận tiện hơn.
- Nghiên cứu và phát triển giải thuật tự động nhận dạng đối tượng và tự động xác định tham số bộ điều khiển PID (auto-tuning algorithm) ngay trên vi điều khiển.
Giá trị tham khảo
Đồ án là tài liệu tham khảo kỹ thuật hữu ích cho:
- Sinh viên, học viên các ngành Kỹ thuật Điều khiển và Tự động hóa, Điện tử - Viễn thông, Cơ điện tử khi thực hiện đồ án môn học, đồ án tốt nghiệp hoặc tham gia các cuộc thi như Robocon.
- Các kỹ sư phát triển hệ thống nhúng điều khiển động cơ: Phần đáng tham khảo nhất là tài liệu hướng dẫn cấu hình chi tiết các khối thanh ghi của dòng vi điều khiển dsPIC 33F (bộ nhân PLL, ghép nối Timer 32-bit, truyền thông UART, cấu hình ngắt ngoài và ánh xạ chân remappable pins).
- Phương pháp số hóa bộ điều khiển PID theo miền Z và kỹ thuật thiết kế mạch công suất cầu H có cách ly quang OPB700AL là những giải pháp kỹ thuật có tính ứng dụng thực tiễn cao, có thể tái sử dụng trực tiếp trong các thiết kế truyền động điện công nghiệp.
Câu hỏi thường gặp
1. Vi điều khiển dsPIC 33FJ64GP802 có những ưu thế kỹ thuật nào so với họ 8051 và PIC 16F690?
Theo bảng so sánh trong văn bản, dsPIC 33FJ64GP802 vượt trội về năng lực xử lý với độ rộng từ 16-bit, tốc độ thực thi đạt 40 MIPS (so với 1 MIPS của 8051 và 5 MIPS của PIC 16F690). Về tài nguyên bộ nhớ, chip sở hữu 64 Kbyte Flash chương trình và 16 Kbyte RAM (lớn hơn rất nhiều so với 128 byte RAM của 8051 và 256 byte của PIC 16F690). Ngoài ra, chip hỗ trợ 5 bộ Timer 16-bit, 49 nguồn ngắt, 4 kênh PWM, 10 kênh ADC và đa dạng chuẩn truyền thông (2 UART, 2 SPI, 1 ECAN, 1 I2C).
2. Tại sao nhóm nghiên cứu phải thay thế công thức PID số hóa hình chữ nhật bằng công thức rời rạc hóa trên miền Z?
Khi áp dụng công thức xấp xỉ hình chữ nhật thông thường, hệ thống chỉ hoạt động ổn định ở dải vận tốc đặt cao từ 100 đến 800 vòng/phút; khi giá trị đặt dưới 100 vòng/phút, vận tốc ngõ ra bị rơi vào trạng thái dao động lớn do sai số xấp xỉ tích phân và thiếu cơ sở lý thuyết biến đổi rời rạc chặt chẽ. Công thức xây dựng từ biến đổi Z ($G_{PID}(z)$) giải quyết triệt để khuyết điểm này, giúp đáp ứng vận tốc ngõ ra ổn định, giảm thiểu vọt lố ngay cả ở vùng tốc độ nhỏ.
3. Phương pháp đọc encoder bằng ngắt ngoài được cấu hình ra sao và có đáp ứng được tốc độ tối đa của động cơ không?
Tín hiệu kênh A của encoder quang được nối vào ngắt ngoài INT2, kênh B nối vào một chân I/O bất kỳ. Mỗi khi xuất hiện xung trên kênh A kích hoạt ngắt, chương trình phục vụ ngắt sẽ đọc trạng thái logic của kênh B để xác định chiều quay (mức thấp là quay thuận, mức cao là quay nghịch) và tăng hoặc giảm biến đếm. Động cơ có encoder 240 xung/vòng, vận tốc tối đa 50 vòng/giây sinh ra tần số xung lớn nhất là 10,2 kHz. Với tốc độ xử lý 40 MIPS của dsPIC, tần số ngắt 10,2 kHz hoàn toàn nằm trong khả năng đáp ứng, không gây hiện tượng mất xung hay tràn ngắt.
4. Tốc độ Baud của khối UART được tính toán như thế nào và có sai số bao nhiêu tại tần số chu kỳ lệnh 4 MHz?
Với chu kỳ xung lệnh $F_{CY} = 4,\text{MHz}$ và chế độ tốc độ chuẩn (BRGH = 0), giá trị thanh ghi tốc độ Baud được tính theo công thức:
$$\text{UxBRG} = \frac{F_{CY}}{16 \times \text{Baud}} - 1 = \frac{4.000.000}{16 \times 9600} - 1 = 25,04 \approx 25$$
Tốc độ Baud thực tế tạo ra là:
$$\text{Baud}_{\text{thực}} = \frac{4.000.000}{16 \times (25 + 1)} = 9615,\text{bps}$$
Sai số truyền thông thực tế là:
$$\text{Sai số} = \frac{9615 - 9600}{9600} = 0,16%$$
Mức sai số này nằm trong giới hạn cho phép của chuẩn RS-232, đảm bảo truyền nhận tin cậy.
5. Giao diện Matlab GUI và phần cứng nhúng dsPIC phối hợp hoạt động theo cơ chế nào?
Hệ thống thiết lập cơ chế đồng bộ dữ liệu hai chiều thông qua giao tiếp UART/RS-232. Người dùng có thể chọn chế độ điều khiển (PID vị trí, PID vận tốc, sóng Sin) và điều chỉnh các hệ số $K_P, K_I, K_D$ bằng cách kéo thanh slider trên Matlab GUI; các thông số này lập tức được truyền xuống vi điều khiển và hiển thị lên màn hình LCD. Ngược lại, nếu người dùng thao tác chỉnh thông số bằng 4 nút bấm trên mạch phần cứng, giá trị trên giao diện máy tính cũng được cập nhật tức thời. Đồ thị đáp ứng thời gian thực được vẽ trực tiếp trên GUI từ dữ liệu vận tốc và vị trí do dsPIC gửi ngược lên.
Kết luận
Đồ án "Điều khiển động cơ DC với PID số trên DSPIC 33FJ64GP802" đã hiện thực hóa thành công một hệ thống điều khiển truyền động số hoàn chỉnh, kết hợp đồng bộ giữa lý thuyết điều khiển tự động và kỹ thuật nhúng 16-bit tốc độ cao. Nghiên cứu giải quyết tốt các bài toán kỹ thuật thực tiễn từ thiết kế mạch công suất cách ly quang, đọc tín hiệu encoder tần số cao đến việc tối ưu hóa giải thuật PID số rời rạc miền Z nhằm triệt tiêu dao động ở vùng tốc độ thấp. Kết quả thực nghiệm và phần mềm giao tiếp máy tính thời gian thực cung cấp tài liệu kỹ thuật có giá trị tham khảo cao cho công tác nghiên cứu, học tập và ứng dụng điều khiển động cơ điện một chiều.