Danh mục

PID điều chỉnh nhiệt độ lò điện

Số trang: 20      Loại file: docx      Dung lượng: 47.79 KB      Lượt xem: 14      Lượt tải: 0    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: 7,000 VND Tải xuống file đầy đủ (20 trang) 0
Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Mình đang làm về PID điều khiển nhiệt độ sử dụng AT89C51. Các bạn có thể chỉ giáo cho tôimấy chiêu về PID được không.
Nội dung trích xuất từ tài liệu:
PID điều chỉnh nhiệt độ lò điện: PID điều chỉnh nhiệt độ lò điệnmumoi18-12-05, 11:17Chào các bạn.Mình đang làm về PID điều khiển nhiệt độ sử dụng AT89C51. Các bạn có thể chỉ giáo cho tôimấy chiêu về PID được không.Tôi đã viết PID trên C và:Phương trình sai phân của PID số được viết dưới dạngsai phân sau:U(i+1) = Kp*e + Kd* [e(i+1)-e(i)]/Ts + Ki*Se(i)*TsỞ đây: e là sai số.Ts là thời gian lấy mẫu.U là đầu ra.Vấn đề là ở chỗ góc mở a cho Triac của bộ tạo nhiệt.Ta có a nằm trong khoảng 0o đến 180o.Khi đó nhiệt độ đầu ra tương ứng là toout = Tmax¸ 0.Trong lập trình thì góc mở a tương ứng với thời gian trễ của góc mở so với tín hiệu đồng phađược phát hiện bởi ngắt ngoài.Do đó a = 0o¸ 180o tương ứng a = 0 ¸ 10000ms (ở đây tần số công nghiệp là 50Hz).Vấn đề là mình không tìm được mối quan hệ giữa đầu ra của PID là U và góc mở Triac a.Mình có suy nghĩ như thế này không biết ý các cao nhân thế nào:Tức là ứng với giá trị nhiệt độ đặt là td thì ta có góc mở là ad. Như vậy góc mở tại thời điểmi là:a(i) = ad - au.trong đó au = f(U).Vấn đề là hàm f(U) xác định như thế nào?Mình chưa làm thực tế về PID bao giờ nên bỡ ngỡ quá. Các bạn chỉ cho mình mấy chiêu đượckhông.Mình cảm ơn anh nha!Chào.Chúc vui vẻ.AFH18-12-05, 13:33Công thức bạn đưa ra là đúng rồi đấy. Nhưng tôi thấy bạn chưa hiểu rõ về PID vì vậy bạnnên tìm mua sách mà học PID cho cẩn thận (cái món PID này tưởng dễ chứ thực ra khó phếtđấy). Còn về góc mở a thì bạn cho một biến đếm thời gian như bạn đã ghi ấy. nghĩ là góc mở0 tương ứng với 0 và góc mở 180 độ tương ứng với 10000 us (micro giây). Giá trị trả về củabộ PID bạn cho qua bộ chặn trên và chặn dưới. Nghĩa là Umax=10000 và Umin = 0. Sau đógán Biến đếm thời gian = U là xong.Việc điều chỉnh ổn định điều khiển phải được thực hiện qua các thống số là: Hệ số khuếchđại Kp, Hằng số tích phân Ti và hắng số vi phân Td.Chúc bạn thành công.AFHAmateur18-12-05, 13:57Tôi nghĩ không cần lập quan hệ Góc mở ~ Nhiệt độ.Ta điều khiển theo quan niệm: Còn sai, thì còn điều chỉnh. Nếu lò nhiệt có tải (tiêu thụ nănglượng nhiệt) thì còn phải thay đổi góc mở. Thậm chí có khi mở hết 180 độ mà bạn vẫn khôngđạt được nhiệt độ mong muốn đấy, do đó không thể có quan hệ Góc mở ~ NHiệt độ lò. Quanhệ này chỉ có khi nhiệt lượng tiêu thu là không đổi hay quá nhỏ. Tại một thời điểm, đang mởa độ. Nếu ta nhận được sai số nhiệt độ là e, tính ra gia số góc mở theo PID (Delta a), sau đógóc mở mới = a + delta a. Tiếp tục tìm sai lệch... Vấn đề tìm ra bộ thông số Kp, Ki, Kd. Vàvới hệ rời rạc này, ta chọn tiếp tham số thứ 4 là Ts - Thời gian giữa 2 lần lấy mẫu.mumoi19-12-05, 16:48Bác AFH ơi đúng là PID phức tạp thật, bác có nói tới bộ chặn trên và bộ chặn dưới, vậy nó làgì vậy, bác chỉ rõ cho tôi được không.Cám ơn bác.To Amateur: Bác có thể nói rõ cách tính delta a như thế nào được không, tôi đang mắc chỗ đóđó.Cảm ơn nha.Chúc vui vẻ!CHIBANG19-12-05, 17:02Chặn trên và dưới nghĩa là các thành phần tỷ lệ, vi phân và tích phân, rồi góc mở đều có gi ớihạn. Nếu nó vượt qua thì gán nó bằng cái chặn gần nhất. Ví dụ:if(p>P_MAX) p=P_MAX;Biểu thức liên hệ giữa góc mở và công suất thì chỉ là biểu thức tương đối. Ví dụ bạn chia ra1000 mức công suất đều nhau thì ứng với mức 1---góc mở 1, mức 2---góc mở 2.... công suấtmức 1000--- góc mở 1000. 1000 mức công suất đều nhau nhưng 1000 mức góc mở lại phituyến vì do hàm sin. Bạn dùng exel mà suy ra.Thực tế nếu bạn dùng uC thì có thể dùng timer của nó để làm như bác AFH nói. Và có thể chỉchia mức công suất thành vài đoạn rồi nội suy ra thời gian mở để tiết kiện FlashAFH19-12-05, 18:41bạn có thể hiểu chặn trên và chặn dưới nghĩa là chỉ cho giá trị điều khiển nằm trong 1khoảng nào đấy thôi. Một ví dụ là nếu bộ điều khiển của bạn kô thể đạt giá trị đặt -> bộ tíchphân cứ tiếp tục tăng -> giá trị điều khiển tăng liên tục -> tràn bộ tích phân hoặc tràn giá trịđiều khiển (cái này bạn rõ nhất khi khai báo kiểu CHAR và giá trị 255 + 1 = 0 do tràn só mà)Nếu bạn dùng PID thì kô cần quan tâm đến chia đoạn công suất làm gì. Cứ còn sai lệhc thìcòn tăng giá trị điều khiển đến khi nào U = U max hoặc sai lệch = 0 thì mới thôi.Chúc thành công.AFHPPIICC19-12-05, 20:26Nếu bạn dùng PID thì kô cần quan tâm đến chia đoạn công suất làm gì. Cứ còn sai lệhc thìcòn tăng giá trị điều khiển đến khi nào U = U max hoặc sai lệch = 0 thì mới thôi.Chúc thành công.AFHVậy là bác điều khiển định tính à? Vậy làm sao chính xác được nhỉ?Ví dụ: Công suất p =k*eGiả sử k=100, e=4---> cong suat mức là 400e=3-->công suất là mức 300.Vậy nghĩa là phải chia mức chứ?Hơn nữa nếu điều khiển theo thời gian thì chu kỳ bán sin điện lưới 10ms.Nêu chia đều 256 mức thì mức i là (10-i/256)ms.Vậy nếu chia đều như thế này thì sẽ rất thiếu chính xác bởi lẽ những mức cận 0ms và 10mssẽ rất bé, còn các mức ở giữa gần 5ms sẽ rất thô(do biên độ). Bởi vậy ChiBang nói đúng.AFH19-12-05, 20:39PID nó tự tính cho mình, chả ...

Tài liệu được xem nhiều: