- Как я писал самый большой скрипт для Altium Designer
- Начало
- Первый интерфейс
- Развитие
- Наши дни
- Altium Designer
- Altium Designer: что делать если проект стал сложным?
- Введение
- Я хочу научиться работать в Altium, но он меня пугает
- Когда проект становится сложным?
- Критикуешь? Предлагай!
- Что же делать?
- Давайте делать красиво!
- Клонируем
- Экономим десятки человеко-часов на трассировке
Как я писал самый большой скрипт для Altium Designer
15680 строк, 800 053 знаков — именно такой величины сегодня мой скрипт, созданный внутри Altium Designer — системы по разработке печатный плат.
Начало
Был 2014 год, я работал инженером-конструктором, разрабатывал печатные платы. Военная приемка, оформление полной конструкторской документации (КД), нормоконтроль ЕСКД — все это заставляет трепетать заграничный австралийско-китайско-американский софт, коим является система Altium. Поскольку им чужды советские ГОСТы, старые инструкции и стандарты по оформлению чертежей. Один сотрудник нашего отдела порой тратил целую рабочую смену, чтобы чертеж платы удовлетворял всем нормам и правилам по оформлению КД.
Сейчас это делается минут за 10.
Я решил, что можно упростить жизнь и себе, и ещё десятку человек на работе. Начал разбираться, нашел, что есть открытый API, стал смотреть примеры и вуаля, мой первый скрипт для Altium уже рисует линию на плате -радости нет предела.
Потихоньку помаленьку я расширял свои знания в программировании, поскольку до этого особо с ним не сталкивался, в универе помню маятник написал за семестр и всё.
Первый интерфейс
Дошло до того, что нужно было делать интерфейс, в самом начале он был таким:
Эта версия уже умела рисовать размеры, выноски со стрелками.
Надо понимать, что особых разъяснений в документации не было, опыта ни у кого в использовании функций из API тоже не было, только некоторые скрипты на гитхабе и стандартные альтиумовские. Описание на wiki и по сей день из разряда:
И всё описание, хотя методом проб и ошибок получалось определять как это работает.
Каждый новый раз введение новых функций доставляло удовольствие, ведь когда ты видишь, как твоими трудами люди пользуются и всё получается — это ли не то, зачем создаются программы. На этом этапе время оформления чертежей уже удалось сократить почти вдвое.
Развитие
Следующая версия уже выглядела так:
Она уже умела вставлять листы внутрь платы, штриховать полигоны для чертежа, вставлять сетку и прочие элементы для чертежа.
Главная проблема заключалась в том, что среда разработки Altium — это система для разработки печатных плат. В ней недостаточно инструментов для оформления КД, и тем более по российским стандартам. В основном написание скриптов расширяло стандартный инструментарий среды для того, чтобы можно было ещё и разработать КД и вывести его на печать.
К примеру вставку листов разных форматов я внедрил прямо в код, не стал делать отдельных файлов. Применил для этого excel таблицы, вставил руками в файл pcb форматку, выделил все свойства всех линий, их координаты, ширины, координаты текстов и т.д. и внёс все это в обычный массив. Затем уже скрипт по порядку создавал каждую из линий форматки в самом файле платы. И так для каждого листа всех форматов.
Наши дни
Сейчас же программа выглядит уже вот так:
Я ни разу не дизайнер, кнопки пришлось иногда лепить куда попало, смотрел на самые известные САПР системы, как там сделаны меню, настройки, выпадающие кнопки и прочее.
- Более 50 настроек, сохранение их внутри файла платы
- Обновление чертежей при внесении изменений в плату
- Автоматическая вставка видов в центр листов
- Формирование PDF в одну кнопку
- Редактирование размеров с пересчетом отклонений налету
- Радиальная сетка, 4х сторонняя сетка, риски, настраиваемый шаг
- Сохранение эскизных рисунков в txt формате для дальнейшего использования
и многое другое.
Много нервов, сил, терпения, бессонных ночей — потрачено. Оформляем чертежи на работе — бесценно.
Скрипт пишется одним мною уже четвертый год, причем без применения гита, темных тем и прочего). Только паскаль, только хардкор. Спасибо, что долистали до конца, буду рад общению!
Источник
Altium Designer
Система автоматизированного проектирования от разработчиков легендарного P-CAD, предоставляющая широчайшие возможности по созданию электронных устройств. Программа в большей степени рассчитана на профессионалов, чем на радиолюбителей.
Состав программного пакета Altium Designer включает весь необходимый набор инструментов для создания, редактирования и правки работ на основе электрических и программируемых интегральных схем. Редактор схем позволяет работать с проектами любого размера и сложности, преобразовывая их в простейшие подблоки. Цифро-аналоговое моделирование учитывает почти все реальные параметры и предоставляет в распоряжение конструктора огромное количество различных анализов, включая анализы переходных процессов, частотный, шумов, передаточных функций, Фурье, методом Monte-Carlo, с изменением значений температуры. На схемотехническом уровне проверяются и устраняются различные импедансы и перекрестные отражения. Редактор печатных плат программы содержит уникальные средства для автоматического (программы Statistical Placer, Cluster Placer) и интерактивного размещения компонентов. Топологический трассировщик Situs использует полностью настраиваемый алгоритм для решения задач разводки печатных плат с большой плотностью установки элементов. Он может работать по неортогональным направлениям и с самостоятельным выбором слоев. Постоянно обновляемые библиотеки программы хранят более 90 тысяч компонентов. Многие из них имеют модели посадочных мест, IBIS и SPICE-модели, а также 3D-модели. Каждую из них можно создать в программе самостоятельно с минимальными затратами времени путем последовательного ввода сведений о компоненте.
Благодаря поддержке DirectX произошло перераспределение нагрузки между процессором и видеокартой, что значительно ускорило работу с полигонами и многослойными платами. Существует возможность разработки печатной платы в трёхмерном виде с импортом/экспортом данных в механические САПР (SolidEdge, SolidWorks, AutoCAD, ProEngineer). Altium Designer поддерживает практически все существующие форматы выходных файлов: DXF, Gerber, NC Drill, ODB++, VHDL, IPC-D-356 и многие другие. Встроенный мастер импорта проектов преобразовывает библиотеки, схемы и платы из систем OrCAD, PCAD, Allegro PCB, PADs, DxDesigner в работы Altium Designer независимо от кодировки (бинарной или ASCII). Отличительной особенностью среды проектирования является сквозная целостность разработки на разных этапах проектирования. Другими словами изменения, внесённые на любом уровне разработки, будут отражены на всех стадиях проекта.
Программа была создана австралийской компанией Altium, которая в 2008 году сообщила о завершении работ над P-CAD и предложила использовать вместо нее программу Protel, разрабатываемую с 2000 года. В 2006 году Protel был переименован в Altium Designer. Несмотря на то, что центральный офис компании расположен в Сиднее, она имеет филиалы в 22 странах.
Интерфейс среды проектирования прост и понятен, любую команду можно выполнить через многие меню и один из вариантов всегда можно найти через «Help». В Интернете присутствует огромное количество книг и методических указаний на русском языке по Altium Designer.
В интернете есть неофициальные русификаторы для Altium Designer, однако как правило на старые версии программы, или с не полным переводом.
Altium Designer предназначен для работы под управлением 32- или 64-разрядных операционных систем Windows 2000 / XP / Vista / 7 / 8.
Распространение программы: Shareware (платная) от 49$ в месяц
Официальный сайт Altium Designer: http://www.altium.com/
Форматы файлов Altium Designer: PCB, PRJPCB, PCBDOC, SCHDOC, DDB
Источник
Altium Designer: что делать если проект стал сложным?
Приветствую! Думаю, любой инженер или просто радиолюбитель/DIYщик/мейкер, занимающийся разработкой электроники, старается развивать свои навыки, которые растут вместе со сложностью выполняемых проектов. В какой-то момент человек достигает уровня, когда ему кажется, что проекты стали очень сложными, займут много времени на разработку и надо что-то с этим делать — нужно оптимизировать свою работу. Сегодня я расскажу как в Altium Designer 18 (далее AD или AD18) повысить производительность своего интеллектуального труда и сэкономить время, нервы и деньги.
Введение
Теперь немного информации для тех, кто не знает что такое Altium Designer. Это один из трех популярных профессиональных САПР, которые позволяют разрабатывать электронику практически любой сложности. Два оставшихся пакета — это Mentor Expedition (и PADS наверное) и Allegro Cadence. У каждого из этих 3-х пакетов есть свои плюсы и минусы, а так же условная специализация. Сегодня сравнений не будет, поэтому я лишь скажу почему выбрал Altium для себя:
- Отличный дизайн и продуманный интерфейс данной программы просто вне конкуренции. Достаточно посмотреть на конкурентов и все становится ясно. Да, дизайн и удобство это важно, когда ты проводишь за работой по несколько часов ежедневно. Так же это облегчает процесс обучения новичков, ведь учиться в понятном и логичном САПРе намного проще;
- Возможность напрямую работать с таким механическим «титаном» как SolidWorks. Мы можем просто открыть плату из AD в солиде и добавить ее как часть сборке без потери качества. Прощай конвертация через STEP. Для меня, да и наверняка для вас, это важно, т.к. электронное устройство — это не просто плата с компонентами, это почти всегда еще и корпус. Данная возможность позволяет легко сделать сборочную модель всего устройства и не допустить ошибок при проектирование и производстве пресс-форм по 3-5 тыс.$ каждая;
- Наличие достаточно большого количества информации на русском языке, что обеспечивает достаточно низкий порог вхождения. Это основная причина, почему в СНГ главенствует именно Altium, а не что-то другое. Попробуйте найти что-то на русском по Mentor или Cadence, сразу расхотите учиться работать в них;
- В СНГ и Азии большинство компаний работают в Altium, да и в Штатах у них большая доля рынка. В Европе очень любят SolidWorks PCB, который является как раз таки встроенным AD. Что это дает? Вы легко сможете найти работу, если надумаете работать в сфере разработки электроники.
Да да, я не рассказал о всяких возможностях симуляции, инструментах и прочем, но это и не нужно. Все 3 описанные выше САПР с технической стороны умеют примерно одно и тоже, просто с разной степенью удобства и костыльности.
Я хочу научиться работать в Altium, но он меня пугает
Когда-то, году так в 2011-2012, мне довелось впервые поработать в AD, он мне показался крутым, но страшным, т.к. в тот момент английский для меня был преградой и вообще было не понятно как в нем работать. Преодолеть свой страх перед огромным количеством инструментов и функционала мне помогли видео-ролики от тов. Сабунина (спасибо ему), которые есть на youtube на русском языке и описывают базовые простые вещи, позволившие сделать первые шаги в освоение. За прошедшие 6 лет информации по AD на русском стало еще больше, поэтому порог вхождения стал еще ниже, так что не бойтесь и учитесь.
Чтобы вам было легче осваивать Altium Designer предлагаю парочку «пряников» от себя:
- Цикл обучающих видео-уроков — тут. Ролики имеют большую длительность, но содержат в себе исчерпывающую информацию по базовым функция (так говорят по крайней мере) и позволят любому школьнику без проблем спроектировать свое первое устройство;
- Библиотеки для Altium Designer — тут. Тут вы найдете все пассивные компоненты (резисторы, конденсаторы и прочее), а так же большое количество популярных транзисторов, диодов и микросхем, включая МК и FPGA. Создание библиотек на старте занимает очень много времени, поэтому надеюсь, что сэкономлю вам не мало времени.
Если в процессе изучения у вас будут какие-то вопросы и возникнут сложности, то вы можете написать мне в личные сообщения, по возможности стараюсь отвечать всем.
Когда проект становится сложным?
У любого более менее серьезного проекта, будь то исходный код какой-то программы или принципиальная схема электронного устройства, всегда есть черта после которой наступает хаос, проект становится непонятным, его сложно проверять и тестировать, он выходит из под контроля.
Данная граница индивидуальна для каждого разработчика: один может отлично разобраться в устройстве из 1000 компонентов, а другой начинает допускать ошибки и испытывает сложности с проектом из 200 компонентов. Вообще оценка в количестве электронных компонентов немного субъективная, но общую суть проблемы понять позволяет.
Из выше написанного можно сделать следующий вывод:
Проект становится сложным, когда разработчику становится необходимым выполнять действия по сохранению читаемости и понятности исходников проекта.
До какого-то момента вы можете конечно забить на все и «рисовать» на схеме что угодно и как угодно, например, как тут:
Все сливается, схема выполнена неаккуратно и в конечном итоге это приведет к тому, что где-то криво или не туда провели дорожку, в этом хаосе сразу не заметили и в итоге режете проводники на платах и подпаиваете сопли.
Давайте посмотрим еще на один шедевр — схема arduino, выполненная в AD:
Как вам? Мне вот больно… Смотрю я на R2 и R3, вроде понятно что это подтяжки для I2C, но где этот I2C и около какого разъема они должны быть для меня загадка и тут приходится уже искать долго и нудно, при чем это схема с малым количеством компонентов и простая, а уже хаос.
Теперь как альтернатива — пример из своих произведений (кликабельно):
Смотрите на схему и я думаю вам сразу понятно как минимум где вход, а где выход — «стрелки» вам на это намекают, да и мы не арабы, читаем (в том числе и схемы) слева направо. Функция у модуля одна — трехфазный синфазный фильтр и ничего лишнего. Схема сделана аккуратно и занимаете 1 лист в документации. 1 лист — 1 функция.
На самом деле то о чем я написал выше — мелочи, важные и облегчающие жизнь, но все таки мелочи. Хотя я надеюсь общую идеологию вы уловили, давайте теперь подведем итог как же «надо» делать:
- Принцип инкапсуляции применителен и в схемотехнике: каждый модуль выполняет единственную простую задачу. Модуль обычно это один лист в документации, например, А3 какой-нибудь;
- Принципиальная схема должна выполняться в одном стиле и очень аккуратно. Аккуратность при работе в будущем окупится вам сполна. Да и когда вы на собеседовании покажите понятную, аккуратно выполненную схему о вас сразу же сложится хорошее впечатление. Рукожопов видят сразу и обычно не любят;
- Не используйте листы больше А2, даже если у вас пару тысяч компонентов. Если хочется влепить А1, то что-то вы делаете не так. Вероятно вам на схеме нужно выделить какие-то модули и перенести на отдельный лист.
Критикуешь? Предлагай!
Теперь раскритиковав других необходимо предложить альтернативу «как надо делать». Стоит понимать, что описанное в статье лишь субъективное мнение автора, основанное на опыте работы и собственном взгляде на мир.
Предлагаю сделать как все нормальные люди, то есть сначала сделаем через жопу плохой вариант схемы, а затем героически решим все проблемы и доведем до приемлемого состояния. Поехали!
Создаем проект в Altium Designer. В нем для примера я изображу 6-ти фазный buck преобразователь DC/DC. У меня будет 6 силовых каналов и 1 МК для управления всеми фазами. Каждый силовой канал будет выглядеть следующим образом (кликабельно):
Сам канал силовой я изначально начертил правильно. Если посмотрите внимательно, то у меня на схеме есть входы сигнало — 2 ШИМа слева + VCCIN с GND, есть выход — VCC5V и GND. Сам модуль выполняет одну задачу — преобразует VCCIN в 5В. Дальше делаем плохо…
Тут мы натыкаемся на первое ограничение — один канал занимает практически весь лист А3, у нас их 6, следовательно если я увеличу лист до А2 все равно не уместится. Можно увеличить лист до А1 — отлично, пока что мы рукожопы неопытные разработчики и идем по такому пути и наблюдаем следующую картину (кликабельно):
Вроде как пока понятно — есть 6 каких то кусков схемы, есть МК внизу. Вот только это 30% схемы, что еще нужно? Обвязка МК + обратные связи? Конечно! Устройство должно общаться с внешним миром? Конечно, добавим RS485. Аааа, еще нужно питание для драйверов, то есть из VCCIN необходимо получить +12В и для этого добавим DC/DC! Еще же МК… ему надо еще 1 DC/DC и теперь добавив все это — смотрим (кликабельно):
Понятно что тут? А если бы я не сказал изначально о функционале устройства? А если вдобавок к этому еще и отдельные куски схемы рисовал коряво? А если УГО компонентов в библиотеках нарисованы изначально криво? Напугал? То-то же…
Что же делать?
Теперь давайте поразмышляем… В данном устройстве всего компонентов 150, в моих средних проектах связанных с силовой электроникой, их обычно от 1500 до 4000, то есть масштаб бедствия вы представляете, когда таких листов А1 как выше будет 10 штук и все они захламлены и забиты. Ошибки неизбежны!
Смотрим и думаем дальше. Первое что стоит сделать — сформировать модули. У меня они все сформированы, т.к. я их просто копировал с одной домашней поделки, но один модуль разбил — EEPROM память по I2C работающую. Я совершил ошибку такую же как в схеме ардуины, как стоит сделать:
Как видите я собрал в одну «кучку» микросхему памяти, блокирующий конденсатор по питанию, который будет стоять около нее и подтяжки к +3.3В. Теперь мне не придется искать по схеме все компоненты, которые нужны для обвязки микросхемы памяти, они все уже в одном месте. Кстати не обязательно выделять отдельный лист под каждую мелкую микросхему, все таки EEPROM это не отдельный модуль, а скорее часть обвязки микроконтроллера. МК с обвязкой — вот это уже модуль достойный отдельного листа.
Идем дальше… У нас есть повторяющиеся части схемы, например, 2 абсолютно одинаковых канала для обратной связи на операционном усилителе (ОУ), еще 6 абсолютно одинаковых силовых каналов. Это можно оптимизировать тоже.
Еще одна светлая мысль — если все 6 каналов buck одинаковые, то и трассировка у них наверняка будет одинаковая. Этим надо воспользоваться. Может можно развести дороги для одного модуля, а потом оставшимся 5-ти сказать «а ну повтори»? Оказывается можно, AD позволяет нам очень сильно облегчить себе жизнь.
Давайте делать красиво!
С чего начинается любое электронное устройство? С идеи разумеется. Как эту идею превратить во что-то материальное? Например, можно нарисовать блок-схему, где будет отображаться макро-функционал. Сильно мудрить не надо, достаточно картинки на доске или листке бумаги:
На листке уместился весь функционал нашего устройства. Во-первых, данная схема дает нам понять как устройство в принципе работает: есть силовая часть (Buck) 6-ти канальная, которой управляет МК (MCU), который для управления получается 2 сигнала обратной связи через ОУ (Amp.), а так же имеется парочка dc/dc для самопитания и интерфейс Modbus для связи с миром. Во-вторых, по схеме сразу видно готовые функциональные блоки.
Теперь нам необходимо создать в AD 5 листов А3 и в каждый перенести соответствующую часть схемы, но перед этим необходимо рассмотреть типы соединений и цепей, которые мы будем использовать в AD:
- Power port
Данный тип является глобальным по всему проекту. То есть если мы поставили такой порт на одном листе и на другом, то они объединятся в единую цепь с именем «VCC3V3». Соответственно дополнительно цепи питания на разных листах соединять не надо. Данным типом порта задают только цепи питания и землю (GND); - Net Lable
Инструмент для присвоения имени конкретной цепи на схеме. Цепи с одинаковым именем (NetLabel) объединяются как внутри одного листа, так и за его пределами. Мы будем использовать данный инструмент кошерно, то есть только для задания имен и соединения внутри одного листа; - Place Port
Инструмент для межмодульных соединений. В противоположность NetLabel, который служит для соединения внутри модуля/листа, данный порт применяется для общения с «внешним миром». Им мы соединяем между собой модули, все цепи кроме питания и земли (GND).
Теперь нам необходимо задать с помощью Place Port сигналы, которые будут выходить за пределы модуля. Например, для модуля с операционным усилителем это будет выглядеть так:
Теперь наш модуль превратился во вполне логичную часть схемы: у него есть вход (INPUT), есть выход (ADC-OUT) и есть 2 глобальных подключения (Power Port) — GND и VCC3V3. Ничего лишнего. Проделаем тоже самое для других модулей и сделаем автоматическое присвоение номеров условным обозначениям (designator), перейдя в Tools -> Annotations -> Annotate Schematics и нажав Update Changes List:
Далее жмем Accept Changes и в открывшемся окне жмем Execute Changes:
Закрываем лишние окна и видим, что нашим обозначения (D?, R?, C? и т.п.) получили уникальные номера. После проделанных действий мы получаем вот такой проект — PDF.
Ну как? Думаю никто не станет спорить — все аккуратно, понятно как работает с первого взгляда, нет помойки на схеме. Теперь осталось за малым — нам надо как-то из одного листа создать 6 каналов и вообще соединить все в кучу.
Для этого создадим новый лист, у меня он будет называться просто Main design, но имя может быть любое. В данном листе у нас будет располагаться блок схема, которую я ранее рисовал от руки. Для создания модуля идем Place -> Sheet Symbol. Теперь зададим нашему элементу стилистику всего проекта, то есть шрифт (у меня ISOCPEUR), ширину и цвет рамки, обозначение (designator) и прочее, а так же пропишем имя листа с нашим модулем:
Теперь правой кнопкой мыши нажимает на наш модуль (оранжевый квадрат) и идем Sheet Symbol Actions -> Synchronize Sheet Entries and Port и откроется окно:
В нем мы видим список наших Place Port. Выбираем все и жмем Add Sheet Entries, устанавливаем в наш модуль и задаем общий тип шрифта, получаем такой модуль:
Теперь повторяем тоже самое для остальных 4-х модулей и на выходе получаем вот такую структуру:
Тут стоит обратить внимание на 2 момента:
- 5-й лист (Page 5) с dc/dc при попытки синхронизации не обнаружит Place Port и если посмотрите на схему модуля, то их там действительно нет, только Power Port. НО! Вынести модуль для Page 5 нужно обязательно, иначе компоненты с данного листа просто не появятся на плате;
- Обратите внимание, что у инструмента Place Port есть параметр направленности: input, output и bidirectional. Вам стоит правильно определять тип порта для вашего сигнала, например, порты PWM-H являются исходящими (output) для модуля MCU и входящими (input) для модуля Buck.
Клонируем
Теперь когда мы создали все модули необходимо увеличить их количество для того, чтобы получить 6 каналов для силовой части и 2 канала для операционных усилителей. Как говорится выхода всегда два, даже если тебя съели и данный случай не исключение. Я покажу оба способа:
- Копирование в рукопашную
Тут все просто — обычный копипаст. Выделяем наш модуль, Ctrl+C и Ctrl+V — получаем новый модуль. Остается просто сменить ему номер обозначения (designator) с M3 на M6. Дальше все соединяем и получаем промежуточный вариант схемы:
Я скопировал модуль ОУ, добавил пару разъем и шины GND и VCCIN, они теперь глобальные и подключаются сразу во всех модулях где встречаются. Тащить им отдельно Place Port в данном случае смысла нет. Так же я соединил все внешние цепи кроме модуля Buck, на нем продемонстрирую 2-й, более компактный, способ.
Копирование по-джедайски
В противоположность предыдущему варианту тут все сложно для понимая, но проще в реализации и главное более грамотно. Создание нескольких каналов будет осуществляться с помощью директивы REPEAT. Для этого вместо обозначения (designator) M1 пишем команду REPEAT(BUCK, 1, 6). Данная команда создаст каналы с обозначениями (designator) от BUCK1 до BUCK6, то есть наши 6 штук. Жмем Enter и видим как AD создал необходимое число каналов:
Теперь необходимо соединить цепи. Начну с простого — наши выходы OUT-5V у всех каналов должны объединяться, т.к. все наши фазы работают как один преобразователь на общий выход. Для этого мы просто из Place Port выводит обычную цепь и подключаем ее на выходной разъем:
Теперь необходимо сказать AD, что наши порты PWM-H это не один порт/цепь, а 6 раздельных каналов. Для это кликаем по Place Port с именем PWM-H и в графу с именем пишем REPEAT(PWM-H), это создаст 6 разных цепей:
Теперь необходимо вывести обычную цепь (Ctrl+W) из Place Port с именем REPEAT(PWM-H) и дать этой цепи имя PWM-H с помощью инструмента NetLabel. Затем из цепи необходимо вывести шину (Bus) и дать ей имя PWM-H[1..6]. Таким образом из одного порта мы вывели 6 разных цепей у которых будут имена PWM-H1, PWM-H2 и так далее:
Далее шину PWM-H[1..6] мы подключаем к выходу шины на модуле MCU для верхних транзисторов полумоста. Аналогичные процедуры так же необходимо провести для нижний транзисторов и так же прокинуть шину, в итоге мы будем иметь схему следующего вида:
Теперь познав дзен давайте переделаем «по-джедайски» модуль с операционным усилителем, чтобы не оставлять костыль в виде копипасты. В результате получим финальную версию принципиальной схемы:
На этому мы с принципиальной схемой закончим, финальный результат вот — PDF. Как видите схема вышла простейшая, всего пару полу-пустых листов А3, разобраться в ней сможет любой радиолюбитель с минимальными затратами времени и нервов.
Экономим десятки человеко-часов на трассировке
В современных реалиях, когда степень интеграции компонентов (микросхем) достаточно высокая, разработка принципиальной схемы занимает все меньше и меньше времени. Уже не так часто встретишь на 90% аналоговых монстров и это хорошо. «Слабым местом» в процессе разработки устройства остается проектирование печатной платы (PCB). Современные САПР предоставляют множество различных инструментов для сокращения трудозатрат на разработку платы и именно это было основной целью данной статьи.
Как я ранее указывал, в нашем устройстве есть несколько повторяющихся модулей: buck и ОУ. Если вы посмотрите на современные устройства, то во многих будет множество таких повторений, например, 4-х канальный осциллограф у которого все каналы идентичны. Мы можем конечно трассировать каждый канал руками, а можем и упростить себе жизнь.
Все, что ранее было описано в статье называется просто — многоканальная схема, звучит просто и со вкусом. Именно такую принципиальную схему мы создали и теперь она нам позволит сделать следующее — развести цепи для одного канала buck, а затем просто скопировать в оставшиеся 5 и расположение компонентов (компоновку) и все проводники. Для начала переносим все наши компоненты с принципиальной схемы в файл с печатной платой, жмем Design -> Update PCB Document:
Теперь жмем Execute Changes и в результате получаем вот такую печатную плату:
Как видите на плате появилось 6 красных зон, которые называются комнатами (Room). В каждой комнате находятся электронные компоненты для одного канала и ничего более. Теперь необходимо задать габариты комнаты, то есть указать какую конкретную площадь будут занимать компоненты нашего канала и сделать компоновку деталей. Выглядит это следующим образом:
Так будут распологаться компоненты каждого канала и именно такую площадь занимать. Правда что-то мне тут не нравится… Ага! Обозначения компонентов в слое шелкографии (белый надписи) имеют не сквозную нумерацию, а нумерацию в формате «Обозначение_Название комнаты», то есть у нас есть резисторы R6_BUCK1, R6_BUCK2 и так далее. Я хочу чтобы не было приставки «_BUCK1» и у каждого компонента был свой номер. Нажимаем Ctrl+L и затем идем в меню Annotate Options, где видим такое меню:
Теперь необходимо выбрать вариант нумерации $ComponentPrefix$GlobalIndex и нажать ОК. Нажимает Reset All чтобы все значения скинуть и затем нажимаем Anotate Designated. Как видим в канале BUCK2 компоненты сменили свои обозначения с R6_BUCK2 на более привычные нам обозначения R6, R7 и т.д.:
Осталось согласиться с изменениями, нажав Accept Changes и в открывшемся окне подтвердить все кликом по Execute Changes. Переносим изменения из схемы на печатную плату Design -> Update PCB Documet как мы уже делали. В результате наблюдаем «человеческие» обозначения, которые не занимают всю плату и гадят в ней:
Имея адекватную компоновку и обозначения переходим к трассировке — выполним трассировку цепей внутри одной комнаты «BUCK6» и получим вот такую картину:
Я не стал разводить все, GND оставил не тронутой, т.к. это обычно единым полигоном заливается. Для демонстрации достаточно. Теперь делаем следующее:
- Идем Design -> Rooms -> Cope Room Format
- Altium нам внизу подсказывает Choose source room, то есть предлагает тыкнуть в комнату с которой нужно все скопировать, в моем случае в BUCK6
- Теперь altium подсказывает ChooseDestination Room, то есть просит ткнуть в комнату в которую нужно скопировать нашу разводку. Выбираем любую из BUCK-ов.
- Откроется меню в котором можно поставить галочку Apply To Specified Channel, которая говорит, что надо скопировать не просто в выбранную комнату, а во все аналогичные.
- Жмем ОК и радуемся!
Я не поставил галку и выбрал кликами 2 канала, т.к. бывают ситуации, когда, например, не все каналы идентичны. Вспомни VRM на материнке у CPU, там часто 3-4 фазы с одной стороны, а еще 3-4 с другой. Применительно к моему случаю это могут быть 3 фазы с одной разводкой и еще 3 фазы с другой. Думаю обща идеология понятна. Теперь давайте посмотрим на результат:
Наблюдаем 3 идентичных канала и самое главное — времени я потратил на все каналы как на 1. В данном абстрактном случае экономия времени в 6 раз, но и в реальных задачах порядок уменьшения трудозатрат примерно такой же. Да и не маловажный фактор — если делать 6 каналов руками, то «глаз замыливается» из-за однотипной работы и велика вероятность допустить ошибку или сделать компоновку кривую.
Источник