Chƣơng trình ngắt Timer2 và ngắt INT0

Một phần của tài liệu Thiết kế bộ điều khiển nhiệt độ lò sấy thủy sản có ghép nối với máy tính (Trang 83)

Lưu đồ thuật toán: 3.2.3.1.

a) Thuật toán ngắt timer 2 b) Thuật toán ngắt INT 0 Hình 3.11. Lƣu đồ thuật toán chƣơng trình ngắt timer 2 và ngắt INT 0

Code lập trình: 3.2.3.2.

Xem phần phụ lục 1: Mã code lập trình cho Vi điều khiển ATMEGA 16

Giải thích chương trình: 3.2.3.3.

Vì đây là 2 chƣơng trình ngắt, chúng hoạt động mọi lúc có thể khi thỏa điều kiện ngắt nên không đƣa vào chƣơng trình chính.

Ta có: Điện áp 220V - 50 Hz, 1 chu kỳ tần số 50Hz, nữa chu kỳ sẽ là 100Hz tƣơng đƣơng với 10 mS. Ta lấy nữa chu kỳ vì góc kích α sẽ đƣợc kích ở mỗi nữa chu kỳ. Giả sử rằng: Với 10 mS này ta chia làm 20 đoạn, vậy 1 đoạn sẽ có 0,5 mS. Chƣơng trình timer 2 có nhiệm vụ mỗi 0,5 mS thì xảy ra sự kiện ngắt tràn. Lúc đó chƣơng trình ngắt tràn timer 2 hoạt động. Vậy với 20 lần ngắt tràn sẽ là 1 nữa chu kỳ của điện áp.

Tại chƣơng trình ngắt tràn có một biến đếm “count”, cứ mỗi lần có ngắt biến count sẽ tăng lên 1. Đủ 20 lần thì sẽ reset về 0. Tại 1 thời điểm nào đó, xuất 1 giá trị điều khiển “ timedl” từ 0 đến 20, chƣơng trình ngắt sẽ so sánh giá trị đó với giá trị biến count, nếu bằng nhau sẽ kích mở van Triac, điện áp cấp cho tải chính là phần điện áp tính từ lúc kích mở cho đến khi về điểm Zero.

Công thức tính góc kích α : α = (timedl x 180)/20 (3.3)

Từ đó thế vào công thức: Utai =

Ta sẽ tính đƣợc điện áp ra tải ứng với giá trị timedl.

Tuy nhiên nếu chỉ sử dụng ngắt Timer 2 thì sẽ không biết đƣợc lúc nào là điểm Zero và tần số lƣới điện có thể không ổn định nên giá trị 20 có thể thay đổi. Vì vậy kết hợp ngắt timer với phát hiện điểm zero sẽ giúp ta khắc phục những hạn chế này. Mạch phát hiện điểm Zero có nhiệm vụ: Tại thời điểm phát hiện điểm Zero, mạch phát hiện điễm Zero ngay lập tức giởi về vi điều khiển mức 1, còn bình thƣờng nhận đƣợc mức 0. Vậy thời điểm Zero sẽ có 1 xung sƣờn lên gởi về chân ngắt ngoài INT 0 của vi điều khiển. Chân ngắt ngoài INT 0 đƣợc thiết lập chế độ ngắt xung sƣờn lên, nghĩa là mỗi khi có xung sƣờn lên chƣơng trình ngắt ngoài INT 0 sẽ hoạt động.

Trong chƣơng trình ngắt ngoài INT 0, sẽ lƣu lại giá trị biến count vào 1 biến nhớ, sau đó reset biến count về 0. Có nghĩa là thời điểm Zero lúc đó biến count là lớn nhất của nữa chu kỳ trƣớc, cũng là bắt đầu của nữa chu kỳ tiếp theo. Ta dựa vào biến nhớ này để điều khiển. Khi thay đổi khoảng thời gian ngắt Timer 2 thì giá trị biến nhớ này cũng thay đổi nên không cần quan tâm đến giá trị 20 khoảng nữa mà có thể là vô số khoảng, tùy yêu cầu của hệ thống mà ta đặt giá trị thanh ghi của timer 2 phù hợp, với lò nhiệt thì không cần cao nên chỉ cần khoảng 20 khoảng trên nữa chu kỳ là đƣợc.

Tóm lại: 2 chƣơng trình ngắt này rất quan trọng và không thể thiếu trong việc điều khiển nhiệt độ lò điện trở dùng điện xoay chiều. Chƣơng trình ngắt Timer 2 cứ 1 khoảng thời gian sẽ tăng biến count thêm 1, sau đó so sánh với giá trị điều khiển, nếu bằng nhau sẽ xuất xung điều khiển mở Triac. Chƣơng trình ngắt INT 0 sẽ lƣu lại biến count, sau đó reset biến count về 0, khởi tạo lại giá trị thanh ghi trong Timer 2 để đồng bộ.

Một phần của tài liệu Thiết kế bộ điều khiển nhiệt độ lò sấy thủy sản có ghép nối với máy tính (Trang 83)