Описание работы контроллера управления "8K-HD Arduino Control". Версия 06b.
Схемы находятся в папке \Hardware.

////////////////////////////////////////////////////////
 - Arduino Pro mini / Nano
 - Модуль индикации на TM1637: 4х разрядный 7ми сегментный с десятичными точками (опционально)
 - Модуль индикации LCD1602, HD44780 совместимый: 16ти символьный 2х строчный, с расширителем портов PCF8574 (опционально)
 - Энкодер с кнопкой
 - Кнопки или контакты управленияё(опционально)
 - Оптрон развязки сигнала триггера "Сверхток" (опционально)
////////////////////////////////////////////////////////

В этой версии контроллера управления можно использовать один из двух (или оба сразу) вариантов индикации:
 - светодиодный индикатор на чипе TM1637 (2 пина для подключения к Arduino, интерфейс - "аналог" i2c)
 - ЖК дисплей на чипе HD44780 (или его клоне) с расширителем портов PCF8574(A) (2 пина для подключения к Arduino, интерфейс - i2c)

Выбранный способ индикации определяется по наличию соответствующей директивы #define в основном скетче (ненужное - закомментировать):
 - #define __LED0401__
 - #define __LCD1602__

Адрес ЖК-дисплея на шине i2c определяется автоматически (адресация расширителей PCF8574 и PCF8574A различается - это учитывается).

В этой версии управления реализованы следующие варианты использования контактов управления:
#define SW_TYPE
 - SW_BUTTON_CLICK, управление кликами кнопок, кликом считается короткое нажатие
 - SW_ROCKER_SWITCH, управление двумя контактами по принципу переключателя с тремя положениями on-off-on

Для управления возможностью использования в прошивке функционала управления используются опции препроцессора:
#define E_AUTORUN 	0  // Включение [1] или выключение [0] доступности функции автозапуска
#define E_REVERSE 	0  // Включение [1] или выключение [0] доступности функции управления реверсом
#define E_ENCSWEN 	0  // Включение [1] или выключение [0] доступности функции управления приводом кнопкой энкодера

Arduino соединяется с моторным контроллером по аппаратному UART через несложный переходник, который инвертирует сигнал TX, а также реализует аппаратную подтяжку на пине RX.
Переходник может быть выполнен любым способом: на одновентильной логике или на npn-транзисторе. На время прошивки переходник от Arduino отключается.

При отсутствии соединения с моторным контроллером (или когда моторный контроллер находится в состоянии "Сброс") на дисплее отображается непрерывной бегущей строкой текст "OFFLINE".

После включения устанавливаются текущие параметры, загруженные из EEPROM Arduino:
 - Частота привода при прямом вращении
 - Частота привода при обратном вращении
 - Темп разгона
 - Темп торможения
 - Направление вращения (реверс = вкл / выкл)
 - Автостарт (вкл / выкл)

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

Текущая частота вращения привода изменяется энкодером как в состоянии покоя, так и при движении.
При обычном повороте энкодера шаг изменения 1Гц, при повороте с нажатой кнопкой энкодера шаг изменения 0.1Гц.

При использовании кнопок управления направление вращения изменяется на противоположное нажатием на кнопку [Reverse] как в состоянии покоя, так и при движении. Реверс энкодером не реализован.

Пуск или останов вращения производится кратковременным нажатием на кнопку [Start / Stop / Exit] или на кнопку энкодера.
При включенной опции "Автостарт" и отсутствии ошибок привод стартует сразу после установления соединения с моторным контроллером, далее управляется, как обычно (если необходимо).

В активном режиме (когда привод в движении) контроллер управления считает время работы, накопленное значение записывается в EEPROM при определении состояния "Ошибка" (любая ошибка DC или сброс моторного контроллера).

Настройки в EEPROM изменяются только в состоянии покоя и при успешном соединении с моторным контроллером.
Вход в режим настройки производится по "длинному" (>1000мс) нажатию кнопки энкодера (нажать и удерживать нажатой, пока на дисплее не появится частота привода).
В режиме настройки поворотом энкодера выбирается один из параметров настройки (описание показаний приведено для дисплея на TM1637, на дисплее LCD1602 информация должна быть интуитивно понятна без пояснений):
 - F40.0  // частота прямого вращения привода в герцах
 - F.25.0 // частота обратного вращения привода в герцах
 - > 2.5  // темп разгона в секундах (для изменения долей секунд крутить с нажатой кнопкой энкодера)
 - < 3.0  // темп торможения в секундах (для изменения долей секунд крутить с нажатой кнопкой энкодера)
 - r OFF  // реверс (ON/OFF = вкл/выкл)
 - A ON   // автостарт (ON/OFF = вкл/выкл)
 - h10.7  // время работы привода в активном режиме ("пробег") в часах, изменение данного параметра не предусмотрено.
 - .END   // выход из режима настроек.

Для изменения выбранного параметра нажимаем кнопку энкодера, при этом символ параметра замигает.
Далее накручиваем энкодером нужное значение и еще раз нажимаем кнопку энкодера, выбранное значение записывается в EEPROM и становится текущим.
Выход из режима настроек производится нажатием на кнопку [Start / Stop / Exit] или при выборе энкодером .END

Если на контроллер управления заведен сигнал с выхода триггера "Сверхток" моторного контроллера, то при срабатывании защиты дисплей показывает ошибку "FOC" (Over Current). Оптрон следует располагать как можно ближе к плате Arduino.

Если перед включением одновременно нажать и держать нажатыми кнопки [Start / Stop / Exit] и [Reverse], то все настройки EEPROM Arduino сбрасываются на дефолтные, а счетчик времени работы привода обнуляется. Настройки по умолчанию:
 - F50.0
 - F.50.0
 - > 2.0
 - < 2.7
 - r OFF
 - A OFF

Все внешние сигналы управления заведены на пины Arduino, программно подтянутые к питанию (активный уровень - ноль).
При работе в условиях жестких помех (например, если контроллер управления физически находится рядом с силовой частью), рекомендуется обвязать голый энкодер внешними RC-фильтрами. На готовых модулях энкодера, фильтры, как правило, уже распаяны.

////////////////////////////////////////////////////////
Для успешной компиляции прошивки в Arduino IDE должны быть установлены библиотеки от Alex Gyver.
В этой сборке используются немного устаревшие версии библиотек (архивы в папке Gyver):
 - GyverButton
 - GyverEncoder
 - GyverTimer

////////////////////////////////////////////////////////
Видеоролик с демонстрацией работы скетча сразу на два дисплея:
https://youtu.be/gsj5VHQ1hik

////////////////////////////////////////////////////////
HEMETC (C) 2021-2024

