Для опытных разработчиков данная статья не раскроет ничего нового, т.к. в ней изложены довольно простые действия, не раскрываются никакие тонкие особенности или методики разработки. Это скорее вводный обзор процесса проектирования электронного устройства. В первую очередь он будет интересен людям, которые немного занимались радиоэлектроникой и собирали какие-то конструкции, а сейчас подошли к этапу, когда хочется основательно заняться разработкой. В этом случае статья может дать некий вектор, направление для развития.
Использованная в демонстрации среда разработки - KiCAD. Это единственная полнофункциональная бесплатная CAD (да еще и с открытыми исходниками) для разработки печатных плат, пригодная для конструкций почти любого уровня сложности. Именно по причине бесплатности, она мною и используется. Вообще, освоив процесс в одной среде, перейти в другую намного проще (по опыту перехода из PCAD в KiCAD). Конечно, некоторый функционал будет отличаться, что-то будет делаться проще, что-то тяжелее, но в целом все очень похоже.
Именно с идеи начинается разработка. Пока нет идеи, не возникнет дальнейшей проработки конструкции. Идея может быть следствием жизненной необходимости или просто вещью из разряда Just For Fun.
На данном этапе, на бумаге или в голове продумывается непосредственная реализация. Какие в ней будут присутствовать узлы, интерфейсы. На этом же этапе идет подбор комплектующих. Рисуется предполагаемый набросок платы, выбирается ее форма и размеры.
Так же на этом этапе на макетах проверяются схемотехнические решения, особенно если есть какие-то сомнения по ним.
Этап сидения с даташитами и внимательной перерисовки графических символов в используемый CAD. Конечно, можно искать готовые компоненты, но когда копится своя база чувствуешь себя намного увереннее. Лично я стараюсь все что сложнее резистора и конденсатора рисовать самостоятельно, почему-то так больше доверия к компоненту. При использовании какого-то готового символа на всякий случай тщательно сверяю его с даташитом.
Корпус, как он выглядит в даташите и в редакторе:
Посадочные места рисовать лучше сразу, вместе с компонентами. Благо, их рисовать приходится реже: они все-таки более стандартизированы (те же DIP, линейки разъемов, основные SMD-корпуса уже присутствуют в библиотеках). Хотя и здесь вариантов много, например, каждый MEMS датчик имеет свой уникальный корпус, выдуманный производителем. С одной стороны тяжело ошибиться при монтаже, с другой стороны дополнительная возня при создании компонентов. Мало того, надо быть внимательным, т.к. тот же корпус с названием LGA-28 мне встречался в 2х вариантах. После ввода посадочного места есть смысл распечатать его на принтере и наложить на него компонент, иногда случаются ошибки.
Рисовать схему можно параллельно с компонентами, используемыми на ней, так как все-равно на первом этапе что-то да будет пропущено. На этом этапе формируется первая полная версия схемы устройства. Грамотно расположить схему на листе и сделать иерархию - отдельные вопросы, часто приходится двигать, а иногда и перерисовывать блоки, чтобы красиво уместить что-то дополнительное. Чтобы не заниматься такой работой, можно заранее сделать избыточную иерархию, разделить по листам, так чтобы не было предельной загрузки компонентами каждого листа.
При сильном заполнении листа требуется тратить больше времени на добавление новых узлов (приходится чаще двигать уже нарисованные). Так же, в KiCAD у меня так и не получилось перенести нарисованный блок между листами: пришлось перерисовывать его на новом листе. Вот так выглядит почти полное заполнение листа:
Есть довольно спорный и сложный момент. На данном этапе происходит фактически назначение функций на выводы микросхем. Здесь, вроде бы все просто, но этот этап сказывается на дальнейшей разводке платы. Как один из вариантов, можно заранее выбрать предпочтительную ориентацию микросхемы, а на этапе рисования схемы, преимущество отдавать тем выводам, что находятся физически на чипе с удобной стороны. В теории это упростит разводку платы, но на практике такой способ в полном объеме я не применял.
Этот процесс в разных CAD-средах отличается. В одних, компоненту жестко соответствует корпус (к примеру, PCAD), тогда этот этап отсутствует, а выбор посадочного места происходит в процессе создания схемы. В других - корпус выбирается независимо (например, KiCAD на рисунке ниже).
У каждого варианта есть свои недостатки и преимущества. При независимом выборе корпуса быстрее и проще рисуется схема, непринужденно меняется тип корпуса рассыпухи, но при задании соответствий можно ошибиться и поставить, к примеру SO-8W вместо SO-8.
Из полученной схемы генерируется список соединений. Он переносится в программу разработки платы. В этот момент все выглядит довольно страшно.
Желательно сразу нарисовать контур будущей платы. Так же для удобства поиска, я раскидываю компоненты по листу, чтобы проще было искать нужный. Появляется ложное ощущение, что все может не поместиться на плате:
Примечание: Это ложное ощущение, в дальнейшем на эту же самую плату поместилось намного больше представленного на рисунке, была добавлена еще одина микросхема и дополнительные цепи согласования.
Почему-то этот процесс мне порой хочется сравнить с рисованием картины. Но он не столь интуитивен и более техничен, так что врядли в нем есть что-то художественное. Однако, если разводка получается простой, без нагромождения переходных отверстий и без дорожек вьющихся туда-сюда по плате, то начинаешь радоваться красоте платы.
Вообще, есть 3 способа разводки платы: ручками, автоматически и комбинированием автоматической и ручной разводок (хотя последнее мне не удалось сделать в PCAD по алгоритму: развел сначала критичное, а затем пускай автомат дальше мучается). Когда я только пришел в PCAD из SL, я очень радовался возможности автоматической трассировки, даже пользовался ей несколько раз. Удобно, быстро. В основном после разводки можно чуть-чуть поправить проект и плата готова. Но в итоге, вернулся к ручной разводке: таким образом максимальный контроль над процессом. Конечно, в современных мощных CAD есть настройки групповых правил, поддержки дифференциальных линий и выравнивание по длине проводников. Этот функционал может быть незаменил при разводке сложных плат, составные части которых обмениваются информацией на высоких частотах.
Обязательно настраиваются правила проектирования. Т.е. устанавливается ширина дорожки, параметры переходных, зазоры, правила для групп дорожек. Выбирается количество слоев. Так же раскидываются по плате те компоненты, положение которых четко известно (разъемы, кнопки). Рядом с ними помещаются непосредственная обвязка (к примеру, конденсаторы на питании, обвязки у кнопок). При этом узлы размещаются там, где скорее всего не будут мешать дальнейшей разводке.
Так же я выделяю блоки, которые понятно где расположить, но может потребоваться их чуть сдвинуть в дальнейшем. К такому относится расположение контроллера на тесной плате. Обычно я немного откладываю их размещение, но начинаю разводить обвязку вне платы (ставлю кварц, конденсаторы и т.д.). Таким же образом я поступал со всеми MEMS датчиками, разводя полностью с обвязкой их вне платы. Конечно, в дальнейшем может потребоваться чуть подправить полученную разводку, но хотя бы становится видно, помещается ли блок на отведенное ему место. Потом блок размещается и к нему тянутся связи от других частей платы. Так же при размещении рассматриваются разные варианты ориентации, предпочтение отдается тому, при котором визуально меньше пересекающихся линий связи (хотя обычно в любом положении их количество примерно одинаково).
Но в итоге, на определенных этапах все-таки приходится принимать интуитивные решения, размещать оставшиеся блоки и начинать их разводку на плате. По глобальным цепям приоритет отдается тем, что чувствительны к длине, помехам и прочему. К таком относятся аналоговые части, антенны, дифференциальные линии.
На определенных этапах может потребоваться вернуться к схеме, чтобы изменить ее и упростить где-то разводку. Благо, этот процесс в современных CAD довольно прост, в KiCAD просто делается повторная загрузка нового NET-листа, а PADS вообще чуть ли не на лету принимает такие изменения.
К этому я отношу заливку полигонов и добавление дорожек для формирования этих полигонов. Проводится DRC-контроль, так же причесывается шелкография, наносятся дополнительные обозначения. Таким образом плата принимает финальный вид:
Как можно заметить, на финальной версии, добавилась еще одна микросхема и усложнилась обвязка, так же немного изменена разводка в нескольких местах.
На этом этапе я вывожу плату на печать. Именно на бумаге проводится финальная проверка того, что все компоненты нормально встают и не мешают друг другу, а контактные площадки соответствуют реальному расположению выводов компонентов. Иногда случается, что сами площадки имеют правильную форму и размеры, однако где-то нарушено их взаимное расположение или интервал.
В данный момент я рассматриваю случай с заказом платы на производстве. А каждое производство имеет свои особенности. От формы платы зависит тип механической обработки, так же у производителя определенный набор сверл и фрез, обозначены минимальные зазоры и ширина дорожек.
Так же различается набор форматов, в которых принимаются платы. Стандарт для производства - формат GERBER. Некоторые проивзодители идут на встречу к разработчикам и могут приминать непосредственно файлы проектов CAD.
Еще одна особенность - процесс подготовки производтсва. Для мелкой серии плат он по стоимости составляет бОльшую часть стоимости заказа. Подготовка к производству - создание фотошаблонов для дальнейшего выпуска плат. Причем, исходя из этого для мелких заказов выгоднее объединить на одной заготовке несколько проектов, чтобы они в итоге были на одном фотошаблоне (называется это мультизаготовка, а сам процесс создания - панелирование). Как недостаток - при повторном заказе можно заказать платы только в той же самой конфигурации, независимо от того какие из них необходимы.
Для подготовки и работы с GERBER удобно использовать CAM350. В ней можно проверить допуски производства, а так же объединить несколько плат на одной заготовке. Причем можно объединять даже платы сделанные в разных CAD-средах.
Здесь сказать нечего, выбираем производителя, оговариваем особенности (толщина, маска, тесты, лужение и т.д.), отправляем Гербера. В любом случае волнуешься: много ли напортачил на плате, не напортачат ли при изготовлении. Как итог получается такая заготовка:
Обработка контура в данном случае была механическая при помощи фрезы. По этой причине между плат требовалось сделать зазор 2мм (такая фреза на Резоните, где и заказывалась плата). Кстати, оставленные перемычки у меня в производственных файлах указаны не были (может кто подскажет, как их отмечать?), я просто написал в комментариях к заказу, чтобы их сделали.
Вот рассматриваемая выше плата крупным планом:
Плата вырезается с заготовки и распаивается:
Не обязательно распаивать все сразу. Можно ограничиться только необходимыми в для первого запуска узлами. Можно распаивать блоки по очереди. Так будет меньше вариантов, где же искать проблему с пайкой или ошибку в схеме. В итоге можно управиться за меньшее время.
Здесь все зависит от схемы и ее особенностей. Общее правило только одно: до первого включения обязательно проверяются цепи питания на предмет КЗ. Если используется импульсный преобразователь, хорошо бы проверять его отдельно от питаемой им части схемы. А для сложных конструкций хорошо предварительно использовать заранее продуманный алгоритм тестирования, чтобы при первом же запуске пройтись по основным точкам и получить минимальную гарантию того, что через несколько минут не произойдет микроапокалипсис.
В любом случае на первой итерации платы будут найдены какие-то недочеты и ошибки. Обычно это мелочи, которые легко правятся подрезаниями и соплями. К примеру, в моей плате были такие недочеты: неверная распиновка MOSFET-ключа на USB шине (взял готовый компонент и не проверил его совместимость), выпустил разводку земли у кварца, не поставил конденсатор на цепочте RESET, так же завел один из входов АЦП на вывод контроллера без данной функции, проблемы с зазором маски (пропустил специфичную настройку CAD, отвечающую за зазор маски) и ее расположением в некоторых местах, напутал с отверстиями позицирования разъема MiniUSB.
Дальнейшие этапы зависят от конструкции. Это либо просто проверка функционирования и дальнейшее использование, либо процесс написания и отладки софта.