![](http://www.nedopc.org/nedopc/image/nedobanner3.gif) |
nedoPC.orgElectronics hobbyists community established in 2002 |
![](http://www.nedopc.org/nedopc/image/nedobanner4.gif) |
Пишем программки на Си для играния с форматом Гербер...
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Плюс авторазводка. Идея собственно такая - имеем нетлист соединений, далее система сама раскидывает корпуса и раздвигает по мере авторазводки в соответствии с заранее установленными ограничениями (ширина дорожек, расстояние между дорожек, размер дырок и т.д.) - в результате получаем плату минимального размера при заданных условиях...
|
14 Sep 2011 09:14 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Mac Buster
Retired
Joined: 03 Aug 2003 22:37 Posts: 1474 Location: Moscow
|
Это сколько лет займёт?
_________________ Extreme Entertainment
|
15 Sep 2011 11:41 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Ну потихоньку будем двигаться - вон визуализатор уже имеется ![;)](./images/smilies/icon_wink.gif)
|
15 Sep 2011 19:15 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Mac Buster
Retired
Joined: 03 Aug 2003 22:37 Posts: 1474 Location: Moscow
|
Нет, я про время разводки спрашивал ![:)](./images/smilies/icon_smile.gif)
_________________ Extreme Entertainment
|
16 Sep 2011 07:31 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Ну не на специалистах же и спектрумах разводиться будем ![:)](./images/smilies/icon_smile.gif)
|
16 Sep 2011 07:57 |
|
![](./styles/getaway/theme/images/spacer.gif) |
fifan
Devil
Joined: 06 Oct 2006 03:17 Posts: 859 Location: г.Лянтор,Сургутского р-на,ХМАО
|
А схема есть? Могу поспособствовать в разводке.
|
16 Sep 2011 07:59 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Хочется получить сугубо автоматизированное решение (причём опенсорцное)
|
16 Sep 2011 08:37 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Плюс редактор схем для ввода (по юзер интерфейсу - копия Eagle v5) под названием скажем Vulture (то бишь птица Гриф) ![:roll:](./images/smilies/icon_rolleyes.gif) P.S. Пусть будет vultured (типа гриф-редактор) ![mrgreen :mrgreen:](./images/smilies/icon_mrgreen.gif) P.P.S. Я даже доменное имя уже прихватизировал - vultu.red ![;)](./images/smilies/icon_wink.gif)
|
27 Apr 2019 00:35 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Чего-то сломалось в gif-либе в последних линуксах - не собирается больше нифига ![:(](./images/smilies/icon_frown.gif) Придется переписать на использование PNG P.S. Либо взять публик-домейную реализацию GIF-сохранялки...
|
14 Jul 2019 20:03 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
Вот поглядим внутрь простого гербера, сгенерённого в Eagle v5 (вспоминая чего я собственно расковырял в 2010 году, сочиняя свою рисовальную программку): Полный текст файла под спойлером (формат Gerber RS-274X): dip2.top![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | Code: G75* G70* %OFA0B0*% %FSLAX24Y24*% %IPPOS*% %LPD*% %AMOC8* 5,1,8,0,0,1.08239X$1,22.5* % %ADD10C,0.0520*% %ADD11OC8,0.0600*% %ADD12C,0.0600*% %ADD13C,0.0357*% %ADD14C,0.0120*% %ADD15C,0.0500*% %ADD16R,0.0357X0.0357*% D10* X002093Y002292D02* X002613Y002292D01* X005093Y002292D02* X005613Y002292D01* D11* X001353Y001792D03* X001853Y001292D03* X005853Y001292D03* D12* X004403Y004542D02* X003803Y004542D01* X003803Y005542D02* X004403Y005542D01* D13* X005603Y005542D03* X005603Y005042D03* X005103Y003542D03* X002603Y003542D03* D14* X005103Y003542D01* X004853Y004542D02* X004103Y004542D01* X004853Y004542D02* X005353Y005042D01* X005603Y005042D01* X005603Y005542D02* X004103Y005542D01* D15* X004103Y004542D02* X001353Y004542D01* X001353Y001792D01* X001853Y001292D02* X005853Y001292D01* D16* X006103Y005042D03* X006103Y005542D03* M02*
| ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) |
Грубо этот файл можно разбить на три части: 1) заголовок - можно тупо не вдаваясь в подробности сохранить его как есть и вставлять во все герберы (к заголовку также можно отнести макрос %AMOC8, который задаёт форму восьмигранных площадок) 2) добавление "кистей" (или как их лучше назвать) %ADDnn и далее тип C - круглые, R - прямоугольные, OC8 - восьмигранные (макрос) 3) непосредственно само рисование - сначала ставится "кисть" Dnn* (где nn номер кисти), а потом строчки с координатами: XnnnnnnYnnnnnnDmm* где mm это команда плоттеру: 03 - ткнуть выбранной "кисточкой" в указанные координаты (т.е. опустить и тут же поднять, оставив отпечаток) 02 - опустить "кисть" в указанные координаты (и оставить её там) 01 - провести "кистью" до новых координат (если далее опять идёт команда 01, то продолжаем рисовать) Файл заканчивается командой M02* Продолговатые контактные площадки рисуются как прочерк круглого пера диаметром 0.06 дюйма: X004403Y004542D02* X003803Y004542D01* Вот самый простейший Гербер - четыре линии, рисующие прямоугольник, обозначающий границы платы: Как видим размер пера тут 0 целых 0 десятых (т.е. не для рисования на плате). Ещё из интересного - команды "рисования" построены так, чтобы минимизировать пустые движения - типа рисуем справа-налево, потом слева-направо и т.д. Файлы дырок (в формате "Excellon") ещё более простые: dip2.drdМежду двумя процентами находится заголовок - там некие предустановки начинающиеся с буквы M - их просто тупо копируем не вдаваясь в детали Далее задаются размеры "свёрел" - TnnCдиаметрвдюймах (все дырки у нас C - круглые) Далее само сверление: Тnn - выбираем "сверло" XnnnnYnnnn - сверлим дырку в указанных координатах Файл завершается командой M30
|
20 Jul 2019 21:13 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
Это потому что я слои soldermask рисовал как сплошные площадки, а на самом деле они чуть ширше самих площадок т.к. олицетворяют собою дырки в зелёнке, через которые будет наноситься припой на оголённую медь, например вот размер восьмигранных площадок в слоях меди (верхний и нижний соответственно): dip2.top:%ADD11OC8,0.0600*% dip2.bot:%ADD12OC8,0.0600*% а вот в soldermask-слоях (также верхний и нижний): dip2.smt:%ADD11OC8,0.0680*% dip2.smb:%ADD11OC8,0.0680*% Как видим soldermask имеет размер на 0.008 дюйма больше Надо это как-то предусмотреть при отрисовке и не заливать soldermask-слои сплошняком, как щас моя рисовальная программка делает P.S. Заодно восьмигранники можно починить P.P.S. Существует эталонный онлайн просмотрщик герберов от мантейнеров стандарта: https://gerber-viewer.ucamco.com/P.P.P.S. Википедия пишет (см. https://en.wikipedia.org/wiki/Gerber_format), что в 2016 году в стандарт герберов добавили возможность сохранять netlist информацию - это значит, что уже сейчас герберы можно использовать непосредственно в редакторах печатных плат - не только как результат для отдавания в производство, но и процессе разработки! P.P.P.P.S. Вот от авторов про Gerber X2: https://www.ucamco.com/en/gerber/demo-1
|
20 Jul 2019 21:44 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Наверное VultureD можно начать разрабатывать как просмотрщик-редактор герберов, как предполагалось изначально, а там видно будет...
|
23 Jul 2019 00:44 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Вобщем предварительно вот такой заголовок будет у моих кустарно сгенерённых герберов: ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | Code: FILE* fopenGE(char* suffix) { FILE* f; char str[256]; strncpy(str,ccc,256); strncat(str,suffix,256); str[255] = 0; f = fopen(str,"wt"); if(f!=NULL) { fprintf(f,"G75*\n"); fprintf(f,"G70*\n"); fprintf(f,"%OFA0B0*%\n"); fprintf(f,"%FSLAX24Y24*%\n"); fprintf(f,"%IPPOS*%\n"); fprintf(f,"%LPD*%\n"); fprintf(f,"%AMOC8*\n"); fprintf(f,"5,1,8,0,0,1.08239X$1,22.5*\n"); fprintf(f,"%\n"); fprintf(f,"%ADD10OC8,0.0600*%\n"); // D10* octagonal pad fprintf(f,"%ADD11C,0.0600*%\n"); // D11* oval pad fprintf(f,"%ADD12R,0.0800X0.0260*%\n"); // D12* surface mounted pad fprintf(f,"%ADD13C,0.0357*%\n"); // D13* circular via fprintf(f,"%ADD14C,0.0120*%\n"); // D14* signal trace fprintf(f,"%ADD15C,0.0500*%\n"); // D15* power trace } return f; }
| ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) |
|
20 Oct 2019 17:59 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
![Reply with quote Reply with quote](./styles/getaway/imageset/en/icon_post_quote.gif)
Вот более продвинутый вариант с особыми вариантами для outline, silkscreen и soldermask: ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | Code: FILE* fopenGE(char* suffix) { FILE* f; char str[256]; int outline = 0; int soldermask = 0; int silkscreen = 0; if(!strcmp(suffix,".GTO")) silkscreen = 1; if(!strcmp(suffix,".GKO")) outline = 1; if(suffix[3]=='S') soldermask = 1; strncpy(str,ccc,256); strncat(str,suffix,256); str[255] = 0; printf("%s\n",str); f = fopen(str,"wt"); if(f!=NULL) { fprintf(f,"G75*\n"); fprintf(f,"G70*\n"); fprintf(f,"%%OFA0B0*%%\n"); fprintf(f,"%%FSLAX24Y24*%%\n"); fprintf(f,"%%IPPOS*%%\n"); fprintf(f,"%%LPD*%%\n"); fprintf(f,"%%AMOC8*\n"); fprintf(f,"5,1,8,0,0,1.08239X$1,22.5*\n"); fprintf(f,"%%\n"); if(silkscreen) fprintf(f,"%%ADD10C,0.0063*%%\n"); /* D10* for silkscreen layer */ else if(outline) fprintf(f,"%%ADD10C,0.0000*%%\n"); /* D10* for outline layer */ else { /* for copper layers and soldermask layers: */ fprintf(f,"%%ADD10OC8,0.06%c0*%%\n",soldermask?'8':'0'); /* D10* octagonal pad */ fprintf(f,"%%ADD11C,0.06%c0*%%\n",soldermask?'8':'0'); /* D11* wide oval pad */ if(soldermask) fprintf(f,"%%ADD12R,0.0580X0.0580*%%\n"); else fprintf(f,"%%ADD12R,0.0500X0.0500*%%\n"); /* D12* square pad */ if(soldermask) fprintf(f,"%%ADD13R,0.0880X0.0340*%%\n"); else fprintf(f,"%%ADD13R,0.0800X0.0260*%%\n"); /* D13* surface mount pad */ fprintf(f,"%%ADD14C,0.0357*%%\n"); /* D14* circular via */ fprintf(f,"%%ADD15C,0.0120*%%\n"); /* D15* signal trace */ fprintf(f,"%%ADD16C,0.0500*%%\n"); /* D16* power trace */ } } return f; }
| ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) | ![](images/spacer.gif) |
|
20 Oct 2019 18:16 |
|
![](./styles/getaway/theme/images/spacer.gif) |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22600 Location: Silicon Valley
|
Программка для конвертации псевдо-ASCII Circuits.CC в Gerber/Excellon: https://gitlab.com/shaos/circuits_cc/blob/master/utils/cccp.cОсталось толстые проводники научить рисовать и валидацию вумную написать...
|
22 Oct 2019 05:15 |
|
|
Who is online |
Users browsing this forum: No registered users and 84 guests |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum
|
|