Незаметно подошло время новогодних праздников, а значит, самое время сообразить очередной тематический проект. Например, электронную самоделку. Например,
▍ POV на POV
В начале 2000-х годов, после небольшого перерыва, связанного с погружением в компьютеры, игрострой и глубины Интернета, я вновь заинтересовался электронными самоделками.
Собственно, именно в этих самых глубинах нашлось немало интереснейшей информации на эту тему, что и возобновило мой интерес.
Вершиной полёта тогдашней творческой мысли обладателей очумелых ручек от мира электроники являлись механические устройства отображения на основе инерции зрения: полоска светодиодов физически движется в пространстве тем или иным образом, в нужные моменты светодиоды быстро включаются и выключаются, и формируют в воздухе изображение. Сейчас на том же принципе основаны псевдо-голографические дисплеи, которые можно купить в магазине.
Propeller Clock древности. Фото из доисторического Интернета
В основном подобные самоделки представляли собой имитацию стрелочных часов с возникающим в воздухе циферблатом, так называемые «propeller clock», но были и просто бегущие строки, и даже какие-никакие электронные игры — последнее было особенно близко к моим основным интересам. Эта идея меня весьма заинтересовала, особенно в формате необычного устройства отображения на фоне отсутствия хороших готовых дисплеев, и я захотел попробовать повторить своими руками что-то подобное. Но тогда это было явно за пределами моих возможностей.
В те смутные времена я только начал интересоваться микроконтроллерами. Вход в их мир был непрост. Уже существовали достаточно мощные PIC, AVR и Propeller, но не было ни Arduino, ни даже доступных цветных дисплеев — в основном алфавитно-цифровые LCD 16 на 2 или дорогие монохромные графические 128 на 64, с медленным и печальным обновлением. Бедным же энтузиастам приходилось довольствоваться мигающими светодиодами. Вся эта деятельность была достаточно дорогостоящей, не особо доступной, и требовала более глубоких знаний и инструментов: прошить тот же PIC не так-то просто, а код для контроллеров ещё было принято писать на ассемблере.
Virtual Game System Рикарда Гуни
Главным препятствием в повторении POV-проектов, конечно, была их механическая часть. У меня просто не было ни опыта, ни инструмента. ни материалов, чтобы соорудить что-то подобное. Подивившись на картинки, гифки и шакальные видеоролики — Ютуба и HD-видео тоже ещё не было — я с сожалением отложил мечты о повторении подобного устройства до лучших времён.
Времена, однако, не наступали. Я набрался опыта в программировании МК и в конструировании, но момент был упущен. Во времена популярности Arduino подобные самоделки не то, чтобы ушли в прошлое, но мода на них поизносилась, и хотя их было немало, они почти не попадались мне на глаза. Из тех же, что попадались, это были устройства на основе акселерометра, рисующие в воздухе изображение при махании рукой с устройством в ней — «POV wand», и в таком формате мне это было не очень интересно. Да и дисплеи всех сортов и размеров теперь уже были доступны в ассортименте.
И всё же этот гештальт оставался незакрытым. Сейчас же, когда возник повод в виде очередного Нового года, я, вспомнив эту давнюю историю, решил, наконец, попробовать сделать свой POV дисплей. Конический, в форме новогодней ёлочки. Благо, сегодня на моей стороне знания, опыт, а также все достижения технического прогресса: Arduino, 3D-принтеры, лазеры, продвинутые датчики и светодиоды. Всё это должно сделать осуществление проекта куда более простым делом. Должно же?
▍ Принципы POV
POV-дисплеи эксплуатируют особенность человеческого зрения, в результате которой наблюдателю кажется, что яркая точка продолжает свечение некоторое время после выключения источника света — так называемая инерция зрения, «Persistence Of Vision». Это тот же самый эффект, который возникает при быстром махании фонариком или угольком в темноте, в результате которого зритель видит не отдельный точечный источник света, а световые полосы.
Систем механической развёртки человечество изобрело много, но в контексте POV-самоделок можно выделить примерно два типа: радиальные, где вращается линейка светодиодов по окружности, наподобие единственной лопасти вентилятора, описывая в пространстве плоский диск, и цилиндрические, где вращается прямоугольная рамка, ребро которой описывает в пространстве цилиндр.
В результате работы механизма в пространстве физически, посредством вращения или осцилляции, перемещается сборка из нескольких светодиодов, обычно в форме полоски. В момент нахождения каждого из светодиодов в определённой точке пространства он засвечивается соответствующим этой точке образом. При достаточно высокой скорости перемещения возникает иллюзия одновременного свечения всех точек в области перемещения.
Радиальные системы больше всего подходят для имитации классических часов со стрелками. Цилиндрические подходят для бегущих строк, они формируют в воздухе прямоугольный растр, замкнутый в цилиндр.
Существуют и значительно более продвинутые системы, формирующие не плоское, а объёмное изображение. Это могут быть цилиндрические системы, в которых используется не полоска, а прямоугольная матрица светодиодов, или же системы с хитроумной траекторией вращения одной или многих полосок сразу в нескольких плоскостях. Но это уже очень продвинутый уровень.
Скорость вращения подвижного элемента в POV-системах довольно высока, так как от неё напрямую зависит разрешение дисплея и частота кадров: от тысячи оборотов (осцилляций) и выше. Из этого следует первая проблема конструирования подобных устройств — баланс и вибрации. Подвижная часть должна быть хорошо сбалансирована, чтобы получить стабильную развёртку и не развалиться от нагрузок.
Вторая проблема — передача управляющих сигналов. В подвижной части могут быть десятки и сотни светодиодов. Подводить необходимое количество управляющих линий к ним было бы очень сложно. К счастью, микроконтроллеры позволили разместить управляющую часть схемы внутри подвижной части и передавать только питание, и опционально обновлять данные для отображения через последовательный интерфейс.
Проблема передачи питания и данных в подвижную часть часто решается скользящими контактами. В наше время также применяются электромагнитные системы, наподобие системы беспроводной зарядки для телефонов.
▍ Изобретаю велосипед
На осуществление моего проекта у меня было очень ограниченное время. Нужно было обойтись без прототипов и сразу собрать более-менее действующее устройство из минимального количества подручных средств для последующей демонстрации в видеоролике. Поэтому я изначально решил идти на компромиссы и не усложнять конструкцию, ограничившись необходимым минимумом для достижения желаемого эффекта.
Немного светодиодов для разгона
В частности, я решил ограничиться самыми обычными зелёными и красными светодиодами, а не RGB или адресными. Для RGB нужно больше проводов, а у адресных диодов есть ограничения по скорости обновления их состояния, и неизвестно, насколько сложно будет подружить это ограничение с динамической индикацией. Количество диодов также было выбрано небольшим, по числу доступных управляющих пинов у микроконтроллера.
Для моего проекта больше всего подходит простая цилиндрическая система, только вместо цилиндра у меня будет конус. Для реализации задуманного мне нужно вращать какую-то вертикальную рамочную конструкцию с довольно высокой скоростью и как-то сбалансировать её, чтобы избежать сильных вибраций.
Я сварщик ненастоящий, и мне показалось, что сложность проблемы балансировки должна зависеть от геометрических размеров, а значит, нужно сделать ёлочку маленькой. Также я подумал, что вибрации может снизить понижение скорости вращения, но это не точно.
Минимальную скорость я оценил примерно в 20*60 оборотов в минуту, то есть 1200, где 60 — это секунды в минуте, а 20 — сколько раз рамка пройдёт полную окружность за секунду. Получается как бы частота кадров в развёртке, уже довольно низкая, с заметным глазу мерцанием, но всё ещё достаточная для поддержания иллюзии. Лучше, конечно, иметь что-то около 60*60, то есть 3600 оборотов. Но это уже весьма приличная скорость вращения. Также нужно предусмотреть подстройку скорости вращения и синхронизацию растра по фактической скорости, чтобы иметь возможность подобрать оптимальную по уровню вибраций.
Самое сложное в этом проекте, конечно, его механическая часть. Нужно придумать, из чего соорудить подвижную рамку, чем её вращать, как её сбалансировать, как передавать питание и сигналы.
Некоторые предварительные наброски
Сначала я попытался изобрести какую-нибудь полностью самодельную конструкцию, ориентируясь на воспоминания о первых увиденных мной реализациях и на имеющиеся под рукой или легкодоступные материалы.
В реализации вращения возможны варианты. Можно просто взять какой-то моторчик и закрепить рамку за его ось. Но чем выше будет рамка, тем больше будет влиять малейшее отклонение в центровке точки крепления на отклонения её верхней части. Или можно сделать вертикальную ось, закреплённую за две точки — или за концы, или с одной стороны с некоторым расстоянием между точками. Это стабилизирует её вращение, но тогда понадобится какой-то привод для передачи вращения.
Можно применить трюк, используя подшипники мотора в качестве точек крепления оси: расположить его корпус прямо внутри вращающейся рамки, а вал закрепить на подставке. То есть мотор будет вращать себя и рамку вокруг неподвижного вала. Но для такого решения автономный источник питания должен быть достаточно мощным, а значит, крупным и тяжёлым. Также возникает проблема выключения: не так-то просто добраться до выключателя внутри вращающегося с приличной скоростью устройства.
Некоторое время я пытался изобрести рамку из подручных средств, типа вязальных спиц, а также крепление к оси мотора на основе цангового патрона от микродрели. Всё это выглядело весьма сомнительно: собрать ровную, уравновешенную и не кривую рамку из чего попало очень непросто. Наконец, меня посетила совершенно иная идея, гораздо проще.
▍ Конструкция
Для решения задачи мне нужна вращающаяся трапеция с центром тяжести в основании. То есть нужна не столько ось вращения, сколько широкая вращающаяся плоскость, типа опорного диска в проигрывателе виниловых пластинок. Да это же очень похоже на компьютерный вентилятор! Можно взять готовый, и просто набросить на него свою конструкцию.
Когда эта идея, наконец, пришла ко мне в голову и удивила своей гениальностью и очевидностью, я погуглил и узнал, что подобные реализации с кулером и ёлочкой уже изобретали. Например, на Instructables есть вариант 11-летней давности. Как говорится, всё украдено до нас. Ну и ладно. Зато это дало мне понимание, что такое решение точно осуществимо, а значит, его и нужно использовать.
Ёлочка из вентилятора в версии с Instructables
Новая идея устранила всю возню с моторчиками, осями, подшипниками и шкивами. Осталось только спроектировать рамку. На гранях рамки будут располагаться светодиоды, а в её основании — плата микроконтроллера и батарейки. Конструкция внутри вращающейся части будет питаться от небольших батареек (мне не нужно, чтобы она работала часами), а кулер — от внешнего, более мощного источника питания. Это решает и проблему выключения: сначала отключаем кулер, рамка останавливается, выключаем электронику в ней.
Я прикинул свои технические возможности, и решил сделать рамку из плоских элементов методом лазерной резки. 3D-печать в домашних условиях вряд ли даст мне нужную точность, да и ажурные пластиковые конструкции никогда не отличались хорошей жёсткостью.
Пожалуй, оптимальным решением была бы рамка из стеклотекстолита, а точнее из печатных плат, сразу с нужными проводниками для пайки и соединения светодиодов — не пришлось бы придумывать способ крепления диодов и паять кучу проводков. Но оперативно изготовить платы за вменяемые деньги возможности нет, а сроки уже поджимали, и я решил делать рамку из фанеры или оргстекла, так как этот вариант был осуществим в пределах пары дней (спасибо, Figuro!).
Выкройка в Inkscape
Рамку я спроектировал в Inkscape. Это две плоскости, соединённые крест-накрест с помощью паза. Они вставляются в пазы в круглом основании. Пазы устроены таким образом, чтобы обеспечить одинаковую глубину установки и таким образом сбалансировать всю конструкцию, одновременно придав ей жёсткость.
Закрепляются плоскости и электроника с помощью накладки меньшей окружности, прижимающей всю начинку к основанию. В основании предусмотрено множество отверстий, как у мясорубки, чтобы иметь возможность как-то закрепить его на лопастях вентилятора.
Нарезанные детали из фанеры и оргстекла
Я подумал, что материал толщиной в 2 миллиметра вряд ли будет обладать достаточной жёсткостью, а 4-5 миллиметра дадут слишком большой вес. Толщина в 3 миллиметра показалась разумным компромиссом, и заказал два варианта: из фанеры и оргстекла, чтобы выбрать лучший по сочетанию жёсткости и веса. Вес фанерного варианта составил около 32 грамм, а те же элементы из оргстекла весили около 51 грамм.
Вес рамок без прочих элементов конструкции
Фанерный вариант после резки лазером имел не очень презентабельный вид в виде неравномерных ожогов, и я зачернил его обычным маркером — фанера очень хорошо им окрашивается, давая, правда, довольно спорный визуальный результат. Зато быстро и просто, и позволяет избежать коробления фанеры, к которому приводят красители на водной основе.
Для уравновешивания системы я решил предусмотреть две линейки светодиодов разного цвета на противоположных концах рамки. Это же позволило сделать эффект немного интереснее: зелёная линейка для обозначения контуров ёлочки, красная — для бегущей строки.
Установленные светодиоды и пострадавший за идею диод-испытатель
Светодиоды закрепляются в вырезах в рамке. После экспериментов на уже изготовленной рамке я решил применять обычные одноцветные корпусные светодиоды диаметром 3 мм, из соображений веса и простоты монтажа. Изрядно пожевав выводы парочке диодов, я нашёл простой и достаточно надёжный способ их крепления на рамке без применения клея.
Датчик Холла крепится на краю основания, а неодимовый магнитик-метка — на корпусе кулера. Их установку я отложил до написания кода, чтобы иметь возможность подобрать расположение датчика и силу магнитика.
Система синхронизации: датчик Холла, его крепление и неодимовый магнит
После первичной отладки закрепил датчик простой проволочкой-скруткой через пару отверстий в основании. Его выводы загнул таким образом, чтобы датчик свисал с основания вниз. На траектории движения датчика в корпусе кулера просверлил отверстие под магнитик диаметром 3 мм — у меня под рукой были такие. Тесты показали, что одного магнитика не хватает для стабильного срабатывания датчика, когда скорость вращения приближается к номинальной. Пришлось добавить ещё один, просто прилепив его в первому.
▍ Вносите ардуину
В качестве микроконтроллера была выбрана плата Arduino Pro Mini, как самая маленькая и лёгкая, но обладающая достаточным количеством управляющих линий. Всего их 20, но они разбросаны по трём разным портам, и часть из них имеет особое назначение. Я решил отдать 6 линий порта PC и 7 линий порта PD на управление отдельными светодиодами, итого 13 линий. Таким образом определилась высота растра ёлочки в 13 светодиодов.
Arduino Pro Mini готовится вступить в гущу событий
О выборе платы я пожалел в процессе отладки: для её прошивки нужно применять внешний USB-UART, и его довольно неудобно всё время подключать и отключать, а также нажимать кнопку сброса. Лучше было бы пожертвовать весом и взять обычную Nano.
Чтобы управлять двумя группами по 13 светодиодов, применил мультиплексирование. Светодиоды одного цвета соединены анодами (плюсами) между собой. На это соединение подаётся питающее напряжение в момент активации линейки. Катоды каждой пары из красного и зелёного светодиодов в линейке соединены между собой и через токоограничивающий резистор подключены к управляющей линии Arduino, на которых в нужные моменты выставляется логический 0 для зажигания диода. Таким образом получилась традиционная матрица 2 на 13 с общим анодом.
Схема устройства
Средний ток потребления диода составляет 20 мА, а нагрузочная способность выводов ATmega в Arduino тоже составляет 20 мА (до 40 в пике). 13 светодиодов при одновременном зажигании дадут нагрузку в 260 мА. Поэтому для выбора линеек пришлось добавить пару транзисторных ключей на биполярных n-p-n транзисторах. Так как максимальный ток довольно большой, наш любимый КТ315 сюда лучше не ставить, он тянет всего 100 мА. С запасом подойдёт 2N2222, с током коллектора до 800 мА. Активируются ключи выводами PB0 и PB1.
Для синхронизации используется цифровой униполярный датчик Холла A3144E, то есть такой, который выдаёт низкий логический уровень при наличии магнитного поля и высокий при удалении — самый удобный вариант для системы с одиночной меткой. Подключается датчик ко входу аппаратного прерывания Arduino (линия PD2). Таким образом я могу оперативно получать информацию о начале каждого оборота и скорости вращения.
Вершина. Виден способ крепления жёлтого светодиода
Наконец, на макушке ёлки закреплён одиночный светодиод. Он управляется напрямую через линию PB5 (туда же подключён светодиод на плате Arduino), разумеется, через свой резистор. Питание на него подаётся с выборки красной линейки, без какой-либо особенной причины — просто так было проще провести провода.
Питание — две батарейки-таблетки формата CR2032, соединённые в параллель (да, я знаю, что так лучше не делать), то есть напряжение питания 3 вольта. Две батарейки выбраны опять же из соображения уравновешивания конструкции, а также я предполагал возможность перехода на питание от 6 вольт.
Батарейки менять не так-то просто
▍ Вентилирую вопросы
Для реализации задумки вентилятор нужно было взять покрупнее, при этом относительно высокооборотистый, и желательно подешевле. К сожалению, именно с таким сочетанием в мире кулеров не задалось. Подобрал два разных кулера с разной конструкцией, оба на 120 миллиметров и 1800 оборотов в минуту. Это 30 оборотов в секунду, маловато, но более-менее терпимо.
Ничего не подозревающие вентиляторы готовятся к экзекуции
Далее для обоих выбранных вентиляторов нужно было решить два вопроса: питание и какое-никакое управление оборотами. Чтобы не усложнять проект, я пошёл путём применения готовых решений. В частности, использовать питание от обычного пауэрбанка.
Первый вентилятор попроще, с классическим трёхпиновым разъёмом. Для него я взял готовый повышающий DC-DC модуль с регулятором напряжения и даже с вольтметром. Не пришлось ничего паять, просто закрепил пару пинов в зажимную колодку модуля.
Система питания простого вентилятора: DC-DC модуль. Примерно 7-8 вольт достаточно для нужных оборотов
Второй вентилятор модный, молодёжный, со встроенной RGB-подсветкой в виде отрезка адресной светодиодной ленты и шестью контактами. Конечно, я без проблем мог бы запустить её самостоятельно с помощью ещё одного Arduino. Но решил сэкономить время и взял готовый ARGB контроллер, также управляющий скоростью с пульта.
Чтобы не перепаивать лишнего, взял также переходник питания на SATA и подключил его к DC-DC модулю, с помощью которых получаю от общего источника питания 5 вольт, необходимые для вентилятора 12 вольт. Далее всё соединяется на штатных разъёмах.
Система питания модного вентилятора: контроллер ARGB и DC-DC модуль для питания от пауэрбанка
После примерки деталей рамки к реальным вентиляторам я просверлил по три точки в лопастях, попадающих под некоторые из отверстий, и закрепил основание винтиками М3 с гайками. Причём в фанерной версии это нейлоновые винтики, а в версии из оргстекла — обычные металлические, потому что у имеющихся под рукой нейлоновых не хватило длины.
▍ В поисках баланса
Мои опасения по поводу возможных проблем с балансировкой и вибрациями оправдались: с механической частью в итоге случился конфуз. Как я ни старался заранее принять предупредительные меры, пробная сборка версий из двух материалов на двух разных вентиляторах показала довольно приличный дисбаланс.
Предварительная сборка двух версий каркаса
Оказалось, что верхушка конуса гуляет туда-сюда относительно оси вращения, причём биение основания в корпусе кулера совершенно минимальное по всем осям. Это явление проявлялось одинаково, независимо от материала и используемого кулера. Я даже начал думать, а не закралась ли в мой чертёж ошибка, например, как-то нарушилась симметрия частей. Но нет, проверка показала: всё совершенно чётко, все части идеально симметричны.
Как я не измерял всеми подручными способами (уголками, уровнями и слабовооружённым глазом) фактическую сборку, параллельность её линий и центровку, полностью убедиться ни в отсутствии отклонений, ни в их наличии я не смог — видимо, доступные инструменты не обладают достаточной точностью, а для появления вибраций хватает и совершенно незначительных отклонений.
Подозреваю, что жёсткость конструкции из обоих материалов оказалась слишком низкой: и фанера, и оргстекло такой толщины очень легко гнутся. Возможно, недостаточно и точности самой сборки: если фанерный вариант собирается в натяг с заложенным в выкройку допуском в 0.1 мм, вариант из оргстекла до снятия защитных плёнок было очень тяжело собрать, а после снятия он стал ощутимо люфтить.
Сборка обросла деталями и превратилась в прототип
Также оказалось, что жёсткость подвеса крыльчатки у кулеров отсутствует, она свободно шатается во все стороны, и, вероятно, при работе крыльчатка балансируется за счёт гироскопического эффекта. Это не позволило попытаться как-то измерить отклонения и выровнять рамку, при повороте руками она наклоняется в разные стороны от малейшего усилия. В связи с этим я не рекомендовал бы пытаться изобретать самодельные цилиндрические POV-дисплеи на базе кулеров, и поискать иные решения. Ну а мне отступать было уже некуда.
Даже с таким разбалансом вибрации получились терпимыми, и эффект сработал. Можно было оставить и так: ну скачет по столу, и скачет. И всё же я попытался укатать этого скакуна.
Утяжеление основания и силиконовые ножки
Для начала я прилепил 130-граммовую железную шайбу к нижней части кулера. С ней стало немного получше, но вибрация оставалась сильной. Потом я прикрутил в штатные отверстия для крепления четыре условно-мягкие силиконовые ножки для (от) разделочной доски. Тоже не сильно помогло, но вскоре я заметил, что вентилятор немного кривой и качается на двух ножках. Так как они крепились на винтиках, удалось легко отрегулировать их высоту и устранить этот перекос. Комбинация груза в основании, отрегулированных ножек, и пониженных оборотов позволила, наконец, стабилизировать конструкцию и не приклеивать её к столу.
Взрыв на макаронной фабрике и подвесной монтаж транзисторных ключей
После сборки, когда конструкция приобрела форму взрыва на макаронной фабрике, я некоторое время собирался с духом, потом расчехлил USB-UART, и начал разработку и отладку программной части.
▍ Пишу коды
Отладку я начал с загрузки скетча мигания светодиодом на самом Arduino, чтобы убедиться, что плата ещё работает. Далее написал код зажигания каждого из светодиодов на каждой из сторон рамки, и это тоже заработало. Следующий важный момент — проверка работы датчика Холла. Сначала я убедился, что он в принципе функционирует, потом подобрал положение магнитной метки.
Настало время писать основной код. Алгоритм работы системы довольно прост:
- По прерыванию получаем импульсы от датчика Холла и как можно точнее измеряем время между ними — это адаптация к скорости вращения, которая физически всегда меняется плавно, и поэтому интегратор не требуется.
- Полученное время делим на количество точек в цилиндрическом растре. Я решил, что для начала 64 точек будет достаточно.
- Выдерживаем такие временные интервалы и выдаём на светодиодную линейку соответствующий фрагмент буфера растра.
В реальности, конечно, код немного сложнее, так как у меня две светодиодные линейки разных цветов. Именно это отняло приличную часть времени при отладке кода. Я просто-напросто забыл про то обстоятельство, что линейки расположены в разных точках окружности, и долго гадал, почему же красный растр магическим образом смещён ровно на половину оборота.
Никаких особенных проблем в процессе не возникло, даже несмотря на не очень точную систему синхронизации: я использовал функцию micros, которая выдаёт значение именно в микросекундах, а не в тактах системы, и к тому же имеет точность в 4 микросекунды. Я же в своём коде пересчитываю это значение обратно в такты, с потерей точности, которую можно было бы избежать. Но для самоделки хватило и такой точности, а небольшие срывы растра в ней не критичны, потому я не стал усложнять код.
Процесс загрузки скетча
В процессе наладки я перешёл от 64 точек на окружности к 128, так как эксперименты показали, что имеющейся точности вполне хватает для стабильной работы даже при низкой скорости вращения. Таким образом, измеряемое время оборота я делю на 256: 128 точек и две чередующихся линейки разных цветов.
Дольше всего я выдумывал эффект, который хорошо смотрелся бы в таком низком вертикальном разрешении и сочетался бы с медленной прокруткой текста. Процесс замедляла необходимость много раз останавливать вращение, подключать USB-UART, нажимать сброс, включать вентилятор, и так по кругу.
Перепробовал разные варианты и в итоге пришёл к банальному синусоидальному смещению полосок, которые из-за расположения на цилиндре формируют спираль. Изначально эффект и прокрутка текста работали одновременно, но читать текст было сложно, и я решил сделать чередование сцен, а также увеличить скорость прокрутки строки. Также добавил красные кольца и вспышку верхнего диода в первую сцену, и третью сцену с редкими отдельными точками, падающими вниз по синусоиде.
Самый главный фрагмент кода в Arduino IDE
От кода в данном проекте требовалось просто как-нибудь функционировать, а не служить наглядным пособием, и я причёсывать его я не стал. Работает — и точка.
▍ Считаю потери
Коротко о финансовой стороне подобного диайвая. Чтобы изобрести что-нибудь ненужное из подручных средств, надо сначала найти эти подручные средства. Что-то обнаруживается дома, что-то приходится приобрести, примерить, прикинуть, и выкинуть.
На этот раз всё необходимое было закуплено на Озоне, потому что ждать детали из Китая было некогда. Не считая того, что нашлось дома (всякие винтики, гайки и магнитики), в окончательную конструкцию пошли следующие приобретения:
355 | Кулер 120 мм без подсветки |
363 | Кулер 120 мм с подсветкой ARGB |
335 | Набор светодиодов 200 штук (дешевле, чем поштучно) |
284 | Силиконовые ножки 4 штуки |
355 | Силиконовые ножки такие же. Ещё 8 штук (очень долгая доставка) |
968 | Лазерная резка, по одному набору деталей из фанеры и оргстекла |
295 | Датчик Холла A3144E 5 штук |
158 | Транзисторы 2N2222A 10 штук |
457 | Контроллер ARGB |
195 | Кабель-переходник на SATA |
272 | Повышающий DC-DC модуль с регулировкой |
236 | Пара повышающих DC-DC модулей попроще |
210 | Мотор с редуктором |
225 | Цанговый патрон |
382 | Моторчик для вертолёта маленький |
268 | Подшипник 4 мм 4 штуки |
300 | Подшипник 3 мм 4 штуки |
148 | Спицы для вязания 3 мм 5 штук |
840 | Цифровой тахометр |
233 | Силиконовые ножки 8 штук (другие, слишком низкие) |
▍ С Новым годом!
Так как у меня было два комплекта деталей, после отладки первого фанерного прототипа с простым вентилятором я собрал и второй экземпляр, из оргстекла и с работающей RGB-подсветкой вентилятора, для удвоения праздничного настроения. Осталось только заснять всё это хозяйство на видео и предъявить вам. Извольте:
С наступающим Новым Годом!
P.S. Так как YouTube сейчас болеет, продублировал видео в открытом посте в своём блоге на Бусти.
© 2024 ООО «МТ ФИНАНС»
Telegram-канал со скидками, розыгрышами призов и новостями IT ?
Комментарии (12)
VasVovec
24.12.2024 11:34Класс! Финальный ролик очень понравился, в том числе и музыкальное сопровождение. Ностальгия прямо :) На мой взгляд, фанерная елочка в работе смотрится симпатичнее. Ну и макаронный монтаж добавляет антураж. Даже в рифму ;)
Jury_78
24.12.2024 11:34На видео виден заметный эксцентриситет - конструкция не разлетается?
shiru8bit Автор
24.12.2024 11:34Этой проблеме посвящён целый раздел в статье. Фанерный вариант в сборе весит 50 грамм, а вес сосредоточен в нижней части, поэтому не разлетается, но вибрации на полной скорости, конечно, приличные.
checkpoint
24.12.2024 11:34Красота! Спасибо.
Осталось сделать проигрывание этой же музыки прямо с Ардуино и можно запускать в серию - на Озоне расхватают как горячие пирожки! :)
Да, управляемые светодиоды WS2812B весьма шустрые. Мне доводилось разрабатывать на них полноцветный матричный дисплей 24x9 светодиода, способный отображать 25 кадров/сек. Для этого пришлось использовать МК STM32F429 и запрограммировать его аппаратный ШИМ на непрерывную загрузку данных из памяти через DMA. Если интересно, могу поделиться кодом.
shiru8bit Автор
24.12.2024 11:34Играть музыку из Ардуино — это я могу, это сколько угодно. С WS2812 и APA106 дело имел, у меня есть проектик с ними. Проблема в том, что тут нужно менять состояние линейки каждые 1/256 оборота, то есть что-то типа 6400 раз в секунду. Для 12 диодов скорости шины должно хватить, но уже имея опыт с капризами адресных диодов, я решил не рисковать, побоялся, что начнутся проблемы с неодновременностью включения и смещением фазы изображения. Да и чиповые светят в одну сторону, для эффектности лучше корпусные типа 106-ых, а их крепить и монтировать навесным монтажом наверное было бы сложновато.
checkpoint
24.12.2024 11:34Играть музыку из Ардуино — это я могу, это сколько угодно.
Ну таки и где ? До НГ еще есть пара дней. ;)
Мне доводилось обновлять до 8K светодиодов WS2812 за секунду, так что 6400 это вполне подьёмно. Но на Ардуине такого не сделать в силу скудных аппаратных возможностей.
U235a
24.12.2024 11:34А зачем конденсатор между выходом датчика Холла и землей?
По-моему, он только делает хуже - заваливает фронт. Нет?shiru8bit Автор
24.12.2024 11:34Честно говоря, у меня нет ответа. Я тоже не понимаю его назначение и думаю, что по логике вещей он должен делать хуже. Но когда я искал типовое включение A3144, оказалось, что такое решение повторяется во множестве схем на множестве сайтов. Я даже нагуглил вопросы других людей, зачем тут конденсатор, без внятного ответа. Сам такие датчики раньше не применял, экспериментировать и разбираться самому было некогда, решил сделать как у всех. Но подозреваю, что тут в действии система «так заведено», пошедшая наверное с аналоговых датчиков, где в конденсаторе мог бы быть какой-то смысл в определённых применениях, а дальше любители просто стали повторять, и забыли, зачем.
checkpoint
24.12.2024 11:34А зачем конденсатор между выходом датчика Холла и землей?
Для того, чтобы отфильтровать высокочастотный "дребезг". При приближении магнита датчик будет срабатывать многократно, а это совсем не то, что требуется при обработки сигнала линией прерывания МК.
tituszx
24.12.2024 11:34Нет у него там высокочастотного дребезга и быть не может. У A3144 триггер Шмитта внутри стоит и разница при переключении минимум 10 % от величины магнитной индукции
checkpoint
24.12.2024 11:34Внутри сенсора на выходе стоит открытый коллектор, при переходе транзистора в закрытое состояние возможен шум если подтяжка плохая или выход подключен к нагруженной сигнальной линии.
Простая аналогия. Натяните пружину и удерживайте её в таком состоянии - это триггер Шмитта держит транзистор в открытом состоянии. Потом резко отпустите пружину - это триггер Шмитта запер транзистор. Пружина резко вернется в исходное состоянии, но будет некоторое время колебаться взад-перед. Чтобы этого не просходило ставят емкость. Почитайте аппноут.
Gudd-Head
В таблицах (хотя бы в первой) не хватает шапки.