Bối cảnh và vấn đề nghiên cứu
Trong tiến trình công nghiệp hóa và hiện đại hóa, yêu cầu tự động hóa các dây chuyền sản xuất công nghiệp nhằm nâng cao năng suất và đảm bảo chất lượng sản phẩm ngày càng trở nên cấp thiết. Trong các hệ thống chấp hành cơ điện tự động, robot công nghiệp và thiết bị điều khiển chính xác, động cơ điện một chiều (động cơ DC) giữ vai trò là một cơ cấu truyền động hữu hiệu nhờ đặc tính điều khiển tuyến tính và dải điều chỉnh vận tốc rộng. Tuy nhiên, dưới tác động của tải thay đổi, quán tính cơ học và ma sát, vận tốc quay của động cơ DC thường xảy ra dao động, trễ pha hoặc sai số xác lập nếu chỉ sử dụng các phương pháp điều khiển vòng hở truyền thống.
Nhằm giải quyết bài toán ổn định vận tốc động cơ trong thực tế kỹ thuật và ứng dụng kiến thức lý thuyết điều khiển tự động vào phần cứng vi điều khiển, đề tài đồ án "Điều khiển tốc độ động cơ DC dùng PID" của tác giả Đỗ Huy Duy (lớp 081011, ngành Điện tử, dưới sự hướng dẫn của thầy Trương Ngọc Anh) tập trung nghiên cứu, thiết kế và thi công hệ thống điều khiển vòng kín cho động cơ DC 12V.
Mục tiêu và các nhiệm vụ nghiên cứu cụ thể của đề tài bao gồm:
- Nghiên cứu cơ sở lý thuyết thuật toán điều khiển vi tích phân tỉ lệ (PID) và cơ chế đáp ứng động học của động cơ điện một chiều.
- Thiết kế cấu trúc phần cứng hệ thống nhúng sử dụng vi điều khiển PIC16F877A làm bộ xử lý trung tâm, kết hợp màn hình hiển thị LCD 16x2 và khối phím bấm chức năng.
- Thiết kế mạch công suất điều khiển động cơ DC sử dụng IC cầu H L298 kết hợp mạch logic phụ gồm IC 74HC08 và 74LS14 nhằm tối ưu hóa tín hiệu điều hướng và băm xung.
- Thu thập tín hiệu phản hồi vận tốc thực tế thông qua bộ mã hóa quang học (optical incremental encoder) tích hợp trên trục động cơ.
- Lập trình giải thuật điều khiển trên trình biên dịch CCS C, hiện thực hóa bộ điều chế độ rộng xung (PWM) tần số 10 kHz và các chương trình ngắt thời gian thực.
- Thi công mô hình thực nghiệm, vận hành kiểm thử hệ thống ở hai chế độ: hoạt động thông thường (Normal) và điều khiển ổn định vận tốc (PID).
Đối tượng nghiên cứu của đồ án là mô hình động cơ DC 12V tích hợp encoder phản hồi xung quang học, vi điều khiển 8-bit PIC16F877A và mạch điều khiển công suất. Phạm vi nghiên cứu giới hạn ở việc điều khiển động cơ DC công suất nhỏ thông qua IC tích hợp L298, thiết lập thông số trên hệ thống phím cứng cục bộ và hiển thị trực tiếp trên màn hình tinh thể lỏng LCD 16x2.
Cơ sở lý thuyết và phương pháp
Đồ án được xây dựng dựa trên sự kết hợp giữa lý thuyết điều khiển tự động kinh điển, nguyên lý máy điện một chiều và kỹ thuật lập trình hệ thống vi điều khiển thời gian thực.
Khung lý thuyết và mô hình toán học
Tác giả sử dụng mô hình giải thuật điều khiển vi tích phân tỉ lệ (PID) kinh điển để điều chỉnh lực quay $F$ tác động lên trục động cơ nhằm đưa sai số vận tốc $e(t)$ về 0 nhanh chóng, chính xác và giảm thiểu độ vọt lố (overshoot):
$$F = K_p \cdot e(t) + K_d \cdot \frac{de(t)}{dt} + K_i \int e(t) , dt$$
Trong đó, sai số $e(t)$ là hiệu số giữa vận tốc đặt trước ($v_{đặt}$) và vận tốc tức thời ($v_{tức\ thời}$) hồi tiếp từ encoder:
- Khâu tỉ lệ ($K_p$ - Proportional gain): Tạo tác động tỉ lệ tuyến tính với sai số hiện tại theo phương trình $F = K_p \cdot e$. Hệ số $K_p$ lớn giúp động cơ tăng tốc nhanh về giá trị đặt, nhưng nếu quá lớn sẽ gây vọt lố do quán tính cơ học và dẫn đến mất ổn định hệ thống.
- Khâu vi phân ($K_d$ - Derivative gain): Đóng vai trò như cơ cấu "thắng" (hãm động cơ) dựa trên tốc độ thay đổi sai số $\frac{de(t)}{dt}$. Khi vận tốc tiến gần điểm đặt, thành phần vi phân tạo ra lực ngược chiều giúp giảm hiện tượng dao động và triệt tiêu độ vọt lố.
- Khâu tích phân ($K_i$ - Integral gain): Thực hiện tích lũy tổng sai số theo thời gian để sinh ra lực điều khiển đủ lớn thắng ma sát tĩnh, loại bỏ hoàn toàn sai số trạng thái tĩnh (steady-state error) khi khâu $P$ và $D$ giảm dần tác dụng.
Về nguyên lý cơ điện, động cơ điện một chiều vận hành theo định luật cảm ứng điện từ và quy tắc bàn tay trái Fleming. Khi dòng điện chạy qua cuộn dây phần ứng trong từ trường stator, lực điện từ làm quay rotor. Bộ chỉnh lưu gồm cổ góp và chổi than liên tục đảo chiều dòng điện sau mỗi nửa chu kỳ để duy trì chiều quay.
Tín hiệu phản hồi được đo bằng encoder quang học tương đối (incremental optical encoder). Cảm biến gồm một đĩa quay chia rãnh, nguồn phát hồng ngoại và các cảm biến quang. Hệ thống sử dụng 3 kênh ngõ ra:
- Kênh A: Phát ra $N$ xung trong một vòng quay ($N$ là độ phân giải của encoder).
- Kênh B: Phát ra chuỗi xung cùng tần số nhưng lệch pha $90^\circ$ so với kênh A, cho phép xác định chiều quay (quay thuận khi kênh B ở mức thấp tại sườn âm của kênh A, quay nghịch khi kênh B ở mức cao).
- Kênh I (Index): Phát 1 xung duy nhất trên mỗi vòng quay để xác định vị trí gốc.
Phương pháp nghiên cứu và kỹ thuật thực nghiệm
Phương pháp nghiên cứu chủ đạo là phương pháp thiết kế và thi công hệ thống kỹ thuật:
- Phương pháp phân tích - tổng hợp: Thiết kế logic số cho mạch ghép nối driver công suất, xác định hàm Boolean điều khiển.
- Phương pháp tính toán vi sai rời rạc: Rời rạc hóa giải thuật PID trong miền thời gian số thông qua các hàm ngắt chu kỳ của vi điều khiển.
- Phương pháp điều chế xung PWM: Điều khiển điện áp trung bình cấp cho động cơ bằng cách thay đổi hệ số lấp đầy (duty cycle) của xung vuông tần số 10 kHz.
- Nguồn dữ liệu: Dữ liệu thực nghiệm thu được từ tần số xung encoder đưa về chân ngắt ngoại vi của vi điều khiển trong khoảng thời gian lấy mẫu định thời.
Thiết kế và triển khai hệ thống
Hệ thống được tổ chức thành các khối chức năng phần cứng và các module phần mềm phối hợp đồng bộ.
+-------------------------------------------------------------+
| KHỐI NGUỒN |
| LM7805 (5V cấp MCU & Logic) | LM7812 (12V cấp Motor) |
+------------------------------+------------------------------+
|
v
+------------------+ +-------------------+ +------------------+
| KHỐI NÚT NHẤN |-->| KHỐI XỬ LÝ TRUNG |-->| KHỐI HIỂN THỊ |
| 6 phím (RA0-RA6) | | TÂM (PIC16F877A) | | LCD 16x2 (8-bit)|
+------------------+ +--------+----------+ +------------------+
|
(PWM, DIR, EN| | Tín hiệu ngắt RB0)
v |
+---------------------------------+-------------------------------+
| KHỐI CÔNG SUẤT & LÁI |
| Mạch logic (74HC08, 74LS14) -> IC cầu H L298 -> Động cơ DC 12V |
| | |
| Encoder quang học (Hồi tiếp) <------+ |
+-----------------------------------------------------------------+
Kiến trúc phần cứng
- Khối xử lý trung tâm: Vi điều khiển PIC16F877A cấu trúc Harvard RISC, thạch anh dao động $4 \text{ MHz}$ (chu kỳ lệnh $T_{cy} = 1 \mu s$), tích hợp bộ nhớ chương trình Flash $8\text{K} \times 14 \text{ words}$, RAM $368 \text{ bytes}$, EEPROM $256 \text{ bytes}$, khối Capture/Compare/PWM và 3 bộ định thời Timer. Các cổng xuất nhập được nối trở kéo lên $8.2\text{ k}\Omega$ và tụ dập nhiễu $10\mu\text{F}$.
- Khối nhập liệu: Gồm 6 nút nhấn điều khiển nối vào Port A và 1 nút Reset phần cứng nối chân MCLR:
- Nút
UP(RA0): Tăng tốc độ đặt. - Nút
DOWN(RA1): Giảm tốc độ đặt. - Nút
RIGHT(RA2): Thiết lập quay phải (DIR = 1). - Nút
LEFT(RA3): Thiết lập quay trái (DIR = 0). - Nút
START/STOP(RA4): Bật/dừng động cơ (đảo trạng thái chân EN). - Nút
MODE(RA5/RA6): Chuyển đổi giữa chế độ Normal và chế độ PID.
- Nút
- Khối hiển thị: Màn hình LCD 16x2 hoạt động ở chế độ truyền dữ liệu song song 8-bit qua Port D (RD0–RD7), các chân điều khiển RS, RW, E lần lượt nối vào RB7, RB6, RB5. Biến trở $10\text{ k}\Omega$ dùng để chỉnh độ tương phản.
- Khối công suất và mạch logic lái: Sử dụng kênh A của IC L298 tích hợp cầu H kép (dòng danh nghĩa 2A, áp tối đa 50V). Để khắc phục hạn chế điều khiển trực tiếp của IC L298, tác giả tích hợp thêm cổng logic AND (IC 74HC08) và NOT (IC 74LS14) tạo giao tiếp 3 đường chuẩn: PWM (tốc độ), DIR (chiều quay), EN (cho phép).
| Tín hiệu PWM | Tín hiệu DIR | Tín hiệu In1 ($PWM \cdot \overline{DIR}$) | Tín hiệu In2 ($PWM \cdot DIR$) | Trạng thái động cơ |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | Động cơ dừng |
| 0 | 1 | 0 | 0 | Động cơ dừng |
| 1 | 0 | 1 | 0 | Động cơ quay trái |
| 1 | 1 | 0 | 1 | Động cơ quay phải |
Hàm logic được xác lập: $In_1 = PWM \cdot \overline{DIR}$ và $In_2 = PWM \cdot DIR$.
- Khối nguồn: Mạch cấp nguồn sử dụng IC ổn áp tuyến tính LM7805 cung cấp điện áp ổn định +5V cho vi điều khiển, màn hình LCD và logic IC; IC LM7812 cung cấp nguồn +12V cho động cơ DC.
Thiết kế phần mềm và tính toán tham số
Phần mềm được phát triển trên môi trường CCS C với các phép tính toán phần cứng:
-
Tính toán khối băm xung PWM: Tần số PWM chọn $f_{PWM} = 10 \text{ kHz}$ $\Rightarrow T_{PWM} = 100 \mu s$. Với tần số thạch anh $4 \text{ MHz}$ ($T_{OSC} = 0.25 \mu s$) và bộ chia trước Timer2 (Prescaler = 4):
$$T_{PWM} = [(PR2) + 1] \times 4 \times T_{OSC} \times (\text{TMR2 prescale})$$
$$100 \mu s = [(PR2) + 1] \times 4 \times 0.25 \mu s \times 4 \Rightarrow (PR2) + 1 = 25 \Rightarrow PR2 = 24$$
-
Bốn mức điều chế tốc độ trong chế độ Normal:
- Mức 1: Value = 25 $\Rightarrow T_{DUTY} = 25 \mu s$ (Duty cycle 25%).
- Mức 2: Value = 50 $\Rightarrow T_{DUTY} = 50 \mu s$ (Duty cycle 50%).
- Mức 3: Value = 75 $\Rightarrow T_{DUTY} = 75 \mu s$ (Duty cycle 75%).
- Mức 4: Value = 100 $\Rightarrow T_{DUTY} = 100 \mu s$ (Duty cycle 100%).
-
Tính toán thời gian ngắt định thời lấy mẫu (Timer0): Sử dụng bộ chia trước RTCC_DIV_256, chu kỳ nhịp đếm: $256 \times \frac{4}{4\text{ MHz}} = 256 \mu s$. Chu kỳ lấy mẫu vận tốc $25 \text{ ms}$ tương ứng $97$ nhịp ($97 \times 256 \mu s \approx 24.83 \text{ ms}$), giá trị nạp vào thanh ghi: $\text{Value} = 256 - 97 = 159$ (trong mã nguồn thực tế cấu hình
set_timer0(61)tương ứng khoảng lấy mẫu $50 \text{ ms}$). -
Xử lý ngắt ngoài đếm xung encoder: Cấu hình ngắt ngoài chân RB0/INT bắt cạnh xuống (
H_TO_L). Mỗi khi có xung cạnh xuống, biến đếm $b$ tăng 1 để xác định số xung trong chu kỳ lấy mẫu, từ đó suy ra vận tốc tức thời: $v_t = \text{pulse} - \text{p_pulse}$.
Nội dung chính theo từng chương
Phần I: Giới thiệu đề tài
Chương này tổng quan về mục tiêu và phương án thiết kế hệ thống điều khiển ổn định tốc độ động cơ DC dùng PIC16F877A và thuật toán PID. Tác giả phân tích chi tiết bản chất vật lý và ý nghĩa toán học của 3 khâu P, I, D; giải thích cơ chế hãm chống vọt lố qua đạo hàm sai số và cơ chế cộng dồn tích phân để thắng lực ma sát tĩnh. Tác giả đưa ra sơ đồ khối hệ thống gồm 5 khối chức năng, quy trình 3 bước vận hành mạch, cùng các giới hạn về công suất và hiển thị.
Phần II - Chương 1: Giới thiệu linh kiện
Trình bày cấu trúc, tính năng kỹ thuật và sơ đồ chân của các linh kiện sử dụng trong đồ án:
- Vi điều khiển PIC16F877A: Cấu trúc bộ nhớ Flash/RAM/EEPROM, các bộ định thời Timer0, Timer1, Timer2, module Capture/Compare/PWM độ phân giải tối đa 10-bit.
- IC logic 74HC08 (4 cổng AND 2 ngõ vào) và 74LS14 (6 cổng NOT có trễ Schmitt Trigger).
- IC driver L298: Cấu tạo 2 mạch cầu H, dải điện áp lên đến 50V, dòng tải 2A, tích hợp chân cảm biến dòng.
- Động cơ điện một chiều 12V và cảm biến quang học encoder: Phân tích cơ chế lệch pha $90^\circ$ của kênh A và B để giải mã góc quay và chiều quay.
- Màn hình tinh thể lỏng LCD 16x2 và tập lệnh điều khiển hiển thị.
Phần II - Chương 2: Thiết kế mạch
Thiết kế chi tiết sơ đồ nguyên lý cho từng khối phần cứng:
- Khối điều khiển: Sơ đồ ma trận nút nhấn 6 phím chức năng và nút Reset có mạch lọc dập nhiễu RC.
- Khối hiển thị: Mạch ghép nối 8 đường dữ liệu song song của LCD 16x2 với Port D và 3 đường điều khiển với Port B của vi điều khiển.
- Khối xử lý: Mạch tạo dao động thạch anh 4MHz, mạch nguồn cung cấp và mạng điện trở treo cho các cổng xuất nhập.
- Khối công suất: Mạch ghép nối IC logic 7408, 7414 với IC công suất L298 để tạo cơ cấu điều hướng và băm xung cho kênh A cầu H.
Phần II - Chương 3: Thiết kế lưu đồ khối và viết code
Xây dựng lưu đồ giải thuật và viết chương trình điều khiển hoàn chỉnh trên trình biên dịch CCS C:
- Lưu đồ chương trình ngắt ngoài đếm xung encoder (
#int_ext) và chương trình ngắt Timer0 tính sai số vận tốc (#int_timer0). - Lưu đồ giải mã số học tách hàng trăm, hàng chục, hàng đơn vị phục vụ hiển thị LCD.
- Lưu đồ chương trình chính: Khởi tạo phần cứng, quét nút nhấn chuyển chế độ (
MODE), cấu hình thanh ghi chu kỳ băm xung PWM 10 kHz, phân nhánh thực thi chế độ Normal (4 cấp tốc độ) và chế độ PID tính toán giá trị điều khiển $U = U_p + U_d + U_i$.
Phần III: Kết luận và hướng phát triển
Đánh giá tổng kết các kết quả đạt được về phần cứng và phần mềm điều khiển. Trình bày các hướng mở rộng kỹ thuật nhằm nâng cao khả năng điều khiển và mở rộng phạm vi ứng dụng của hệ thống.
Kết quả và đóng góp
Kết quả kỹ thuật đạt được
-
Về phần cứng:
- Hoàn thiện mạch nguyên lý và thi công phần cứng mạch điều khiển vi điều khiển PIC16F877A vận hành ở tần số 4 MHz.
- Thiết kế thành công mạch lái công suất tích hợp logic số giữa IC 74HC08, 74LS14 và driver cầu H L298, chuyển đổi tín hiệu điều khiển thành hai đường độc lập $In_1$, $In_2$.
- Mạch nguồn tích hợp IC 7805 và 7812 cung cấp ổn định đồng thời 5V cho vi xử lý và 12V cho động cơ DC.
-
Về phần mềm:
- Hiện thực hóa bộ phát xung PWM phần cứng qua khối CCP1 với tần số chuẩn 10 kHz ($PR2 = 24$).
- Xây dựng thành công thuật toán ngắt thời gian thực: ngắt ngoài RB0/INT bắt chính xác cạnh xuống xung encoder và ngắt Timer0 lấy mẫu định kỳ 25ms/50ms để tính sai số vận tốc.
- Lập trình hiển thị đầy đủ thông tin trạng thái hoạt động (NORMAL/PID, STOP/RUN, LEFT/RIGHT), giá trị vận tốc đặt (
SET) và vận tốc tức thời (CURRENT) lên màn hình LCD 16x2.
Đóng góp thực tiễn của đồ án
- Đồ án đã chuyển hóa thành công mô hình toán học giải thuật PID kinh điển thành thuật toán điều khiển số thực thi trực tiếp trên vi điều khiển 8-bit giá thành thấp.
- Đưa ra giải pháp thiết kế mạch logic phụ cho driver L298, giúp tiết kiệm chân điều khiển của vi điều khiển (chỉ cần 1 chân PWM và 1 chân DIR) đồng thời loại trừ trạng thái kích trùng mạch cầu gây ngắn mạch.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế của đề tài
Theo công bố của tác giả trong văn bản, hệ thống còn tồn tại các hạn chế kỹ thuật sau:
- Công suất tải: Việc sử dụng IC cầu H tích hợp L298 giới hạn dòng điện ngõ ra dưới 2A, do đó mạch chỉ có khả năng điều khiển các động cơ DC công suất nhỏ.
- Khả năng quan sát: Khối hiển thị sử dụng màn hình LCD 16x2 với kích thước ký tự nhỏ, gây hạn chế khả năng theo dõi thông số vận hành khi quan sát từ khoảng cách xa trong môi trường công nghiệp.
Hướng nghiên cứu tiếp
Để phát triển và hoàn thiện đề tài, tác giả đề xuất 3 định hướng mở rộng:
- Xây dựng phần mềm giao diện điều khiển trên máy tính bằng ngôn ngữ C#, truyền nhận dữ liệu qua cổng nối tiếp (UART/RS232) để giám sát, điều chỉnh thông số và vẽ đồ thị đáp ứng tốc độ động cơ theo thời gian thực.
- Thiết kế lại mạch công suất tầng rời sử dụng linh kiện bán dẫn công suất cao (MOSFET hoặc IGBT) để điều khiển các động cơ DC công suất lớn trong công nghiệp.
- Thay thế hoặc bổ sung khối hiển thị bằng LED 7 đoạn kích thước lớn nhằm tăng khả năng hiển thị trực quan ở khoảng cách xa.
Giá trị tham khảo
Đồ án là tài liệu tham khảo hữu ích cho sinh viên, kỹ sư và người nghiên cứu thuộc các chuyên ngành Kỹ thuật Điện - Điện tử, Kỹ thuật Điều khiển và Tự động hóa, Cơ điện tử và Kỹ thuật Máy tính.
Các nội dung có giá trị tham khảo cao trong tài liệu bao gồm:
- Kỹ thuật thiết kế mạch ghép nối logic cho driver L298: Phương pháp kết hợp cổng AND 74HC08 và NOT 74LS14 để điều khiển động cơ bằng 2 đường PWM và DIR.
- Phương pháp tính toán cấu hình ngoại vi vi điều khiển PIC: Công thức toán học chuẩn xác để thiết lập thanh ghi chu kỳ $PR2$ cho khối PWM $10 \text{ kHz}$ và thanh ghi nạp Timer0 cho chu kỳ ngắt lấy mẫu định thời.
- Kỹ thuật lập trình nhúng CCS C: Cấu trúc chương trình ngắt kết hợp đa nhiệm (ngắt ngoài đếm xung tốc độ cao song song với ngắt Timer định thời tính toán sai số PID và quét hiển thị LCD).
Câu hỏi thường gặp
1. Mạch logic phụ lái động cơ sử dụng IC 74HC08 và 74LS14 thực hiện chức năng gì?
Mạch logic phụ giải mã 2 tín hiệu từ vi điều khiển gồm tín hiệu băm xung tốc độ PWM (nối từ chân RC2/CCP1) và tín hiệu chọn chiều quay DIR (nối từ chân RC1/RC4) thành 2 tín hiệu ngõ vào $In_1$ và $In_2$ của driver L298 theo các hàm Boolean:
- $In_1 = PWM \cdot \overline{DIR}$
- $In_2 = PWM \cdot DIR$
Khi $DIR = 0$, $In_1 = PWM$ và $In_2 = 0$ (động cơ quay trái); khi $DIR = 1$, $In_1 = 0$ và $In_2 = PWM$ (động cơ quay phải). Mạch giúp tối ưu chân vi điều khiển và chống đoản mạch cầu H.
2. Vi điều khiển PIC16F877A được thiết lập như thế nào để tạo xung PWM tần số 10 kHz với thạch anh 4 MHz?
Với tần số dao động $f_{OSC} = 4 \text{ MHz}$, chu kỳ lệnh của PIC là $T_{OSC} = 0.25 \mu s$. Chọn bộ chia trước của Timer2 là 4, chu kỳ băm xung $T_{PWM} = 100 \mu s$ (tương ứng $10 \text{ kHz}$). Áp dụng công thức:
$$T_{PWM} = [(PR2) + 1] \times 4 \times T_{OSC} \times (\text{TMR2 prescale})$$
$$100 \mu s = [(PR2) + 1] \times 4 \times 0.25 \mu s \times 4 = [(PR2) + 1] \times 4 \mu s \Rightarrow PR2 = 24$$
Giá trị 24 được nạp vào hàm setup_timer_2(T2_DIV_BY_4, 24, 1).
3. Nguyên lý xác định chiều quay và vận tốc động cơ thông qua encoder 2 kênh A và B diễn ra như thế nào?
Encoder quang học tương đối phát ra 2 chuỗi xung A và B lệch pha nhau $90^\circ$:
- Vận tốc quay: Được tính bằng cách đếm số lượng xung phát ra trên kênh A trong một khoảng thời gian lấy mẫu xác định.
- Chiều quay: Được xác định dựa trên mức logic của kênh B tại thời điểm sườn xuống (cạnh xuống) của xung kênh A. Nếu tại sườn xuống của kênh A mà kênh B ở mức thấp thì động cơ đang quay thuận (cùng chiều kim đồng hồ); nếu kênh B ở mức cao thì động cơ đang quay nghịch (ngược chiều kim đồng hồ).
4. Cơ chế ngắt được thiết lập thế nào để tính sai số vận tốc trong chương trình?
Hệ thống sử dụng phối hợp 2 nguồn ngắt:
- Ngắt ngoài (
#int_ext): Nối chân xung encoder vào chân RB0/INT, cấu hình kích hoạt cạnh xuống (ext_int_edge(0, H_TO_L)). Mỗi lần ngắt xảy ra, biến đếmbtăng lên 1 và gán vào biếnpulse. - Ngắt Timer0 (
#int_timer0): Cấu hình bộ chia 256 để định thời chu kỳ lấy mẫu. Mỗi khi Timer0 tràn, chương trình ngắt tính vận tốc tức thời theo công thức $v_t = \text{pulse} - \text{p_pulse}$, sau đó tính sai số vận tốc $err = v_{đặt} - |v_t|$ và lưu lại trạng thái xungp_pulse = pulsecho chu kỳ tiếp theo.
5. Quy trình vận hành mạch điều khiển động cơ trên thực tế gồm những bước nào?
Hệ thống được vận hành theo quy trình 3 bước:
- Bước 1: Nhấn nút
MODE(nối chân RA5/RA6) để lựa chọn giữa chế độ hoạt động bình thường (NORMAL) hoặc chế độ ổn định vận tốc (PID). - Bước 2: Sử dụng các nút bấm
UP(RA0) /DOWN(RA1) để đặt giá trị tốc độ mong muốn, và nútLEFT(RA3) /RIGHT(RA2) để chọn chiều quay. - Bước 3: Nhấn nút
START/STOP(RA4) để khởi động động cơ chạy theo thông số đã cài đặt; nhấn nút này lần nữa để dừng động cơ.
Kết luận
Đồ án môn học "Điều khiển tốc độ động cơ DC dùng PID" của tác giả Đỗ Huy Duy đã giải quyết trọn vẹn bài toán thiết kế và thi công hệ thống điều khiển vòng kín cho động cơ điện một chiều 12V. Bằng việc làm chủ cấu hình vi điều khiển PIC16F877A, giải thuật băm xung PWM 10 kHz và kỹ thuật ngắt thời gian thực xử lý tín hiệu hồi tiếp từ encoder quang học, tác giả đã hiện thực hóa thành công giải thuật PID kinh điển lên phần cứng nhúng. Hệ thống vận hành ổn định ở hai chế độ Normal và PID, hiển thị trực quan thông số qua màn hình LCD 16x2, đồng thời cung cấp giải pháp mạch logic phụ hiệu quả cho mạch công suất L298 và vạch ra các định hướng phát triển giao tiếp máy tính cùng mạch công suất lớn trong tương lai.