Еще одно разработанное устройство

топ 100 блогов alex_avr224.08.2017 Продолжаю рассказывать о некоторых устройствах, которые разрабатываю. Многие устройства таковы, что в них даже особо и показывать нечего. Но в данном случае получилось очень красивое, как внешне, так и с инженерной точки зрения решение.

Еще одно разработанное устройство


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




На этапе предварительных согласований с заказчиком с его стороны был представлен вот такой референс из какой-то компьютерной игры.

Еще одно разработанное устройство

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

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

Еще одно разработанное устройство

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

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

Тем временем, Еще одно разработанное устройство delphin1305 параллельно разрабатывал механику. Он со своей стороны также разработал стандартный элемент крутилки с местом для моей платы.

Еще одно разработанное устройство

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

Тем временем, от заказчика поступил окончательный вариант задачи. Идея в том, чтобы игроки подключили центральный, квадратный элемент ко всем маленьким круглым. Всего 49 элементов.

Еще одно разработанное устройство

После этого коллега разработал окончательный вариант всей конструкции в сборе.

Еще одно разработанное устройство

Еще одно разработанное устройство

Еще одно разработанное устройство

А я отправил в производство платы и, когда они были готовы сделал первый прототип.

Еще одно разработанное устройство

Когда мой прототип был готов - механика устройства также уже была готова в сборе. Настал волнительный момент примерки платы к устройству - ведь до этого мы никак физически не сверяли размеры, только по чертежам. Ошибки были недопустимы, так как крепление платы было весьма хитрым - с отверстиями под датчики, разъемы, конденсатор на плате. Плата встала на место идеально - слава 3D моделированию! Именно для таких случаев нужна функция создания 3D модели печатных плат в редакторе печатных плат.

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

Еще одно разработанное устройство

Затем последовал этап установки плат в само устройство.

Еще одно разработанное устройство

Надо сказать, когда постоянно сталкиваешься с совершенно разными задачами - порой это начинает доставать и думаешь - вот было бы здорово делать одно и тоже устройство в больших количествах. Но когда начинаешь делать одно и тоже в больших количествах - это тоже быстро надоедает и хочется разнообразия. Так и тут - установить 49 плат на место - довольно скучное занятие, учитывая, что для этого нужно открутить полторы сотни винтов, а потом закрутить обратно :)

Еще одно разработанное устройство

Конструкция была продумана до мелочей. Все 49 плат соединяются в одну длинную цепочку с помощью шлейфов. Для шлейфов и разъемов коллегой были заложены специальные каналы необходимых размеров.

Первое включение подтвердило работоспособность всей системы. Но, как и всегда в новой разработке сразу же нашелся один момент, который я не предусмотрел. Дело в том, что светодиоды потребляют довольно большой ток - суммарно в данном устройстве - до 10 ампер. В то же время шлейфы соединяющие платы содержат довольно тонкие жилы и при весьма большой общей протяженности они имеют довольно большое сопротивление, так что напряжение в каждом следующем элементе цепочки падает и до конца мало что доходит. Но попался я не на этом - светодиоды заработали без проблем и сразу, ведь обо всем этом я знал и предусмотрительно заложил на питание светодиодов множество параллельных линий в шлейфе. А вот на питание логики и датчиков холла я выделил отдельную линию и всего одну пару проводников, что и стало ошибкой. Один датчик холла потребляет немного - всего 4-5 мА и в подавляющем большинстве случаев я это потребление даже не учитываю. Но в данном устройстве оказалось 196 датчиков, которые в сумме потребляют около 1А, что уже весьма существенно и слишком много для одной пары тонких проводов в шлейфе.

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

Еще одно разработанное устройство

Между тем пришло время писать управляющую программу. Для себя же составил несколько таблиц:

Еще одно разработанное устройство

Левая верхняя таблица - это нумерация плат в цепочке. Эта таблица является таблицей преобразующей координаты X Y на поле в номер модуля. Ведь работать с задачей в координатах X Y гораздо проще и удобнее.

Правая верхняя таблица показывает направление цепочки - она проложена змейкой туда-сюда через все устройство.

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

Нижняя правая таблица описывает 5 различных типов элементов на поле: есть элементы крестики - имеющие "подключение" во все четыре стороны, есть прямые, угловые(Г-образные), Т-образные и круговые(с единственным подключением наружу) элементы. Каждый элемент кодируется четырьмя битами, каждый бит отвечает за одно из направлений(вверх, вниз, влево, вправо), согласно самой правой и нижней картиночке.

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

Затем все таблицы были вбиты в программу:
const uint8_t gen_code[7][7] =
{
  { 0x44, 0x55, 0x66, 0x44, 0xEE, 0x44, 0x44},
  { 0x44, 0x55, 0xFF, 0x66, 0x66, 0x55, 0xEE},
  { 0x66, 0x66, 0x55, 0xEE, 0x55, 0x55, 0x66},
  { 0x44, 0x66, 0x66, 0xFF, 0x55, 0x66, 0x44},
  { 0x44, 0x66, 0x66, 0x66, 0x66, 0xFF, 0x66},
  { 0x66, 0xEE, 0xFF, 0x66, 0x55, 0x66, 0x66},
  { 0x44, 0x44, 0x66, 0x44, 0x66, 0x44, 0x44}
};


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

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

Еще одно разработанное устройство

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

Еще одно разработанное устройство

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

Как-то так. А результат вы уже видели :)

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
Здравствуйте уважаемые. Не так давно мы с вами вспоминали о некоторых стрнных прозвищах королей Западной Европы Предлагаю сегодня вспомнить и некоторых правителях нашей страны. Ибо есть и интесные варианты, и разнообразие. Причем прозвища далеко не всегда однозначны и понятны сходу как у ...
Недавно читала блог, в котором был выложен мастер класс по изготовлению кувшина из папье- маше. Текст был написан со множеством орфографических ошибок. И понеслись блоггеры  соревноваться, кто быстрее автору ткнет орфографическую ошибку. А мне вспомнилась моя одноклассница, звали её  Вит ...
Я выкладываю этот ролик специально для моих зарубежных френдов. Вы черпаете информацию о настроениях россиян из общения с крикливыми, хамоватыми ботами в социальных сетях. И еще из передач Соловьева и Киселева. На самом деле, Россия другая.... Ничего особенного. Ученик и учительница ...
Прицепила к форточке в нашей комнате сетку. Сетка белая, капроновая, в проеме почти не видна. Только я оттуда отошла, Баська, обрадовавшись, что форточка открыта, решила в нее выпрыгнуть; и разумеется, прыгнув, внезапно уткнулась мордой в сетку. Слышу скрип когтей по стеклу, захожу в комна ...
А. МИНКИН - Нет, вы знаете, я давным-давно несколько лет назад опубликовал текст, я очень редко беру интервью, а тут совершенно случайно, у меня возник разговор со студентом ВШЭ . Текст был опубликован, под названием «Молодые людоеды». Вот где он ...