Động cơ đồng bộ nam châm vĩnh cửu loại lắp trong (IPMSM) được ưa chuộng trong các ứng dụng công nghiệp và xe điện nhờ hiệu suất cao, mật độ công suất lớn và khả năng điều khiển chính xác. Tuy nhiên, việc phụ thuộc vào cảm biến cơ học để đo vị trí rotor làm tăng chi phí và giảm độ tin cậy hệ thống. Giải pháp thay thế là sử dụng kỹ thuật điều khiển không cảm biến, trong đó sự kết hợp giữa bộ quan sát trượt (Sliding Mode Observer - SMO) và chiến lược MTPA (Maximum Torque Per Ampere) mang lại hiệu quả vượt trội.
Thiết kế bộ quan sát trượt
Bộ quan sát trượt là một công cụ phi tuyến có khả năng hội tụ nhanh và chống nhiễu tốt, thích hợp để ước lượng vị trí và tốc độ rotor mà không cần cảm biến. Nguyên lý hoạt động dựa trên việc ép trạng thái hệ thống tiến về một mặt trượt xác định trong thời gian hữu hạn.
Phương trình trạng thái của bộ quan sát có thể biểu diễn như sau:
\[ \begin{cases} \dot{\hat{\theta}} = \omega_r + \frac{L_d - L_q}{L_q} \cdot i_q + k_s \cdot \text{sign}(\sigma) \\ \sigma = \hat{\theta} - \theta_{ref} \end{cases} \]trong đó \(\hat{\theta}\) là góc rotor ước lượng, \(\omega_r\) là tốc độ góc, \(L_d, L_q\) là điện cảm trục d/q, \(k_s\) là hệ số khuếch đại trượt, và \(\sigma\) là sai lệch mặt trượt.
Cài đặt mã quan sát trượt
def estimate_rotor_position(vd, vq, iq, theta_hat, sliding_err, gain_k, induct_d, induct_q, timestep):
# Tính đạo hàm sai lệch trượt
sliding_rate = gain_k * np.sign(sliding_err) + ((induct_d - induct_q) / induct_q) * iq
# Cập nhật ước lượng góc
theta_hat += sliding_rate * timestep
# Cập nhật sai lệch trượt
sliding_err = theta_hat - np.unwrap([theta_hat])[-1] # giả lập phản hồi
return theta_hat, sliding_err
# Khởi tạo tham số
gain_k = 80
induct_d = 0.012
induct_q = 0.018
timestep = 0.001
theta_hat = 0.0
sliding_err = 0.0
Chiến lược điều khiển MTPA
MTPA tối ưu hóa tỷ lệ dòng điện trên trục d/q để đạt mô-men xoắn cực đại với cùng biên độ dòng. Với IPMSM, mô-men xoắn điện từ được tính theo:
\[ T_e = \frac{3}{2} p \left( \psi_m i_q + (L_d - L_q) i_d i_q \right) \]với \(p\) là số đôi cực, \(\psi_m\) là từ thông nam châm vĩnh cửu.
Đạo hàm theo \(i_d\) và giải phương trình bằng 0, ta thu được quan hệ tối ưu:
\[ i_d^{opt} = \frac{\psi_m - \sqrt{\psi_m^2 + 8(L_d - L_q)^2 i_q^2}}{4(L_d - L_q)} \]Cài đặt mã MTPA
def compute_mtpa_currents(iq_ref, flux_psi, ld, lq):
if abs(ld - lq) < 1e-6:
id_opt = 0.0
else:
discriminant = flux_psi**2 + 8 * (ld - lq)**2 * iq_ref**2
id_opt = (flux_psi - np.sqrt(discriminant)) / (4 * (ld - lq))
torque_out = 1.5 * pole_pairs * (flux_psi * iq_ref + (ld - lq) * id_opt * iq_ref)
return id_opt, torque_out
# Thiết lập ban đầu
flux_psi = 0.12
pole_pairs = 4
iq_ref = 2.5
Kết hợp SMO và MTPA trong hệ thống không cảm biến
Hệ thống tích hợp sử dụng SMO để cung cấp tín hiệu ước lượng góc và tốc độ, sau đó truyền vào vòng điều khiển MTPA để sinh ra dòng điện tham chiếu tối ưu. Hai thành phần này vận hành đồng bộ trong vòng lặp điều khiển thời gian thực.
Cấu trúc điều khiển tổng hợp
def sensorless_ipmsm_controller(vd_input, vq_input, iq_meas, theta_est, err_slide, k_gain, ld_val, lq_val, psi_val, poles, dt):
# Bước 1: Ước lượng vị trí rotor
theta_est, err_slide = estimate_rotor_position(vd_input, vq_input, iq_meas, theta_est, err_slide, k_gain, ld_val, lq_val, dt)
# Bước 2: Tính toán dòng d tối ưu theo MTPA
id_cmd, torque_actual = compute_mtpa_currents(iq_meas, psi_val, ld_val, lq_val)
return theta_est, err_slide, id_cmd, torque_actual
# Thông số vận hành
vd_input = 12.0
vq_input = 24.0
iq_meas = 2.0
Hiệu năng của toàn hệ thống phụ thuộc lớn vào độ chính xác của bộ quan sát trượt. Việc tinh chỉnh hệ số \(k_s\) và xử lý hiện tượng rung (chattering) là yếu tố then chốt để đảm bảo ổn định. Ngoài ra, cần bổ sung bộ lọc hoặc kỹ thuật làm mượt để giảm nhiễu đầu ra trước khi đưa vào vòng điều khiển.