Моё подключение лазера к контроллеру BIGTREETECH SKR V1.3
Наконец приехал долгожданный контроллер skr 1.3. После печати корпуса, установки и 2х недельной настройки tmc2208 в режиме uart вспомнил одну из целей данного приобретения: подключить лазер, который лежал на полке уже полгода.
Предупреждение: автор не несёт ответственности за возможные последствия и поломки, которые могут произойти при попытке повторения изложенного материала. Также не забывайте об опасностях при использовании лазера. Пользуйтесь специальными защитными очками! Всё, что вы делаете - вы делаете на свой страх и риск.
Итак, имеем принтер Ender 3 pro с платой контроллера bigtreetech skr 1.3. Для быстрой смены рабочего инструмента был напечатан Quick tool change for Creality CR-10 / Ender series.
Лазер мощностью 5500 мВт был приобретен у китайцев. В комплект входит сам лазер, драйвер, блок питания на 12В и проводок для соединения с принтером. Для управления лазером на плате драйвера имеется разъем, обозначенный как TTL.
Лазер
Вход управления
На плате контроллера есть разъём для управления нагревом вторым хотэндом (HE1). Именно этот выход я и хотел использовать для управления лазером. Для начала надо разобраться с уровнями сигналов. Включение/отключение луча происходит подачей напряжения 5В на вход TTL. Высокий уровень сигнала - луч включен, низкий - луч погашен. Вход притянут через резистор на плате драйвера к 5В, поэтому без подключения входа управления лазер жарит "на полную". На skr 1.3 для нагрева хотэнда используется напряжение питания (в моем случае 24В), которое великовато для нас. В интернете люди по-разному выкручиваются из этой ситуации. Резистивным делителем напряжения, развязкой на транзисторе. Я, поизучав схему контроллера, решил припаяться прямо к ключевому транзистору. Нам нужен Q1. На вход затвора (G) с микросхемы буфера (U5) приходят необходимые 5В. Минус можно взять с вывода истока (S) того же транзистора.
После прошивки Marlin на skr 1.3 там появилась опция управления вторым вентилятором обдува (если в прошивке не прописывать второй хотэнд). Это и есть нужный нам выход ШИМ.На всякий случай смотрим осциллографом сигнал. Поставил обдув на 25%:Форма сигнала между выводами S-G:
По амплитуде 5В, что нам и надо, а вот с частотой проблемы... 2.5 деления * 50 мс = 125 мс или 8 Гц... В принципе это видно и на светодиоде, который установлен на плате около нужного нам транзистора. Мигания различимы невооруженным глазом :) Как я с этим справился напишу ниже.
Итак, припаиваемся...
На схеме это будет выглядеть так (красная и черная стрелки):
На плате:
Обращаем внимание на полярность!
Проводок, шедший в комплекте с лазером, имел на концах два одинаковых разъёма, но c разной полярностью. Именно его я, обрезав разъём, припаивал к транзистору.
Для теста подключил лазер и поигрался оборотами обдува. Мощность меняется, но частота никуда не годится. Цветомузыка.
В общем надо увеличить частоту и научиться управлять ШИМом.
Сначала думал нужно копать в сторону параметра SOFT_PWM_SCALE, но осталось непонятно, как управлять мощностью через G-код. Пока изучал мат. часть в файле Configuration_adv.h наткнулся на то, что в прошивке Marlin уже заложена возможность управления шпинделем/лазером командами M3, M4 и M5. Для этого выход должен быть аппаратным PWM. Из интернета узнаем, что процессор LPC1768 имеет шесть выводов с возможностью запрограммировать под ШИМ, в том числе нужный нам порт P2.4.
Определим порт для управления лазером.
Находим файл Marlin\src\pins\lpc1768\pins_BTT_SKR.h
В нем добавляем строки:
#define SPINDLE_LASER_ENA_PIN P2_03
без этой строки прошивка не компилируется. Определяет порт включения/выключения лазера. У меня такого нет, поэтому я прописал порт, к которому подключен вентилятор обдува детали. Не уверен в правильности
#define SPINDLE_LASER_PWM_PIN P2_04 // digital pin - MUST BE HARDWARE PWM
Определяет порт ШИМ управления мощностью.Имевшиеся до этого строки с определением порта P2_04 просто закомментировал.
Получилось так:
Далее в файле Marlin\Configuration_adv.h ищем строку //#define LASER_FEATURE и раскомментируем её. У меня это выглядит так:
//#define SPINDLE_FEATURE
управление шпинделем нас не интересует
#define LASER_FEATURE
а вот лазер нам нужен
#if EITHER(SPINDLE_FEATURE, LASER_FEATURE)
#define SPINDLE_LASER_ACTIVE_HIGH true // Set to "true" if the on/off function is active HIGH
у меня, как я и говорил, нет отдельного включения лазера, поэтому тут без разницы
#define SPINDLE_LASER_PWM true // Set to "true" if your controller supports setting the speed/power
А эта строка определяет управляется лазер с помощью ШИМ или нет
#define SPINDLE_LASER_PWM_INVERT false // Set to "true" if the speed/power goes up when you want it to go slower
Тут можно инвертировать сигнал ШИМ, вернее определить, включается лазер низким уровнем напряжения или высоким
#define SPINDLE_LASER_POWERUP_DELAY 1 // (ms) Delay to allow the spindle/laser to come up to speed/power
задержка после включения до момента печати. больше нужна для раскручивания шпинделя. Должна быть больше 0
#define SPINDLE_LASER_POWERDOWN_DELAY 1 // (ms) Delay to allow the spindle to stop
Задержка для остановки шпинделя/выключения лазера. Должна быть больше 0
#if ENABLED(SPINDLE_FEATURE)
...эта часть относится к шпинделю, я её не трогал...
#else
#define SPEED_POWER_SLOPE 1
коэффициент пересчета задаваемой мощности в мощность ШИМ (0-255). Например, если вы решили задавать мощность в процентах (0-100), то этот коэффициент надо установить равным 0.3922
#define SPEED_POWER_INTERCEPT 0
сдвиг для задаваемой мощности
#define SPEED_POWER_MIN 0
Минимальная задаваемая мощность
#define SPEED_POWER_MAX 255
Максимальная задаваемая мощность
#endif
#endif
После заливки прошивки на главном экране появляется новый значок
в нем можно вручную включить/выключить лазер и установить мощность.
Внимание, после включения через меню лазер включается на максимум
Частота ШИМ увеличивается до 50 Гц
Команды для включения "M3 Sxxx", где xxx - мощность или "M4 Sxxx" (отличия при работе со шпинделем. Для разного направление вращения, но нам это не надо). Отключается лазер командой "M5".
Далее с помощью маленькой софтинки на единственно найденном огрызке фанеры протестировал гравировку.
результат
Как видно, полученная гравировка имеет дефекты в виде точек и вертикальных волнистых линий. Чем это вызвано пока не изучал.
Всем удач!
PS. Строго не судите, мой первый пост
Еще больше интересных статей
Покраска пластика
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Терпение и труд... Наблюдения, сопла, двигатели и ещё немного прошивки и калибровки. Часть 4.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Очень сложно рассказывать о чём-то одном, когда одно тянет за другое…...
MMRU (Multi Material Russian Upgrade) (Часть 6: Анонс новой механики)
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
ну тогда все понятно. вы знали...
попробуйте мысленно потянуть(и...
Да клевая штука вышла, спору н...
Такое впечатление, что у прюша...
Вот такие «лесенки» появляются...
Отслайсил модель в Cura закину...
Нужна помощь по SKR PRO. Все д...