Kiểm soát nhiệt độ nước chính xác


9

Tôi có thiết lập sau:

  • Arduino Duemilanove
  • Máy nước nóng nhỏ kết nối với rơle quang (PWM là ok)
  • Cảm biến nhiệt độ DS18B20 không thấm nước
  • Lượng nước không xác định (nhưng cảm biến nhiệt độ và lò sưởi luôn ở dưới nước).

Làm thế nào tôi có thể kiểm soát chính xác nhiệt độ nước, dựa trên bài đọc cảm biến nhiệt độ? Nói một cách chính xác, ý tôi là độ chính xác của cảm biến nhiệt độ (trong trường hợp này là ± 0,5 ° C). Mọi thứ nên chạy trên Arduino, vì vậy không có khả năng lưu trữ hoặc xử lý dữ liệu bổ sung. Để gỡ lỗi, rõ ràng tôi có thể sử dụng máy tính.

Tôi đã thử chạy PID, nhưng có vẻ như rất khó để

  1. Tránh quá mức - vượt quá nhiệt độ mục tiêu ban đầu hoặc khi nước (lạnh) được thêm vào
  2. Ổn định đúng cách sau khi thêm nước lạnh.

Bạn đã điều chỉnh PID của mình, hay bạn chỉ đang sử dụng các giá trị tiêu chuẩn?
Peter Bloomfield

Tôi đã cố điều chỉnh các tham số PID với nhiều hướng dẫn 'cách điều chỉnh PID', nhưng không có may mắn. Tôi cũng đã thử PIDAutotune , nhưng không thể nhận được bất cứ điều gì tốt hơn từ nó. Tôi không nói rằng PID không thể phù hợp với điều này.
Olli

Với hệ thống sưởi ấm bằng nước, bạn sẽ có rất nhiều mâu thuẫn. Máy sưởi trong bể của bạn ở đâu so với đầu dò nhiệt độ?
Matt Clark

1
Bạn có thể phải thêm một cái gì đó trộn nước để đồng nhất nhiệt độ trong suốt. Sau đó, bạn sẽ phải tính đến các tính chất nhiệt của bộ phận làm nóng của mình, thời gian làm mát sau khi bị vô hiệu hóa, v.v ... Nó phụ thuộc vào lượng nước trong hệ thống. Nếu bạn có thể kiểm soát nhiệt độ của bộ phận làm nóng, điều đó sẽ đi một chặng đường dài.
Daniel

Không phải là một phần của vấn đề ATM của bạn, nhưng đáng chú ý: Đừng nhầm lẫn giữa độ chính xác, độ chính xác và độ lặp lại. Độ chính xác có nghĩa là nhiệt độ được báo cáo gần với nhiệt độ thực tế. Độ chính xác là sự khác biệt nhỏ nhất mà thiết bị có thể phân biệt (0,0625 degC cho DS18b20). Độ lặp lại là số lượng đo được báo cáo của cùng nhiệt độ khác nhau. Hai cái cuối cùng được quan tâm nhiều hơn cái đầu tiên. Ngay cả với cảm biến chính xác +/- 0,5degC, bạn vẫn có thể giữ nhiệt độ trong (hoặc ít nhất là phân biệt sự khác biệt, đó là điều kiện cần thiết) của một vài 1/16 degC ....
JRobert

Câu trả lời:


2

Bạn cần biết thời gian phản hồi của hệ thống và độ lặp lại của các phép đo để mô tả dữ liệu của bạn (thiết lập độ tin cậy). Tôi đề nghị lấy mẫu và lấy trung bình trước khi bật lại máy sưởi.

Imho, nước sẽ không vui vẻ ở trong vòng 0,5 ° C. Bạn có thể cho phép các chế độ thô và tốt? Sử dụng một PWM cao hơn cho sự khác biệt lớn và sau đó hạ thấp PWM khi gần với mục tiêu.

Sau khi tập trung vào mục tiêu của bạn, có một vài cách bạn có thể cố gắng cải thiện sự ổn định nhiệt độ. Trong khi những thứ được xây dựng sẵn như PID hoạt động với nhiều người, tôi thường thực hiện chức năng như thế này một cách thủ công.


0

BrettAM, dE (tốc độ thay đổi lỗi) sẽ thay đổi khi tham số điều khiển, trong trường hợp này độ rộng xung của tín hiệu phần tử gia nhiệt được điều chế, được thay đổi bởi PID. Từ ngữ của tôi khi nói rằng tốc độ thay đổi lỗi nhiệt độ là một lựa chọn kém. Thuật ngữ phái sinh cũng sẽ có tác dụng chăm sóc các biến đổi nhỏ trong nhiệt dung riêng của nước với nhiệt độ (4.186 kJ / (kg K) @ 20C đến 4.219 kJ / (kg K) @ 100C).

Quan điểm của tôi, vâng, thuật ngữ phái sinh tính toán cho tốc độ thay đổi của dE. Do sai số ở đây là chênh lệch giữa nhiệt độ mong muốn và nhiệt độ thực tế, nên đạo hàm sau đó tính toán các thay đổi về tốc độ nước được làm nóng.

Vấn đề là thường khó tạo ra một hệ thống ổn định với thuật ngữ phái sinh. Một hệ thống PID nên chủ yếu dựa trên thuật ngữ tỷ lệ. Khi bạn thay đổi lượng nước, theo ý kiến ​​của tôi, bạn đang tạo ra nhiều phi tuyến tính hơn mức mà PID có thể bù lại. Vì lý do này, PID cần phải được lặp lại một chút và nếu mực nước thay đổi nghiêm trọng, hệ thống của anh ta không còn có thể lặp lại.

ĐẾN OP: Trong thiết kế tương tự của tôi, tôi sẽ cố gắng sử dụng một tổ hợp quạt tản nhiệt / quạt nhỏ và bơm DC DC để chạy nước qua như một phương pháp làm mát nước trở lại. Tôi cảm thấy điều này có thể làm việc tốt hơn. Nếu thành công, tôi sẽ cho bạn biết.


Chào mừng bạn đến với Arduino SE! Điều này không trả lời trực tiếp câu hỏi (có vẻ như trả lời nhiều hơn cho một bình luận khác). Bạn có thể vui lòng sử dụng nút chỉnh sửa để làm rõ cách thông tin này trả lời câu hỏi không? Cảm ơn!
Chim cánh cụt vô danh

-2

Bạn cần giữ cho lượng nước được làm nóng không đổi. Tốc độ tăng nhiệt độ nước sẽ thay đổi khi bạn thay đổi lượng nước (thêm nước lạnh như bạn đã đề cập). Bộ điều khiển đạo hàm tỷ lệ-tích phân (PID) hoạt động theo dõi đạo hàm (tốc độ thay đổi) của biến bạn đang cố kiểm soát. PID của bạn sẽ không bao giờ hoạt động bình thường nếu tốc độ thay đổi nhiệt độ không ổn định (hợp lý).

Nhìn vào nhiệt dung riêng của nước, chủ yếu là phương trình Q = c m dT. Q là nhiệt được thêm vào, mà tôi cho là không đổi trong thiết lập của bạn. m là khối lượng của chất được gia nhiệt (phải được giữ không đổi!). c là nhiệt dung riêng của nước, là 4.186 Joules / gram * độC. Nếu Q, m và c không đổi thì dT, tốc độ tăng nhiệt độ nước của bạn cũng sẽ không đổi (trong thực tế c thay đổi một chút theo nhiệt độ nhưng tôi có thể bỏ qua điều này nếu bạn làm việc từ 0- 100C). Hãy thử điều chỉnh PID của bạn với một lượng nước không đổi và bạn có thể nhận được kết quả tốt hơn.

Bạn đang sử dụng máy nước nóng nào? Tôi hiện đang làm một cái gì đó tương tự nhưng cố gắng sử dụng một máy đo nóng từ phòng thí nghiệm hóa học và trải nghiệm quá nhiều. Tôi đã cân nhắc chuyển sang sử dụng máy sưởi bể cá nhưng muốn biết bạn đang sử dụng cái gì?

-Matt


PID không cho rằng tốc độ thay đổi là không đổi. Nếu dE (tốc độ thay đổi lỗi) không đổi, thuật ngữ "D" sẽ không tồn tại. Bên cạnh đó, nước sẽ nóng chậm hơn ở nhiệt độ cao do mất nhiều nhiệt hơn cho người định lượng hơi nước có bao nhiêu nước. PID có thể được điều chỉnh lý tưởng cho một khối nhiệt cụ thể, nhưng nó vẫn hoạt động trong nhiều mức nước và áp suất / áp suất bên ngoài.
BrettAM 11/03/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.