Найти в Дзене

Сушилка филамента - 4. Таймер на Ардуино.

Итак, в тандем терморегулятору был разработан таймер. Трёхпозиционный тумблер – это главная коробка передач часового механизма. В нейтральном (среднем) положении рычажка - сушилка на нагрев не работает, но можно задать нужные настройки, такие как: Если со вторым и третьим пунктами всё понятно, то время выключения сушки – может вызывать вопрос: «Что это и для чего?». Рассмотрим простую ситуацию. Допустим - завтра в 10 утра вы планируете запустить 3D печать. К этому времени вам нужно иметь на руках бобину подсушенного PLA. Вы идете к сушилке, кладёте в неё катушку и говорите аппарату: «К 9:45 завтрашнего дня закончить сушку пластика.» Всё! Остальное на совести таймера. Оперируя временем продолжительности сушки и заданным временем выключения, он включит сушилку с таким расчетом, чтобы на момент печати филамент был качественно прожарен. При нижнем положении рычажка тумблера, таймер работает в привычном всем режиме. Кроме управления временем работы нагревателя, таймер ещё управляет работ
Оглавление

Итак, в тандем терморегулятору был разработан таймер.

Первая надпись возникающая при включении прибора.
Первая надпись возникающая при включении прибора.

Экраны

Трёхпозиционный тумблер – это главная коробка передач часового механизма.

В среднем положении тумблера (см. по стрелке) доступны настройки таймера.
Первые две верхние строки экрана высвечиваются при любых режимах дисплея. Это текущая дата, время и показания датчиков. 
Далее идет строка запланированного времени отключения(Planed Time Off), продолжительность работы (Work Time), обратный отсчет текущего процесса (CountD) и статусная строка (Power: OFF OnMENU). По ней мы видим, что сушка отключена и можно перейти в настройки меню.
В среднем положении тумблера (см. по стрелке) доступны настройки таймера. Первые две верхние строки экрана высвечиваются при любых режимах дисплея. Это текущая дата, время и показания датчиков. Далее идет строка запланированного времени отключения(Planed Time Off), продолжительность работы (Work Time), обратный отсчет текущего процесса (CountD) и статусная строка (Power: OFF OnMENU). По ней мы видим, что сушка отключена и можно перейти в настройки меню.

В нейтральном (среднем) положении рычажка - сушилка на нагрев не работает, но можно задать нужные настройки, такие как:

  1. Set Planed Off - время выключения сушки (да, да - выключения, вы не ослышались);
  2. Set Work Time - время продолжительности сушки;
  3. Set Clock - установка времени и даты встроенных часов.
Меню настроек.
Меню настроек.

Если со вторым и третьим пунктами всё понятно, то время выключения сушки – может вызывать вопрос: «Что это и для чего?». Рассмотрим простую ситуацию. Допустим - завтра в 10 утра вы планируете запустить 3D печать. К этому времени вам нужно иметь на руках бобину подсушенного PLA. Вы идете к сушилке, кладёте в неё катушку и говорите аппарату: «К 9:45 завтрашнего дня закончить сушку пластика.» Всё!

Ориентируясь на строку текущего времени, можно быстро настроить планировщик. Можно установить и дату и время.
Ориентируясь на строку текущего времени, можно быстро настроить планировщик. Можно установить и дату и время.

Остальное на совести таймера. Оперируя временем продолжительности сушки и заданным временем выключения, он включит сушилку с таким расчетом, чтобы на момент печати филамент был качественно прожарен.

Режим запланированного отключения сушки, активируется переключением тумблера в верхнее положение. На экране, при этом (см. левый экран), мы увидим текущий статус процесса. В данном случае сушилка должна включиться через 35с. 
Также можно переключиться на более подробный экран (см. правое изображение).
Режим запланированного отключения сушки, активируется переключением тумблера в верхнее положение. На экране, при этом (см. левый экран), мы увидим текущий статус процесса. В данном случае сушилка должна включиться через 35с. Также можно переключиться на более подробный экран (см. правое изображение).
Экраны других режимов работающих под планировщиком. На левом экране, время до окончания выключения сушилки. На правом - запланированная работа устройства закончена. Можно вынимать )).
Экраны других режимов работающих под планировщиком. На левом экране, время до окончания выключения сушилки. На правом - запланированная работа устройства закончена. Можно вынимать )).

При нижнем положении рычажка тумблера, таймер работает в привычном всем режиме.

В обычном режиме процесс запускается нажатием функциональной кнопки (фото слева). По нажатии высвечивается надпись "Work" и обратный отсчёт процесса. 
Процесс можно отменить повторным нажатием функциональной кнопки.
В обычном режиме процесс запускается нажатием функциональной кнопки (фото слева). По нажатии высвечивается надпись "Work" и обратный отсчёт процесса. Процесс можно отменить повторным нажатием функциональной кнопки.

Кроме управления временем работы нагревателя, таймер ещё управляет работой мотора, который крутит бобины с пластиком.

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

Немного о коде

Использовались библиотеки:

  • Часы - <Wire.h>, <iarduino_RTC.h>
  • Термометр - <SHT1x.h>
  • Таймштамп - <UnixTime.h>
  • Дисплей - <Arduino.h>, <U8x8lib.h>
  • Память (ПЗУ) - <EEPROM.h>

Что было интересного при написании кода?

Расчёты над датами делались посредством таймштампов. То есть, для действий (отнять, прибавить) дата и время, сначала пересчитываются в количество секунд, происходит действие, а затем количество секунд (если это надо) переводится обратно в дату. Для этого использовалась библиотека Гайвера <UnixTime.h>. Она не идеальна, но в целом подходит для таких преобразований.

Пример кода проверки при включении таймера – закончен ли процесс, или это было кратковременное отключение и нужно продолжить сушить?
Пример кода проверки при включении таймера – закончен ли процесс, или это было кратковременное отключение и нужно продолжить сушить?

Шрифты

Львиную часть кода занимает обработка экрана и преобразование данных для удобного показа. Много места занимают используемые шрифты, поэтому я ограничился тремя из библиотеки <U8x8lib.h>:

  • Обычным - u8x8_font_chroma48medium8_r;
  • С двойной высотой - u8x8_font_7x14B_1x2_f;
  • и укороченным набором спецсимволов - u8x8_font_open_iconic_arrow_1x1.
Обычный шрифт обведен красным, Двойной - зеленым, спецсимволы - желтым.
Обычный шрифт обведен красным, Двойной - зеленым, спецсимволы - желтым.

(продолжение) - (предыдущая статья)