Реклама ⓘ
Главная » Световые эффекты
Призовой фонд
на май 2024 г.
1. 1000 руб
Сайт Паяльник

Реклама ⓘ

POV - часы пропеллер

В данном проекте часов-пропеллера используется так называемый POV (Persistence Of Vision)-эффект или говоря по русски: эффект персистенции. Эффект основан на возможности нашего мозга и глаз соединять в одно изображение быстро меняющиеся (движущиеся или мерцающие) картинки. К примеру на этом основан эффект кинематографа.

На ютубе представлено множество различных видеороликов с POV-эффектом, однако среди них мало информации как сделать такие устройства своими руками. В нижеприведенном проекте я постараюсь описать процесс создания POV-устройства.

Часы-пропеллер. POV

POV-эффект. Изображение

POV-эффект. Текст

Цели и задачи проекта

Целью данного проекта является создание часов-пропеллера, использующих один цвет, с использованием POV-эффекта для создания оптической иллюзии. Устройство должно отображать изображение (точнее его часть в определенной точке) по всей окружности от 0° до 360° с точностью 1°. ИК-передатчик в паре с ИК-приемником, образуют нулевую точку для отслеживания местоположения пропеллера.

В нашем POV-девайсе используется два источника питания: один находится на плате пропеллера, второй управляет моторчиком, который вращает пропеллер. Принцип работы POV будет следующий: старт с нулевой точки, затем каждый 1° светодиоды будут загораться в зависимости от местоположения пропеллера в круге 360°.

Используемые радиоэлементы

PIC18F252 - микроконтроллер. Основной элемент нашего устройства.

74LS373 (отечественный аналог 555ИР22) - регистр-защелка для управления светодиодами.

Компьютерный вентилятор (3800 об/мин) - я выбрал вентилятор с встроенным контроллером скорости и питания. Для POV-эффект требуется вентилятор с скоростью вращения не менее 3600 об/мин.

Инфракрасный светодиод и фототранзистор - пара этих элементов предназначена для отслеживания нулевой точки. Когда пропеллер пересекает нулевую точку, то в микроконтроллере срабатывает прерывание, по которому программа визуализации начинается с 0°.

Также, в проекте используются:
7805 +5В преобразователь
47мкФ конденсатор
40 МГц кварц
2x 330 резисторы
16x зеленые LED
ИК-диод
Фототранзистор
Макетная плата
Соединительные провода
9В держатель батарейки
PICkit2 программатор

Принципиальная схема POV

Схема устройства не сложная и содержит три основных компонента: преобразователь 7805 в источнике питания, микроконтроллер PIC18F252 и регистр 74LS373 для управления светодиодами и ИК-диод и фототранзистор для отслеживания нулевой точки.

Схема POV

Вкратце об основных модулях устройства:

Источник питания
Стандартные +5В для питания микроконтроллера получаем через преобразователь LM7805 (корпус Т220). Выходной конденсатор служит для фильтрации бросков напряжения.

Управление светодиодами
В PIC18F252 использована 8-бит шина данных с 2 линиями управления 74LS373, которые включают или выключают светодиоды, в зависимости от пришедших данных. При данном схемотехническом решении в один момент времени возможно управление только одной микросхемой 74LS373, поэтому светодиоды загораются не со 100% синхронностью.

Отслеживание нулевой точки
Синхронизации изображения осуществляется при помощи нулевой точки, для отслеживания которой используется ИК-диод и фототранзистор. Когда свет от диода попадает на транзистор, он открывается и +5В от коллектора идут к +0В эмиттера. Контроллер PIC обнаруживает спад сигнала и отрабатывает программу возврата к нулевой точке.

О микросхеме 74LS373

Микросхема 74LS373 (отечественный аналог 555ИР22) представляет собой регистр-защелку с тремя состояниями выходов, содержащая в себе 8 D-триггеров. Даташит PDF.

Распиновка 74LS373

Данную микросхему я использовал в качестве LED-драйвера. Выхода м/с включают или выключают соответствующие светодиоды. Каждая м/с имеет два входа управления: LE (Latch Enable) и OE (Output Enable). Ниже, я кратко опишу как применять эти входы в нашем проекте.

Output Enable (OE) - подключает/отключает выхода микросхемы. Вход инверсный. Если на входе 1, то выхода имеет состояние высокого сопротивления, если на входе 0, то данные передаются от входа к выходу (см. таблицу истинности в даташите).

Latch Enable (LE) - вход, в зависимости от состоянии которого м/с будет сохранять текущее состояние выходов, либо устанавливать новое состояние выходов, в зависимости от данных на входе. Если вход LE активен (логическая 1 на входе), то данные свободно передаются от входа к выходу. Если на входе 0, то данные не передаются, а выходное состояние зависит от предыдущего значения входов.

Расчет таймингов POV

Для того, чтобы в определенном положении POV отображать соответствующие данные, мы должны очень точно рассчитать все тайминги и задержки. К счастью, контроллер PIC содержит встроенный таймер, который мы и будем использовать.

Частота вращения вентилятора = 3800 об/мин
Найдем частоту вращения в секунду 3800/60 = 63.3333 об/сек.
1 полный круг = 1/63.3333 = 0.015789 секунд
1° вращения = 0.015789/360 = 0.000043859 секунд
Частота выполнения инструкции 40 МГц/4 = 10 МГц
Инструкций на 1° вращения = 43.86 мкс/10000000 = 438.6
Получается 438 инструкций на каждый 1° вращения

Т.о. зная частоту вращения вентилятора, мы можем найти время для поворота на 1°. У нас получилось значение 43.86 мкс, это будет интервал вызова прерывания микроконтроллера, по которому будет обновляться состояние светодиодов. Для получения полной картинки, нам нужно будет выводить для каждого из 360 градусов свое состояние светодиодов.

Отслеживание нулевой позиции

Для того, чтобы наш POV-проект был более точен в отображении картинки, я использовал контроль нулевой точки при помощи ИК-светодиода и фототранзистора. После того, как точка 0° пройдена, изображение сбрасывается и начинается новый цикл.

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

Отслеживание нулевой позиции POV

На картинке выше показано, как реализовано отслеживание нулевой точки в нашем POV-проекте. Всякий раз, когда пропеллер проходит над ИК-светодиодом, транзистор открывается соединяя +5В с коллектора к земле эмиттера. Микроконтроллер PIC обнаруживает данный переход состояния и т.о. определяет нулевую точку.

Изготовление платформы пропеллера

На картинке ниже я собрал все детали, которые будут нужны нам для изготовления POV. Не показан только источник питания для вентилятора и ИК-диод.

Детали POV

Сперва мы должны прикрепить вентилятор к основе, для этого используем 4 болта и гайки.

Крепим вентилятор к основе

Для этого, в основе сверлим четыре отверстия и закрепляем вентилятор в центре основы.

Прикрученный к основе вентилятор

Прикрепляем небольшой кусок фанеры, при помощи клея или эпоксидки, к вентилятору.

Крепим кусок фанеры

Обрезаем лопасти вентилятора и прикрепляем держатель 9В батарейки.

Крепим кусок фанеры

Далее, прикрепляем при помощи болтов кусок фанеры к вентилятору.

Закрепленная фанера на вентиляторе

Сверлим четыре отверстия в плате и закрепляем ее на 4-х шпильках фанеры. Стараемся соблюсти баланс.

Крепим плату

Крепим плату

Откручиваем плату и делаем ее прямоугольной. Затем опять прикрепляем.

Закрепленная плата

Компоновка радиодеталей

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

На макетной плате я использовал монтаж накруткой, так называемый олд-скул метод. Для микросхем использовал сокеты.

Подготовка к монтажу

Для начала я разместил все сокеты и компоненты стабилизатора.

Размещение сокетов для микросхем

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

Размещение светодиодов

После того, как все установлено, скручиваем или припаиваем все выводы согласно принципиальной схеме POV

Монтаж накруткой

Сначала, я соединил микроконтроллер PIC и триггеры

Соединение PIC и триггеров

Затем, соединил светодиоды к источнику питания и схеме управления.

Соединение светодиодов

Последним шагом, я закрепил инфракрасный светодиод к основе.

Крепим ИК-светодиод к основе

ИК-светодиод должен быть закреплен очень прочно

Крепим ИК-светодиод к основе

...и должен быть размещен напротив фототранзистора на плате.

Светодиод и фототранзистор

Наш проект POV почти готов!

Светодиод и фототранзистор

Осталось залить прошивку и протестировать

Программное обеспечение

Основные функции в программе это:
-High Priority RB0 Interrupt
-Low Priority Timer0 Interrupt

High Priority RB0 Interrupt

void InterruptHandlerHigh()
 {
    if(INTCONbits.INT0IF) //check if INT0 interrupt flag is set
    {
      led_count = 325;
      WriteTimer0( 0xFFE0 );
      INTCONbits.TMR0IF = 0; //Clear TMR0 Flag 
      INTCONbits.INT0IF = 0;
    }
 INTCONbits.GIEH = 1; 
 }

Работа данной функции прерывания высокого приоритета заключается в том, чтобы сбросить timer0 и начать вывод на LED с самого начала. Когда POV-эффект формируется, его отображение происходит много раз за секунду. Переменная led_count используется как счетчик прерываний таймера, чтобы знать какой выходной набор выводить на LED для отображения. INT0 также сбрасывается.

Low Priority Timer0 Interrupt

void InterruptHandlerHigh()
 {
    if(INTCONbits.INT0IF) //check if INT0 interrupt flag is set
    {
      led_count = 325;
      WriteTimer0( 0xFFE0 );
      INTCONbits.TMR0IF = 0; //Clear TMR0 Flag 
      INTCONbits.INT0IF = 0;
    }
 INTCONbits.GIEH = 1; 
 }

По прерыванию от Timer0 уменьшается переменная led_count. Условие if/else используется для вывода данных часов/текста и т.п.

Тестирование POV

Мы подошли к заключительному этапу нашего проекта POV. Осталось запустить все и наслаждаться POV-эффектом. В клипе ниже, вы можете видеть все этапы конструирования и тестирование пропеллера-часов.

Интервалы в 1° легко успевает отрабатывать 40 МГц МК. Т.о. можно выводить как графическую информацию, так и текст, флэш памяти микроконтроллера я думаю хватит для любых паттернов

В заключении хотелось бы сказать, что это очень простой POV проект, который вы можете взять за основу для каких-либо своих улучшенных POV. А улучшать тут есть что: это может быть использование RGB-светодиодов для получения цветного изображения, или использование одного источника питания для всей системы и т.д. Данный пропеллер от 9В батарейки работает всего несколько часов

Скачать исходники

Оригинал статьи на английском языке (перевод Колтыков А.В. для сайта cxem.net)

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МикроконтроллерPIC18F2521 Поиск в магазине ОтронВ блокнот
Регистр-защелка
SN74LS373
2 555ИР22Поиск в магазине ОтронВ блокнот
Линейный регулятор
LM7805
1 Поиск в магазине ОтронВ блокнот
Фототранзистор1 Поиск в магазине ОтронВ блокнот
Электролитический конденсатор47 мкФ1 Поиск в магазине ОтронВ блокнот
Резистор
47 Ом
1 Поиск в магазине ОтронВ блокнот
Резистор
330 Ом
16 Поиск в магазине ОтронВ блокнот
Резистор
10 кОм
2 Поиск в магазине ОтронВ блокнот
Кварцевый резонатор40 МГц1 Поиск в магазине ОтронВ блокнот
СветодиодИнфракрасный1 Поиск в магазине ОтронВ блокнот
СветодиодЗеленый16 Поиск в магазине ОтронВ блокнот
Компьютерный куллер3800 об/мин1 Поиск в магазине ОтронВ блокнот
Батарея питания9 В1 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Оригинал статьи

Теги:

none Опубликована: 2011 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (2) | Я собрал (0) | Подписаться

0
Roman #
А время как выставлять будем?
Ответить
0
настя #
Прочитала вашу статью и у меня появилось несколько вопросов по расчетам таймингов и задержек описанные в статье. Вот показаны расчеты.
Частота вращения вентилятора = 3800 об/мин
Найдем частоту вращения в секунду 3800/60 = 63.3333 об/сек.
1 полный круг = 1/63.3333 = 0.015789 секунд
1° вращения = 0.015789/360 = 0.000043859 секунд
Частота выполнения инструкции 40 МГц/4 = 10 МГц
Инструкций на 1° вращения = 43.86 мкс/10000000 = 438.6
Получается 438 инструкций на каждый 1° вращения. Непонятно вот что, число 40 это тактовая частота процессора как я поняла, а откуда взялось число 4 на которое нужно делить, почему 4 а не 5 или 12 и тд .если смотреть по даташиту на контроллер, то это количество таймеров в самом контроллере. Но тогда как эту формулу применить для атмега328, ведь там и шим таймеры 6 шт и 8 -2шт и 16- 1шт битные таймеры общим количеством 9шт. Вот и получается не стыковка. Хотелось бы узнать как правильно рассчитывается POV эффект. Очень хочу понять как рассчитать пов эффект применимый на другие контроллеры, если например глобус был сложен другим человеком на Атмега 328 и 74HC595, чтобы понять все нюансы расчетов и работы устройства
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическое сопротивление?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Набор для сборки - LED лампа
Набор для сборки - LED лампа
ELM327 OBD II — адаптер с поддержкой CAN Радиореле 220В
вверх