Оглавление:
- Шаг 1. Конфигурация
- Шаг 2: Настройка реле
- Шаг 3: Контроллер гистерезиса
- Шаг 4: ПИД-регулятор
- Шаг 5: шина сообщений
- Шаг 6: Библиотеки
Видео: Термостат на базе Arduino: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
На этот раз мы собираемся построить термостат на базе Arduino, датчика температуры и реле. Вы можете найти его на github.
Шаг 1. Конфигурация
Вся конфигурация хранится в Config.h. Вы можете изменить PIN-коды, управляющие реле, считывание температуры, пороговые значения или время.
Шаг 2: Настройка реле
Предположим, мы хотели бы иметь 3 реле:
- ID: 0, PIN: 1, Уставка температуры: 20
- ID: 1, PIN: 10, Уставка температуры: 30
- ID: 2, PIN: 11, Уставка температуры: 40
Сначала вы должны убедиться, что выбранный вами PIN-код еще не введен. Все выводы можно найти в Config.h, они определяются переменными, начинающимися с DIG_PIN.
Вам необходимо отредактировать Config.h и настроить PIN-коды, пороги и количество реле. Очевидно, что некоторые свойства уже существуют, поэтому вам нужно просто отредактировать их.
const static uint8_t DIG_PIN_RELAY_0 = 1; const static uint8_t DIG_PIN_RELAY_1 = 10; const static uint8_t DIG_PIN_RELAY_2 = 11;
const static uint8_t RELAYS_AMOUNT = 3;
const static int16_t RELAY_TEMP_SET_POINT_0 = 20;
const static int16_t RELAY_TEMP_SET_POINT_1 = 30; const static int16_t RELAY_TEMP_SET_POINT_2 = 40;
Теперь нам нужно настроить реле и контроллер, это происходит в RelayDriver.cpp.
initRelayHysteresisController (0, DIG_PIN_RELAY_0, RELAY_TEMP_SET_POINT_0); initRelayHysteresisController (1, DIG_PIN_RELAY_1, RELAY_TEMP_SET_POINT_1); initRelayHysteresisController (2, DIG_PIN_RELAY_2, RELAY_TEMP_SET_POINT_2);
ххх
Шаг 3: Контроллер гистерезиса
Это тот, который выбран в примере выше, у него есть несколько дополнительных конфигураций:
const static uint32_t RELAY_DELAY_AFTER_SWITCH_MS = 300000; // 5 минут статический статический uint32_t RHC_RELAY_MIN_SWITCH_MS = 3600000;
RELAY_DELAY_AFTER_SWITCH_MS дает время ожидания для переключения следующего реле. Представьте, что конфигурация из нашего примера начнет работать при температуре 40 градусов. Это приведет к включению всех трех реле одновременно. В конечном итоге это может привести к высокому энергопотреблению - например, в зависимости от того, что вы контролируете, электродвигатель потребляет больше энергии при запуске. В нашем случае переключающие реле имеют следующий поток: первое реле срабатывает, ждёт 5 минут, второе горит, ждёт 5 минут, третье горит.
RHC_RELAY_MIN_SWITCH_MS определяет гистерезис, это минимальная частота для конкретного реле, чтобы изменить его состояние. После включения он будет оставаться включенным хотя бы в течение этого периода времени, игнорируя изменения температуры. Это очень полезно, если вы управляете электродвигателями, поскольку каждый переключатель отрицательно влияет на время работы.
Шаг 4: ПИД-регулятор
Это сложная тема. Реализовать такой контроллер - простая задача, другое дело - найти правильные настройки амплитуды.
Чтобы использовать ПИД-регулятор, вы должны изменить initRelayHysteresisController (…..) на initRelayPiDController (….), И вам нужно найти для него правильные настройки. Как обычно, вы найдете их в Config.h
Я реализовал простой симулятор на Java, чтобы можно было визуализировать результаты. Его можно найти в папке: pidsimulator. Ниже вы можете увидеть симуляции для двух контроллеров PID, P. PID не совсем стабильный, потому что я не применял какой-либо сложный алгоритм для поиска правильных значений.
На обоих графиках заданная температура установлена на 30 (синий цвет). Текущая температура указывает на строку чтения. Реле имеет два состояния ВКЛ и ВЫКЛ. При включении температура падает на 1,5, при отключении повышается на 0,5.
Шаг 5: шина сообщений
Разные программные модули должны взаимодействовать друг с другом, надеюсь, не в обоих направлениях;)
Например:
- модуль статистики должен знать, когда конкретное реле включается и выключается,
- нажатие кнопки должно изменить отображаемое содержимое, а также приостановить работу служб, которые потребляют много циклов ЦП, например, считывание температуры с датчика,
- через некоторое время необходимо восстановить показания температуры,
- и так далее….
Каждый модуль подключен к шине сообщений и может регистрироваться для определенных событий и может создавать любые события (первая диаграмма).
На второй диаграмме мы видим поток событий при нажатии кнопки.
У некоторых компонентов есть задачи, которые необходимо периодически выполнять. Мы могли бы вызывать их соответствующие методы из основного цикла, поскольку у нас есть шина сообщений, необходимо распространять только правильное событие (третья диаграмма)
Шаг 6: Библиотеки
- https://github.com/maciejmiklas/Thermostat
- https://github.com/milesburton/Arduino-Temperature…
- https://github.com/maciejmiklas/ArdLog.git
Рекомендуемые:
Термостат Nest, отслеживание присутствия: 12 шагов
Nest Thermostat, отслеживание присутствия: Моя домашняя автоматизация охлаждения с использованием моего Nest Thermostat до недавнего времени управлялась IFTTT с использованием Life360 «первым прибыл домой»; и "последний, кто ушел из дома" триггеры. Это было здорово, потому что я мог добавлять членов семьи в мою Ли
Умный термостат ESP8266: 6 шагов (с изображениями)
Умный термостат ESP8266: Bienvenue sur ce nouvel article. On se retrouve aujourd'hui pour un projet que j'ai réalisé durant tout ce temps libre que m'a offert le confinement. Ce projet m'a été предложение par mon père, en effet il vient de déménager dans une vieille maison et l
Как сделать автоматический термостат для дровяной печи: 5 шагов (с иллюстрациями)
Как сделать автоматический термостат для дровяной печи: для моего проекта класса мехатроники я решил спроектировать и создать автоматический термостат для дровяной печи, используя Arduino с поддержкой Wi-Fi и ПИД-регулятор, управляющий шаговым двигателем для управления положением заслонки на моей дровяной печи. Это была большая награда
LapStat - термостат для ноутбука: 6 шагов
LapStat - термостат для ноутбука: LapStat - это термостат для вашего ноутбука! Он использует два температурных датчика на каждой стороне вашего ноутбука для измерения температуры вашего ноутбука. Затем он контролирует скорость двух вентиляторов, чтобы охладить ваш компьютер. Вентиляторы мощнее, чем
Серво-термостат / контроллер Arduino HVAC: 5 шагов (с изображениями)
Серво-термостат / контроллер Arduino HVAC: добро пожаловать в мою «зеленую» инструкцию! Я собираюсь показать вам, как использовать Arduino, два серводвигателя, датчик температуры и немного металла (или дерева), чтобы сделать цифровой термостат для настенного блока HVAC. Согласно CB Richard Ellis (крупный настоящий