Trong phần này, chúng ta sẽ tìm hiểu thế nào là thuật toán PID, cách triển khai hệ thống lò nhiệt và cách áp dụng thuật toán PID trong việc điều khiển.Nhiệm vụ đặt ra cho chúng ta là điều khiển khoảng nhiệt độ theo ý mong muốn, với độ sai số càng thấp càng tốt. Vì nhiệt độ lò nhiệt có lúc lên đến 400oC khó có loại IC đo nhiệt độ nào có thể chịu được, nên chúng ta sẽ lựa chọn cảm biến nhiệt độ PT100 đo được nhiệt độ lên đến trên 400oC. PT100 thực chất là một thanh kim loại thay đổi giá trị điện trở khi nhiệt độ thay đổi.                                                                                 

                          

Resistance

100Ω at 0°C

Accuracy

-1 Model ± 0.5W

-2 Model ± 0.22W

Stability

< 0.2°C drift/year

Temperature range

-200°C to +232°C

Response time

 

(lag on metal surfaces)

Self Heating

15mW/°C (on metal surface)

 

Chúng ta dùng PT100 để cập nhật nhiệt độ từ lò nhiệt, khả năng cập nhật nhiệt độ cũng như độ nhạy của PT100 tương đối chậm hơn so với các cảm biến nhiệt độ khác như LM35, DS18B20…, ở 00 độ điện trở của PT100 là 100Ω, cứ tăng 10C thì PT100 tăng khoảng 0.39Ω. Điều đó có nghĩa là giá trị điện áp trả về sẽ rất nhỏ. Vì vậy chúng ta cần có một giải pháp để giải quyết vấn đề đó, và lựa chọn của AT-COM là dùng mạch khuếch đại vi sai để khuếch đại tín hiệu thu được.

Ngoài ra, chúng ta cần có một nguồn dòng để ổn định dòng điện đi qua PT100, IC ổn định dòng điện thông dụng là LM334.

Đó là toàn bộ hệ thống của chúng ta, sau đây là sơ đồ khối:

Mạch ổn dòng:

           Chúng ta có thể tham khảo được sơ đồ nguyên lý của mạch ổn dòng LM334 trong datasheet của nhà sản xuất.

Mạch khuếch đại thuật toán:

Khi ở 00C thì điện trở của PT100 là 100Ω, nếu dùng mạch ổn áp dòng 1mA thì áp đặc vào hai đầu của nó là U=I.R=1*0.1=0.1V. Tương tự, nếu nhiệt độ ở 200 độ C thì điện trở hai đầu PT100 khoảng 178Ω (cứ 1oC điện trở tăng 0.35Ω), hay điện áp đưa vào 2 đầu của PT100 sẽ là U=1*0.178=0.178V, chúng ta thấy điện áp còn rất nhỏ so với mức điện áp đầu vào của vi điều khiển PIC16F877A là  0-5V, lúc này chúng ta sử dụng mạch khuếch đại vi sai để khuếch đại mức điện áp trong vùng từ 0-5V.

 Giới thiệu thuật toán PID:

PID là cách viết tắc của các từ Propotional (tỉ lệ), Integral (tích phân) và Derivative (đạo hàm). Để các bạn hiểu rõ hơn về thuật toán này AT-COM xin giới thiệu một ví dụ cụ thể như sau:

Giả sử chúng ta có 1 xe đồ chơi được gắn động cơ để đẩy xe chạy về phía trước hoặc kéo lui về phía sau theo đường thẳng.

Gọi F là lực mà động cơ sẽ đẩy chiếc xe đi đến điểm O, với yêu cầu là nhanh, chính xác và ổn định. Gọi e là khoảng cách từ A đến O, hay gọi là sai số khoảng cách, trên thực tế nếu sai số khoảng cách càng lớn thì chúng ta phải cần một lực F đủ mạnh để đẩy xe nhanh chóng về O. Và ta có công thức:

          F=Kp*e     (1)

          Trong đó Kp là một hằng số dương nào đó mà chúng ta gọi nó là hằng số P (Propotional gain), e là sai số khoảng cách hay chính là khoảng cách từ xe đến đích, mục đích là đưa xe về O càng nhanh càng tốt, thực tế nếu ta tăng Kp càng lớn thì lực F càng lớn hay xe càng nhanh về O. Tuy nhiên theo định luật 2 Newton nếu lực F quá lớn sẽ gia tốc cho xe càng nhanh (F=ma), do đó khi xe tiến đến vị trí O vì quán tính lớn mặc dù F=0 xe vẫn dịch chuyển ra khổi O một khoản nào đó, giá trị sai số lúc này gọi là overshot. Giá trị overshot xuat hiện đồng nghĩa lại xuất hiện sai số e nhưng lúc này nó có giá trị âm, tạo ra lực F ngược chiều lực F ban đầu kéo xe trở lại điểm O. Nhưng lại một lần nữa, giá trị Kp lớn nên lực F cũng lớn và lại đẩy xe lệch khổi vị trí O. Quá trình cứ tiếp diển xe cứ dao động mãi quanh điểm O.

          Thật là lí tưởng nếu như chúng ta thêm vào đó thành phần thắng, khi xe ở xa điểm O thì lực F sẽ lớn để đẩy xe về O, khi xe đến vị trí O thì thành phần thắng sẽ giúp xe dừng lại. Chúng ta cần biết, tốc độ xe lớn nhất khi xe nằm ở vị trí cân bằng hay chính xác xe nằm ở vị trí O. Hay ở vị trí O sai số e sẽ thay đổi lớn nhất. Mặt khác, tốc độ thay đổi của e có thể tính bằng đạo hàm của biến này theo thời gian. Như vậy, khi xe từ A tiến về O, đạo hàm c sai số e tăng giá trị nhưng ngược chiều với lực F. Nếu sử dụng đạo hàm làm thành phần thắng thì có thể giảm overshot của xe. Vậy ta sẽ có bộ điều khiển như sao:

          F=Kp*e+Kd*(de/dt)      (2)

          Trong đó, (de/dt) là vận tốc thay đổi của sai số e là Kd là hằng số không âm gọi là hệ số D(Derivative gain).

          Sự hiện diện của D làm giảm overshot của xe, khi xe tiến về O lực F gồm 2 thành phần Kp*e>=0 và Kd*(de/dt)<=0.

          Giả sử, thành phần D lớn hơn rất nhiều so với thành phần P hoặc bản thân thành phần P rất nhỏ, khi đó xe tiến dần về O hoặc chưa thật sự đến O thì xe đã dừng hẳn, thành phần D bằng 0. Xe sẽ dừng hẳn vì thành phần P và sai số e lúc này quá nhỏ không thể thắng được ma sát tĩnh, sai số e lúc này được gọi là sai số tĩnh steady state error. Để tránh sai số tĩnh người ta thêm vào bộ điều khiển một thành phần có chức năng cộng dồn sai số. Khi trạng thái tĩnh xảy ra, hai thành phần P và D mất tác dụng, thành phần cộng dòng sai số sẽ làm tăng lực F theo thời gian, đến một lúc nào đó lực F đủ mạnh để thắng ma sát tĩnh thì xe sẽ tiến dần về O. Thành phần cộng dồn sai số chính là thành phần I trong bộ điều khiển PID. Nó được tính bằng tích phân của e theo thời gian.

          Đến đây ta có bộ điều khiển PID đầy đủ như sao:

          F=Kp*e+Kd*(de/dt)+Ki*        (3)

          Như vậy chúng ta đã có được một thuật toán hoàn chỉnh dùng để điều khiển. Việc quan trọng là chúng ta làm cách nào để áp dụng nó vào từng trường hợp cụ thể.

 

Sơ đồ mạch hệ thống điều khiển lò nhiệt sử dụng PIC16F877A:

 

Với sơ đồ mạch như trên, chúng ta sẽ triển khai một hệ thống lò nhiệt, dùng điện trở đốt nóng để tạo nhiệt độ cho lò, PT100 đo nhiệt độ trong khoảng giới hạn từ 0 độ đến 400 độ C, giá trị điện áp được đưa qua mạch khuếch đại thuật toán để khuếch đại tín hiệu lên cao và đưa vào VĐK(VDK ở đây là PIC 16F877A) tính toán các thông số PID và tác động lên điện trở nhiệt bằng phương pháp điều xung PWM. Chúng ta cũng có thể phát triển thêm giao diện VB để dễ theo dõi cũng như tính toán.