У меня есть следующие настройки:
- Arduino Duemilanove
- Небольшой водонагреватель соединен с оптическим реле (ШИМ в порядке)
- Водонепроницаемый датчик температуры DS18B20
- Неизвестное количество воды (но датчик температуры и нагреватель всегда находятся под водой).
Как я могу точно контролировать температуру воды, основываясь на показаниях датчика температуры? Под точностью я подразумеваю точность датчика температуры (в данном случае ± 0,5 ° C). Все должно работать на Arduino, поэтому дополнительное хранилище данных или вычислительная мощность недоступны. Для отладки я могу использовать компьютер.
Я пытался запустить PID, но это кажется очень трудно
- Избегайте перерегулирования - превышение заданной температуры либо изначально, либо при добавлении (холодной) воды
- Стабилизировать правильно после добавления холодной воды.
Ответы:
Вам необходимо знать время отклика вашей системы и повторяемость ваших измерений для характеристики ваших данных (установить достоверность). Я предлагаю взять образцы и усреднить их, прежде чем снова включить нагреватель.
Имхо, вода не будет долго оставаться в пределах 0,5 ° C. Можете ли вы позволить грубые и точные режимы? Используйте более высокий ШИМ для больших различий, а затем понизьте ШИМ, если он близок к цели.
После достижения цели есть несколько способов улучшить стабильность температуры. В то время как готовые вещи, такие как PID, работают для многих, я обычно реализую такую функцию вручную.
источник
BrettAM, dE (скорость изменения погрешности) будет изменяться в качестве параметра управления, в этом случае ширина импульса сигнала нагревательного элемента модулируется, изменяется PID. Моя формулировка о том, что скорость изменения температуры была плохим выбором. Производный член также будет работать для учета небольших изменений удельной теплоемкости воды с температурой (4,186 кДж / (кг К) при 20 ° С до 4,219 кДж / (кг К) при 100 ° С).
Суть в том, что да, производный термин рассчитывается для скорости изменения dE. Поскольку ошибка здесь заключается в разнице между требуемой температурой и фактической температурой, то производная затем рассчитывает изменения скорости нагрева воды.
Проблема в том, что часто трудно создать стабильную систему с производным термином. Система PID должна основываться в первую очередь на пропорциональном члене. По-моему, когда вы меняете количество воды, вы создаете больше нелинейности, чем может компенсировать PID. По этой причине PID должны быть несколько повторяемыми, и если уровень воды сильно меняется, его система больше не повторяется.
К ОП: В моем аналогичном дизайне я попытаюсь использовать небольшой комбинированный радиатор / вентилятор и насос 12 В постоянного тока для пропускания воды в качестве метода ее охлаждения. Я чувствую, что это может работать лучше. В случае успеха я дам вам знать.
источник
Вы должны поддерживать постоянное количество нагреваемой воды. Скорость, с которой температура воды повышается, будет меняться при изменении количества воды (добавление холодной воды, как вы упомянули). Пропорционально-интегрально-производный контроллер (PID) работает, наблюдая производную (скорость изменения) переменной, которую вы пытаетесь контролировать. Ваш PID никогда не будет работать должным образом, если скорость изменения температуры не является (разумно) постоянной.
Посмотрим на удельную теплоемкость воды, в основном уравнение Q = c m dT. Q - добавленное тепло, которое, как я полагаю, в вашей установке является постоянным. m - масса нагреваемого вещества (должна быть постоянной!). с - удельная теплоемкость воды, которая составляет 4,186 Дж / грамм * градус Цельсия. Если Q, m и c постоянны, то dT, скорость, с которой ваша температура воды будет расти, также будет постоянной (в действительности c незначительно меняется в зависимости от температуры, но я бы сказал, что это можно игнорировать, если вы работаете с 0- 100C). Попробуйте настроить PID с постоянным количеством воды, и вы можете получить лучшие результаты.
Какой водонагреватель вы используете? В настоящее время я делаю нечто подобное, но пытаюсь использовать горячую платформу из химической лаборатории и испытываю огромные выбросы. Я думал о переходе на аквариумный нагреватель, но хотел бы знать, что вы используете?
Матф
источник