Как сделать печатную плату на фрезерном ЧПУ станке

Создание платы и экспорт

Это сложный процесс, но он ХОРОШО документирован и есть сотни примеров и туториалов, поэтому останавливаться подробно не будем. Главное - по результату нас интересуют ТОЛЬКО полученные файлы .grb (Gerber) и .drl (Excellon). Конкретно я предпочитаю это делать в KiCAD. Для моей автоматизированной системы из KiCAD необходимо экспортировать ("Plot") 3 файла (см левую часть схемы):

  1. Excellon: File→Plot→Generate Drill file→Generate drill file→Drill file. Опции: "millimeters, decimal format, merge PTH and NPTH" и переименовать его из name.drl в drill
  2. Gerber слоя F.cu: File→Plot→Plot. Опции: Gerber, F.Cu, Exclude PCB edge..., 4.6 и переименовать из name-F.Cu.gbr в top
  3. Gerber слоя Edge.Cuts: File→Plot→Plot. Опции: Gerber, Edge.Cuts, 4.6 и переименовать из name-Edge.Cuts.gbr в outlines

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

Настройка программной среды

Вся цепочка построена вокруг двух программ: N1 и N2 из списка "Связанный софт" внизу страницы и специально созданного "pcbmiller":

  1. pcbmiller.pl - сердце автоматизации, реализует в ОДИН дабл-клик мышки ВСЮ схему из начала страницы.
  2. Скачать модифицированный Flatcam 8.5d - теперь сверлит ПП на 50% быстрее
  3. Скачать модифицированный G-code ripper v1.13d - выгружает шаблон файла для измерения глубин для станков без автоматического измерителя глубин или отсутствия поддержки измерителя в G-коде (пример: станки фирмы Roland, MDX-40a и все прочие)).

Настройка очень проста: поставить Perl, Python 2, скачать все 3 файла из предыдущего раздела и разархивировать их в одну и ту же папку (когда освоитесь, сможете сделать как вам удобней).

Запускаем пробно flatcam:
python flatcam/FlatCAM.py
Если внизу консоль flatcam не видна, она раскрывается из меню Tool→Command Line. Так же заходим в меню Options и выбираем "mm", т.е. метрическую систему, далее File→Save defaults и выходим.

На данном этапе предполагается минимальное знание командной строки или умение создавать .cmd/.sh файлы. В будущем возможно появится GUI.

Непосредственная работа

  1. Качаем пример и распаковываем его ту же папку. Открываем файл pcbmiller.pl и редактируем под наши нужды. Для начала необходимо отредактировать только последнюю переменную - путь.

    my $mill_speed=120;        # Скорость фрезерования контура и отверстий 
    my $mill_depth=0.23;       # Съём за один проход (т.е. глубина врезания)
    my $mill=1.0;              # Диаметр фрезы. Очень желательно чтобы он был равен диаметру сверла!
    
    my $engrave_speed=110;     # Скорость гравировки гравёром (лучше всего 0.1мм/10..15°)
    my $engrave_depth=0.21;    # Глубина врезания чтобы уверенно пройти медь
    my $engrave = 0.19;        # Условный диаметр конического гравёра на поверхности при врезке не $engrave_depth
    
    my $drill_speed=90;        # Скорость опускания фрезы при сверлении
    my $drill =0.9;            # Диаметр сверла. Лучше фрезу иметь такую же - иначе выпадут отверстия от $drill до $mill
    my $drill_depth=1.6;       # Глубина сверловки. По идее на 0.1+$drill толще чем PCB
    my $drill_file = "drill";  # Входной файл сверловки
    
    my $spindle=15000;         # Скорость шпинделя. Везде одинаковая, если надо разную - правьте ниже в исходнике 
    my $pcb_thickness=1.55;    # Условная толщина ПП
    my $travel_z=0.4;          # Безопасная высота перемещений по Z
    my $p="/home/dormouse/pcbmiller/";  # Путь где лежат наши файлы drill, top, outlines
    
  2. Переходим в консоль из запускаем pcbmiller:
    perl pcbmiller.pl
    Должны увидеть что-то разумное, а не ошибки. В результате работы появится файл flatcam.tcl - это задание для программы flatcam.

  3. Запускаем flatcam с этим заданием:
    python flatcam/FlatCAM.py --shellfile=/home/dormouse/pcbmiller/flatcam.tcl
    Должно раскрыться окно Flatcam и начать волшебным образом "само" всё делаться. В консоли внизу не должно быть красным шрифтом указано про ошибки.

    Проверяем, что нет недофрезерованных участков. Если есть - фрезеруем не так глубоко и меняем параметр $engrave, либо редактируем исходный Gerber файл top

  4. Устанавливаем нашу заготовку на заранее выровненную поверхность внутри станка на тонкий двусторонний скотч. Типичная точность не хуже 0.25мм при правильных руках и плохой заготовке.
  5. Запускаем программу G-code ripper:
    python g-code_ripper-013d.py
    Открываем в ней наш файл B_engrave.nc и жмём тип работы "Auto Probe" в нижнем левом углу, настраиваем количество измерений по X и Y (при плохой плате каждые 2.5 см. При хорошей каждые 5см. Теперь нам предстоит выбор:

    Полученный файл с измерениями в формате .txt, состоящий из строк по 3 числа в каждой (X Y Z) мы подгружаем кнопкой Read Probe Data.
    *Note: Для параноидально режима настраиваем Settings: Units mm, Arc angle 2.0, Accuracy 0.001, XY arcs to lines, Decimal places (XYZ) 3, Write all Coords, Remove Comments, жмём Save и затем Recalculate.

    Финальная стадия: выгружаем результат кнопкой Save G-code file - Adjusted в файлы с таким же именем и добавкой в имя пояснения _adjusted. Если знаки не были перепутаны, то выгруженный файл будет повторять кривизну платы согласно измерений, проверяем это при помощи NC Corrector.

  6. Вставляем сверло 0.9мм, выставляем Z0 и запускам файл сверловки A_drill_adjusted.nc
  7. Вставляем гравер 0.1мм/10..15°, выставляем Z0 и запускам файл гравировки дорожек, контура и сверловок B_engrave_adjusted.nc
    *Note: Если фреза больше, например 1.5мм и есть отверстия от 0.9мм до 1.5мм, то придётся вручную обработать входной файл drill, убрать из него все большие и меньшие инструменты (и их задания так же), подгрузить его во flatcam и сделать этой фрезой или сверлом такого же 1.5мм диаметра СВЕРЛОВКУ этих отверстий. В центре в любом случае уже есть отверстие 0.9мм от сверла, поэтому ничего не сломаем даже у безцентровой фрезы. Отфрезеровать очевидно не можем, только сверлить.
  8. Вставляем фрезу 0.9мм , выставляем Z0 и запускам последовательно файлы фрезеровки отверстий С_mill_x_adjusted.nc по мере возрастания числа "x".
  9. Запускаем файл C_mill_outlines_adjusted.nc чтобы вырезать плату.

Поздравляю! Мы достигли полного результата -

Связанный софт

  1. Flatcam - flatcam (8.5)
  2. G-code ripper - (0.13) alters Z-values to curvature of PCB
  3. NC Corrector - позволяет удобно отсмотреть наш .nc код, в том числе в режиме наложения разных файлов (File→Over)
  4. KiCAD - kicad-eda project (4.0.2-4+6225~38~ubuntu14.04.1-stable)
  5. gerbV - кросс-платформенное средство для просмотра Gerber-файлов (2.6.0), apt-get install gerbv и пример слияния слоёв в старых версиях без галочки "Merge PTH and NPTH" в drill-экспортере KiCAD
  6. yEd - yEd editor (3.16.2.1)
  7. Perl (v5.18.2) built for x86_64-linux-gnu-thread-multi
  8. Java (1.8.0_102)
  9. Python (2.7.6)

Все вопросы и предложения на voxelcam@gmail.com