Июль 29

Direct-extruder с дистанционным приводом

Год назад мной был спроектирован Direct-экструдер для дельта-принтера с дистанционным приводом.

Ряд публикаций об этом мной был размещен на 3dtoday.ru по тегу tough-struder. Например — ЗДЕСЬ

Так как адекватности пользователей этого сообщества со временем становится не прибавляется, и это еще дополняется хамоватостью некоторых модераторов, публиковаться там до видимых подвижек хочется все меньше и меньше.

За концепцию был принят тросиковый привод с червячной конечной передачей крутящего момента для подачи прутка. Выпускаемые аналоги — Zesty Nimble и Flex3drive.

Почему было принято решение в реализации собственного концепта вместо приобретения готовых изделий:

  • в T-struder используется пара «сталь-полиацеталь»;
  • жесткое безлюфтовое крепление подающей шестерни на стальном же валу с возможностью доступной замены «сработанной» шестеренки от контакта с угле- и стеклонаполненными филаментами (оригинальное зубчатое колесико от Zesty стОит не один десяток $);
  • ну свои же силы попробовать тоже надо

Немногим более года назад «родился» на свет T-struder beta:

Фидер имел габариты 45х35.5×57.5 мм и вес около 72 грамм без учета тросового привода и его чехла. Почему без? Погоня за декларируемыми от Zesty 32 граммами становится бессмысленной, как только понимаешь, что еще 80-100 грамм некомпенсированной массы на эффектор добавляет тросик в чехле.

Фидер был опробован в деле и прожевал свои несколько километров филамента. В процессе использования были выявлены как плюсы (Direct-подача пластика с легкой и быстрой заменой прутка), так и минусы. Сложной была конструкция крепления гибкого вала к червячному винту (а при кручении вала на хороших ускорениях этот вал имеет обыкновение укорачиваться-удлиняться и иногда даже норовить выскочить из гнезда), также коэффициент редукции в 1:25 с подающим зубчатым колесом MK8 диаметром по желобку в 7.5 мм:

  • делает проблемной скоростную подачу прутка для сопел диаметром 1 мм и более;
  • ограничивает скорость ретракта величиной 15-20 мм/с;
  • вызывает сильный стук двигателя при ретрактах (очень назойливо звучит, особенно если ретрактов много);
  • почти однозначно требует использования 32-bit электроники, т.к. обработка при микростеппинге 1:16 движений экструдера при почти 4000 шагов/мм сильно нагружает слабенькие 8-ми битные «мозги» Mega 2560;
  • на привычных скоростях (ускорениях) работы фидера начинает замечаться влияние упругости на кручение гибкого вала и приходиться снижать общую скорость печати.

Габариты фидера требуют использования большого эффектора для дельта-принтера (с показателем effector offset 32…35 мм), что затрудняет применение этого фидера на компактных дельта-принтерах.

Проект был творчески переработан и получилось вот так:

Фидер после переработки с использованием миниатюрных подшипников и «переезда» узла прижима прутка на другую сторону подающего зубчатого колеса имеет габариты 36.5х29.9×51 мм и вес около 57 грамм. Частично открытый механизм позволяет продувать конструкцию фидера от крошки филамента. Муфта соединения червячного винта с гибким валом выполнена жестко фиксируемой металлической. Также уменьшен максимальный вылет габаритов от оси филамента с 37 до 25 мм, что позволит:

  • устанавливать фидер на стандартные эффекторы с показателем delta_effector_offset в 25 мм;
  • в дальнейшем спроектировать двойной симметричный фидер для двойного же хотэнда из двух E3Dv6 или по типу «Химеры» или «Циклопа».

Примерочный фидер отпечатан, доработан напильником и ждет установки для пробега.

Июнь 16

Klipper без USB. Интеграция «апельсинки» в 3D-принтер.

Оценив вычислительную мощь полноценного процессора под управлением Klipper по сравнению с микроконтроллером (пусть даже и 32-битным), и пару раз сорвав висящую на проводах «малинку» в процессе печати со своего дельта-принтера, было принято решение об интеграции этой железячки («малинки») в конструкцию аппарата.

Задачи:

— размещение «малинки» (по факту — «апельсинки» OrangePi Zero) на принтере стационарно, с доступом к USB и Ethernet портам;


— вывод от платы управления (MCU, у меня MKS 1.4) внешнего разъема USB наружу для обеспечения возможности обратной миграции на Marlin или другую прошивку;


— установка независимого блока питания (БП) для «малинки» с целью дальнейшей аппаратной интеграции (реализовать включение-выключение принтера от «малинки», а также аппаратные кнопки предпрогрева и аварийного останова печати);


— подключение MCU к «малинке» по последовательному порту через пины Rx/Tx.

Первые поставленных три вопроса были решены получасом в Fusion360, 5 часами печати и получасом сборки-разборки.

Комплектующие:

  • «мозг» — плата Raspberry Pi3, заказанная с Aliexpress и впоследствии замененная на OrangePi Zero с Ebay (вчетверо дешевле);
  • плата управления, она же MCU — плата MKS 1.4 с того же Aliexpress, с драйверами DRV8825 для осей XYZ (ABC в дельте), A4988 для фидера подачи прутка;
  • блок питания «мозгов» — выпотрошенная из блока питания на 5В 2А от старого планшета платка;
  • согласователь уровней

ищется по запросу «IIC I2C Logic Level Converter Bi-Directional Board Module» на различных сайтах. Цена с доставкой с Aliexpress — около 35 р/шт на май 2019 года.

Для чего нужен: логические уровни 32,64-битных одноплатных компьютеров («малинки», «апельсинки», «бананки», «картошки») работают на вольтаже 3.3В, логические уровни плат микроконтроллеров MCU на базе, например, ATMega 2560 (всякие ардуинки «Мега») имеют вольтаж 5.0В, при прямом соединении сигналов Rx/Tx компьютер выйдет из строя. Указанная платка согласует логические уровни до 4 сигналов между устройствами с различным вольтажом.

Т.к. на «малинке» у меня была установлена операционная система OctoPi, прямое подключение по последовательной шине (Serial0) потребует отключения диагностической консоли и модема, «висящих» на этом порту. По итогам раздумий, «малинка» была заменена на «апельсинку» OrangePi Zero. Т.к. видеокамерой пользоваться не планировалось, вычислительной мощи «апельсинки» для Octoprint и Klipper даже на 256 Мб оперативной памяти более чем достаточно, да и стоимость самой платки в разы меньше, чем «малинки».

Приступим.

На текущую дату — 15.06.2019.

Качаем образ операционной системы Armbian, например — ОТСЮДА

Мной был скачан Armbian_5.69_Orangepizero_Debian_stretch_next_4.19.13

С помощью программы Balena Etcher образ системы следует «развернуть» на MicroSD карточку объемом не менее 4Gb. Последовательность этого процесса можно посмотреть, например, ЗДЕСЬ.

Карточку памяти следует вставить в «апельсинку» и подключить ее к питанию и кабелю Ethernet. На «апельсинке» помигают различные светодиоды и через 3-5 минут загорится зеленый на плате, это значит, что микрокомпьютер загрузился.

В web-интерфейсе роутера надо найти подключение orangepizero

и запомнить его ip-адрес. У меня это 192.168.1.47

Скачиваем и устанавливаем SSH-клиент Putty и запускаем.

В поле запуска Putty вводим ip-адрес «апельсинки» и подключаемся к ней, вводим логин Armbian по умолчанию — «root«, пароль — «1234» и производим первичную настройку системы с установлением своих «Login» и «Password«.

Далее вводим последовательно и дожидаемся выполнений команд (команды можно копировать в буфер прямо со страницы и вставлять в консоль Putty правой кнопкой мыши):

sudo apt-get update
sudo apt-get upgrade
sudo adduser octoprint
sudo usermod -a -G tty octoprint
sudo usermod -a -G dialout octoprint
sudo adduser octoprint sudo
sudo visudo
octoprint ALL=(ALL) NOPASSWD:ALL

нажимаем CTRL+O, потом Enter, чтобы перезаписать файл, а затем CTRL+X, чтобы выйти из него обратно в консоль.

sudo passwd octoprint -d
sudo apt-get install git python-pip python-dev python-setuptools psmisc
virtualenv
sudo su octoprint
cd ~
wget https://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz
tar -zxf pyserial-2.7.tar.gz
cd pyserial-2.7
sudo python setup.py install
cd ~
git clone https://github.com/foosel/OctoPrint.git
cd OctoPrint
virtualenv venv
./venv/bin/python setup.py install
~/OctoPrint/venv/bin/octoprint serve

Проверяем, запустился ли Octoprint, введя в адресной строке браузера ip-адрес «апельсинки» и номер порта 5000. У меня это выглядело как:

192.168.1.47:5000

Если «взлетел», переходим обратно в консоль Putty и жмем CTRL+Z, чтобы завершить процесс Octoprint

sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint
sudo chmod +x /etc/init.d/octoprint
sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint
sudo nano /etc/default/octoprint

Меняем в открывшемся файле pi на octoprint:

А также раскомментируем (убираем # в начале строки) и правим следующую строчку до нижеприведенного вида:

DAEMON=/home/octoprint/OctoPrint/venv/bin/octoprint

Выходим из файла в консоль с сохранением:

CTRL+O, Enter, CTRL+X

Применяем изменения:

sudo update-rc.d octoprint defaults

Запускаем OctoPrint

sudo service octoprint start

Переходим в WEB-браузере в окно Octoprint и входим в настройки

  • Restart OctoPrint — sudo service octoprint restart
  • Restart System — sudo shutdown -r now
  • Shutdown System — sudo shutdown -h now

Установка и предварительная настройка Octoprint завершена.

За основу были взяты материалы статьи ОТСЮДА. Там же можно почерпнуть и параметры настройки и конфигурации камеры и записи с нее.

Приступаем к установке и настройке Klipper.

В основе своей пользовался мануалом по УСТАНОВКЕ Klipper.

Первоначально подключаем USB-кабелем «апельсинку» к плате управления 3D-принтером.

В консоли Putty вводим команды:

git clone https://github.com/KevinOConnor/klipper
./klipper/scripts/install-octopi.sh
cd ~/klipper/
make menuconfig

В открывшемся меню выбираем тип микроконтроллера (у меня ATMega2560) и прочие настройки и выбираем/жмем/подтверждаем Exit и выходим снова в консоль Putty

make
sudo service klipper stop

Проверяем в окне Octoprint его статус, чтобы он не был соединен с 3D-принтером и снова переходим в консоль Putty

make flash FLASH_DEVICE=/dev/serial/ttyUSB0

если прошивка контроллера не удалась, уточняем аппаратный его адрес командой

ls /dev/serial/by-id/*

и получаем что-то наподобие:

/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

после чего вводим команду

make flash FLASH_DEVICE=/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

после успешной прошивки MCU вводим

sudo service klipper start

конфигурируем Klipper

cp ~/klipper/config/example.cfg ~/printer.cfg
nano ~/printer.cfg

у меня для дельта-принтера команды будут выглядеть несколько по-иному

cp ~/klipper/config/example-delta.cfg ~/printer.cfg
nano ~/printer.cfg

Конфигурированию Klipper можно посвятить отдельную большую статься, но я считаю, что, если Читатель озадачился подключением Octoprint/Klipper без USB-кабеля, то этот этап он уже проходил. Да и информация выше более будет полезна новичкам.

Теперь переходим к собственно интересному.

Моя «апельсинка» пришла с нераспаянной «гребенкой» контактов 1-26. Как раз от согласователя уровней у меня осталась «гребенка» на 7 контактов, которая и была впаяна на места Pin1-7.

Привожу распиновку устройств:

OrangePi Zero

MKS 1.4

Согласователь логических уровней

Таблица соединений

Снова подключаемся через SSH-клиент к «апельсинке» и меняем:

sudo nano ~/boot/armbianEnv.txt

В открывшемся файле в конце дописываем:

     overlay_prefix=sun8i-h3
      overlays=usbhost2 usbhost3 uart1 uart2

Сохраняем изменения:

CTRL+O, Enter, CTRL+X

Переходим в папку Klipper:

 cd ~/klipper
 nano ~/printer.cfg

В открывшемся окне ищем строчку [mcu] и меняем в ней

     [mcu]
      serial: /dev/ttyS2
      pin_map: arduino

Сохраняем изменения:

CTRL+O, Enter, CTRL+X

Перезагружаем микрокомпьютер:

sudo shutdown -r

Предварительно убедившись, что перед перезагрузкой USB-кабель между MCU и микрокомпьютером отсутствует.

После загрузки «апельсинки» убеждаемся в том, что Octoprint работает и подключается к принтеру.