Статьи

Нотатки про всякому різному


Робоча область - приблизно 40x40 мм. На столику натягнута резіночка для фіксації предмета, на якому будемо палити.



Привід осі переміщення лазера тепер стоїть вертикально (в плоттере було горизонтально), для цього накреслив в FreeCAD і роздрукував на 3D принтері дві стійки, кріплення для лазера і столик.
Лазер з драйвером замовив з Ebay, потужність - 200 mW. Також вирішив замовити готові драйвери для двигунів, взяв добре зарекомендували себе драйвери Pololu, на ebay вони мені обійшлися в 400р, а в якості головної плати взяв копію Arduino за 200р. Все відносно недорого, крім лазера :) В принципі, можна було знайти лазер від DVD-RW, тільки довелося б подзапаріться з конструкцією утримувача, щоб розмістити лінзу, забезпечити тепловідвід, ну і над схемою драйвера подумати. Я вирішив не паритися, і взяв готове.
Також необхідно прикріпити концевики на кожну вісь, щоб можна було визначити т.зв. home, нульову позицію. Фломастерний плоттер був розібраний, з нього витяг все потрохи: гвинти, гайки, концевики, навіть дощечку, на якій все стояло :)
Тепер докладніше про електронну частину і прошивку. Я зробив перехідну плату, яка розміщує на собі панельки для драйверів, роз'єми, і вона насаджується на Arduino зверху.

Для Arduino написана відмінна прошивка під назвою GRBL ( https://github.com/grbl/grbl ). Вона розроблена як раз для будь-яких CNC-пристроїв, приймає на вхід g-комманди і управляє двигунами і іншими виконавчими механізмами. Прошивається через середовище розробки Arduino, але я це зробив через avrdude.
avrdude -pm328p -carduino -P / dev / ttyUSB0 -D -Uflash: w: firmware.hex
Кількість кроків для двигунів в прошивці виставив 53.33, знайшов десь на просторах інтернету, перевірив, виявилося вірним. Мікрошаг виставив на pololu 1/8, вистачає.
Ще один момент, який змусив мене подзапаріться при homing'e. У прошивці в файлі config.h виявляється потрібно було внести наступні зміни:
  1. закомментировать рядок HOMING_CYCLE_0 (1 <
  2. виправити наступну сходинку на #define HOMING_CYCLE_0 ((1 <1 <
  3. N_HOMING_LOCATE_CYCLE виставити в 1.
  4. розкоментувати #define HOMING_FORCE_SET_ORIGIN

Сенс в наступному. У нас станочек 2х осьової. За замовчуванням при виставленні нульовій точці прошивка спочатку шукає кінцевик осі Z, а вже потім X і Y. Якщо вісь Z не знайдена, то зупинка всієї процедури. У нас немає концевика Z, тому і шукати нічого. На цьому моменті я багато часу вбив, не розуміючи, чому не робиться homing. Ну а N_HOMING_LOCATE_CYCLE означає, скільки циклів homing'а робити. За замовчуванням 2 (Z і XY), ми зробимо 1.
Розкоментувати HOMING_FORCE_SET_ORIGIN ми завжди виставляємо позицію в нуль після homing'а. За замовчуванням це не так (і я чесно кажучи не розумію, чому немає).
Так доречі. Довелося виставити параметр "homing dir invert mask" в 0b00000011. Справа в тому, що за замовчуванням GRBL при пошуку нуля обертає двигуни в позитивному напрямку, але у нас все навпаки, потрібно обертати в негативному напрямку, тому що система координат у нас позитивна, а за замовчуванням, GRBL вважає, що вона негативна. Так прийнято в професійних CNC-машинах. Поясніть, до речі, якщо знаєте, чому це так, буде цікаво дізнатися.
Тепер про те, як друкувати. Я використовую програму під Windows, ганяю в виртуалке, називається Grbl Controller. Існують плагіни для Inkscape, що дозволяють генерувати g-code. За замовчуванням разом з Inkscape йде плагін gcodetools, що дозволяє перетворити контур в g-code. Скачав ще додатково J Tech Photonics Laser Tool, в ньому можна зручно налаштувати потужність лазера. Якщо виставити потужність лазера в плагіні 100%, то він буде відправляти комманду M3 S255, де 255 означає шпаруватість в PWM. У мене в прошивці максимальний рівень був 1000, тобто якщо ми хочемо повну потужність, то нам потрібно відправити команду M3 S1000. Довелося трохи підправити плагін. Ще можна просто підправити прошивку, щоб за повну потужність було прийнято 255, тоді не доведеться нічого правити в плагіні. На виході отримуємо g-code, який лазером випалює контури без заповнення.
Для суцільного заповнення лазером я використовую плагін для Inkscape Raster 2 Laser GCode Generator. Він видає G-code, виконуючи який гравер через підрядник випалює точки.

Ну і трохи відео:


Новости