Точный контроль температуры воды


9

У меня есть следующие настройки:

  • Arduino Duemilanove
  • Небольшой водонагреватель соединен с оптическим реле (ШИМ в порядке)
  • Водонепроницаемый датчик температуры DS18B20
  • Неизвестное количество воды (но датчик температуры и нагреватель всегда находятся под водой).

Как я могу точно контролировать температуру воды, основываясь на показаниях датчика температуры? Под точностью я подразумеваю точность датчика температуры (в данном случае ± 0,5 ° C). Все должно работать на Arduino, поэтому дополнительное хранилище данных или вычислительная мощность недоступны. Для отладки я могу использовать компьютер.

Я пытался запустить PID, но это кажется очень трудно

  1. Избегайте перерегулирования - превышение заданной температуры либо изначально, либо при добавлении (холодной) воды
  2. Стабилизировать правильно после добавления холодной воды.

Вы настраивали свой PID, или вы просто использовали стандартные значения?
Питер Блумфилд

Я попытался настроить параметры PID с помощью различных руководств «Как настроить PID», но безуспешно. Я также попробовал PIDAutotune , но из этого ничего не получилось. Я не говорю, что PID не подходит для этого.
Олли

С нагревом воды у вас будет много несоответствий. Где нагреватель в вашем баке относительно датчика температуры?
Мэтт Кларк

1
Возможно, вам придется добавить что-то, что смешивает воду для гомогенизации температуры во всем. Тогда вам нужно будет принять во внимание тепловые свойства вашего нагревательного элемента, сколько времени потребуется для охлаждения после отключения и т. Д. ... Это также зависит от того, сколько воды в системе. Если вы можете контролировать температуру нагревательного элемента, это будет иметь большое значение.
Даниэль

Не является частью вашей проблемы банкомат, но стоит отметить: не путайте точность, точность и повторяемость. Точность означает, насколько близка сообщаемая температура к фактической температуре. Точность - это наименьшая разница, которую может различить устройство (0,0625 ° C для DS18b20). Повторяемость - это то, насколько сообщаемые измерения одной и той же температуры отличаются друг от друга. Последние два имеют большее значение, чем первое. Даже с датчиком с точностью +/- 0,5 градуса по Цельсию вы все равно можете удерживать температуру в пределах (или, по крайней мере, различать различия, что является необходимым условием) в пределах нескольких 1/16 градуса Цельсия ....
JRobert

Ответы:


2

Вам необходимо знать время отклика вашей системы и повторяемость ваших измерений для характеристики ваших данных (установить достоверность). Я предлагаю взять образцы и усреднить их, прежде чем снова включить нагреватель.

Имхо, вода не будет долго оставаться в пределах 0,5 ° C. Можете ли вы позволить грубые и точные режимы? Используйте более высокий ШИМ для больших различий, а затем понизьте ШИМ, если он близок к цели.

После достижения цели есть несколько способов улучшить стабильность температуры. В то время как готовые вещи, такие как PID, работают для многих, я обычно реализую такую ​​функцию вручную.


0

BrettAM, dE (скорость изменения погрешности) будет изменяться в качестве параметра управления, в этом случае ширина импульса сигнала нагревательного элемента модулируется, изменяется PID. Моя формулировка о том, что скорость изменения температуры была плохим выбором. Производный член также будет работать для учета небольших изменений удельной теплоемкости воды с температурой (4,186 кДж / (кг К) при 20 ° С до 4,219 кДж / (кг К) при 100 ° С).

Суть в том, что да, производный термин рассчитывается для скорости изменения dE. Поскольку ошибка здесь заключается в разнице между требуемой температурой и фактической температурой, то производная затем рассчитывает изменения скорости нагрева воды.

Проблема в том, что часто трудно создать стабильную систему с производным термином. Система PID должна основываться в первую очередь на пропорциональном члене. По-моему, когда вы меняете количество воды, вы создаете больше нелинейности, чем может компенсировать PID. По этой причине PID должны быть несколько повторяемыми, и если уровень воды сильно меняется, его система больше не повторяется.

К ОП: В моем аналогичном дизайне я попытаюсь использовать небольшой комбинированный радиатор / вентилятор и насос 12 В постоянного тока для пропускания воды в качестве метода ее охлаждения. Я чувствую, что это может работать лучше. В случае успеха я дам вам знать.


Добро пожаловать в Arduino SE! Это не дает прямого ответа на вопрос (похоже, больше отвечает на другой комментарий). Можете ли вы использовать кнопку редактирования, чтобы уточнить, как эта информация отвечает на вопрос? Спасибо!
Анонимный Пингвин

-2

Вы должны поддерживать постоянное количество нагреваемой воды. Скорость, с которой температура воды повышается, будет меняться при изменении количества воды (добавление холодной воды, как вы упомянули). Пропорционально-интегрально-производный контроллер (PID) работает, наблюдая производную (скорость изменения) переменной, которую вы пытаетесь контролировать. Ваш PID никогда не будет работать должным образом, если скорость изменения температуры не является (разумно) постоянной.

Посмотрим на удельную теплоемкость воды, в основном уравнение Q = c m dT. Q - добавленное тепло, которое, как я полагаю, в вашей установке является постоянным. m - масса нагреваемого вещества (должна быть постоянной!). с - удельная теплоемкость воды, которая составляет 4,186 Дж / грамм * градус Цельсия. Если Q, m и c постоянны, то dT, скорость, с которой ваша температура воды будет расти, также будет постоянной (в действительности c незначительно меняется в зависимости от температуры, но я бы сказал, что это можно игнорировать, если вы работаете с 0- 100C). Попробуйте настроить PID с постоянным количеством воды, и вы можете получить лучшие результаты.

Какой водонагреватель вы используете? В настоящее время я делаю нечто подобное, но пытаюсь использовать горячую платформу из химической лаборатории и испытываю огромные выбросы. Я думал о переходе на аквариумный нагреватель, но хотел бы знать, что вы используете?

Матф


PID не предполагает, что скорость изменения является постоянной. Если бы dE (скорость изменения ошибки) была постоянной, термин "D" не был бы там. кроме того, вода будет нагреваться медленнее при высоких температурах, так как больше тепла теряется парогенератором, сколько там воды. PID может быть идеально настроен для определенной тепловой массы, но он все равно должен работать для широкого диапазона уровней воды и внешних температур / давлений.
BrettAM
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.