DIY DLP или upgrade покупного принтера? Часть 2, software

garrystr
Идет загрузка
Загрузка
26.04.2020
1753
8
Личные дневники

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

5
Статья относится к принтерам:
Anycubic Photon

Продолжение, начало см. 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, нарезать на слои и печатать.

Описание конструкции вместе со схемой и с фотографиями будет в следующей части.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

5
Комментарии к статье