Контур регулирования температуры Arduino - PullRequest
0 голосов
/ 24 марта 2019

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

У меня есть Y-образная часть шланга. На верхнем левом рукаве Y-образной части у меня постоянный поток холодной воды, около 12 ° C. На верхнем правом рычаге Y-образной части у меня есть клапан, с помощью которого я могу регулировать, сколько горячей воды я смешиваю. Горячая вода составляет около 50 ° C. Для регулирования потребления горячей воды я использую серводвигатель, который поворачивает клапан в определенное положение. В нижней части Y у меня есть датчик температуры, который сообщает мне смешанную температуру воды.

Алгоритм, который я придумал для смешивания воды до определенной температуры, выглядит следующим образом:

1. Calibrate by calculating the minimum and maximum temp and corresponding servo positions
1.1 set the servo position to the absolute minimum, wait for 10 seconds and get the temperature -> minTemperature, minPos
1.2 set the servo position to the absolute maximum, wait for 10 seconds and get the temperature -> maxTemperature, maxPos

2. Set the mixing temperature to X°C
2.1 (maxTemp-minTemp)/(maxPos-minPos) = p °C/pos
Which means that changing the position by 1 position changes the mix temperature by p °C
2.2 minPos + (x-minTemp) / p = targetPos

3. If abs(measuredTemp-x)>Tolerance than do 2.

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

1 Ответ

0 голосов
/ 25 марта 2019

В основном это будет работать, но есть пара проблем, которые вы должны решить:

  1. Соотношение между положением сервопривода и температурой не будет линейным.Как минимум, откалибруйте в 4 различных положениях и установите кубический полином.

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

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

...