Control by grbl 111330 схема
Во время изучения в университете такого занимательного предмета, как схемотехника, мне пришло в голову сделать в рамках курсового проекта "Двух осевой плоттер на бумаге с головкой из авторучки на базе Arduino". К моменту начала работы я себе весьма смутно представляла разработку электрической части проекта, впрочем, как и механической. Подобного опыта в моей жизни еще не бывало. Именно поэтому я нашла в сети, перебрав множество ресурсов, показавшийся мне наиболее простым и понятным туториал, и решила точно следовать ему. Однако, скоро выяснилось, что все простое на первый взгляд расписано не достаточно подробно для такого "умельца" как я. Поэтому в оставшихся "за кадром" вопросах пришлось импровизировать, не всегда удачно, как оказывалось в последствии. Это была небольшая предыстория. Теперь хотелось бы поделиться своим ценным опытом по ряду ключевых вопросов. Приводить полностью новую инструкцию с моей версией этого устройства не буду, т.к. на просторах интернета итак достаточно более удачных решений.
Содержание
1. Конструкция
Конструкция, которую я выбрала, изготавливалась из фанеры. В качестве осей использовались шпильки, которые крутились шаговыми двигателями, и за счет этого платформа на гайках двигалась по оси. Одна ось крепилась на платформу другой одним краем. Из изготовления всего этого могу сказать:
- Если верхняя ось не имеет опоры с двух сторон, а крепится, как у меня, только одним краем, то необходимо заранее продумать баланс осей. Верхняя неизбежно будет крениться, если вообще не заваливать всю конструкцию весом своего "висящего" края.
- Линии рисунка могут идти волнами по размеру резьбы шпильки, а также из-за дрожания самой конструкции во время работы.
- Две вышеперечисленные проблемы приводят еще к одной: перо (в моем случае ручка) может писать неравномерно в разных частях страницы.
- Вес и размеры устройства тоже стоит рассчитать заранее, чтобы потом не выяснилось, что ваши двигатели не тянут такую нагрузку.
- И еще одна важная деталь: лучше всего везде где возможно использовать для крепления шурупы, гвозди и т.д. Конструкции на клее, пусть даже самом надежном, имеют свойство разваливаться в самый неожиданный момент. И в некоторых случаях после сборки основной части будет весьма сложно возвращаться к "переклеиванию" мелких, но очень важных, внутренних деталей, не разбирая готовые части.
- Если же используете где-то клей, то очень и очень внимательно следите, чтобы он не попал в движущиеся части конструкции. Даже маленькая капелька способна застопорить механизм и привести в его негодность.
2. Схема электрическая
Сама схема была предельно проста и не требовала даже пайки. Я даже взяла готовый CNC Shield специально для работы с ЧПУ. Тем не менее и тут есть свои нюансы:
- Мой китайский аналог Arduino под кодовым именем WAVGAT на отрез отказался прошиваться как обычная Arduino Uno R3. В интернете утверждали, что подобные платы полностью совместимы со всем ПО arduino, но для работы с ним через IDE пришлось скачивать отдельную библиотеку WAVGAT Update. Так мне удалось залить скетч на плату, но само ПО по прежнему не хотело корректно работать. Я испробовала все найденные варианты исправления такого рода проблем (перегружала бутлодер платы, изменяла файлы boards и константы самой библиотеки с ПО), но итог остался тем же. Видимо, именно для этой задачи придется обзавестись классической Arduino.
- Еще одной проблемой стал запуск шаговых двигателей. Они жужжали, грелись, несмотря на холодные драйвера, но не двигались. Методично проверяя цепочку поэлементно поняла, что проблема в их подключении. Дело в том, что и в этот раз китайцы соригинальничали. Оказалось, что выводы двигателя содержат перекрещенные пары А-В. Если у обычного магазинного двигателя пары шли по порядку 2В-2А-1А-1В, то у китайцев почему-то оказались 2В-1А-2А-1В. Выяснить это можно "пропикиванием" схемы мультиметром в соответствующем режиме: пищат парные А-В выходы.
- И еще, как оказалось, безобидный маломощный сервопривод вполне способен безвозвратно "подпалить" всю плату arduino при длительной чрезмерной нагрузке на него. При этом плата продолжит работу, но будет иногда прерываться на середине, останавливаясь на командах сервопривода.
- Поэтому следите за температурой устройств во время работы во избежании неисправимых последствий.
Тут есть варианты:
- Проще всего взять замечательную простенькую программу BenВox. Она специализирована именно под работы с ЧПУ и проста в установке и обращении. Минус этого варианта в его ограниченности. Во-первых прошивка для платы в комплекте ПО содержится уже в hex-файле, потому возникают проблем с ее редактированием. Да и функционал в общем не особо обширен, похож на простейший графический редактор. Если не хотите вдаваться в подробности работы всего этого механизма, то можно поработать с этим вариантом.
- Немного сложнее, но и перспективней работа через GRBL-прошивку. Эту библиотечку можно без проблем взять в интернете и она дает значительно больше возможностей, чем BenBox. Но для работы через этот механизм надо разобраться с начальной настройкой всего этого.
- Итак, скачиваем и распаковываем grbl-servo библиотеку. Теперь ее можно залить на плату через IDE, просто отыскав ее среди примеров.
- Для пересылки непосредственно команд устройству понадобится Universal Gcode Sender (или другое подобное ПО). После его установки на компьютер в нем открываем канал связи с платой по com-порту, к которому подсоединена плата.
- Для начальной и последующих настроек платы в командной строке приложения набираем "$$". По этой команде получаем полный набор базовых настроек платы, которые можно менять, настраивая нужные параметры. К примеру, команды "$110=380" и "$111=380" ставят скорость двигателей на осях Х и У на 380 мм\мин. Важными пунктами настройки являются скорость и ускорение двигателей, направление осей (прямое или инверсное). Подробнее инструкцию по такой настройке можно найти в интернете.
- Также есть возможность машинного контроля над двигателями (вкладка machine control) и серво (команды М5(поворот в начальное положение) и М3 s90(поворот на 90 или любое другое кол-во градусов)).
- Далее надо подготовить изображение для работы. Для этого тоже понадобится доп. ПО, к примеру, Inkscape. Оно похоже на любой другой графический редактор и подробно работу с ним можно изучить также в интернете. Но есть пара важных замечаний:
- Для начала надо задать правильные размеры страницы в свойствах, чтобы размеры вашего изображения не оказалось больше возможностей плоттера. Так же необходимо заменить пиксели на миллиметры в единицах измерения.
- После создания изображения жмем ctrl+shift+C и идем в меню — расширения — MI GRBL… — задаем скорости двигателей и угол поворота серво — сохраняем изображение в формате gcode.
- Наконец возвращаемся в Universal Gcode Sender и во вкладке File Mode открываем наше gcode-изображение. Кнопкой Visualize можно графически отслеживать работу программы, а в окне command Table можно проследить по командное выполнение. Осталось только запустить все это и наблюдать за результатом.
В итоге работа над подобным устройством оказалось сложной и кропотливой, а конечный результат не идеальным. Но подобный опыт интересен и не бесполезен. Поэтому, надеюсь, кому-то пригодятся и помогут избежать лишних "граблей" мои советы.
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Мини лазерный гравер на деталях от DVD приводов и сканеров, с рабочей зоной 100х100 мм
Дома есть коробка деталей от ДВД, сканеров, принтеров и хочется чего-нибудь заваять из этого. Тем более стартовал в этой тематике именно с лазерного выжигателя из ДВД.
Вот и подумалось сотворить чего-нибудь с текущим опытом и наличием 3D-принтера.
Проблем у лазерного выжигателя из DVD-rom много: это в первую очередь маленькая рабочая зона 40мм на 40 мм, низкое разрешение, слабый лазер и т.д. Но он позволяет получить почти настоящий лазерный выжигатель с управлением с компьютера.
Вот прикинул, что есть вналичие и какое надо разрешение. Сделал несколько прикидочных вариантов и вот такое получилось.
Рабочая зона 105 мм на 110 мм. Разрешение 6 линий на мм. Но лучшее качество получается на разрешении 4 линии на 1 мм. Скорость прожига 300 мм/мин (5 мм/сек). Скорость прожига определяется мощностью лазера и качеством его фокусирующей системы.
Лазер синий (450 нм) 2500 миллиВатта (2,5 ватта) на 12 вольт. Валы не стандарт - 5,75 мм и 5,9 мм. Шаговые двигатели от компьютерных струйных принтеров - 48 шагов на оборот - 7,5 градусов на шаг. Плата управления - шилд для ЧПУ -CNC shield 111330 v. 4.0 на Arduino NANO. Прошивка GRBL 1.1. Блок питания 12 вольт 4,5 ампера для запитки светодиодных лент. Программа для подготовки G-кодов для выжигания - бесплатная LaserGRBL .
Работает и без подключения к компьютеру, если подключить экран с кардридером MKS TFT 24.
Всё началось с линейных осей и двигателей. Валялись без дела круглые шаговые двигатели от струйных принтеров. Но для 3D принтера они не подходят - слабые, мало шагов на оборот - всего 48 шагов, большой угол поворота на шаг 7,5 градуса. Поэтому если их ставить то только с редуктором.
Достал коробку с б.у. пластиковыми шестернями с принтеров и сканеров и нарисовал редуктор в солидворксе.
Сваял из лазерного диода от ДВД привода - лазерный тракт.
Тракт для лазерного диода - DC-DC преобразователь - 12 вольт -5 вольт. Плата стабилизации регулируемого тока и TTL-включения и сам лазерный диод. Я выставил ток на 250 мА.
Питание от блока питания светодиодных лент на 12 вольт 4,5 ампера. Но лазер сильно просаживает линию питания в момент включение, хотя общее стабильное потребление при включённом лазере не превышает 1,5 амперов. Поэтому пришлось повесить дополнительных конденсаторов на линию питания.
Прошивка GRBL 1.1. Сперва стояла GRBL 0.9 , но в 1.1 добавили функционал для управления лазером. Чтобы прошить GRBL 1.1f через ARDUINO Ide требуется добавить GRBL.zip в библиотеку. А саму GRBL 1.1f открыть через 'пример' скетча GRBL .
В этом примере только одна строчка - 'используем библиотеку GRBL '. И всё. Если открывать по другому, то ARDUINO Ide ругается, что чего то там не находит. А параметры GRBL 1.1f забиваем через сервисную программу управления. Я использовал для этого LaserGRBL.
Мои настройки GRBL 1.1.
Сперва обрабатываем картинку
Для удаленной работы прикрутил MKS TFT 24 .
GRBL не умеет работать с экраном, кардридером. Да и Ардуино НАНО ног имеет мало. Подключить, конечно можно было бы, но в прошивке нет этого функционала. По крайней мере в старых версиях не было. Да и в настройках нет ничего по подключению экрана ,энкодера, карты памяти.
Но хочется иметь возможность печати отдельно от компьютера.
А вот у MKS TFT 24 есть специализированная прошивка для управления лазерным гравёром, только она заточены под свою плату MKS DLC GRBL CNC Shield controller . Но процессор совпадает с Ардуино НАНО и прошивка тоже совпадает. Значит берём и разбираемся как подключить и подключаем. А на шилде 111330 есть даже специальный разъём для подключения 'RX TX +5v GND'. И питания и тока вполне хватило с этого разъёма для работы экрана.
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Немного помучившись со всякими мелочами, я его собрал.
На очереди была прошивка платы arduino, настройка прошивки, подключение электроники, концевых выключателей и шаговых двигателей.
Начну с прошивки.
В оригинальном проекте была использована какая-то специфичная плата, соответственно и ссылка на прошивку была под эту плату. Я же под имеющуюся у меня arduino uno на atmega 328p купил CNC Shield v3.0. Это пожалуй самое бюджетное решение. Картинка бутерброда из интернета.
С ее помощью, выбрав ком порт и тип платы, пролил GRBL в Arduino буквально в несколько кликов мышкой.
Плата CNC Shield v3.0 разрабатывалась под версию прошивки 0.9, в более поздних версиях прошивки автор сделал одно изменение - поменял порты местами, для того чтоб иметь возможность регулировать скорость шпинделя через pwm. При этом концевик по Z переехал на Spn En.
Для того чтоб было более наглядно, вот картинка с правильным расколожением подключения концевиков.
В остальном все совпадает.
После установки драйверов шагового двигателя, а у меня это a4988 высвободившиеся после замены их на принтере на 8825, надо отрегулировать ток на драйверах. Сложности это не представляет, статей тьма.
Подключить шаговые двигатели на разъемы X Y Z сложности так же не представляет. Если двигатель крутится не в ту сторону, надо всего лишь перевернуть разъем.
Итак, концевики и шаговые двигатели подключены, приступим к настройке прошивки.
С помощью putty, можно с помощью встроенного терминала в ардуино, настроив COM порт и нужную скорость подключиться к мозгам чпу станка.
С этого момента ленивые могут дальше не читать и просто перенести настройки к себе на станок.
Напомню конфигурацию своего станка: шаговые двигатели 17hs4401S - шаг 1,8 градуса, 200 шагов на оборот.
Ходовые винты - шпилька М8 из строительного магазина. Концевик по оси Z сверху. Драйвера a4988 с делением шага 16.
$$ - выводит все параметры сохраненные в eeprom
$100=2560 - количество шагов на мм по оси X
$101=2560 - количество шагов на мм по оси Y
$102=4800 - количество шагов на мм по оси Z
Как расчитал? Легко.
200 шагов на оборот, перемножил на 16 - микрошаг. Разделил на шаг резьбы 1,25 - это стандартный шаг резьбы.
200*16/1,25=2560 шагов на мм.
Тут у нас 2 шестерни с разным количеством зубов: 8 на ШД и 15 на ходовом винте.
1,875 оборота должен сделать шаговый двигатель, чтоб ходовой винт повернулся на 1 оборот.
2560*1.875=4800 шагов на мм.
Заносим конфигурацию в прошивку.
Заносим программные пределы для перемещений:
$130=200.000 ось X
$131=100.000 ось Y
пределы определил двигая оси по сантиметру от начала до конца и смотрел на сколько в итоге можно продвинуть ось.
Максимальные ускорения мм/сек^2
Максимальные скорости перемещения, мм/мин
Со максимальными скоростями и ускорением можно поиграться. Я пока оставил так.
$3=0 (бинарное число для инвертирования движения по осям:00000ZYX, где для инверсии например оси Z надо вбить двоичное число 00000100, только сначала перевести его в десятичный вид) По-моему проще перевернуть разъем на шаговом двигателе, но вот так можно и программно. Вооружаемся виндовым калькулятором в режиме программист, вводим в бинарном режиме и переводим число в десятичный вид.
Концевики или головная боль.
На настройку концевиков у меня ушло пара или тройка вечеров. Не смог быстро найти доступным языком написанную инструкцию. И не сразу понял логику работы.
Для начала надо включить концевики. Делается это командами
$21=1 (включить аппаратные концевики)
$22=1 (включить программные концевики)
Концевики я включил и начал двигать осями. При касании концевика станок ругался и халтился, помогали только аппаратные и программные ресеты. Так со всеми 3мя осями.
На сразу до меня дошло что концевики работают только для режима парковки! Команда $H
Во всех других случаях срабатывание концевика аварийная ситуация !
$24=25.000 скорость точной подачи для парковки, мм/мин
$25=250.000 скорость ускоренной подачи для парковки, мм/мин
$27=3.000 расстояние в мм на которое надо отойти оси, чтоб разомкнулся концевик
И еще один важный параметр
$23=3 направление парковки осей. Вводим команду парковки $H и смотрим куда движутся оси. В моем случае ось Z вместо того чтоб ехать вверх, поехала вниз. По аналогии с описанием $3 двоичное число 00000100 при переводе в десятичный вид становится числом 3.
Вот так я настроил свой станочек.
Остальное можно не трогать.
Картинка с настройками была выше, но я ее еще раз повторю
Вдогонку, как очистить конфигурацию eeprom grbl.
$RST=* сбросит абсолютно все настройки в настройки по умолчанию
$ RST=$ сбросит все настройки в настройки $$ по умолчанию, в случае если где-то сильно напортачили
Что касается программ по управлению ЧПУ станком с могзами на Arduino и прошивкой GRBL:
Лично мне понравился GrblController
хотя рабочие все 3. Все 3 я ставил, все 3 работали.
Станок у нас собран, настроен, программа для управления станком установлена. Но что дальше .
О самом главном, как и чем сформировать g-code для станка, пожалуй постараюсь коротко рассказать в следующей записи. По крайней мере постараюсь показать один из вариантов.
Чуть не забыл еще об одной электрической тонкости.
Даже с учетом того что шпиндель у меня питался от отдельного источника питания, если я пытался запустить какую-нибудь команду на станок ПРИ ВКЛЮЧЕННОМ ШПИНДЕЛЕ, станок начинал двигать осью а потом намертво вис. При этом С ОТКЛЮЧЕННЫМ ШПИНДЕЛЕМ проблем не возникало.
Избавиться от помех удалось соединив минус источника питания шпинделя с корпусом шпинделя. Экранировал :)
Эта страничка посвящена электронной части самодельного лазерного гравера, на библиотеке GRBL. Библиотеку GRBL я устанавливал на контроллер STM32f103c8t6 blue pill. Прошивка скомпиллирована для лазерного гравера, с возможностью парковаться в нулевой точке. Дело в том, что GRBL при нажатии на кнопку home вначале обнуляет координату по оси Z, но оси Z в лазерном гравере нет. Это делает проблематичной парковку, так как не найдя концевого выключателя, гравер выдаст ошибку или зависнет. В прошивке принудительно отключена поверка координаты по оси Z и парковка каретки осуществляется только по осям X иY. При использовании концевых выключателей, станок при запуске будет заблокирован, и ручное управление будет недоступно до тех пор, пока в порт не будет отправлена команда $H.
Программы, которые управляют лазерным гравером или станком с ЧПУ выводят эту команду на отдельную кнопку.
После отправки этой команды, лазерный гравер поедет в нулевую точку, до срабатывания концевых выключателей. Станок будет находить нулевую точку, а потом ограничивать свое движение по осям той величиной, которая указана у него в настройках. Конечно есть риск, что взбесившийся станок поедет до упора, и софт лимит не сработает, но нет и гарантии, что сработает хард лимит, если станок уже заглючило. В общем я решил не заморачиваться. Ставить 4 датчика нет смысла. Можно вообще их не ставить, чаще всего ноль выставляется вручную.
Саму прошивку вы найдете в архиве в конце странички. Инструкцию по прошивке контроллера см. в видео в конце странички, или вот здесь GRBL на STM32 STM32F103C8T6 Blue pill. я описывал один из способов. Схема подключения blue pill stm32f103c8t6 к моему самодельному лазерному граверу вот такая.
После сборки механики остается протянуть проводку, что куда и как тянуть смотрите видео. Данный лазерный гравер мне удалось запустить на скорости 20 000 мм в минуту при ускорении 10000. Правда для работы я снизил скорость и ускорения в 2 раза, так как рама слишком легкая и гравер мотался из стороны в сторону по полу при стартах и остановках.
Плата самодельного лазерного гравера на STM 32f103c8t6
Саму плату вы найдете в архиве в конце странички. Печатная плата и схема подключения к ней выглядит вот так.
Подключение платы контроллера GRBL на blue pill к лазерному граверу.
Настройки моего лазерного гравера вот такие вот.
Настройки библиотеки платы для лазерного гравера
Подробнее о настройке библиотеки GRBL можете прочесть здесь: Настройки библиотеки GRBL 1.1f
О механической части этого лазерного гравера я рассказывал здесь Лазерный гравер skeleton_cnc. Механическая часть. Там описание сборки, СТЛ файлы для 3д печати, и так же список всех деталей для заказа на алиэкспресе. Так же доступно видео с полной инструкцией по сборке механической части гравера.
Плата STM32F103C8T6 Blue pill
STM32 blue pill
Плата Stlink ST-Link V2
Китайский клон ST-LINK V2 для STM32
Если не хотите приобретать отдельный программатор для STM32, то можно прошить вот таким вот переходником USB to UART
Я пользуюсь такими конверторами, и пока они меня не подводили.
Ну и само видео по сборке и настройке электрической части лазерного гравера.
Читайте также: