[Из песочницы] Разработка электроники: от идеи до устройства
Сейчас намного проще найти финансирование для своего проекта, проводятся стартап-аллеи, краудфандинговые платформы пестрят новинками. Ардуино приблизило мечтателей к заветной славе. IoT технологии взяли свое и IT фирмы поняли, что не кодом единым можно жить. Не редкое явление, когда hardware проектом руководят люди, которые несколько далеки от электроники. И еще чаще они думают, что жизненный цикл software-проекта аналогичен жизненному циклу hardware-проекта. Увы, это не так.
Организация процесса разработки железа — очень важный момент. Ошибка на любом этапе может «вылезти боком» и цена может оказать непомерно высокой. При создании материального объекта нет возможности выпускать каждый день новую версию. Проектирование — самый сложный этап разработки и о нем далее пойдет речь.
Примечание 1: данный материал предназначен для людей, которые не знакомы с (реальной) разработкой, это студенты и преподаватели, стартаперы, IT-фирмы, программисты. Все изложенное — личный опыт и наблюдения. Если Вы инженер с опытом и Вам есть что добавить — пишите в комментарии.
Примечение 2: здесь речь идет о простом жизненном цикле, от идет до железячки, но не до продажи. Почему так? Разной сложности проекты могут проходить очень многие этапы до продажи: поиск инвестора, если его нет, юридическая волокита, муляж, макет, устройство, отладка, разработки отладочных стендов (которые могут быть еще сложнее), сертификация, серийное устройство.
Жизненный цикл проекта- Составление ТЗ (общая концепция, функции, проработки потенциальных путей решения, сопоставление со сроками);
- Разработка приблизительной концепции (картиночки для начальства/спонсоров);
- Составление диаграммы Ганта/расписания/дедлайнов;
- Утверждения поставленных задач с командой;
- Разработка ПП + написание программы для МК;
- Прорисовка корпуса (по утвержденной 3д модели) + заказ ПП и закупка комплектующих для ПП;
- Монтаж ПП + изготовление корпуса;
- Отладка, много отладки, море отладки;
- Тестирование;
- Фоточки/пресс-релизы/слезы/звонки маме.
Команда
Хорошая команда — неотъемлемая часть проекта. Поскольку приходится работать с разными людьми и вливаться в проекты на разных этапах, собственно затем и был описан «жизненный цикл hardware проекта». В электронике бывают разные специалисты: инженер-схемотехник, инженер-конструктор печатных плат, инженер-программист (низкий уровень, то есть микроконтроллеры, микропроцессоры, ПЛИСы), инженер-технолог, технический дизайнер, монтажник и руководитель технической части или технический директор. Есть такая категория, как Embedder это специалист, который рассчитывает схему, проектирует, программирует, паяет (и швец, и жнец, и на дуде игрец). Среди заказчиков нередко бытует мнение, что нужно нанять человека, который сделает все, но разделение труда лучшая позиция и не стоит все валить на одного человека, особенно, если речь идет о стартапе, когда нужно вписаться в сжатые временные рамки и проделать много работы.
//естественно по этому поводу начали спорить с коллегой. Мол у стартапов не много денег, но, по-моему, количество денег это уже забота не инженера или тех директора. Если хотите одного человека, то ему придется работать день и ночь, а за это нужно очень хорошо платить (дешевле брать ему помощников), кроме того, некоторое время такая работа может быть интересной, но потом может просто начаться выгорание. Специалист бросает все и уходит в закат, а у начальства горит и подгорает.
Не так давно меня спросили как же все таки формируется команда для проекта разной сложности. Собственно это зависит от очень многих факторов: временные рамки, финансовые ограничения, исходные данные (напр. предыдущие наработки), что нужно получить на выходе (муляж, макет, красивый макет, устройство, серийный вариант, etc) и от ведущего проекта. Для простого проекта, типа драйвера для некой светодиодной вещицы может хватить и одного ембедера (рассчитал схему, растрассировал, запаял, запрограммировал и в продакшн). Был медицинский проект с составом: ведущий, эмбедер для основного блока и блока передачи энергии, программист низкого уровня для работы с передачей информации, программист высокого уровня (ПО для ПК и телефона), около-инженеришка для мелкой работы (на тот далекий момент я) типа рисования библиотеки компонентов для САПР, документации, теор. расчеты, отдельный логист (он сам занимался закупками и контролем поставок), технолог и технический дизайнер. Но это с учетом того, что были предыдущие версии устройства, специалисты, которые их разрабатывали, дедлайны много раз передвигались, отладка и испытания на живых образцах (никто не пострадал). Работы было очень много, но никто не представлял на начальном этапе НАСКОЛЬКО много, хотя наработки и опыт был.
Для проекта носимых устройств мне хватает конструктора ПП, который и логистикой занимается, ембедер для расчетов и программирования, монтаж на фирме или частное лицо. Соответственно верхнее ПО/дизайн на себя берет заказчик (или по договору подыскивается человек).
Почему нет смысла валить все на одного человека/на себя любимого? Конечно, если целыми днями бьешь баклуши и у тебя один заказчик, которому сроки не горят, то делай. НО если проектов много и человек действительно ценит свое время и деньги, то рациональнее делегировать задачи другим. Например: я могу сама заняться программирование МК, но буду разбираться с этим дольше, чем инженер-программист (поскольку я лучше работаю с проектированием ПП) и я потеряю больше, чем получу, при нарушении сроков и штрафах (например) или могу вовсе потерять клиента.
В любом случае, думаю, что этот опыт формируется только в процессе работы. Так же интересно в комментариях услышать ваше мнение на этот счет.
Организационные моменты
Чтобы не было вот так ^, нужно четко и железно (как ни иронично) все распланировать.
- Составление ТЗ (общая концепция, функции, проработки потенциальных путей решения, сопоставление со сроками). Есть много шуток на тему «какое ТЗ — такое и решение», но лишний раз не стоит пренебречь напоминанием. Чем подробнее ТЗ, тем меньше сюрпризов будет возникать по ходу дела. Не обязательно разбираться в электронике, но более чем достаточно описать, что должно делать устройство, какие ориентировочные габариты, особые составляющие, бюджет, сроки. Если инженеры — отдельная команда, то можно оформить коммерческое предложение, где инженеры опишут ваше ТЗ с технической стороны (не бесплатно, конечно, потому что это уже серьезная работа):
- метод реализации, например, это может быть полногабаритный макет с последующими доработками для создания опытного образца или сразу опытный образец (а такое тоже бывает, но не рекомендую);
- выходная продукция (можно просто отдать работающее устройство, а можно и схемы/чертежи/сборочную документацию);
- перечень задач обычно описывает жизненный цикл проекта;
- технические требования к устройству;
- расценки сроки и оплата.
Отдельный привет тем, кто любит не объяснять толком задачу, но просит рассчитать себестоимость. Это глупая затея, поскольку предварительная оценка совершенно не гарантирует того, что в эту сумму можно будет вписаться; - Разработка приблизительной концепции (картиночки для начальства/спонсоров). Чаще всего это на скорую руку подобранная элементная база и накиданная на печатную плату, чтобы получить 3D модель, примерить ее в корпус и обрадовать начальство. Но это только ориентировочная модель, в 90% случаев что-то может пойти не так (нет нужных размеров аккумулятора, например, или при трассировке просто не влазит в эти габариты и нужно буквально на пару мм увеличить, или все пошло слишком хорошо и плату можно уменьшить);
- Разработка диаграммы Ганта/расписания/дедлайнов. Один из важнейших моментов. Инженеру нужно оценить сроки и объем задач в комплексе. Есть промежуточные этапы демонстрации результатов, их тоже нужно оглашать, чтобы не было сюрпризов. Обязательно нужно закладывать риски. Например, один важный элемент едет из-за границы, заплатили за срочную доставку, но он где-то задержался. Кроме того, все мы знаем, что если дедлайна нет, то все это делается без всякого энтузиазма, вяло, долго и нудно;
- Утверждения поставленных задач с командой. Все расписано, составлено, еще раз просматриваем графики и задачи, обсуждаем спорные моменты, подписываем/не подписываем бумажки и начинаем работать.
Жизненный цикл разработки ПП
- Подбор элементной базы (какие компоненты будут закладываться). Анализируем цены, доступность и сроки поставки. Подбор выполняется в динамическом режиме вместе с созданием схемы. Выбор элементной базы проводится на основе схемы электрической принципиальной с учетом изложенных в ТЗ условий и требований;
- Прорисовка компонентов. Условно-графическое обозначение, посадочное место, 3D-модель, параметры — составляющие любого компонента. Разные инженеры по разному ведут свои библиотеки, некоторые пользуются готовыми. Для меня правило — дотошная прорисовка. 3D-модель компонента позволяет не только потом выкатить 3D-модель платы, но и проверить правильность посадочного места. Под разные технологии разные посадочные места. Разные параметры (пусть даже номинал просто отличается) — разные компоненты. Это упразняет море ошибок ручной правки;
- Создание схемы. Как есть правила написания читабельного кода, так есть правила создания читабельной схемы. Схему можно разделить на блоки, подписать их, расставить по пути протекания тока. Указать пины, которые можно свапать. Чем подробнее схема, тем меньше вопросов при трассировке. Если устройство состоит из нескольких печатных плат, то намного удобнее каждую схему вести отдельно, но потом обязательно нужно создать сборочную схему с указанием как платы между собой соединяются. Впрочем, все это описано в стандартах;
- Утверждение схемы. Еще раз проверяем элементную базу, расчеты, даташиты. Лучше лишний раз потратить 5–15 минут, чем потом резать дорожки и паять бутерброды;
- Правки схемы по необходимости. Внесли правки, утвердили и уже на этом этапе можно выкатить BOM (печень элементов) и заказать ключевые микросхемы, которые наверняка меняться не будут. Мелочевка (резисторы/конденсаторы/диоды etc) может меняться;
- Трассировка печатной платы. При необходимости корректируется схема и элементная база. Это довольно творческий процесс, можно трассировать, трассировать, а потом забить и начать все заново. Про автотрассировщики мнение неоднозначное, все делают как считают нужным. Так же при трассировке важно учитывать и технологию производства печатной платы, потому как если я знаю, что буду делать там, где качество не блещет, то не стану делать сверхтонкие дорожки и маленькие переходные;
- Утверждение растрассированной ПП;
- Выдача 3D-модели ПП. Честно, все заказчики любят модельки, это беспроигрышный вариант, если дедлайн на подходе. Кроме того отдаем модель нашим дизайнерам и они подгоняют корпус или ворчат и просят тебя что-то изменить;
- Подготовка гербер-файлов для изготовления печатной платы. На производство лучше всего отправлять именно гербера. Во-первых, если вы отправите просто *.pcbdoc, то по нему можно сделать реверс инжиниринг. Во-вторых, в этом случае производитель не несет ответственности за то, как они подготовят гербера, то есть, если вы отдали *.pcbdoc и они при «конвертации» случайно удалили какой-нибудь полигон/компонент, то не их вина. Не ленитесь, подготавливайте гербера, проверяйте их в специальных программах. Особенно важно сопоставить вместе со сверловкой;
- Подготовка документации. Стандартный комплект документации: перечень элементов, спецификация, чертеж, топология, монтажная документация. Ее можно делать по ГОСТу, по зарубежным стандартам или по своему собственному. Если же делаете по-своему, то лучше придерживаться унификации, проще будет разобраться.
- Перечень элементов нужен как для закупки, так и для монтажника (в основном достаточно туда вывести designator, component name, package, quantity, по наличию/желанию value, marking). Маркировку указывают не все, но это упрощает работу монтажнику, ему не приходится думать 30KOm это 303 или 304? Полнота документации наше все;
- Спецификация — все составные части, входящие в изделие, здесь также отмечена входящая в данное изделие документация: сборочный чертеж печатной платы, схема электрическая принципиальная, перечень элементов;
- Чертеж — это может быть габаритный чертеж или сборочный. Он может пригодится для проверки ПП после производства или для доработки купленного корпуса;
- Топология — нужна для проверки платы. Если плата маленькая или на ней много компонентов, то лучше всего проверить все ли правильно, не ошибся ли где-то производитель;
- Монтажная документация — контурное изображение изделия, а также данные, необходимые для его установки (монтажа) на месте применения. В состав входит: контур печатной платы, топология, изображение компонентов (вид сверху), маркировка, обозначение, иногда вид сбоку или в разрезе, если монтаж сложный. Не забываем про ключи на компонентах, это тоже очень важно, чтобы потом монтажник не устраивал истерики. Ушла как-то моя еще первая плата на монтаж с моей первой документацией и тут залетает в КБ тетенька с криком «Где тут плюс и минут у диода?». Или заказчик сам все припаял, пожаловался что ничего не работает, прислал фотографию, а контроллер-то он не так припаял.
- Утверждение документации
Написание программы нижнего уровня
Жизненный цикл программного обеспечения зависит от специфики проекта, но в основном все по шаблону:
- Анализ требований;
- Разработка алгоритмов (создание логики работы программы);
- Написание исходного кода;
- Компиляция;
- Тестирование и отладка (очень много отладки);
- Документация.
Стоит добавить, что все таки разработка ПО нижнего уровня и ПО верхнего уровня отличаются, поскольку все очень и очень зависит от железа. Непропаи, качество платы, компонентов, фаза луны, да что угодно могут повлиять на корректность работы программы, именно потому инженер-программист таки инженер, ему так же приходится помимо постукивания по клавиатуре тыкать паяльником в плату.
Серьезно, полоскайте своего программиста, как хотите, но он должен вести документацию. Ему вдруг предложили более лакомое место или переехал велосипедист — все. Разбираться в чужом коде, без комментариев, без алгоритма — невыносимая боль, проще писать все с нуля (а это время и деньги).
Программист, помни про карму, сдашь проект без комментиков и сам однажды в такой же попадешь!
Прорисовка корпуса
Работаем в паре с техническим дизайнером на этапе трассировки, потому как нужно утвердить, что плата устраивает и становится корпус, до отправки в производство. Если программное обеспечение позволяет, то удобнее всего выкатить 3D модель печатной платы. У дизайнеров свои нюансы, но тоже нужно учесть из какого материала будет корпус, каким методом он будет производиться (если уже серийный, то можно делать пресс-форму или 3D-печать для макета) или это будет покупаться готовый и просто дорабатываться.
Производство
Организация производства тоже немаловажная часть, особенно, если у вас нет своего цеха. На все про все (организацию, не само производство) лучше выделить ~месяц, далее объясняем почему.
Когда появилась утвержденная схема, пора браться за покупку компонентов, поскольку не все бывает в наличии. Пока плата не растрассирована, есть возможность без проблем внести изменения. Компоненты лучше закупать у официальных поставщиков и дистрибьюторов. Конечно, вы можете закупить в Китае, но если это китайский Китай, то половина микросхем может быть бракованная. То же касается и покупки на сайтах частных объявлений.
Поставщиков много, если у одного светодиоды стоят дешевле, то не значит, что у него все дешевле (да, есть люди, которые так думают, для них и замечание). Эффективнее всего сводить цены и сроки разных поставщиков в таблице. Закупать лучше с запасом 20–30% (была ситуация с транзисторами 0402, которые купили впритык по количеству, а при пайке их феном посдувало).
Также есть нюансы с поставками, например, требовался модуль, он есть только в Китае, нам необходимо всего пару десятков, но поставщикам не выгодно его везти (особенно в таком количестве), потому что они потратят слишком большую сумму на получение специальных документов. Потому заказывали обычной почтой, сроки там сильно плавают. Недавние грабли научили еще вот чему: держите руку на пульсе, звоните своему поставщику каждые 3–5 дней, потому что чаще всего они сами и не уведомят о том, что возникли проблемы. Товар едет из Англии, обещали 5–9 рабочих дней. Прошло две недели, окей, после долгого смущения и попыток оправдаться, оказалось, что на момент заказа товара на складе не было (хотя говорили, что все в наличии, все ок) и он только выехал и будет еще через неделю, а уже нужно запускать производство. Цирковые-поставщики.
Когда плата растрассирована, проверена, то быстро оформляем гербер-файлы и отправляем в производство. Но, тут тоже подводный камень, на производствах обычно есть очередь.
Производители бывают разные, есть те, кто делает долго и качественно, а есть те, кто быстро и не очень качественно, но для небольшой партии макета подойдет. Все допускают ошибки, заказали платы на лучшем предприятии, все по фен-шую, но тут они приходят и на месте центрального пада одной из микрух (барабанная дробь) маркировка (шелкография). Был один вопрос: как? Сроки позволяли и нам их переделали, но в следующий раз они вообще умудрились один из полигонов удалить. Бывают разные ситуации, все риски не учесть, но стоит быть к ним готовыми.
Монтаж. Если партии большие, то есть смысл заказывать автоматизированный монтаж или если эти платы не один раз будут запускаться в производство. В любом другом случае — ручной монтаж. Предприятия берутся за мелкие партии очень неохотно, потому что это скорее убыточно.
Если ищем самостоятельно монтажников, то лучше заранее спросить чем паяет, о сложных корпусах (например, транзисторы в корпусе 0402 или LGA-14), показать монтажку (убедиться, что человек действительно в нее будет смотреть, а то один раз припаяли два вертикально и близко расположенных резистора горизонтально).
Тут еще следует упомянуть, что иногда вопрос о способе монтажа может подняться на этапе трассироваки. Например, есть компонент в корпусе SOT-23, но в библиотеке для этого корпуса два посадочных места — обычное и от NXP; для микросхем посадочные могут быть с задним и передним миниском.
Отладка
Это крайне специфический этап. Порой для отладки нужно собирать целые стенды, которые дороже устройства. Еще может быть такое, что от способа отладки может зависеть концепция платы, например: устройство состоит из 3 плат и раньше отлаживали каждую отдельно, а потом все в куче, но начальство предложило вообще все 3 платы делать одним куском, а потом их разламывать. В таком случае устройство для отладки одно, но нужно тогда потратить время уже на три платы и новый стенд, это оказалось не выгодно (просто потому что тогда нужна была модификация только одной платы).
Если в ходе отладки были выявлены ошибки, их лучше всего задокументировать, чтобы впредь не наступать на те же грабли.
Почему все таки лучше начинает проект с макета, а не разрабатывать сразу опытное устройство/серийное? Потому что в случае второго невозможно сразу сказать дело в качестве платы, элементной базе или в пайке.
И не забываем об использовании блоков питания и особенно юсб-хабов (а то один горе-падаван спалил себе комп в первые же дни).
Заключение
Разработка железа это долго, дорого, сложно, но очень-очень интересно, писать об этом можно еще и еще. Главное не забывать фразу »Делай хорошо, плохо получится само».
В планах так же написать статьи о схемотехнике (от идеи до схемы, с чего вообще начинать, как делать расчеты, что нужно знать и понимать? То есть, для новичков), трассировке (прорисовка компонентов, сложные посадочные места, лайфхаки, туториал по САПР), пайке и граблях с масштабированием производства, если вам, конечно, интересно.
Всех с праздничками и наступающими рабочими буднями!