Recent Changes - Search:

Главная страница

Проекты

Статьи

Домашний WiFi роутер

Архив проектов

Загрузки

GitHub

SourceForge

edit SideBar

ScreenController

Контроллер проекционного экрана

В качестве основы был взят экран с электроприводом Sakura Printing Cinema S'OK SCPSM-266x150FG-ED60 Pro 120. У экрана есть довольно большое вертикальное нерабочее (черное) поле, что позволяет регулировать высоту рабочего (белого) поля в широком диапазоне. Поэтому хотелось бы иметь возможность выдвигать экран на определенно настроенный уровень автоматически.

Screen Controller Front

С точки зрения BT Mesh, хотелось бы сделать реализацию двух моделей: Generic On Off и Generic Level. On/Off дает команду на открытие/закрытие экрана, а Level - на степень открытия в процентах. Но для этого, нужно придумать механизм, как контроллер узнает степень открытия экрана.

Возможны два варианта:

  1. измерение времени, если считать, что скорость двигателя постоянна;
  2. добавить энкодер, что позволит точно считать обороты двигателя.

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

Добавление энкодера.

Выяснилось, что удодобнее вего установить энкодер на вал концевых датчиков. Для этого пришлось изготовить специальное колесо энкодера.

Концевые датчикиКолесо энкодера Концевые датчики с установленным колесом энкодера

Конечный автомат управления экраном.

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

Существуют 6 стабильных состояний для экрана:

  1. UP-UPmax (undefined present position and undefined MAX position)
  2. UP-DPmax (undefined present position and defined MAX position)
  3. DP0-UPmax (present position is 0 and undefined MAX position)
  4. DP-UPmax (present position is not 0 and undefined MAX position)
  5. DP0-DPmax (present position is 0 and defined MAX position)
  6. DP-DPmax (present position is not 0 and defined MAX position)

С самого начала, устройство находится в первом состоянии. Следующим шагом, необходимо определить максимальное значение позиции, которое получается при полном открытии экрана. Данное значение запоминается в энергонезависимой памяти и в последующие включения, котнроллер инициальзируется уже во втором состоянии.

Состояния 3 и 4 - аварийные или промежуточные, и в нормальной ситуации контроллер перейти в них не может. На самом деле, их вообще можно убрать из схемы, так как в случае ошибки, проще перейти снова в первое состояние.

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

Всделствии этого, были реализованы три команды управления эераном:

  1. Full Close - полностью закрыть эеран до полной остановки мотора
  2. Full Open - полностью открыть экран до полной остановки мотора
  3. Partial Open - открыть экран на определенную позицию Level (в процентах)

Последовательность команд: Full Close - Full Open должна приводить к перекалибровке максимального значения позиции (а то, мало ли чего).

Full Close

Выполнение этой команды приводит к определению текущей позиции как нулевой. Значение максимальной позиции никак не меняется.

Full Open

Следует отметить различие между действиями: "Find MAX" и "Move to MAX". Оба действия приводят к тому, что экран открывается на максимальную позицию до срабатывания концевого датчика. Однако, в действии "Find MAX", текущее значение позиции записывается в энергонезависимую память, как максимальное значение позиции. "Find MAX" вызывается только тогда, когда максимальное значение позиции неопределено, за исключением, если текущая позиция равно нулю. В этом случае, должно выполнятся описанное в предыдущем разделе условие перекалибровки максимального значения при поступлении последовательности команд: Full Close - Full Open.

Partial Open

Ссылки

Edit - History - Print - Recent Changes - Search
Page last modified on September 10, 2024, at 09:33 am