Проект BladeRunner. Часть 3(заключительная).

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Всем снова привет.

Сегодня я расскажу о превратностях разработки электроники. И полагаю что эта часть моего рассказа, окажется наиболее полезна читателям(даже тем кто с электроникой и программированием на ВЫ).

!!!СРАЗУ ПРЕДУПРЕЖДАЮ - МНОГО ИНТЕРЕСНОГО ТЕКСТА!!!


Для начала 4 совета:

1)Первое что следует уяснить новичкам при разработке нового устройства : если не знаешь как воплотить ту или иную задумку, или не уверен будет ли она работать, - посмотри в интернете как сделали другие и скопируй. Серьёзно, такой подход сэкономит много денег а главное - времени, иначе первая ревизия вашей платы процентов на 20 будет состоять из таких костылей:

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

А если ничего найти не получается - читайте мануал(даташит или аппноут). Прочитали? Прочитайте ещё раз. Потом ещё и ещё... И так до тех пор пока не наступит просветление.

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


2)Отрабатывайте все программные и схемные решения на отладочной плате, и только потом заказывайте плату на производстве, самонадеянность тут ни к чему.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

3)Если вы не приняли во внимание 2 предыдущих совета, и микроконтроллер(регулятор, драйвер, или всё вместе) на вашей новенькой плате испустил дымок и перестал работать - это не повод опускать руки. Чудес не бывает, если всё сломалось - значит тому есть причина. Стоит тщательно проанализировать условия предшествующие поломке, возможно даже на бумажке по пунктам записать последовательность ваших действий(пока всё не забыли).

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

4) Если вы алкоголик, электроника - это не ваше)))

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

________________________________________________________________________________

Ну хватит лирики, перейдём к рассказу.

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


Техзадание было таким:

1)ШИМ управление 4-мя 120-мм кулерами и сбор данных со встроенного датчика холла(для тахометра).

2)Управление лентой из светодиодов WS2812B(тоже посредством ШИМ).

3)Управление ЖК экранчиком МЭЛТ MT-12864J и его подсветкой.

4)Сбор данных с 4-х аналоговых датчиков температуры LM335.

5)Сбор данных о напряжении на линиях питания 12В(для вентиляторов), 5В(для светодиодной ленты), 5В(USB) и 3.3В(питание МК и ЖК-экрана).

6)Передача и приём данных через интерфейс USB.

7)(Опционально)Определение нажатия кнопки включения стола, а так-же управление её подсветкой.

8)(Опционально) включение компьютера по расписанию с помощью пина PWR_ON на материнской плате.


Под это дело нужно было выбрать микроконтроллер. Вариантов было всего 4:

1)Atmel AVR(используется в Arduino): Проще найти людей которые о нём не знают, детище 90-х годов и повод для приятных ностальгических воспоминаний. Помню как я в радиомагазине на Петроградке, зелёный 11-классник, в окружении бородатых 40-летних дядек, трясущимися руками пытался купить AT90S1200, боже, это было страшнее покупки первой пачки презервативов.

Лет 10 назад этот 8-битный МК был бы почти безальтернативным вариантом в бюджетном сегменте, сейчас же его повсеместно вытеснили 32х-битные микроконтроллеры. Использовать его имеет смысл только для совсем простых проектов или для обучения.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

2)ST Microelectronics Stm32: Современный 32-х битный микроконтроллер на ядре ARM Cortex-M(R). Младший брат процессоров, стоящих в 95% всех смартфонов и планшетов на планете земля, этакий швейцарский нож с целым ворохом возможностей. Для примера: если AVR ATMEGA32 работает на частоте максимум 16МГц, то STM32F103 выжимают 72МГц, конечно из-за разности архитектур, напрямую частоты сравнивать нельзя, это скорее отражает более современный техпроцесс а соответственно меньшее энергопотребление.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

3)К1986ВЕ1Т от отечественной компании Миландр, отладочная плата под который у меня уже была. Микроконтроллер с "лицензированным" у ARM ядром Cortex-M1, по старой русской традиции используется в изделиях для военных, в частности в авиационных применениях. Мало того что является прямым аналогом некоторых контроллеров STM32 и имеет документацию на Русском языке, так ещё оборудован интерфейсами ГОСТ 18977-79(ARINC 429) и ГОСТ Р 52070-2003(MIL-STD-1553) что позволяет создать например гирокомпас, подключающийся к бортовой сети практически любого гражданского самолёта. Ну или ракету с GPS/ГЛОНАСС наведением для СУ-27 или F-16))

Так вот, изначально я хотел выбрать именно отечественный МК, проблема возникла в том что отпускная цена производителя выросла с ~250р в 2013, до 750р в 2016(У дистрибьютора LDM-Systems стоимость вообще за гранью добра и зла - 1800р за микросхему + доставка). Учитывая что тот-же STM32, можно купить в соседнем магазе за 250-500р, в этот раз я вынужден был поступиться своим патриотизмом(хотя кому я нужен со своей мелочью, в керамике с 5-й приёмкой этот МК стоит больше 10к).

(На картинке установлен модуль от Мультиклета, но вы просто включите воображение))

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

4)Плис Cyclone III или IV от Altera(плата тоже была).

Плис(Программируемые Логические Интегральные Схемы) или по буржуйски FPGA - изделия совершенно особенные, это своего рода программируемые микросхемы. То есть когда вы программируете это чудо - вы описываете логику работы всей микросхемы на аппаратном уровне, и это позволяет достигать невиданных, для обычных микроконтроллеров, уровней быстродействия и параллелизма. Например: если вы захотите на условном STM32, даже на максимальной частоте в 168МГц, заняться обработкой видео - у вас ничего не выйдет, внутренняя 32-битная шина - усрётся но не сможет прогнать такой объём данных между памятью и ядром, а если сможет(в разрешении 100х100) то на другие задачи его уже не хватит. Плис-же сделает это даже не почесавшись + в ней хватит ещё места под 2 ядра микроконтроллера со всей обвязкой.

Вы наверно спросите, а почему их тогда везде не используют? А я отвечу, потому что программисты под это хозяйство требуются очень высокой квалификации, и я бы сказал другого склада ума. По уровню абстракции, это работа уже с логическими элементами, ниже только само железо. Зато на ПЛИС можно вытворять такие вещи, которые не снились никаким x86 процессорам и видеокартам со всякими CUDA. За это их очень любят вояки, потому что можно сделать компактное устройство под конкретную задачу(типа технического зрения или расшифровки данных), но с чудовищной производительностью(и чудовищной стоимостью).

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Исходя из техзадания AVR отвалился сразу т.к у него нет DMA(для светодиодной ленты).

К1986ВЕ1Т выбыл потому-что стоит как чугунный мост и его не везде можно купить.

Плис  - штука весьма забористая, но для первого раза перебор. Так что оставим на потом.


В итоге я выбрал STM32 а если точнее - STM32F103RBT6 в корпусе lqfp64. Больше ножек я решил не делать т.к заранее знал что будут проблемы с запайкой.


Тут я, видимо, должен сделать развёрнутое пояснение по неизвестным терминам типа ШИМ, DMA и прочее. Но не буду, т.к большинству это будет нифига не интересно + это не просветительская статья.(Любопытным - гугл и википедия в помощь)


Проектировал всё в Altium Designer 16.0, решил попробовать новый для себя инструмент, на вид он страшный но добрый внутри. Освоить можно буквально по ходу проектирования, иногда поглядывая на обучающие ролики на ютубе и глядя в мануал. Прошивку писал в Keil uVision 5.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

По большому счёту накидать схему и по быстрому развести плату можно буквально за 2 дня. Но вся проблема такого подхода заключается в том, что плата делается 2 недели(в Зеленограде) и при внесении изменений в схему - придётся заказывать новую партию. А учитывая что первый мой проект(GPS-трекер, года 3 назад), который я решил воплотить в железе, так и не заработал(платы валяются до сих пор), у меня неплохо так играло очко. Поэтому я решил взять проект измором и вылизывал схему почти 2 месяца. На удивление такой параноидальный подход сработал, некоторые части схемы я переделывал по 3-4 раза.

Например управление вентиляторами сначала хотел делать на ULN2003(пара Дарлингтона), но поняв что он перегревается при большом кол-ве каналов(спасибо отладочной плате) решил делать на полевом транзисторе и с 2-х кратным запасом мощности.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Отдельная песня это подбор комплектующих, конденсаторы,резисторы,полевики,индуктивности,разъёмы. Было перелопачено адское количество документации на различные компоненты от разных прозводителей, возможно для профессионального разработчика электроники это и выглядит смешным, но для меня это была ещё та заморочка. В итоге некоторые компоненты я купил в ЧипиДипе, некоторые ехали с DigiKey, а мелочёвка вроде мелких транзисторов и пассивных компонентов с АлиЭкспресса(рекорд - 68 дней!).

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Сама плата толщиной 1.5мм с фольгой 35мкм, имеет 2 слоя и размеры 100мм х 100мм(1дм^2), для последующей лёгкости заказа у китайцев, т.к они любят фиксированные размеры. Крепится к столу с помощью 4-х латунных стоек, скрепляющих экран и контроллер в единое целое.

Короче заказал я плату в Резоните, отвалил 4 тысячи деревянных(это с золочением контактов, электро-контролем и доставкой до двери), подождал 2 недели, и получил свою плату. К тому моменту уже все компоненты были у меня, и мне осталось только всё собрать.

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

Но не тут-то было!

Вот для примера микроконтроллер в корпусе lqfp64 на миллиметровке:

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Я пробовал запаять его с помощью увеличительного стекла на 1.5х в течении целого дня, запорол 2 контроллера. Причём при выполнении какой-либо мелкой работы, у меня начинаются трястись руки и жутко болеть голова, и хотя я человек достаточно уравновешенный, состояние моё к концу дня было такое:

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Делать нечего - придётся покупать микроскоп.

Мой выбор пал на китайский монокулярный микроскоп  YA XUN YX-AK06 на 20 крат.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Покупал я его в известном всем магазине ПРОФИ(он-же siriust.ru) за 3900р, т.к в Питере его не было, пришлось ждать его с Воронежа, при этом они напортачили в накладной(отправителем и получателем значилось одно лицо - продавец магазина), поэтому прежде чем получить заветный микроскоп пришлось раз 20 позвонить в Воронеж и вынести всем мозг, к счастью на другом конце трубки ребята оказались адекватные, и получение заняло всего 2 часа. По сравнению с 2-х недельным ожиданием доставки до Питера(видимо он через Гонконг на ишаках ехал), это было сущей мелочью.

К тому моменту я был уже как дзен-буддист, любую проблему или задержку в неделю-другую воспринимал - философски.


Поэтому когда после многочасовой сборки трясущимися руками, при первом включении, микроконтроллер испустил дым - я просто, посчитав что утро вечера мудренее, всё выключил и лёг спать.

Проблема оказалась в том, что при перемещении разъёма кулера на противоположный слой платы, я забыл отразить его в вертикальной плоскости.

Поясню:Вот 3-х пиновый разъём кулера и его распиновка.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Чёрный - земля, красный - +12 вольт, желтый - сигнал с датчика холла который нужно через резистор подтянуть на линию питания 3.3В, и подать на ножку МК.

Разъём сделан так что его можно вставить только одним образом, этакая защита от дурака. Но не от умного дурака.

Сейчас включу пэинт-мастера: как видите при запайке разъёма с обратной стороны платы(не по проекту) контакты GND и TACH(тот что идёт напрямую в микроконтроллер) меняются местами. Поэтому при проектировании, если ты переносишь разъём на другую сторону платы, так-же необходимо отзеркалить контакты в вертикальной плоскости, иначе микроконтроллер станет цепью питания кулера, и через него потечёт техилый такой ток прямо на вентилятор. Зато таким варварским способом я узнал что STM32 в пике может проглотить до 100мА х 6В индуктивной нагрузки(прежде чем испустить дух), что для меня стало настоящим открытием.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Второй затык который съел очередные 2 недели(этот временной период уже стал для меня этакой константой, по прошествии которой проблемы чудесным образом решаются или приходит озарение), это экран.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Стандартный отечественный экран, разрешением 128 на 64 точки. Это единственный компонент который я не проверял на отладочной плате перед отправкой в производство.

Выделенные контакты(V0 и VEE) на схеме необходимы для подстройки контрастности экрана.

Соединяются между собой через переменный резистор на 10 килоом(крутилка отвёрткой). В крайних положениях экран, либо полностью заливается пикселями либо наоборот ничего не видно. Так вот, V0 у меня был посажен на линию питания, а VEE на землю через резистор. Экран фактически работал но я этого не видел(думая что проблема в софте).

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

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

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Третья проблема которую в должной мере, мне пока так и не удалось решить это -светодиодная лента. Построена она на таких малышах(фото не моё, взял в интернете):

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Это китайские RGB светодиоды, со встроенным контроллером WS2812B. Их фишкой является то что управляются они всего по одному проводу + 2 контакта питания, и в ленте им можно индивидуально устанавливать цвета(при этом количество светодиодов в ленте не ограничено). Например на их базе делают фоновую подсветку для телеков аля Ambilight - https://www.youtube.com/watch?v=Ykc7_BnUcRs

Их главный косяк в том, что питаются они от 5 вольт, и управляться должны тоже от 5 вольт. А у меня STM32 который работает от 3.3В. Как быть? В интернете советуют собирать преобразователь уровней на двух транзисторах, или специальных буферах. При этом везде делая пометки что светодиоды фурычат и от 3-х вольт. Я решил не плодить сущностей и пошел по самому простому пути - подключить напрямую. Самое смешное, что на отладочной плате лента отлично управлялась от 3х вольт. При этом в готовом изделии всё работает ровно до того момента пока не начинаешь тянуть провода(для двухметрового стола нужна подсветка в разных местах). Лента начинает моргать и мигать всеми цветами радуги, иногда выдавая цвета в духе FarCry Blood Dragon.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео
Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

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

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

Не хочется повторения геммеройного марафона, когда несколько дней подряд приходилось спать в соседней комнате на диванчике(потому что 31-кг стекло лежит на кровати), а стол выглядит вот так.

Проект BladeRunner. Часть 3(заключительная). Arduino, Stm32, Длиннопост, Стол, Печатная плата, Микроконтроллеры, Бегущий по лезвию, Pcb, Видео

________________________________________________________________________________

ИТОГ: Основная часть работ выполнена, проект закончен на 90%, ПО находится в процессе допиливания.


На данный момент работает:

1)Мониторинг температуры с 4х выносных термодатчиков.


2)Управление 5-ю кулерами на левой половине стола(плавный запуск при росте температуры видеокарты, и остановка в простое)


3)Плавная смена подсветки двух надписей BLADE RUNNER при росте температуры видеокарты, от тёмно синего при 40 градусах до красного при 80(синий,голубой,салатовый,зелёный,желтый,оранжевый,розовый,красный)

Автоматическое выставление желаемого цвета при выключении компьютера(функция ночник).


4)Отображение основных параметров системы на ЖК экранчике MT-12864J.


5)Мониторинг напряжений и уведомление пользователя при просадках по линиям питания 12В, 5В, и 3.3В.

________________________________________________________________________________

ПЛАНЫ:

Что планируется сделать в следующей ревизии контроллера:

1)Доведение количества индивидуально управляемых кулеров до 10-ти.


2)(Опционально) Возможность подключения 2-х ЖК экранчиков к одному контроллеру(для снижения цены)


3)Отдельная плата со светодиодами под каждую надпись и логотип(лента это не дело).


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


5)Возможность управления помпой, жидкостного охлаждения компьютера.


6)С радостью выслушаю ваши предложения, потому-что у меня фантазия закончилась)

________________________________________________________________________________

Моя система:

ЦП: AMD FX-8320

Видеокарта: AMD Radeon R9 390

RAM: DDR3-1600 24ГБ

SSD: Kingston 240ГБ

HDD1: Toshiba 1TB

HDD2: Seagate 1TB

________________________________________________________________________________

Что касается многочисленных просьб выложить всё в открытый доступ и сколько денег ушло на всё-про-всё:


1)OpenSource: Смысла выкладывать полные чертежи именно на стол, - я особо не вижу.

OpenSource ведь изначально придумали для коллективного написания, а главное - развития ПО, потому-что это быстро, просто и удобно: 1)скачал исходники 2)что-то исправил 3)сделал коммит - внёс свою лепту в общее дело. 4)Все рады, всем польза.


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

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


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


К тому-же мне будет очень обидно, если через несколько недель он окажется на каком-нибудь AliExpress по 2000 юаней за штуку(китайцы п*здят всё что не приколочено).


Вот выложить в открытый доступ исходники платы, прошивки и управляющего ПО - вполне здравая идея. Но для начала нужно выпустить вторую версию платы, отполировать код, и перевести проект на какой-нибудь OpenSource CAD.


2)Сколько всё стоило: До рубля я расходы не подбивал, но учитывая что проекту уже полтора года, могу с уверенностью сказать - больше 100к точно.


ЗЫ: С радостью выслушаю ваши замечания и пожелания по развитию проекта. Обновления в проекте я буду выкладывать под этим аккаунтом, так что следите за новостями.


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

Вы смотрите срез комментариев. Показать все
4
DELETED
Автор поста оценил этот комментарий
Ждал цен, а их нет. Боль.
раскрыть ветку (3)
DELETED
Автор поста оценил этот комментарий
Сделаю свой стол. С блек Джеком, подстветочкой и ценами.
раскрыть ветку (2)
Автор поста оценил этот комментарий
И шлюхами
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

Резиновую вагину с приводом под стол.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку