Termokings.ru

Домашний Мастер
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

РЕЛЕЙНЫЙ РЕГУЛЯТОР НА ARDUINO

РЕЛЕЙНЫЙ РЕГУЛЯТОР НА ARDUINO

Это библиотека не для модулей реле (им не нужны библиотеки), это библиотека для релейного регулятора, т.е. реализация релейного закона регулирования с гистерезисом и обратной связью по скорости изменения величины через коэффициент усиления. Что позволяет делать релейный регулятор:

  • Управлять какой-то величиной, включая и выключая орган управления (температура – обогреватель или холодильник, влажность – увлажнитель, и так далее)
  • Гистерезис – “окно” вокруг установленного значения, чтобы уменьшить количество включений/выключений реле (управляющего устройства)
  • Обратная связь (ОС) по изменению – в библиотеку встроено автоматическое вычисление производной измеряемой величины. Подобрав коэффициент усиления ОС можно добиться максимальной стабильности и точности удержания заданной величины: обратная связь по изменению позволяет отключать управляющее устройство до перехода через заданную величину снизу, и заранее включать при приближении к ней сверху

Документация

Инициализация

Можно создать объект с указанием направления регулирования

Настройка

Основные параметры регулятора можно читать и изменять напрямую как члены класса:

  • input – входная величина, например температура
  • setpoint – установка (к чему регулятор будет стремиться привести входную величину)
  • output – выход (0 или 1) для управления реле (например через digitalWrite() ). Менять его не нужно, этим занимается библиотека!
  • hysteresis – ширина окна (петли) гистерезиса. Гистерезис уменьшает количество переключений реле, но дестабилизирует систему.
  • k – коэффициент обратной связи по скорости (по первой производной), подбирается вручную (0.01

100). При нулевом значении ОС отключается. ОС по скорости изменения позволяет стабилизировать систему, см. картинку в начале статьи.

  • dT – время итерации для режима работы по встроенному таймеру.
  • setDirection(dir) – установить направление работы регулятора: NORMAL – включаем нагрузку при переходе через значение снизу (пример: охлаждение), REVERSE – включаем нагрузку при переходе через значение сверху (пример: нагрев).
  • Управление

    Работа релейного регулятора завязана на времени между измерениями, особенно в режиме с ОС, поэтому период расчёта должен строго соблюдаться.

    Библиотека имеет три функции для расчёта состояния реле, все функции возвращают состояние 0 или 1, а также изменяют состояние output , которое можно использовать в коде для чтения:

    • compute(dt) – моментальный расчёт. Принимает dt в секундах для режима с ОС. Можно не передавать dt , тогда ОС не будет работать. Функция сделана для работы напрямую с расчётом, т.е. вы сами контролируете период вызова функции и передаёте его ей в миллисекундах (если нужна ОС). Демо-пример, вариант 3 ;
    • getResult() – моментальный расчёт. Встроенный таймер для режима с ОС. При вызове данной функции программа сама вычисляет время с предыдущего вызова с передаёт dt в расчёт. Таким образом нужно просто позаботиться о периодичности вызова этой функции, dt в расчёт она передаёт сама. Демо-пример, вариант 1 ;
    • getResultTimer() – расчёт по встроенному таймеру, самый простой в использовании вариант: делает расчёт и возвращает новое значение по своему собственному таймеру, а пока таймер не сработал – возвращает результат предыдущего расчёта. Т.е. эту функцию можно вызывать постоянно, новое значение она отдаст только когда придёт время. Демо-пример, вариант 2 .
    Читать еще:  Тракторные грабли – незаменимый помощник при заготовке сена
    Ссылка на основную публикацию
    ВсеИнструменты
    Adblock
    detector