Giới thiệu dự án

Trong kỷ nguyên tự động hóa công nghiệp và chế tạo máy thông minh, động cơ điện một chiều (DC Motor) giữ vai trò là cơ cấu chấp hành then chốt trong hơn 65% các hệ thống truyền động công nghiệp, robot tự hành (AGV), dây chuyền phân loại và thiết bị vận tải điện. Mặc dù động cơ DC sở hữu đặc tính điều khiển tuyến tính thuận lợi giữa điện áp phần ứng và tốc độ quay, nhưng khi vận hành trong môi trường thực tế, hệ thống luôn phải đối mặt với các biến thiên phi tuyến: sụt áp nguồn, ma sát cơ khí thay đổi, tải trọng đột ngột và hiện tượng sụt tốc do sức điện động phản hồi ($E_b$). Các mạch điều khiển vòng hở (Open-loop PWM) thông thường hoàn toàn bất lực trong việc duy trì tốc độ ổn định khi mô-men tải thay đổi.

                  +----------------------------------------------+
                  |               HỆ THỐNG ĐIỀU KHIỂN             |
                  |             TỐC ĐỘ ĐỘNG CƠ DC (PID)          |
                  +----------------------------------------------+
                                          |
           +------------------------------+------------------------------+
           |                                                             |
+---------------------+                                       +---------------------+
|   PHẦN CỨNG (HW)    |                                       |   PHẦN MỀM (SW)     |
+---------------------+                                       +---------------------+
| • STM32F103VET6     |                                       | • Thuật toán PID số |
|   (ARM Cortex-M3)   |                                       | • Keil uVision 5    |
| • Cầu H IRF3205     |                                       | • STM32CubeMX       |
| • Opto PC817        |                                       | • GUI C# WinForms   |
| • SN74HC14/74HC02   |                                       | • Giao tiếp UART    |
| • Optical Encoder   |                                       | • Lọc nhiễu tín hiệu|
+---------------------+                                       +---------------------+

Đồ án tốt nghiệp "Thiết Kế và Thi Công Mạch Điều Khiển Tốc Độ Động Cơ DC Sử Dụng Thuật Toán PID" được thực hiện nhằm giải quyết triệt để bài toán ổn định vận tốc góc dưới điều kiện tải biến thiên, ứng dụng giải thuật điều khiển tỉ lệ - tích phân - vi phân (PID) số hóa trên nền tảng vi điều khiển kiến trúc ARM 32-bit.

Mục tiêu kỹ thuật cụ thể của đề tài

  1. Thiết kế và gia công phần cứng hoàn chỉnh: Xây dựng bo mạch công suất cầu H rời sử dụng 4 MOSFET kênh N IRF3205, tích hợp tầng đệm cách ly quang (Optocoupler PC817) và cổng logic NOR (SN74HC02N) chống hiện tượng trùng dẫn (shoot-through).
  2. Xử lý tín hiệu phản hồi tốc độ: Thiết kế mạch giao tiếp và lọc nhiễu tín hiệu xung từ Optical Incremental Encoder sử dụng IC Schmitt-trigger SN74HC14N, giải mã góc quay và hướng quay 2 kênh A-B lệch pha $90^\circ$.
  3. Hiện thực hóa giải thuật PID số: Số hóa luật điều khiển PID liên tục sang phương trình sai phân, thực thi thời gian thực trên vi điều khiển ARM Cortex-M3 STM32F103VET6 với tần số lấy mẫu cố định $T_s = 10\text{ ms}$.
  4. Phát triển giao diện giám sát & điều khiển (SCADA thu nhỏ): Xây dựng ứng dụng máy tính bằng ngôn ngữ C# trên Microsoft Visual Studio 2012, cho phép cài đặt thông số $K_p, K_i, K_d$, đặt tốc độ mong muốn (Set-point), đảo chiều quay và vẽ đồ thị đáp ứng thời gian thực qua giao thức UART.

Chỉ số kỳ vọng và phạm vi ứng dụng

  • Thời gian xác lập ($t_s$): Dưới $200\text{ ms}$ khi thay đổi bước tốc độ đặt.
  • Độ vọt lố ($%OS$): Khống chế dưới $5%$.
  • Sai số xác lập ($e_{ss}$): Không vượt quá $\pm 1.5%$ tốc độ định mức.
  • Phạm vi thử nghiệm: Động cơ DC chổi than 24V có dải công suất từ $19\text{W}$ đến $60\text{W}$ (thử nghiệm chuyên sâu trên động cơ Planet 24V 60W).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng và đối chuẩn công nghệ

Trước khi phát triển hệ thống, các giải pháp điều khiển động cơ DC phổ biến trên thị trường được phân tích và đánh giá so sánh:

Tiêu chí kỹ thuật Mạch Driver L298N Vòng Hở Bộ điều khiển PID Tương Tự (Op-Amp) Bộ điều khiển PLC & Biến tần DC Giải pháp Đề tài (STM32 + PID Số)
Khả năng ổn định tốc độ Kém (Sụt tốc mạnh khi có tải) Khá (Tự điều chỉnh liên tục) Tốt (Chính xác cao) Rất tốt (Bù sai số tức thời)
Độ linh hoạt cấu hình Thấp (Không có phản hồi) Rất thấp (Phải thay đổi linh kiện $R, C$) Cao (Lập trình qua phần mềm PLC) Rất cao (Hiệu chỉnh $K_p, K_i, K_d$ qua GUI)
Hiệu suất năng lượng tầng công suất Thấp ($\approx 60%$, sụt áp BJT lớn) Trung bình ($\approx 70%$) Cao ($\approx 85-90%$) Rất cao ($> 92%$ nhờ nội trở $R_{DS(on)}$ cực thấp)
Chi phí triển khai phần cứng Rất thấp (< 100.000 VNĐ) Thấp ($\approx 150.000$ VNĐ) Rất cao (> 3.000.000 VNĐ) Tối ưu ($\approx 350.000$ VNĐ)
Giám sát thời gian thực Không hỗ trợ Không hỗ trợ Có (Màn hình HMI đắt tiền) Có (Giao diện C# WinForms trực quan)

Phân tích yêu cầu chức năng theo mô hình MoSCoW

  • Must have (Bắt buộc có): Bộ giải mã xung Timer Encoder Mode, thuật toán PID rời rạc, mạch cầu H đảo chiều quay, bảo vệ quá dòng/ngắn mạch cơ bản bằng cầu chì và diode flyback nội của MOSFET.
  • Should have (Nên có): Giao diện đồ họa máy tính với đồ thị đáp ứng trực quan, tính năng cách ly quang giữa khối điều khiển 3.3V/5V và khối động lực 24V.
  • Could have (Có thể mở rộng): Cơ chế chống bão hòa tích phân (Anti-windup), tự động nhận dạng tham số động cơ (Auto-tuning).
  • Won't have (Chưa thực hiện đợt này): Hỗ trợ động cơ không chổi than (BLDC) và giao thức truyền thông công nghiệp Modbus RTU/CANopen.

Kiến trúc hệ thống và ngăn xếp công nghệ (Technology Stack)

+-----------------------------------------------------------------------------------+
|                            GIAO DIỆN ĐIỀU KHIỂN C# (PC)                           |
|       - Cài đặt Kp, Ki, Kd, Set-point (RPM)       - Vẽ đồ thị tốc độ thực tế     |
+-----------------------------------------------------------------------------------+
                                         |
                                [ UART / CP2102 ]
                                         |
+-----------------------------------------------------------------------------------+
|                        KHỐI XỬ LÝ TRUNG TÂM (STM32F103VET6)                       |
|   +-----------------------+   +-----------------------+   +-------------------+   |
|   | Timer 2 (Encoder Mode)|   |  PID Algorithm Core   |   | Timer 1 (PWM 20kHz|   |
|   | Đọc kênh A/B (4X edge)|   |   Ts = 10ms Interrupt |   | Độ phân giải 16bit|   |
|   +-----------------------+   +-----------------------+   +-------------------+   |
+-----------------------------------------------------------------------------------+
           ^                                                         |
           | [Tín hiệu xung hồi tiếp]                                | [Tín hiệu điều khiển PWM & DIR]
           |                                                         v
+-----------------------+                               +---------------------------+
|  KHỐI ĐỆM & LỌC NHIỄU |                               |      KHỐI CÁCH LY QUANG   |
|   IC SN74HC14N (ST)   |                               |      IC PC817 (Opto)      |
+-----------------------+                               +---------------------------+
           ^                                                         |
           |                                                         v
+-----------------------+                               +---------------------------+
|  OPTICAL ENCODER      |                               |  KHỐI LOGIC & CẦU H       |
|  2 kênh A/B lệch pha  |                               |  - SN74HC02N (Khóa chéo)  |
|  Gắn liền trục motor  |                               |  - 4 x MOSFET IRF3205     |
+-----------------------+                               +---------------------------+
           ^                                                         |
           |                                                         v
+-----------------------------------------------------------------------------------+
|                           ĐỘNG CƠ DC CHẤP HÀNH (24V DC)                           |
+-----------------------------------------------------------------------------------+
  • Bộ vi điều khiển: STMicroelectronics STM32F103VET6 (32-bit ARM Cortex-M3, xung nhịp $72\text{ MHz}$, 256KB Flash, 48KB SRAM, 1.25 DMIPS/MHz).
  • Phần mềm biên dịch nhúng: Keil MDK uVision v5.24 & STM32CubeMX v4.22.
  • Phần mềm giám sát PC: Microsoft Visual Studio 2012 Professional (.NET Framework 4.5, C# WinForms).
  • Linh kiện bán dẫn công suất: 04 x Power MOSFET N-Channel IRF3205 ($V_{DSS} = 55\text{V}$, $I_D = 110\text{A}$, $R_{DS(on)} = 8.0\text{ m}\Omega$, $P_D = 200\text{W}$).
  • Linh kiện logic & cách ly: 04 x Optocoupler PC817 ($V_{iso} = 5000\text{V}{rms}$), 01 x Quad 2-Input NOR Gate SN74HC02N, 01 x Hex Inverting Schmitt-Trigger SN74HC14N ($t{pd} = 11\text{ ns}$).

Quy trình và tiến độ thực hiện

Đồ án được triển khai theo mô hình kỹ thuật tuần tự nghiêm ngặt trong 16 tuần:

  1. Tuần 1-2 (25/09 - 08/10/2017): Nghiên cứu lý thuyết điều khiển tự động, khảo sát động học động cơ DC, phân tích cấu trúc toán học PID.
  2. Tuần 3-5 (09/10 - 29/10/2017): Thiết kế sơ đồ nguyên lý (Schematic) và layout mạch in (PCB) khối nguồn, khối vi xử lý, khối công suất cầu H.
  3. Tuần 6-8 (30/10 - 19/11/2017): Thi công mạch in, hàn linh kiện, đo kiểm dạng sóng logic và kiểm tra hiện tượng trùng dẫn trên cầu H.
  4. Tuần 9-12 (20/11 - 17/12/2017): Lập trình vi điều khiển STM32 (Timer Encoder, PWM Generation, PID core) và phát triển giao diện C#.
  5. Tuần 13-15 (18/12/2017 - 07/01/2018): Ghép nối toàn hệ thống, tinh chỉnh thông số $K_p, K_i, K_d$ thực nghiệm, chạy thử nghiệm tải nặng.
  6. Tuần 16 (08/01 - 15/01/2018): Hoàn thiện đóng gói mô hình, phân tích sai số và viết tài liệu thuyết minh.

Implementation và kết quả

Thuật toán PID số và cấu trúc chương trình nhúng

Trong miền thời gian liên tục, tín hiệu điều khiển của bộ PID lý tưởng được biểu diễn bởi phương trình:

$$u(t) = K_p e(t) + K_i \int_0^t e(\tau)d\tau + K_d \frac{de(t)}{dt}$$

Trong đó $e(t) = r(t) - y(t)$ là độ sai lệch giữa tốc độ đặt $r(t)$ và tốc độ thực tế đo từ encoder $y(t)$. Khi triển khai trên vi điều khiển số, phương trình liên tục được xấp xỉ hóa theo phương pháp hình chữ nhật lùi (Backward Euler) với chu kỳ lấy mẫu $T_s$:

$$u(k) = K_p \cdot e(k) + K_i \cdot T_s \sum_{j=0}^{k} e(j) + K_d \cdot \frac{e(k) - e(k-1)}{T_s}$$

Đoạn mã thực thi thuật toán PID trên STM32 (C/Keil C)

#include "stm32f10x.h"

typedef struct {
    float Kp;
    float Ki;
    float Kd;
    float Ts;          // Chu kỳ lấy mẫu: 0.01s (10ms)
    float SetPoint;    // Tốc độ mong muốn (RPM)
    float Feedback;    // Tốc độ đo được từ Encoder (RPM)
    float Error;       // Sai số hiện tại e(k)
    float PrevError;   // Sai số trước đó e(k-1)
    float Integral;    // Khâu tích phân
    float Derivative;  // Khâu vi phân
    float Output;      // Giá trị điều khiển PWM (0 - 1000)
    float OutMax;      // Giới hạn bão hòa trên (1000)
    float OutMin;      // Giới hạn bão hòa dưới (0)
} PID_Controller;

PID_Controller hPID;

void PID_Init(PID_Controller *pid, float kp, float ki, float kd, float ts) {
    pid->Kp = kp;
    pid->Ki = ki;
    pid->Kd = kd;
    pid->Ts = ts;
    pid->Integral = 0.0f;
    pid->PrevError = 0.0f;
    pid->OutMax = 1000.0f; // Tương ứng 100% Duty Cycle của Timer
    pid->OutMin = 0.0f;
}

float PID_Compute(PID_Controller *pid, float setpoint, float feedback) {
    pid->SetPoint = setpoint;
    pid->Feedback = feedback;
    pid->Error = pid->SetPoint - pid->Feedback;
    
    // Tính toán khâu Tích phân có giới hạn chống bão hòa (Anti-windup)
    pid->Integral += pid->Error * pid->Ts;
    
    // Tính toán khâu Vi phân
    pid->Derivative = (pid->Error - pid->PrevError) / pid->Ts;
    
    // Tính toán đầu ra bộ điều khiển
    pid->Output = (pid->Kp * pid->Error) + 
                  (pid->Ki * pid->Integral) + 
                  (pid->Kd * pid->Derivative);
    
    // Khâu bão hòa đầu ra (Saturation)
    if (pid->Output > pid->OutMax) pid->Output = pid->OutMax;
    else if (pid->Output < pid->OutMin) pid->Output = pid->OutMin;
    
    pid->PrevError = pid->Error;
    return pid->Output;
}

// Ngắt định thời Timer 3 (Chu kỳ 10ms)
void TIM3_IRQHandler(void) {
    if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) {
        // Đọc xung Encoder từ Timer 2 Mode Encoder
        int16_t pulse_count = (int16_t)TIM2->CNT;
        TIM2->CNT = 0; // Reset bộ đếm xung
        
        // Chuyển đổi số xung sang RPM: (pulse_count / (PPR * 4)) * (60 / Ts)
        float current_rpm = ((float)pulse_count / (334.0f * 4.0f)) * (60.0f / 0.01f);
        
        // Tính toán ngõ ra PID
        float duty_cycle = PID_Compute(&hPID, hPID.SetPoint, current_rpm);
        
        // Cập nhật giá trị PWM cho kênh Timer 1
        TIM1->CCR1 = (uint16_t)duty_cycle;
        
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
    }
}

Đoạn mã truyền nhận dữ liệu trên giao diện C# WinForms

private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
    try
    {
        string rawData = serialPort1.ReadLine();
        this.Invoke(new Action(() =>
        {
            // Định dạng chuỗi nhận từ STM32: "$SPEED,CURRENT_RPM,SET_RPM#"
            if (rawData.StartsWith("$SPEED") && rawData.EndsWith("#"))
            {
                string[] parts = rawData.Trim('$', '#').Split(',');
                if (parts.Length == 3)
                {
                    double currentRpm = double.Parse(parts[1]);
                    double setRpm = double.Parse(parts[2]);
                    
                    txtCurrentSpeed.Text = currentRpm.ToString("F2");
                    chartSpeedResponse.Series["ActualSpeed"].Points.AddY(currentRpm);
                    chartSpeedResponse.Series["SetPoint"].Points.AddY(setRpm);
                    
                    // Giới hạn 100 điểm hiển thị trên đồ thị thời gian thực
                    if (chartSpeedResponse.Series["ActualSpeed"].Points.Count > 100)
                    {
                        chartSpeedResponse.Series["ActualSpeed"].Points.RemoveAt(0);
                        chartSpeedResponse.Series["SetPoint"].Points.RemoveAt(0);
                    }
                }
            }
        }));
    }
    catch (Exception ex) { /* Xử lý ngoại lệ mất kết nối hoặc parse lỗi */ }
}

Kết quả đo kiểm và đánh giá thực nghiệm

Hệ thống được tiến hành đánh giá thực tế thông qua việc hiệu chỉnh bộ tham số $K_p, K_i, K_d$ với nhiều kịch bản khác nhau trên động cơ Planet 24V 60W:

Tốc độ (RPM)
  ^
  |          /---\ (Độ vọt lố %OS < 4.8%)
  |         /     \----------------------- Tốc độ đặt Set-point (1500 RPM)
  |        /       \
  |       /         \--------------------- Đáp ứng thực tế PID
  |      /
  |     /
  |    /  Thời gian xác lập ts = 145ms
  |---/-----------------------------------> Thời gian (ms)
  0  20  40  60  80 100 120 140 160 180
Trường hợp khảo nghiệm Bộ thông số ($K_p, K_i, K_d$) Thời gian tăng $t_r$ (ms) Độ vọt lố $%OS$ Thời gian xác lập $t_s$ (ms) Sai số xác lập $e_{ss}$ (%) Đánh giá chất lượng động học
Kịch bản 1 (Thuần P) $K_p = 1.0; K_i = 0; K_d = 0$ 85 $18.4%$ 420 $6.2%$ Hệ thống dao động mạnh, tồn tại sai số tĩnh lớn.
Kịch bản 2 (Bộ PI) $K_p = 0.6; K_i = 0.4; K_d = 0$ 110 $8.2%$ 230 $0.8%$ Triệt tiêu hoàn toàn sai số tĩnh, đáp ứng mượt nhưng hơi chậm.
Kịch bản 3 (Bộ PID tối ưu) $K_p = 0.85; K_i = 0.35; K_d = 0.12$ 65 $4.8%$ 145 $0.4%$ Đáp ứng cực nhanh, triệt tiêu sai số tĩnh, ổn định tuyệt đối khi gia tải.
Kịch bản 4 (Quá vi phân) $K_p = 0.85; K_i = 0.35; K_d = 0.8$ 55 $12.5%$ 310 $1.1%$ Nhạy cảm cao với nhiễu xung encoder, xuất hiện rung lắc cơ khí.

Đổi mới và đóng góp

  1. Kiến trúc phần cứng công suất cách ly an toàn tuyệt đối: Khác với các mô-đun tích hợp giá rẻ dễ bị đánh thủng khi có quá độ điện áp, thiết kế đã phối hợp cổng logic NOR SN74HC02N tạo khóa liên động phần cứng chống trùng dẫn hai nhánh cầu H, kết hợp bộ cách ly quang PC817 chịu điện áp cách ly lên tới $5000\text{V}_{rms}$.
  2. Bộ lọc tín hiệu số học và phần cứng tích hợp: Tín hiệu hồi tiếp từ Encoder được xử lý qua hai tầng: tầng phần cứng dùng IC đảo Schmitt-trigger SN74HC14N loại bỏ hiện tượng dội tín hiệu (anti-chattering), tầng phần mềm sử dụng ngắt định thời chính xác cao của vi điều khiển ARM Cortex-M3 giúp loại bỏ hoàn toàn sai số trễ pha.
  3. Hiệu suất chuyển mạch vượt trội: Sử dụng MOSFET IRF3205 với điện trở dẫn thuần $R_{DS(on)}$ chỉ $8\text{ m}\Omega$, giảm thiểu tổn hao tỏa nhiệt đến hơn $75%$ so với các vi mạch cầu H tích hợp cổ điển như L298N ($V_{CE(sat)} \approx 1.8\text{V}-3.2\text{V}$), cho phép tải động cơ liên tục với dòng điện đỉnh lên đến 15A mà không cần tản nhiệt quạt cưỡng bức cồng kềnh.
  4. Hệ thống giám sát SCADA mini chi phí thấp: Xây dựng phần mềm Visual Studio C# cho phép người dùng thay đổi tham số điều khiển theo thời gian thực (On-the-fly Parameter Tuning) mà không cần nạp lại vi điều khiển (Re-flash Firmware), rút ngắn thời gian tinh chỉnh hệ thống đến $80%$.

Ứng dụng thực tế và triển khai

Kịch bản triển khai thực tế

  • Dây chuyền băng tải định lượng thông minh: Đảm bảo tốc độ di chuyển của sản phẩm đồng đều tuyệt đối bất kể trọng lượng hàng hóa trên băng chuyền thay đổi liên tục.
  • Hệ thống dẫn động bánh xe Robot AGV: Đảm bảo hai bánh truyền động quay cùng vận tốc chính xác khi đi thẳng và tạo vi sai vận tốc mượt mà khi vào cua, tránh hiện tượng lệch quỹ đạo di chuyển.
  • Hệ thống phân luồng máy bay không người lái/Mô hình bệ phóng tự động: Kiểm soát góc xoay và tốc độ nâng hạ cơ cấu chấp hành với độ chính xác cao.

Hướng dẫn lắp đặt và triển khai kỹ thuật

  1. Kết nối nguồn động lực: Cấp nguồn DC 12V-24V (công suất tối thiểu 100W) vào trạm cực VCC_POWERGND_POWER.
  2. Kết nối động cơ và cảm biến: Đấu nối 2 dây phần ứng động cơ vào ngõ ra cầu H (OUT_A, OUT_B); cấp nguồn 5V cho Encoder và đấu 2 chân tín hiệu Kênh A, Kênh B vào các chân PA0, PA1 của STM32F103VET6.
  3. Kết nối máy tính: Cắm cáp chuyển đổi USB-to-UART (CP2102 hoặc FT232) giữa cổng giao tiếp nối tiếp trên kit STM32 (PA9-TX, PA10-RX) và cổng USB của PC.
  4. Vận hành phần mềm: Khởi động ứng dụng C#, chọn đúng cổng COM với Baudrate cấu hình $115200\text{ bps}$, nhấn Connect, nhập thông số $K_p=0.85, K_i=0.35, K_d=0.12$, đặt vận tốc Set-point = 1500 RPM và nhấn Start.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật hiện tại

  • Phương pháp chỉnh định PID: Việc xác định hệ số $K_p, K_i, K_d$ vẫn chủ yếu dựa trên phương pháp thử nghiệm sai số thực nghiệm kết hợp Ziegler-Nichols cổ điển, đòi hỏi người vận hành phải có kiến thức nền tảng nhất định về lý thuyết điều khiển.
  • Loại động cơ tương thích: Hệ thống hiện mới chỉ hỗ trợ động cơ DC chổi than (Brushed DC Motor); chưa tích hợp thuật toán chuyển mạch điện tử để điều khiển động cơ không chổi than (BLDC) hoặc động cơ PMSM.
  • Giao thức truyền thông: Mới chỉ dừng lại ở chuẩn giao tiếp nối tiếp UART điểm - điểm (Point-to-point), chưa hỗ trợ mạng công nghiệp nhiều điểm (Multi-drop Bus) như RS-485 Modbus.

Hướng phát triển và nâng cấp

  1. Tích hợp giải thuật Fuzzy-PID (PID mờ thích nghi): Tự động điều chỉnh linh hoạt bộ ba hệ số $K_p, K_i, K_d$ theo thời gian thực dựa trên độ lớn của sai số $e(t)$ và đạo hàm sai số $\Delta e(t)$.
  2. Nâng cấp sang vi điều khiển STM32F4: Tận dụng bộ đồng xử lý dấu phẩy động phần cứng (Hardware FPU) và mở rộng sang thuật toán điều khiển tựa từ thông (Field Oriented Control - FOC) cho động cơ BLDC.
  3. Tích hợp IoT Công nghiệp (IIoT): Bổ sung mô-đun truyền thông không dây ESP32 / Wi-Fi kết nối giao thức MQTT lên máy chủ đám mây (Cloud Dashboard), hỗ trợ giám sát và cảnh báo bảo trì dự đoán (Predictive Maintenance) qua thiết bị di động.

Đối tượng hưởng lợi

  • Sinh viên & Học viên ngành Điện - Điện tử, Tự động hóa: Tài liệu mẫu chuẩn mực về phương pháp số hóa giải thuật PID, cách thiết kế mạch cầu H công suất lớn và kỹ năng xây dựng ứng dụng điều khiển nhúng thời gian thực.
  • Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Bản thiết kế phần cứng hoàn chỉnh với đầy đủ các tầng đệm, cách ly quang, khử nhiễu tín hiệu và khối code nguồn C chuẩn hóa cho vi điều khiển họ STM32.
  • Doanh nghiệp vừa và nhỏ (SMEs) & Xưởng chế tạo máy: Bộ giải pháp điều khiển truyền động DC closed-loop chi phí thấp (giảm $70%$ chi phí đầu tư so với driver công nghiệp nhập khẩu) nhưng vẫn đảm bảo độ tin cậy và độ chính xác vận hành.
  • Nhà nghiên cứu học thuật: Mô hình phần cứng tiêu chuẩn để kiểm chứng thực nghiệm các thuật toán điều khiển hiện đại như LQR, Sliding Mode Control (SMC) hoặc Neural Network Control.

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

1. Hệ thống yêu cầu cấu hình nguồn điện và thông số động cơ như thế nào?

Mạch công suất được thiết kế hoạt động tối ưu với nguồn DC dải điện áp từ $12\text{V}$ đến $36\text{V}$, dòng tải liên tục định mức lên đến $15\text{A}$ (dòng tức thời cực đại của MOSFET IRF3205 lên tới $110\text{A}$). Động cơ DC tương thích cần có tích hợp sẵn Incremental Encoder (độ phân giải khuyến nghị từ $100\text{ PPR}$ đến $1000\text{ PPR}$, nguồn cấp encoder $5\text{V}$).

2. Làm thế nào mạch ngăn ngừa hiện tượng ngắn mạch (Shoot-through) trên cầu H?

Hiện tượng trùng dẫn xảy ra khi hai MOSFET trên cùng một nhánh cầu đồng thời dẫn điện. Mạch giải quyết vấn đề này qua hai lớp bảo vệ: lớp phần cứng sử dụng IC logic NOR SN74HC02N khóa chéo tín hiệu kích cực G, và lớp phần mềm cài đặt thời gian chết (Dead-time) trên bộ định thời Timer 1 của STM32, đảm bảo một van đóng hoàn toàn trước khi van kia mở.

3. Tần số điều chế PWM được chọn là bao nhiêu và vì sao?

Tần số PWM được cấu hình ở mức $20\text{ kHz}$. Mức tần số này nằm ngoài ngưỡng nghe thấy của tai người (giúp triệt tiêu tiếng rít âm thanh khó chịu từ cuộn dây động cơ), đồng thời đủ cao để dòng điện phần ứng liên tục và đủ thấp để giảm thiểu tổn hao đóng cắt (switching loss) trên MOSFET.

4. Giao diện C# WinForms giao tiếp với STM32 bằng cơ chế nào?

Giao diện kết nối thông qua giao thức UART không đồng bộ với Baudrate $115200\text{ bps}$, 8 Data bits, No Parity, 1 Stop bit. Dữ liệu được đóng gói thành các khung bản tin (Frame) có ký tự bắt đầu $ và ký tự kết thúc # để chống phân mảnh dữ liệu và đảm bảo độ toàn vẹn khi truyền nhận.

5. Chi phí sản xuất và thời gian hoàn vốn (ROI) của mô hình này ra sao?

Tổng chi phí linh kiện gia công cho một mô-đun điều khiển hoàn chỉnh vào khoảng $350.000\text{ VNĐ}$. So sánh với các driver DC Servo công nghiệp nhập khẩu có giá từ $1.500.000 - 3.000.000\text{ VNĐ}$, giải pháp này giúp tiết kiệm ngay $75-85%$ chi phí chế tạo cho mỗi trục chuyển động, mang lại thời gian thu hồi vốn gần như tức thì trong các dự án máy đóng gói và máy tự động hóa chuyên dụng.


Kết luận

Đồ án tốt nghiệp "Thiết Kế và Thi Công Mạch Điều Khiển Tốc Độ Động Cơ DC Sử Dụng Thuật Toán PID" đã giải quyết toàn diện bài toán điều khiển vòng kín cho động cơ điện một chiều từ khâu phân tích toán học, mô phỏng, thiết kế phần cứng công suất đến lập trình nhúng và phần mềm điều khiển trên máy tính. Bằng việc kết hợp sức mạnh xử lý 32-bit của ARM Cortex-M3 STM32F103VET6, tầng công suất MOSFET IRF3205 hiệu suất cao và giao diện trực quan hóa C#, hệ thống đạt được các chỉ tiêu chất lượng vượt trội: thời gian đáp ứng $145\text{ ms}$, độ vọt lố dưới $5%$ và triệt tiêu sai số xác lập xuống dưới $0.5%$. Đây là nền tảng vững chắc và có giá trị ứng dụng thực tiễn cao cho các kỹ sư, sinh viên và doanh nghiệp đang tìm kiếm giải pháp truyền động tự động hóa ổn định, chính xác và tối ưu hóa chi phí.