После приобретения Ender 3 Pro вместо примитивного 101Hero, возникла идея использвоать высвободившиеся запчасти подо что-то [бес]полезное. А тут как раз пришло время красить яйца, и вгляд упал на EggDuino-подобные поделки. Вот, например, с Thingiverse, там как раз моторы 28byj-48, которые шли в комплекте с принтером.
Первую попытку сделать яйцебот я предпринял еще весной прошлого года, и могу сразу сказать, что 28byj лучше не использовать - они очень сильно люфтят и нормальную картинку получить не удастся.
Поэтому сейчас взял за основу вот эту модель, она расчитана на двигатели Nema 17, высвободившиеся при апгрейде родных моторов Ender 3 Pro с шагом 1.8 градуса на аналогичные с шагом 0.9 (что, к слову, дало заметный глазом рост качества печати). Кроме того, был закуплен сервопривод MG90S.
И вот, что получилось:
От оригинальной модели с thingiverse осталась только "рука", держащая маркер, остальное было нарисовано самостоятельно. Да и то, к руке есть претензия - она сильно высокая, я бы ее укоротил на сантиметр-два (но это уже будет в следующем году - праздник кончился и EggBot ушел в коробку к остальному хламу).
В таком исполнении качество рисования оказалось весьма неплохим:
Для того, чтобы яйцо не скользило - взял силиконовые прокладки (красные на картинке) от двух завалявшихся в запасе дохлых керамических вентилей, вот такого вида:
Прокладка легко выковыривается отверткой, и содержит внутри металлическую распорку, препятствующую ее вращению.
Левая на фото сторона яйцекрутилки использует пружину от родного экструдера Ender 3 Pro (я его сразу заменил на Titan), правая - жестко закреплена на моторе.
Чертежи своих деталей не привожу - их и без меня много. А вот про сборку исходников напишу подробно.
Исходных текстов с прошивкой для Arduino очень много, но мне нужна была универсальная, поддерживающая одновременно и моторы 28byj-48 (для старой версии эггбота), и нормальные Nema 17. Такая была найдена: https://github.com/russhughes/EggDuino
Вот схема подключения моторов и серво к контроллеру:
То есть, сервопривод подключается к концевикам оси Z (на картинке верхние слева), а моторы, управляющие поворотом яйца и пером - к моторам оси Х и У.
В исходниках используется пин для Engraver. Ввиду его отсутствия - выставляю пин от концевика У.
В случае использования Nema 17 с 4 контактами, используются левые 4 провода в разъеме. "Шишечку" на разъеме, мешающую его вставлению рекомендуею откусить кусачками.
Если после подключения Nema 17 вместо вращения слышны щелчки и он дергается на месте - надо поменять местами два крайних провода в его разъеме.
Чтобы собрать прошику для контроллера от 101Hero и моторов NEMA 17, достаточно поменять определения пинов в исходнике и закомментировать несколько строк (для 28byj-48 требуется поменять чуть больше, инструкцию я не приведу, так как просто уже не помню, что менял - но можно начать с тех же изменений, что я привожу ниже).
Номера пинов берем из исходников Marlin, приведу здесь все, просто чтобы было:
В файле EggDuino.ino комментируем все 3 строки #define BOARD_ХХХ
В нем же перед комментарием "//make Objects" вставляем определения пинов:
Первую попытку сделать яйцебот я предпринял еще весной прошлого года, и могу сразу сказать, что 28byj лучше не использовать - они очень сильно люфтят и нормальную картинку получить не удастся.
Поэтому сейчас взял за основу вот эту модель, она расчитана на двигатели Nema 17, высвободившиеся при апгрейде родных моторов Ender 3 Pro с шагом 1.8 градуса на аналогичные с шагом 0.9 (что, к слову, дало заметный глазом рост качества печати). Кроме того, был закуплен сервопривод MG90S.
И вот, что получилось:
От оригинальной модели с thingiverse осталась только "рука", держащая маркер, остальное было нарисовано самостоятельно. Да и то, к руке есть претензия - она сильно высокая, я бы ее укоротил на сантиметр-два (но это уже будет в следующем году - праздник кончился и EggBot ушел в коробку к остальному хламу).
В таком исполнении качество рисования оказалось весьма неплохим:
Для того, чтобы яйцо не скользило - взял силиконовые прокладки (красные на картинке) от двух завалявшихся в запасе дохлых керамических вентилей, вот такого вида:
Прокладка легко выковыривается отверткой, и содержит внутри металлическую распорку, препятствующую ее вращению.
Левая на фото сторона яйцекрутилки использует пружину от родного экструдера Ender 3 Pro (я его сразу заменил на Titan), правая - жестко закреплена на моторе.
Чертежи своих деталей не привожу - их и без меня много. А вот про сборку исходников напишу подробно.
Исходных текстов с прошивкой для Arduino очень много, но мне нужна была универсальная, поддерживающая одновременно и моторы 28byj-48 (для старой версии эггбота), и нормальные Nema 17. Такая была найдена: https://github.com/russhughes/EggDuino
Вот схема подключения моторов и серво к контроллеру:
То есть, сервопривод подключается к концевикам оси Z (на картинке верхние слева), а моторы, управляющие поворотом яйца и пером - к моторам оси Х и У.
В исходниках используется пин для Engraver. Ввиду его отсутствия - выставляю пин от концевика У.
В случае использования Nema 17 с 4 контактами, используются левые 4 провода в разъеме. "Шишечку" на разъеме, мешающую его вставлению рекомендуею откусить кусачками.
Если после подключения Nema 17 вместо вращения слышны щелчки и он дергается на месте - надо поменять местами два крайних провода в его разъеме.
Чтобы собрать прошику для контроллера от 101Hero и моторов NEMA 17, достаточно поменять определения пинов в исходнике и закомментировать несколько строк (для 28byj-48 требуется поменять чуть больше, инструкцию я не приведу, так как просто уже не помню, что менял - но можно начать с тех же изменений, что я привожу ниже).
Номера пинов берем из исходников Marlin, приведу здесь все, просто чтобы было:
- #define X_STOP_PIN 18
- #define Y_STOP_PIN 19
- #define Z_STOP_PIN 20
- #define X_STEP_PIN 15
- #define X_DIR_PIN 21
- #define Y_STEP_PIN 22
- #define Y_DIR_PIN 23
- #define Z_STEP_PIN 3
- #define Z_DIR_PIN 2
- #define E0_STEP_PIN 1
- #define E0_DIR_PIN 0
- #define X_ENABLE_PIN 14
- #define Y_ENABLE_PIN 14
- #define Z_ENABLE_PIN 26
В файле EggDuino.ino комментируем все 3 строки #define BOARD_ХХХ
- //#define BOARD_ULN2003
- //#define BOARD_ZAGGO
- //#define BOARD_CNCSHIELD
В нем же перед комментарием "//make Objects" вставляем определения пинов:
- //Rotational Stepper:
- #define step1 15
- #define dir1 21
- #define enableRotMotor 14
- #define rotMicrostep 16 //MicrostepMode, only 1,2,4,8,16 allowed, because of Integer-Math in this Sketch
- //Pen Stepper:
- #define step2 22
- #define dir2 23
- #define enablePenMotor 14
- #define penMicrostep 16 //MicrostepMode, only 1,2,4,8,16 allowed, because of Integer-Math in this Sketch
- #define servoPin 20
- #define engraverPin 19
В файле Helper_Functions.ino в функции initHardware() необходимо закомментировать или удалить строку:
- SPMCSR &= ~SELFPRGEN;
Нам она не нужна (и с ней проект не соберется).
После чего проект загружаем в Arduino IDE, удостоверяемся, что выбрана платформа Sanguino, процессор ATmega 1284/1284р, собираем и заливаем.
После заливки можно подключиться к устройству по СОМ порту со скоростью 9600 и попробовать напечатать что-нибудь. Должно появиться сообщение о непонятой команде.
После печати деталей и сборке - можно приступить к рисованию. Для этого необходимо загрузить Inkscape + плагин для Eggbot, например, отсюда в самом низу страницы, распаковать, и отредактировать файл \share\extensions\ebb_serial.py:
В функции findPort() заменить строку "EBBport = None" на свой COM порт, например, так:
- def findPort():
- #Find a single EiBotBoard connected to a USB port.
- try:
- from serial.tools.list_ports import comports
- except ImportError:
- comports = None
- return None
- if comports:
- comPortsList = list(comports())
- EBBport = "COM6"
(изменена последняя строка данного примера на COM6, остальные - не трогаем).
В случае, если моторы Nema 17 с шагом 1.8 градуса, как у меня - область для рисования в Inkscape будет 3200 на 800 пикселей. Если вдруг оказались двигатели с шагом 0.9 градуса - область печати станет 6400 на 1600, и все картинки надо будет увеличить вдвое или выставить в исходниках rotMicrostep и penMicrostep в 8.
А теперь о проблемах, с которыми пришлось столкнуться.
1. При печати возникает ощущение, что EggBot требует калибровки. Это ложное ощущение. Nema 17 с шагом 1.8 градуса требует ровно 360/1.8 == 200 шагов на полный оборот. Так как у нас в коде стоит microstep == 16, получается 200*16=3200 шагов на полный оборот. То есть, горизонтальная линия в Inkscape длиной в 3200 пикселей будет равна полному обороту яйца.
Если попробовать вручную во вкладке Manual плагина EggBot сделать Walk Motor 1 (pen) на 3200 шагов и затем на -3200 шагов и перо не вернется в ту же точку - значит проблема в проскальзывании яйца. Чтобы яйцо не скользило - зафиксируйте его крепче с помощью пружины и нескользящих прокладок.
А вот если используется 28byj-48 - тут требуется "поиграться" с шириной картинки или с #define rotStepsPerRev в исходниках. У меня нормальная печать была при масштабировании картинки до 4076 пикселей в ширину. Сколько был масштаб в высоту - не помню.
2. При печати заливки - заливка "сползает" с каждым рядом к одному из краев яиц на примерно одинаковое расстояние. Тут у меня было две проблемы - сперва оказалось, что "рука", держащая перо прокручивалась на валу. Помогло затягивание фиксирующего винта, и заодно использование резинки для волос, как описно в комментариях тут: https://3dtoday.ru/blogs/provlax/budget-3d-printing-eizabeth-pro-mini/
А вторая проблема - низкое напряжение на подстроечном резисторе контроллера. Резисторы были выставлены под 28byj-48, а я поставил более мощный Nema 17, который в Ender 3 шел на экструдер, и ему просто не хватало тока. Что интересно, шаги пропускались только в одном направлении, поэтому картинка всегда "сползала" только к одному концу яйца.