Автоматическое управление вентилятором

Открытая прошивка RepRapFirmware
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Автоматическое управление вентилятором

Сообщение demonlibra »

Для проверки условий сценарий записывается в системный макрос daemon.g, который автоматически выполняется каждые 10 секунд.
В качестве условия выполнения сценария будут использоваться состояния элементов объектной модели (Object Model), идентификаторы которых можно определить при помощи плагина Object Model Browser.
Например, мы хотим использовать состояния нагревателей и драйверов шаговых двигателей.

Температура нагревателя 0
heat.heaters[0].active

Температура нагревателя 1
heat.heaters[1].active

Для драйверов проверяется, обнулены ли оси
move.axes[0].homed move.axes[1].homed move.axes[2].homed

Добавим в daemon.g следующие строки, которые включат вентилятор 2 при нагреве или работе драйверов.

Код: Выделить всё

if heat.heaters[0].active>0 || heat.heaters[1].active>0 || move.axes[0].homed || move.axes[1].homed || move.axes[2].homed 
   M106 P2 S1 
else 
   M106 P2 S0

Задержка выключения вентилятора

Добавим глобальную переменнуюl fan_controller = 0 в конец файла конфигурации config.g, которая будет использоваться для хранения времени.
При переходе в режим ожидания будет выполняться проверка пройденного времени.

Код: Выделить всё

if heat.heaters[0].active>0 || heat.heaters[1].active>0 || move.axes[0].homed || move.axes[1].homed || move.axes[2].homed
   M106 P2 S1
   set global.fan_controller = state.upTime
else
   if {state.upTime - global.fan_controller} >= 30
      M106 P2 S0
Вентилятор продолжит вращаться 30 секунд после перехода в ждущий режим.
Не бойся поломать. Бойся не починить ))
Изображение
Аватара пользователя
demonlibra
Помогаю слегка
Сообщения: 2552
Зарегистрирован: 18 янв 2020, 11:49
Откуда: Ростов-на-Дону

Re: Автоматическое управление дополнительным вентилятором

Сообщение demonlibra »

Если Вы неправильно задали параметры обдува при нарезке g-кода и во время печати приходится постоянно задавать определённый обдув, можно в файл daemon.g вписать следующие строки:

Код: Выделить всё

while true
   M106 S0.8 ; Задать производительность вентилятора 80%
   G4 S1 
Таким образом каждую секунду обдув будет меняться на заданный.
Важно
Используется вечный цикл, который можно будет остановить только выключением питания.


Для предотвращения выхода производительности за пределы можно использовать сценарий с условием:

Код: Выделить всё

if {fans[0].actualValue < 0.7}
   M106 S0.8
Если производительность вентилятора fans[0] меньше 70%, задать производительность вентилятора 80%.
В данном сценарии отсутствует вечный цикл и режим работы можно менять просто корректируя файл daemon.g во время печати.
Применяться изменения будут не мгновенно, а каждые 10 секунд.

Ещё один вариант, это изменение параметров вентилятора командой M106 с параметрами L и X.
Lnnn - Задаёт минимальную скорость вентилятора (от 0 дo 255 или от 0.0 до 1.0), при задании не нулевой производительности вентилятора.
Xnnn - Задаёт максимальную скорость вентилятора (от 0 дo 255 или от 0.0 до 1.0), при задании не нулевой производительности вентилятора.

Код: Выделить всё

M106 P0 L0.5 X0.9
Не бойся поломать. Бойся не починить ))
Изображение

Вернуться в «RepRapFirmware»