* Политика новости » Банки »

* *

Фрезерування друкованих плат в домашніх умовах

  1. Отримання gcode з gerber-файлів
  2. Облік кривизни текстоліту
  3. Вибір параметрів фрезерування
  4. Результати і висновок

Я не люблю труїти друковані плати

Я не люблю труїти друковані плати. Ну не подобається мені сам процес метушні з хлорним залізом. Там надрукуй, тут проутюжить, тут фоторезист проекспоніруй - ціла історія кожного разу. А потім ще думай, куди б злити хлорне залізо. Я не сперечаюся, це доступний і простий метод, але особисто я його намагаюся уникати. А тут сталося у мене щастя: добудував я фрезер з ЧПУ. Тут же з'явилася думка: а чи не спробувати фрезерувати друковані плати. Сказано зроблено. Малюю простенький перехідник c завалявся esp-wroom-02 і починаю свій екскурс у фрезерування друкованих плат. Доріжки спеціально зробив дрібними - 0,5 мм. Бо якщо такі не вийдуть - то і ну нафіг цю технологію.


Тут потрібно маленький відступ. Є кілька шляхів, як з cad'а отримати набір gcode'ов для фрезерування друкованої плати. На мій погляд, вони розходяться в залежності від того, який САПР ви користуєтеся. Якщо ви любитель Eagle - то під нього існують спеціалізовані і добре інтегровані рішення: PCB-GCode , Можливість безпосередньо відкривати BRD-файли в chilipeppr. На жаль, не так давно Autodesk змінила політику ліцензування орла, і тепер він уже не так сильно подобається спільноті (можна подивитися думка одного видного представника спільноти ).


Так як особисто я роблю друковані плати раз в п'ять років по великих святах - мені для проектування цілком вистачає KiCAD. Для нього спеціалізованих зручних рішень я не знайшов, але є більш універсальний шлях - з використанням gerber-файлів. У цьому випадку все відносно просто: беремо pcb, експортуємо потрібний шар в gerber (ніяких зеркалирования та іншої магії!), Запускаємо pcb2gcode - і отримуємо готовий nc-файл, який можна віддати Фрезера. Як завжди, реальність - зла зараза і все виявляється дещо складніше.


Отримання gcode з gerber-файлів


Отже, як отримати gerber-файл, я особливо описувати не планую, я думаю, це все вміють. Далі потрібно запустити pcb2gcode. Виявляється, він вимагає приблизно мільйон параметрів командного рядка, щоб видати щось прийнятне. В принципі, документація у нього непогана, я її подужав і зрозумів, як отримати якийсь gcode навіть так, але все ж хотілося казуальности. Тому було знайдено pcb2gcode GUI . Це, як підказує назва, GUI для настройки основних параметрів pcb2gcode галочками, та ще й з попереднім переглядом.



Власне, на цьому етапі отримано якийсь гкод і можна пробувати фрезерувати. Але поки я тикав в галочки, з'ясувалося, що дефолтний значення заглиблення, яке пропонує цей софт, - 0,05 мм. Відповідно, плата повинна бути встановлена ​​у Фрезер як мінімум з точністю вище цієї. Я не знаю, у кого як, але у мене робочий стіл у фрезера помітно більш кривої. Найпростіше рішення, що прийшло в голову, - поставити на стіл жертовну фанерку, відфрезерувати в ній кишеню під розміри плат - і вона виявиться ідеально в площині фрезера.


Для тих, хто вже добре володіє фрезером, ця частина нецікава. Після пари експериментів я з'ясував, що фрезерувати кишеню обов'язково потрібно в одному напрямку (наприклад, подачею на зуб) і з захлестом хоча б відсотків на тридцять. Fusion 360 мені запропонував спочатку занадто маленький захлест і їздив туди-сюди. У моєму випадку результат вийшов незадовільний.


Облік кривизни текстоліту


Вирівнявши майданчик, я поклейка на неї двостороннього скотча, поклав текстоліт і запустив фрезерування. Ось результат:



Як видно, з одного краю плати фреза практично не зачіпає мідь, з іншого - занадто заглибилася в плату, при фрезеруванні пішли крихти текстоліту. Подивившись уважно на саму плату, я помітив, що вона спочатку нерівна: злегка вигнута, і, як ти з нею ні мучся, якісь відхилення по висоті будуть. Потім, до речі, я подивився і з'ясував, що для друкованих плат товщиною понад 0,8 мм допуск ± 8% вважається нормальним.


Перший варіант боротьби, що приходить в голову, - автокалібровка. За логікою речей - нічого складного, плата обміднений, фреза сталева, приробив один проводок до міді, інший до фрези - ось тобі готовий щуп. Бери і будівельних поверхню.


Мій верстат управляється grbl'ом на дешевому китайському Шілд. У grbl є підтримка щупа на піне A5, але ось спеціального роз'єму на моїй платі чомусь не виведено. Уважно розглянувши її, я все ж виявив, що пін A5 виведений на роз'єм SPI порту (підписаний як SCL), земля там теж поруч є. З цим «датчиком» одна хитрість - дроти потрібно переплести між собою. У Фрезер вкрай до фіга наведень, і без цього датчик буде постійно давати помилкові спрацьовування. Навіть після переплетення продовжить, але сильно-сильно рідше.



Отже, датчик зібраний, тестером перевірений, далі важливе питання - як перевірити в grbl, що все в порядку і я не зламаю єдиний гравер. Трохи гугленія показало, що йому потрібно відправити команду G38.2 Z-10 F5.


Команда каже: починай спускатися вниз аж до -10 по Z (абсолютна це або відносна висота - залежить від режиму, в якому зараз прошивка). Спускатися буде дуже повільно - зі швидкістю 5 мм / хв. Це викликано тим, що самі розробники не гарантують, що спуск зупиниться рівно в момент спрацьовування датчика, а не трохи пізніше. Тому краще спускатися повільно, щоб все зупинилося вчасно і не встигло піти в плату по саме не балуйся. Найкраще перший тест проводити, піднявши голову на висоту сильно більше 10 мм і скинувши систему координат. У такому випадку, навіть якщо все не спрацює і ви не встигнете дотягнутися до кнопки E-Stop'а, фреза НЕ буде запороти. Можна провести два тести: перший - нічого не робити (і після досягнення -10 grbl видасть «Alarm: Probe Fail»), другий - поки воно їде вниз, чим-небудь замкнути ланцюг і переконатися, що все зупинилося.


Далі треба знайти метод, як, власне, проміряти матрицю і спотворити gcode як потрібно. На перший погляд, у pcb2gcode'а є якась підтримка autoleveling'а, але підтримки саме grbl'а немає. Там є можливість задати команди запуску проби руками, але з цим треба розбиратися, а мені, чесно кажучи, було лінь. Допитливий розум міг би зауважити, що у LinuxCNC команда запуску проби збігається з командою grbl. Але далі йде непоправне відмінність: все «дорослі» інтерпретатори gcode'а зберігають результат виконаної проби в машинну змінну, а grbl просто виводить в порт значення.


Легке гугленіе підказало, що є ще досить багато різних варіантів, але мені на очі потрапив проект chillpeppr :


Це система з двох компонентів, призначена для гри з залізом з вебні. Перший компонент - Serial JSON Server, написаний на go, запускається на машині, підключеної безпосередньо до залізницею, і вміє віддавати управління послідовним портом по вебсокетам. Другий - працює у вас в браузері. У них є цілий фреймворк для побудови віджетів з якимось функціоналом, які потім можна засовувати на сторінку. Зокрема, у них вже є готовий workspace (набір віджетів) для grbl і tinyg.


І у chillpeppr'а є підтримка autoleveling'а. Та ще й на вигляд він сильно зручніше UniversalGcodeSender'а, яким я користувався до цього. Ставлю сервер, запускаю браузерную частина, витрачаю півгодини на те, щоб розібратися з інтерфейсом, завантажую туди gcode своєї плати та бачу якусь фігню:



Подивившись в сам gcode, який генерує pcb2gcode, бачу, що він використовує нотацію, коли на наступних рядках не повторюється команда (G1), а даються тільки нові координати:


G00 X1.84843 Y34.97110 (rapid move to begin.) F100.00000 G01 Z-0.12000 G04 P0 (dwell for no time - G64 should not smooth over this point) F200.00000 X1.84843 Y34.97110 X2.64622 Y34.17332 X2.69481 Y34.11185 X2.73962 Y34.00364 X2.74876 Y31.85178 X3.01828 Y31.84988 X3.06946 Y31.82249 X3.09684 Y31.77131

Судячи з того, що chilipeppr показує тільки вертикальні руху, він бачить рядок G01 Z-0.12 тут, але не розуміє все, що йде після F200. Потрібно переробляти на explict нотацію. Звичайно, можна руками попрацювати або напіліть який-небудь post-processing скрипт. Але ніхто ще не скасував G-Code Ripper , Який серед іншого вміє бити складні команди gcode'а (типу тих же дуг) на більш прості. Він же, до речі, теж вміє по матриці autoprobe'а викривляти gcode, але вбудованої підтримки grbl'а знову немає. Зате можна зробити той самий split. Мені цілком підійшли стандартні настройки (хіба що в конфіги довелося заздалегідь поміняти одиниці виміру на mm). Результуючий файл почав нормально відображатися в chilipeppr:



Далі запускаємо autoprobe, не забувши вказати відстань, з якого опускати пробу, і її глибину. У моєму випадку я вказував, що треба опускати з 1 до 2 мм. Нижня межа не так важлива, її можна поставити хоч -10, але я б не радив: пару раз невдало виставив початкову точку, з який треба запускати пробу, і крайні точки виявлялися за межами плати. Якщо заглиблення більше - можна і гравер зламати. А так просто помилка. Від рівня верхньої межі безпосередньо залежить те, як довго він буде проміряти поверхню. У моєму випадку реально плата майже ніколи не йшла за межі 0,25 мм вгору або вниз, але 1 мм якось надійніше. Тиснемо заповітну run і біжимо до Фрезера медитувати:



А в інтерфейсі chilipeppr з'являється потихеньку виміряних поверхню:



Тут треба звернути увагу, що всі значення по Z помножені на 50, щоб краще візуалізувати вийшла поверхню. Це настроюється параметр, але 10 і 50 добре працюють, на мій погляд. Я досить часто стикаюся з тим, що якась одна точка виявляється сильно вище, ніж можна від неї очікувати. Особисто я пов'язую це з тим, що датчик ловить-таки наведення і дає помилкове спрацьовування. Благо chilipeppr дозволяє вивантажити карту висот у вигляді json'кі, її можна руками після цього поправити, а потім руками ж завантажити. Далі тиснемо кнопку «Send Auto-Leveled GCode to Workspace» - і в перці вже завантажений поправлений гкод:


N40 G1 X 2.6948 Y 34.1118 Z0.1047 (al new z) N41 G1 X 2.7396 Y 34.0036 Z0.1057 (al new z) N42 G1 X 2.7488 Y 31.8518 Z0.1077 (al new z) N43 G1 X 3.0183 Y 31.8499 Z0. +1127 (al new z) N44 G1 X 3.0695 Y 31.8225 Z0.1137 (al new z) N45 G1 X 3.0968 Y 31.7713 Z0.1142 (al new z)

У код додані переміщення по Z, які повинні компенсувати нерівність поверхні.


Вибір параметрів фрезерування


Запускаю фрезерування, отримую ось такий результат:



Тут видно відразу три моменти:


  1. Проблема з нерівністю поверхні пішла: прорізано (точніше, подряпано) все практично на одну глибину, ніде немає пропусків, ніде не заглибити занадто сильно.
  2. Заглиблення недостатнє: 0,05 мм явно не вистачає для цієї фольги. Плати, до речі, якийсь невідомий звір з AliExpress, товщину міді там не вказали. Шар міді буває різний, найбільш поширені - від 18 до 140 мкм (0,018-0,14 мм).
  3. Явно видно биття гравера.

Про заглиблення. Підібрати те, наскільки глибоко треба опускати гравер, нескладно. Але є специфіка. Конічний гравер має в проекції форму трикутника. З одного боку, кут відомості до робочої точці визначає, наскільки інструмент важко зламати і як довго він проживе, а з іншого - чим більше кут, тим ширше буде рез при заданому заглибленні.



Формула розрахунку ширини різу при заданому заглибленні виглядає так (нескромно взята з reprap.org і виправлена):


2 * penetration depth * tangens (tool tip angle) + tip width

Вважаємо за нею: для гравера з кутом 10 градусів і точкою контакту 0,1 мм при заглибленні 0,1 мм ми отримуємо ширину різу майже 0,15 мм. Виходячи з цього, до речі, можна прикинути, яку мінімальну відстань між доріжками зробить обраний гравер на фользі обраної товщини. Ну і ще, навіть якщо вам не треба дуже маленьких відстаней між доріжками, занадто глибоко фрезу опускати все одно не варто, так як стеклотекстолит дуже сильно тупить фрези навіть з твердих сплавів.


Ну і тут є ще смішний момент. Припустимо, у нас є дві доріжки, віддалені один від одного на 0,5 мм. Коли ми проженемо pcb2gcode, він подивиться на значення параметра Toolpath offset (наскільки відступати від доріжки при фрезеруванні) і фактично зробить між доріжками два проходи, віддалені один від одного на (0,5 - 2 * toolpath_offset) мм, між ними залишиться (а швидше за за все, зірветься) якийсь шматочок міді, і буде це некрасиво. Якщо ж зробити toolpath_offset більшим, ніж відстань між доріжками, то pcb2gcode видасть warning, але згенерує тільки одну лінію між доріжками. У загальному випадку для моїх застосувань це поведінка більш переважно, так як доріжки виходять ширше, фреза ріже менше - краса. Правда, може виникнути проблема з smd-компонентами, але малоймовірно.


Є виражений випадок такої поведінки: якщо задати дуже великий toolpath_offset, то ми отримаємо друковану плату на увазі діаграми Вороного. Як мінімум - це красиво;) На ефект можна подивитися на першому скріншоті з pcb2gcode, що я давав. Там показано, як вона буде виглядати.


Тепер про биття гравера. Це я їх даремно так називаю. Шпиндель у мене непоганий зразок і так сильно, звичайно, не б'є. Тут швидше кінчик гравера при переміщенні згинається і стрибає між точками, даючи ось ту дивну картину з крапочками. Перша і основна думка - фреза не встигає прорізати і тому перестрибує. Легке гугленіе показало, що народ фрезерує друковані плати шпинделем на 50к оборотів зі швидкістю приблизно в 1000 мм / хв. У мене шпиндель дає 10к без навантаження, і можна припустити, що різати треба зі швидкістю 200 мм / хв.


Результати і висновок


Врахувавши все це, проміряти новий шматок текстоліту, запускаю фрезерування і отримую ось такий результат:



Верхня рівно так, як вийшла з фрезера, нижня - після того як провів по ній звичайним точильним каменем пару раз. Як видно, в трьох місцях доріжки не прорізалися. В цілому по всій платі ширина доріжок плаває. З цим ще треба розбиратися, але у мене є припущення, в чому причина. Спочатку я кріпив плату на двосторонній скотч, і вона досить часто відходила. Потім в парі місць прихопив ще краями головок саморізів. Начебто триматися стала краще, але все одно трохи грає. Підозрюю, що в момент фрезерування вона притискається до майданчика і через це, власне, не прорізається.



Загалом, перспективи у цього всього є. Коли процес відпрацьований, побудова матриці висот займає хвилин п'ять-сім, потім безпосередньо фрезерування - пару хвилин. Начебто можна експериментувати далі. Зате можна потім сверловку робити на тому ж верстаті. Ще прикупити заклепок, і буде щастя! Якщо тема цікава, то можу написати ще одну статтю про сверловку, двосторонні плати тощо.

Реклама

Популярные новости

Реклама

Календарь новостей