DIY DLP или upgrade покупного принтера? Часть 2, software
Продолжение, начало см. DIY DLP или upgrade покупного принтера?
Почти невозможным оказалось найти прошивку для Arduino Nano (а Mega впихнуть в компактный корпус Photon нереально), которая нормально бы выставляла позицию HOME. Я не хотел выставлять платформу руками перед каждой печатью сам и заставлять дочь. В итоге самое подходящее, что нашёл, была прошивка grbl (текущая версия 1.1h), но ее цикл Home меня совсем не устраивал: вниз до нуля быстро, вверх на пару миллиметров (значение $27), потом вниз до нуля уже медленно, потом опять вверх на те же пару миллиметров. В итоге в конце цикла HOME платформа оказывалась не НА пленке ванночки, а НАД ней. Приравнивать $27 нулю - тоже не вариант, тогда местоположение нуля гуляло бы очень сильно, в этом случае цикл обрезается до "вниз до нуля быстро".
Пришлось искать фрагмент в прошивке, отвечающий за алгоритм HOME, методом научного тыка. Нужное место нашлось. Для изменения цикла HOME меняем файл limits.c следующим образом
// Initialize variables used for homing computations.
// uint8_t n_cycle = (2*N_HOMING_LOCATE_CYCLE+1); //закомментареная исходная строка
uint8_t n_cycle = (2*N_HOMING_LOCATE_CYCLE); //изменено для DLP-принтера: MOVE HOME, UP TO $27, DOWN SLOWLY
Также изменил настройки в файле config.h:
Раскомментариваем:
define HOMING_FORCE_SET_ORIGIN //устанавливает 0 координат в home z,чтобы работать в положительной области
Закомментариваем:
#define VARIABLE_SPINDLE //отключаю ШИМ на включение шпинделя, в этом случае z-stop подключается на D11, шпиндель = LED - на D12
#define HOMING_CYCLE_1 ((1<<X_AXIS)|(1<<Y_AXIS)) //отключаю home для x,y иначе после включения уходит в alarm
#define HOMING_INIT_LOCK //можно не отключать, но тогда надо обязательно после включения запускать $X или $H
И если пошёл разговор про программирование, упомяну при другие изменения в программных настройках всего остального софта.
Настройки grbl:
$20=1 //включаем ограничение по осям
$22=1 //включаем Home
$23=7 //инверсия Home по всем осям
$102=200 //шагов на мм , использую оригинальный мотор Photon
$122=4 //ускорение, мм/сек^2, нормально для скорости 120мм в мин или 2 мм в сек
$132=155 //максимальное перемещение по Z
В /boot/config.txt в NanoDLP изменил поворот экрана,
было
display_rotate=0x10000
стало
display_rotate=0x00000
В настройки NanoDLP тоже пришлось внести измения. Прошивка grbl не выдает в ответ строку 'Z_move_comp' после окончания движения мотора, а NanoDLP ждёт эту строку скриптовой командой [[WaitForDoneMessage]]. Вместо [[WaitForDoneMessage]] я использовал команду [[Delay время-в-секундах]]. Можно использовать код G4 Pвремя-в-секундах (G4 P0.5).
И, наконец, немного о том, как сделано включение и выключение принтера с помощью симисторной оптопаты. К контакту «малинки» 13 (GPIO 27) подключен (через транзисторный ключ) светодиод оптопары. У меня «случайно» нашлась оптопара S216S02, но можно использовать любое твердотельное реле, подходящее по току и напряжению. В код загрузки (Bootup Code) NanoDLP добавлена команда [[Exec python /home/pi/printer/scripts/startup.py]]. В код завершения печати (Print Stop Code) добавлена задержка в 60 секунд и команда [[Exec python /home/pi/printer/scripts/shutdown.py]].
Текст скриптов:
скрипт /home/pi/printer/scripts/startup.py:
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(27,GPIO.OUT)
GPIO.output(27,GPIO.HIGH)
скрипт /home/pi/printer/scripts/shutdown.py :
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(27,GPIO.OUT)
GPIO.output(27,GPIO.LOW)
И еще несколько слов про софт для подготовки к печати. Как я уже писал, слайсером у меня работает NanoDLP. У этой программы много различных настроек, включая 2D и 3D сглаживание. Взаимодействие NanoDLP с grbl не идеальное, но вполне предсказуемое. Пока в NanoDLP не очень хорошо, а точнее, очень нехорошо с генерацией поддержек. Генератор поддержек "как бы есть", но на мой взгляд, именно "как бы".
По совету одного квалифицированного мастера я попробовал использовать для этой цели PrusaSliser. Оказалось, что это очень интересная программа, в том числе, для автоматической генерации поддержек с автоматической и ручной расстановкой точек крепления этих поддержек. Работает предсказуемо, быстро. Выгружает STL-модель с поддержками, которую можно загружать в NanoDLP, нарезать на слои и печатать.
Описание конструкции вместе со схемой и с фотографиями будет в следующей части.
Еще больше интересных статей
Ускорение печати.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
но...
Снова МАЗ-537. Баки, разные.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Баки топливные на раме.
Записки тридэголика. Эпизод первый.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Комментарии и вопросы
А я сделал из овна и палок, ку...
Тем летом двоих закосил газоно...
Шаи-Хулуд поинтереснее кротов....
Здравствуйте. При печати кубик...
Проволка доходит до середины э...
На кораблике видно что на неко...
Сразу для любителей обсуждать...