Как сделать крутящиеся часы
В данном проекте часов-пропеллера используется так называемый POV (Persistence Of Vision)-эффект или говоря по русски: эффект персистенции. Эффект основан на возможности нашего мозга и глаз соединять в одно изображение быстро меняющиеся (движущиеся или мерцающие) картинки. К примеру на этом основан эффект кинематографа.
На ютубе представлено множество различных видеороликов с POV-эффектом, однако среди них мало информации как сделать такие устройства своими руками. В нижеприведенном проекте я постараюсь описать процесс создания POV-устройства.
Цели и задачи проекта
Целью данного проекта является создание часов-пропеллера, использующих один цвет, с использованием POV-эффекта для создания оптической иллюзии. Устройство должно отображать изображение (точнее его часть в определенной точке) по всей окружности от 0° до 360° с точностью 1°. ИК-передатчик в паре с ИК-приемником, образуют нулевую точку для отслеживания местоположения пропеллера.
В нашем POV-девайсе используется два источника питания: один находится на плате пропеллера, второй управляет моторчиком, который вращает пропеллер. Принцип работы POV будет следующий: старт с нулевой точки, затем каждый 1° светодиоды будут загораться в зависимости от местоположения пропеллера в круге 360°.
Используемые радиоэлементы
Также, в проекте используются:
7805 +5В преобразователь
47мкФ конденсатор
40 МГц кварц
2x 330 резисторы
16x зеленые LED
ИК-диод
Фототранзистор
Макетная плата
Соединительные провода
9В держатель батарейки
PICkit2 программатор
Принципиальная схема POV
Схема устройства не сложная и содержит три основных компонента: преобразователь 7805 в источнике питания, микроконтроллер PIC18F252 и регистр 74LS373 для управления светодиодами и ИК-диод и фототранзистор для отслеживания нулевой точки.
Вкратце об основных модулях устройства:
Источник питания
Стандартные +5В для питания микроконтроллера получаем через преобразователь LM7805 (корпус Т220). Выходной конденсатор служит для фильтрации бросков напряжения.
Управление светодиодами
В PIC18F252 использована 8-бит шина данных с 2 линиями управления 74LS373, которые включают или выключают светодиоды, в зависимости от пришедших данных. При данном схемотехническом решении в один момент времени возможно управление только одной микросхемой 74LS373, поэтому светодиоды загораются не со 100% синхронностью.
Отслеживание нулевой точки
Синхронизации изображения осуществляется при помощи нулевой точки, для отслеживания которой используется ИК-диод и фототранзистор. Когда свет от диода попадает на транзистор, он открывается и +5В от коллектора идут к +0В эмиттера. Контроллер PIC обнаруживает спад сигнала и отрабатывает программу возврата к нулевой точке.
О микросхеме 74LS373
Микросхема 74LS373 (отечественный аналог 555ИР22) представляет собой регистр-защелку с тремя состояниями выходов, содержащая в себе 8 D-триггеров. Даташит PDF.
Данную микросхему я использовал в качестве LED-драйвера. Выхода м/с включают или выключают соответствующие светодиоды. Каждая м/с имеет два входа управления: LE (Latch Enable) и OE (Output Enable). Ниже, я кратко опишу как применять эти входы в нашем проекте.
Расчет таймингов 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-проекте. Всякий раз, когда пропеллер проходит над ИК-светодиодом, транзистор открывается соединяя +5В с коллектора к земле эмиттера. Микроконтроллер PIC обнаруживает данный переход состояния и т.о. определяет нулевую точку.
Изготовление платформы пропеллера
На картинке ниже я собрал все детали, которые будут нужны нам для изготовления POV. Не показан только источник питания для вентилятора и ИК-диод.
Сперва мы должны прикрепить вентилятор к основе, для этого используем 4 болта и гайки.
Для этого, в основе сверлим четыре отверстия и закрепляем вентилятор в центре основы.
Прикрепляем небольшой кусок фанеры, при помощи клея или эпоксидки, к вентилятору.
Обрезаем лопасти вентилятора и прикрепляем держатель 9В батарейки.
Далее, прикрепляем при помощи болтов кусок фанеры к вентилятору.
Сверлим четыре отверстия в плате и закрепляем ее на 4-х шпильках фанеры. Стараемся соблюсти баланс.
Откручиваем плату и делаем ее прямоугольной. Затем опять прикрепляем.
Компоновка радиодеталей
При компоновке деталей на плате необходимо соблюдать баланс, чтобы при вращении не было дисбаланса. Старайтесь размещать детали ближе к центру и равномерно, в дальнейшем можно для балансировки прикрепить грузики на плату (я так и сделал, закрепив две монетки).
На макетной плате я использовал монтаж накруткой, так называемый олд-скул метод. Для микросхем использовал сокеты.
Для начала я разместил все сокеты и компоненты стабилизатора.
Следующим этапом, необходимо разместить светодиоды в один ряд на противоположной стороне платы.
После того, как все установлено, скручиваем или припаиваем все выводы согласно принципиальной схеме POV
Сначала, я соединил микроконтроллер PIC и триггеры
Затем, соединил светодиоды к источнику питания и схеме управления.
Последним шагом, я закрепил инфракрасный светодиод к основе.
ИК-светодиод должен быть закреплен очень прочно
. и должен быть размещен напротив фототранзистора на плате.
Наш проект POV почти готов!
Осталось залить прошивку и протестировать
Программное обеспечение
Основные функции в программе это:
-High Priority RB0 Interrupt
-Low Priority Timer0 Interrupt
High Priority RB0 Interrupt
Работа данной функции прерывания высокого приоритета заключается в том, чтобы сбросить timer0 и начать вывод на LED с самого начала. Когда POV-эффект формируется, его отображение происходит много раз за секунду. Переменная led_count используется как счетчик прерываний таймера, чтобы знать какой выходной набор выводить на LED для отображения. INT0 также сбрасывается.
Low Priority Timer0 Interrupt
По прерыванию от Timer0 уменьшается переменная led_count. Условие if/else используется для вывода данных часов/текста и т.п.
Тестирование POV
Мы подошли к заключительному этапу нашего проекта POV. Осталось запустить все и наслаждаться POV-эффектом. В клипе ниже, вы можете видеть все этапы конструирования и тестирование пропеллера-часов.
Интервалы в 1° легко успевает отрабатывать 40 МГц МК. Т.о. можно выводить как графическую информацию, так и текст, флэш памяти микроконтроллера я думаю хватит для любых паттернов
В заключении хотелось бы сказать, что это очень простой POV проект, который вы можете взять за основу для каких-либо своих улучшенных POV. А улучшать тут есть что: это может быть использование RGB-светодиодов для получения цветного изображения, или использование одного источника питания для всей системы и т.д. Данный пропеллер от 9В батарейки работает всего несколько часов
Не так давно увлекся ардуиной. Так то и с софтом, и с железом компьютерным дружу, а вот поуправлять с помощью контроллера всякими лампочками, релюшками и датчиками давно хотелось. Система очень понравилась в плане простоты освоения среды программирования и подключения разнообразных модулей. Интересных проектов на базе ардуины в интернете – огромное количество, пробую помаленьку. В основном конечно баловство, никак не дорасту до практических применений :). Пока самый крупный проект – автошасси, управляемое по блютусу со смартфона. Планируется добавить немного интеллекта в самостоятельной езде с объездом препятствий. В ардуине, с одной стороны, очень удобна модульность, а с другой стороны – для конечного продукта желательно от проводов отказаться и делать уже на плате с пайкой компонентов.
Вот как-то и заинтересовался разными наборами DIY на базе микроконтроллеров, тут и попаять уже можно попрактиковаться. С паяльником в принципе дружу давно, но, в основном, что-то грубое спаять: провода, разъемы. А тут интересно стало попробовать SMD попаять, как получится…
Первым набором стали часы
Отличный набор, про него на муське уже были обзоры, повторяться не буду. Скажу только, что после этого набора пропал страх перед пайкой SMD компонентов, всё оказалось не так страшно! Так что, если кого-то это останавливает – не бойтесь, немного терпения и всё получится!
Следующим набором стали часы с автояркостью
Тоже отличный набор, в пайке даже менее сложный, чем предыдущий, но абсолютно функциональный и удобный в конечном виде. Особенно понравилось автоматическое изменение яркости цифр в зависимости от освещения: и днем при ярком солнце их видно, и ночью не слепят. Наверно еще одни закажу. На них обзоров еще больше, поэтому не вижу смысла повторяться.
Пришла пора героя обзора, на этот набор обзора еще не было 🙂
Любителей отслеживания треков огорчу – заказывал без трек-кода. Потому что перед Новым Годом и потому что уже давно отношусь к заказам философски – заказал, значит придет, еще ни одна посылка не пропала. Ну, в крайнем случае, деньги можно вернуть. Заказал 21.12.2015, получил 25.02.2016, чуть более 2-х месяцев, но быстро и не рассчитывал – после НГ и черной пятницы все посылки шли долго.
Пришло всё в пакете, замотанном в пупырку и скотч, и потом уже в пересылочном пакете. Лучше бы конечно в коробке, но и так всё доехало в целости, ничто не пострадало. Все компоненты расфасованы по отдельным пакетикам, акриловые пластинки обклеены бумагой. Распаяна была только микросхема контроллера, все остальные компоненты предстояло распаять.
Кстати, после сборки осталось достаточно запасных компонентов. Это приятно, потому что такая мелочь очень любит теряться :). А один светодиод потом пришлось перепаять, видимо «битый» попался.
Конечно основные опасения были по поводу пайки светодиодов, больно уж они мелкие, всего 1х2 мм (это вместе с выводами), а перегревать их нежелательно.
Такую мелочь обычно паяют феном с помощью пасты, но мы не ищем простых путей :). Хорошо, что под рукой есть неплохой паяльник GS90D с терморегуляцией и набор жал, так что шанс перегреть невелик.
Ну что ж, приступим. Начинаем как всегда с трудного, чтобы потом нечего было бояться. Запаиваю боковую платку: 16 светодиодов и 16 токоограничивающих резисторов. Пайка не идеал конечно, но нам главное ехать, а не шашечки!
UPD По многочисленным замечаниям профессионалов срочно исправил «кривизну рук» и пропаял светодиоды. Профессионалам замечу, что своими едкими замечаниями можете отбить охоту у новичков (ко мне это не относится 🙂 ). Новичкам же скажу, не бойтесь, профи не рождаются, тренируйтесь!
Сразу батарейкой проверяю (2х1.5в ААА), что все исправны и горят. Всё работает! Ура, можно двигаться дальше.
Теперь беремся за основную плату. Также начинаем с мелочи: 32 светодиода и 32 резистора. Все светодиоды одного цвета, я выбрал синий, можно заказать красный. На плате уже распаян 1 крайний светодиод другого цвета (у меня – красного, при заказе красных LED он будет синим) для создания каймы на верхнем изображении, потом будет видно на фото и видео. Пайка остальных деталей вопросов не вызовет, они крупнее.
8-ногая микросхема – часы реального времени DS1302Z, часы идут и тогда, когда основное питание отключено. Рядом – ИК-приемник, получает команды с пульта. У переднего края – разъем для программирования. Когда всё запаяно, припаиваю боковую плату к основной, желательно не перекашивать, трудно будет припаять. Единственное замечание – батарейку припаивал уже в самом конце, когда всё остальное было готово. В конце распаял маленькую платку питания двигателя, там всё совсем просто.
Осталась самая интересная часть. Поскольку вся верхняя часть вращается моторчиком, возникает проблема с тем, как передать на нее питание. Для этого используется 2 катушки: одна крепится вместе с мотором и запитывается от платы питания. Вторая катушка фиксируется на верхней части, при вращении на ней наводится ЭДС индукции и возникает ток, которого хватает для запитывания верхней платы. Катушки центруются и фиксируются термоклеем. В результате чисто электрического контакта между платами нет, ничего не будет искрить и изнашиваться.
Еще на нижней стороне верхней платы (ну вы поняли 🙂 ) находятся кварцевый генератор для часов и схемы управления, а также фотоприёмник для синхронизации изображения с частотой вращения двигателя (чуть выше генератора). Рядом с двигателем, чуть дальше обмотки виден излучающий синхронизирующий ИК-диод. Кстати «сопля» термоклея там упала не случайно, а положена специально при балансировке платы, чтобы уменьшить вибрации. Для того же кусочек подкладки под белым кругом, здесь всё не просто так.
Ну что ж, всё в сборе, пора приступать к испытаниям.
На удивление всё сразу заработало! Первое впечатление – КЛАСС.
Из-за высокой скорости вращения верхнюю плату практически совсем не видно, и возникает ощущение, что все надписи висят в воздухе. Стабилизация достаточно четкая, хотя иногда происходит какое-то дрожание и дергание. Возможно это из-за внешнего люминисцентного освещения (частота мерцания 50 Гц накладывается на синхроимпульсы светодиодом между платами).
Часы имеют довольно много режимов, переключение с помощью пульта (пункт соответствует кнопке):
0. Прокрутка текста сверху по кругу и текста сбоку. В каждом тексте может быть по 240 символов. Прокрутку можно поставить на паузу. Верхний текст можно погасить, оставить только боковой.
1. Прокрутка текста сверху + цифровые часы и дата сбоку. Верхний текст можно погасить. В этом режиме можно установить время и дату. Для этого нажимаем кнопку «Play», вводим часы, еще раз «Play», вводим минуты, «Play» — секунды, «Play» — дату, «Play» — месяц, «Play» — возвращаемся в режим часов.
2. Сверху цифровые часы и дата, сбоку – текст. Боковой текст можно остановить или погасить.
3. Сверху аналоговые часы (стрелки), сбоку – текст. Боковой текст можно остановить или погасить.
4. Сверху поочередно показываются изображения, сбоку – текст. Всего можно записать до 21 изображения, переключаются они с интервалом примерно в 2 секунды, можно переключать вручную. Боковой текст можно остановить или погасить.
5. Сверху – анимация, сбоку – текст. Для анимации можно загрузить до 29 изображений, которые и содадут анимацию. Боковой текст можно остановить или погасить.
6. Сверху цифровые + аналоговые часы (полоски), сбоку – текст. Боковой текст можно остановить или погасить.
7. Сверху аналоговые часы (стрелки), сбоку – цифровые часы и дата.
Первые испытания показали, что один светодиод не горит (хотя вроде все проверял), пришлось его перепаивать. И еще – все надписи на китайском. Перепаиваю светодиод и начинаю искать как туда записать хоть что-то. На сайте есть ссылка на архив с софтом и документацией. Я все полезные файлы выложу и ниже дам ссылку. Есть инструкция в картинках по сборке на английском и электрическая схема соединения компонентов. Но вот весь софт идет только на китайском. Для полного перепрограммирования есть исходники и уже готовые бинарники (HEX-файлы) для заливки в микроконтроллер, но со всем этим довольно сложно разобраться.
Есть вариант попроще, если нужно только поменять текст и картинки.
Во-первых, нужно подключиться к тому самому 4-х контактному разъему через любой USB-TTL адаптер. У меня как раз от экспериментов с ардуиной был адаптер CP2102, он и подошел. Можно использовать и другой.
Во-вторых, нужно использовать специальную программу из архива, по моей ссылке она называется «DIY vision».
Выглядит страшно, всё на китайском, но, на самом деле, всё не так безнадежно. На картинке английский перевод иероглифов, сейчас разберем подробнее. Сначала справа выбираем порт, который появился с установкой USB-TTL адаптером. Затем идем по вкладкам слева направо:
1. Изображения: здесь есть кнопки Вставить, Удалить, Загрузить в часы, выбираем до 21 картинки, грузим;
2. Анимация: Вставить, Удалить, Загрузить, до 29 картинок для анимации;
3. Текст сверху: Пишем текст (понимает и английский и русский) и одна кнопка – Загрузить, до 240 символов;
4. Текст сбоку: Пишем и кнопка Загрузить, до 240 символов;
5. Синхронизация часов с компьютером (левая кнопка — Да).
Вот и все сложности.
Но, как всегда, есть нюансы. К сожалению, нельзя поменять обозначения дня и месяца в часах, так и остаются иероглифы. И еще нужно учесть, что боковой текст движется как бы не влево, как мы привыкли, а вправо. Поэтому, если напишете текст как обычно, то читаться он будет справа налево. Можно его написать задом наперед, тогда читаться он будет правильно, но двигаться всё равно вправо. Ну и как это выглядит.
Сразу после нажатия кнопки «Загрузить» на любой вкладке данные грузятся в часы. Потом можно отключить адаптер и тестировать уже с новыми картинками и текстом.
На видео всё очень сильно мерцает. В действительности мерцание есть, но глазами видится гораздо меньше.
UPD Напряжение питания данного девайса 5В, только нижняя часть потребляет около 170 мА, полностью в сборе — около 350 мА, т.е. легко запитывается от любого порта USB или от внешнего источника питания с USB разъемом.
Резюмирую
Набор очень понравился, смело могу рекомендовать всем, кому нравится идея DIY и кто хочет развить свои навыки или приобщить детей к электронике.
Плюсы:
позволяет развить навыки паяния
практически не требует настройки, но позволяет это делать
результат отлично выглядит, у всех, кому показывал, есть эффект «ВАУ» 🙂
Минусы:
Дороговато для игрушки, но это доллар виноват
Есть очень мелкие детали, кому-то может быть сложновато с ними работать
Весь софт китайский (хотя с основной программой нетрудно разобраться)
Ничуть не жалею, что взял этот набор, эффект, когда из кучки деталей появляется нечто, что приводит в восторг окружающих, перевешивает все минусы!