HyperCube Evolution. ч2. Мозги [Klipper]

Добавлено в закладки: 3

Здравствуй читатель!

В данной статье рассмотрим подробности настройки мозгов принтера на базе Klipper, проведем сравнение с Marlin4Kimbra, все это установлено и испытано на строящемся принтере HyperCube Evolution. Что за Клиппер – смотрим в ч.1.

 

Исходные данные:

Электроника : Ramps 1.4 (подрезан для совместимости с Due), Arduino Due, Orange Pi Lite, драйвера DRV8825 с дроблением 32

Механика:  рама HyperCube Evolution относится к семейству CoreXY

 

Для установки нам понадобится флешка microSD не менее 4Гб, желательно с хорошей скоростью записи/чтения, так как это напрямую будет влиять на скорость загрузки системы.

Пошаговая инструкция подойдет для установки на плату типа Raspberry Pi, Odroid, Orange Pi и подобные. Для установки на ПК, ноутбук или планшет под управлением Linux шаг №1-5 пропускаем, так как линукс уже имеется и его устанавливать не надо. Теоретически можно установить и на Windows, однако понадобится волшебный бубен и некоторые знания, что выходит за рамки данной статьи.

HyperCube Evolution. ч2. Мозги [Klipper]

 

1.Подготовка линукс-дистрибутива

Скачиваем дистрибутив Linux для нашего компьютера, я рекомендую Armbian, ищем там свою плату и скачиваем серверный вариант Ubuntu либо Debian. Серверный – так как он потребляет меньше всего памяти и системных ресурсов, не имеет графической оболочки. https://www.armbian.com/download/

Записываем образ на флешку с помощью Etcher https://www.etcher.io/

HyperCube Evolution. ч2. Мозги [Klipper]

 

2.Подключение

Теперь нужно вставить флешку в наш мини-пк и подключиться к консоли. Есть несколько способов как подключиться к консоли: если есть переходник USB-RS232 т.е. на ком-порт, то можно подключиться непосредственно к ком-порту на плате, если с этим возникают трудности или нету переходника, то подключаем USB клавиатуру и монитор. Я использовал способ подключения к ком-порту. Нужно найти на плате ком-порт, ножки GND, TX, RX и подключить к ним переходник. Внимание! Так как мини-пк чаще всего имеет 3.3В логику, то нужно использовать соответствующий переходник с переключателем на 3В, переходники с 5В логикой могут вывести мини-пк из строя. Так же для подключения я использую Windows и программу Putty http://www.putty.org

HyperCube Evolution. ч2. Мозги [Klipper]

После подключения видим вот это:

HyperCube Evolution. ч2. Мозги [Klipper]

 

3.Первый логин

Если все прошло успешно, мы видим окно логина, пишем root и пароль 1234. Дальше система попросит нас придумать новое имя пользователя, пароль, нужно будет перегрузиться (пишем в консоли sudo reboot) и залогиниться с новым именем пользователя. После этого выполняем стандартные процедуры обновления линукса

sudo apt-get update && sudo apt-get upgrade

 

4.Настройка WiFi

Чтобы дальше работать с мини-пк удаленно, предполагается, что он имеет встроенный модуль WiFi, либо другое подключение к сети. В моем случае (Orange Pi Lite) модуль  WiFi встроенный, настроим его. В консоли пишем команду в консоли sudo nmtui и настраиваем сеть.HyperCube Evolution. ч2. Мозги [Klipper]

Если встроенный модуль WiFi (как в моем случае) работает плохо и есть желание пустить сеть через внешний USB-WiFi адаптер, внутренний модуль лучше отключить. Перегружаемся чтобы убедиться что все работает как надо и за одно запишем ip-адрес нашего мини-пк, чтобы в дальнешем подключаться удаленно.

Для отключения внутреннего вай-фай модуля во время загрузки, нужно выполнить команду

sudo nano /etc/rc.local В конец файла, перед exit 0 вставляем строчку sudo ifconfig wlan0 down Жмем ctrl+X, потом энтер. Изменения сохранили, теперь ребут, чтобы проверить как все работает sudo reboot

[свернуть]

HyperCube Evolution. ч2. Мозги [Klipper]

Для подключения по IP используем все тот же Putty:

HyperCube Evolution. ч2. Мозги [Klipper]

 

5. Установка Octoprint. Процедура установки полностью идентична официальному реководству. Ставить будем из исходников.

cd ~
sudo apt-get update
sudo apt-get install python-pip python-dev python-setuptools python-virtualenv  virtualenv git libyaml-dev build-essential
git clone https://github.com/foosel/OctoPrint.git
cd OctoPrint
virtualenv venv
./venv/bin/pip install pip --upgrade
./venv/bin/python setup.py install
mkdir ~/.octoprint
sudo usermod -a -G tty [your_username]
sudo usermod -a -G dialout [your_username]
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 везде меняем на нашего user_name, с которого мы создавали ранее и которым мы логинимся.

Запускаем сервис Октопринта

sudo service octoprint restart

Чтобы Октопринт открывался напрямую в строке браузера по нашему айпи, нужно установить прокси, которая будет перенаправлять запросы с порта 80 на локальный порт, который занят Октопринтом.

sudo apt-get install haproxy

Редактируем файл настроек прокси, открываем дефолтный конфиг и меняем на содержимое под спойлером

sudo nano /etc/haproxy/haproxy.cfg

Файл настройки прокси, при копировании и вставке соблюдайте все пробелы и форматирование, иначе посыпятся ошибки:

global
        maxconn 4096
        user haproxy
        group haproxy
        daemon
        log 127.0.0.1 local0 debug

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option redispatch
        option http-server-close
        option forwardfor
        maxconn 2000
        timeout connect 5s
        timeout client  15min
        timeout server  15min

frontend public
        bind :::80 v4v6
        use_backend webcam if { path_beg /webcam/ }
        default_backend octoprint

backend octoprint
        reqrep ^([^\ :]*)\ /(.*)     \1\ /\2
        option forwardfor
        server octoprint1 127.0.0.1:5000

backend webcam
        reqrep ^([^\ :]*)\ /webcam/(.*)     \1\ /\2
        server webcam1  127.0.0.1:8080

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

sudo service octoprint restart
sudo service haproxy restart

Более детальное описание установки и настройки Octoprint здесь https://github.com/foosel/OctoPrint/wiki/Setup-on-a-Raspberry-Pi-running-Raspbian

К сожалению, на 3дешнике пока что нет универсальной статьи-перевода по установке Октопринта (напишите в комментариях, есть ли трудности с установкой Октопринта и нужна ли для этого отдельная статья).

 

6. После того как Octoprint настроен и запущен. Устанавливаем Klipper.

cd ~
git clone https://github.com/KevinOConnor/klipper
./klipper/scripts/install-octopi.sh
cd ~/klipper/
make menuconfig
make
sudo service klipper stop
make flash FLASH_DEVICE=/dev/ttyACM0
sudo service klipper start

Если после команды make есть сообщения с ошибками и там есть arm-none-eabi-gcc, значит нужно доустановить нужный пакет.

sudo apt-get install gcc-arm-none-eabi

Сообщение об успешной прошивке микроконтроллера должно выглядеть примерно так:

HyperCube Evolution. ч2. Мозги [Klipper]

Далее правим конфигурационный файл. Пример с возможными настройками можно посмотреть здесь https://github.com/KevinOConnor/klipper/blob/master/config/example.cfg там же есть примеры настройки под разные кинематики. Если не спешить, а внимательно читать пояснения к каждой строчке образцового конфига, вопросов, что к чему и почему, возникнуть не должно.

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

Если Вы не знаете к каким пинам что подключено – идем на хитрость: нужно скачать прошивку марлина (или открыть папку с прошивкой которой Вы пользовались раньше) и там среди кучи есть файл Boards.h в нем ищем номер своей платы ( в моем случаем BOARD_RAMPS_SMART_HFB 1411), теперь идем в папку src/boards/ в Марлине и открываем файл с найденным номером 1411.h и используем его как справочник, чтобы узнать куда что подключено.

Примечание, чтобы инвертировать вход (нужно для нормально замкнутых/разомкнутых концевых выключателей) нужно использовать запись вида ^!ar50, для обычного входа используем запись типа ^ar50.

Сохраняем файл конфигурации. После каждой правки нужно перезапускать Клиппер, можно это делать как перезапуская сервис с Клиппером ( sudo service klipper restart ) так и выполняя команду RESTART  в Октопринте. Чтобы посмотреть ошибки в конфигурации пишем в Октопринте команду RESTART , а потом STATUS.

 

7. Подключаем Клиппер к Октопринту.

Открываем веб-страничку с Октопринтом, идем в настройки, выбираем вкладку Serial connection. Там прокручиваем вниз и в окошке “Additional serial ports” добавляем /tmp/printer Сохраняем. Опять идем туда же в настройки и снимаем галочку с “Not only cancel ongoing prints but also disconnect…” На главной страничке Октопринта (следует обновить страничку) на вкладке Connection нужно “Serial Port” поменять на “/tmp/printer” и нажать “Connect”.

HyperCube Evolution. ч2. Мозги [Klipper]

Если все хорошо, но принтер пока еще не настроен или настроен не правильно, у нас должно быть нечто такое (самое простое свидетельство того что Клиппер работает, но что-то не так с настройкой микроконтроллера или связью, то что в ответ на запрос температуры у нас нули):

HyperCube Evolution. ч2. Мозги [Klipper]

Теперь остается только подправить конфигурацию принтера, сделать RESTART и можно печатать.

 

Сравнение качества и скорости печати Клиппера и Marlin Kimbra Mk4Due

Хочу отметить, что я использую 32-битную Arduino Due, которая имеет ОЗУ 96 KБ, частоту ядра 84 МГц  этого вполне достаточно для вполне комфортной работы Марлина, поэтому разница в отпечатках не такая большая, как я предполагал. Если же сравнивать работу Клиппера и Марлина на 8-битной Меге (8 Кб ОЗУ, 16 МГц ядро) разница будет более явной с ростом качества на Клиппере.

Условия эксперимента: один и тот же g-код для обоих прошивок, ускорение в обоих прошивках 2000, все остальные параметры по-умолчанию, сопло 0.6, без ретракта (так что видны прыщи местами). Пластик самый дешевый АБС гаражного разлива. Печать была одним заходом, в следующем порядке: Клиппер – космодесант, прошивка на Марлин – космодесант, жаба, бульбазавр, прошивка на Клиппер – бульбазавр, жаба. При снятии модели космодесанта я вероятно нарушил симметрию стола и ось Z стало закусывать, но это не точно, так как предыдущий тест (сразу после Марлина я напечатал кубик на Клиппере в ч.1) тоже показал, что Клиппер на моем принтере выдает более гладкие стенки, без полосатости.

Космодесант печатался с обдувом 90% и с поддержками, скорость 15-один слой периметра, 25- на все остальное. Толщина слоя 0.1. Время печати Клиппера и Марлина одинаково.

Бульбазавр с обдувом 100% скорость печати 50-периметр, 100- все остальное. Толщина слоя 0.2. Марлин справился на 8 минут быстрее (итоговое время примерно 1 час)

Жаба – без обдува, скорость печати 25-периметр, 50- все остальное. Толщина слоя 0.1 Марлин справился на 6 минут быстрее. (итоговое время примерно 1.5 часа)

HyperCube Evolution. ч2. Мозги [Klipper]

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

 

Плюсы прошивки Marlin Kimbra Mk4Due:

  • Точность удержания температуры (с теми же PID, что и в Клиппере) составила +/- 0.5 градусов для хотенда и 0.1 градусов для стола (я немного изменил алгоритм PID для стола). Я считаю что PID в Клиппере стоит доработать, так как разброс температуры составил для Клиппера +/- 1.5 градусов для хотенда и +/- 0.1 для стола.
  • Точность парковки (но как говорится: это не точно), визуально реакция на срабатывание концевика более резкая, отличия в том, как ложится первый слой 0.25 в сравнении с Клиппером я не заметил, так что этот плюс довольно спорный.
  • Дополнительные плюшки, которые не сложно реализовать в Клиппере, но они уже есть в Марлине, как-то очередность парковки осей, выбор коэффициента соотношения вклада моторов XY для кинематики CoreXY, возможность использовать для одной оси два ограничивающих концевика, по одному с каждой стороны, возможность регулировки скорости печати и подачи пластика на ходу, возможность изменять параметры прошивки (ускорение, джерки, количество шагов на мм ) непосредственно из меню принтера на выносном дисплее без перепрошивки, и т.д. От себя добавлю что все эти плюшки важны если ваш принтер находится в состоянии вечного апгрейда, полностью настроенный аппарат в таких плюшках не нуждается. Но Клиппер развивается и будет обрастать дополнительным функционалом это 100%.

 

Плюсы Клиппера (здесь опишу только те плюсы, которые для меня были заметны после переезда с Марлина):

  • Due не зависает :D . Да, оказывается чтобы китайская Due работала с Марлином ей нужно либо перепрошить загрузчик, либо припаять резистор, иначе она часто зависает и включается только после последовательного включения/выключения питания. А еще под Марлином у меня Due висла намертво целых 3 раза, помогала только перепрошивка, Мега тоже висла намертво (т.е. не помогала кнопка ресет, сброс по питанию, ничего), но только один раз.
  • Для полноценной работы принтера не нужно к микроконтроллеру лепить дисплей, пишу это в плюс, так как для полноценной работы Марлина с его плюшками дисплей необходим, так что получается в некоторой степени экономия, которую можно потратить на покупку Orange Pi
  • Полностью разгружает микроконтроллер от вычислений и освобождает оперативную память, что особенно актуально для 8-битных контроллеров типа Atmega2560 и более слабых. Для мощных 32битных контроллеров этот выигрыш не так заметен.
  • Возможность дописать в код принтера свои модули, плагины, расширить функционал, при этом используя довольно простой язык программирования как Python.

 

Заключительный вывод

Переход на Клиппер, это скорее как очередной виток эволюции, на мини-пк уже нет жестких ограничений по вычислительной мощности, есть большее разнообразие применяемых языков программирования, так что Клиппер однозначный выбор для продвинутых гиков и тех кто любит ковыряться в коде. В дальнейшем Клиппер обрастет сообществом и качество, скорость печати будет только улучшаться. Так же рекомендовать Клиппер можно в том случае если Вы точно уверены, что вашему микроконтроллеру не хватает скорости для управления двигателями (это актуально для ШД с шагом 0.9 градусов, с драйверами TMC без интерполяции и установленным делителем 128), в противном случае прирост качества будет малозаметен, если будет в принципе. Гораздо большего прироста качества можно добиться улучшая механическую и электрическую часть вашего принтера.

Вот такой прирост в качестве получил я в качестве эксперимента заменив направляющие оси Z (12мм каленые валы с бронозожелезографитовыми втулками) на мебельные с шарикоподшипниками (все отпечатано Клиппером, размер модели 50% от оригинала, слой 0.06, скорость 30, АБС, обдув 100%)

HyperCube Evolution. ч2. Мозги [Klipper]

Если Вам понравились статьи о Клиппере, сказать спасибо автору можно на кошелек BTC 1KuhpySRwiSotHfi8cdSvuYbiA6u3aLnwP (Если не знаете как, просто скопируйте эту последовательность символов, это кошелек, и зайдите сюда, можете использовать удобную для Вас платежную систему для перевода). Буду рад также комментариям и конструктивной критике, старался подготовить материал трезво и не предвзято. Готовится для публикации еще одна статья по шаговым двигателям, уверен будет интересно и полезно, узнаем особенности работы драйверов, в т.ч. модных TMC2100, ваши спасибо значительно ускорят процесс написания (предыдущая статья здесь)

14.01.2018 Обновление.

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

cd ~/klipper/
sudo service klipper stop
git pull
make flash FLASH_DEVICE=/dev/ttyACM0
sudo service klipper start

Дополнительные ссылки

Использованные модели для теста:

Treefrog https://www.thingiverse.com/thing:18479

Pokemon Bulbasaur- Low Poly http://www.thingiverse.com/thing:1726679

Warhammer Space Marine  https://www.thingiverse.com/thing:906266

High-Poly Realistic Bulbasaur https://www.thingiverse.com/thing:1576163

60

Метки: , , , , , , , , ,    2017-12-14      Раздел: 3D печать, Прошивка, Секреты и лайфхаки 3D печати, Электроника  
Автор: Просмотров: 1 558   18 комментариев



18 комментариев на «HyperCube Evolution. ч2. Мозги [Klipper]»

  1. У меня с точностью до наоборот… но правда DUE ни на одной прошивке не зависает… есть видео… я его по скайпу уже некоторым паказывал… причина того, что вернулся обратно на MK4DUE… но сюда не загрузить его… а на ютуб только временно

    0
    1. Если бы Марлин показал лучший результат – меня бы это очень даже устроило, так как разбираться с чем-то новым всегда довольно затратно по времени и тяжело, особенно для таких ленивых как я)

      1
  2. StanislavI – А на первом фото это ВЫ?
    Стучание в бубен сильно помогает?
    *WALL* :D

    0
  3. За статью большое СПАСИБО. Понравилось.

    0
    1. И Вам спасибо) Хоть кому-то понравилось… хотя наверное после первой части заметно мое разочарование, не знаю чего я ждал) принтер хуже печатать не стал и заметить “лучше” можно только вглядываясь) в моем случае, да и в случае всех нормальных прошивок на 32-битных контроллерах программная часть явно работает уже на столько хорошо, что лучше – только если с микроскопом изучать. Получается что узкое место в качестве печати (для 32-битных систем) это жесткость корпуса, плавность хода подшипников, точность сборки т.е. механика.

      1
  4. Не понятно в чём собственно необходимость “клипера”?
    Вот на этих видео печать со скоростью до 200мм/сек и с нормальным качеством
    https://www.youtube.com/watch?v=unbSwHOThZA
    https://www.youtube.com/watch?v=8MN9oRk2B4M

    0
    1. Дело в том, что я уверен (пробовал) что на 32-битной Ардуине у меня не будет проблем с 200мм/сек. Но я не уверен, что так же легко эту планку возьмет 8-битная Ардуина с Марлином на борту (придется идти на разные ухищрения типа понижать делитель на драйвере). Второй очень важный момент, что в случае с Клиппером, каждый микрошаг выполняется в четко обусловленное время, собственно только этим ардуина и занимается, поэтому в паре с Клиппером 8-битная ардуина ведет себя как 32-битная по производительности. Если брать 32-битную плату, то тут конечно причин переезжать на Клиппер меньше и они не на столько весомые, так как мы редко приближаемся к лимитам по производительности и вычислительной мощности для 32-битных плат.

      1
  5. Огромное спасибо за Ваши статьи. Благодаря им решился на переход с обычной печати на Октопринт. Опыта работы с такими устройствами ноль. Но все таки у меня получилось запустить октопринт на Расбери3. Клиппер установил, но опыта настройки пока не хватает. Принтер Геркулес маленький. Мега+Рампс. Прошивка марлин 1.1.0. rc3. Буду признателен за помощь в настройке и запуске. В случае успешного запуска вознаграждение гарантирую *OK* .

    0
    1. Открывайте ветку на форуме с описанием проблемы, а сюда в комментариях вставьте ссылку чтобы кто-то с похожей проблемой мог из статьи перейти на форум.

      0
      1. Создал тему по Клипперу на форуме. Очень рассчитываю на помощь.

        0
  6. Хорошая статья! Хотелось бы теперь подробное описание конфигурационного файла для принтера. Хотя бы такой же как на marlin.

    0
    1. Ветка на форуме с обсуждением проблем при настройке Клиппера. https://3deshnik.ru/forum/viewtopic.php?f=5&t=625

      0
      1. Спасибо, статья понравилась. Есть вопрос:
        “Вот такой прирост в качестве получил я в качестве эксперимента заменив направляющие оси Z (12мм каленые валы с бронозожелезографитовыми втулками) на мебельные с шарикоподшипниками”
        Не понял вы валы заменили на мебельные рельсы для ящиков стола?

        0
        1. :D да, но не простые а на подшипниках, сейчас уже вернулся на валы но по качеству мне кажется мебельные направляющие были не хуже а может и лучше

          0
  7. День добрый. С праздником. А если рассматривать вариант не оранж, а именно малинку. Какая модель подойдет больше всего?

    0
    1. Вас тоже с праздником ! Малина подойдет любая, нужно только обращать внимание что придется втыкать два USB устройства – ардуину и WiFi брелок, так что если USB только один, то надо будет расширять хабом. Чтобы с этим не заморачиваться то нужно брать модель Pi2 B или выше (PI 2 B+, PI 3)

      0
  8. Спасибо. Просто читал что оранж хоть и дешевле но бубен для нее нужен больше. Когда знаний особых пока нет + то что написал выше, чую будет бядааа и куча вопросов.

    0
    1. Да, по поводу апельсины много жалоб, у меня например встроенный вайфай не работает стабильно, пришлось втыкать внешний брелок. А в остальном с апельсиной проблем я не обнаружил.

      0

Комментарии запрещены.




     
Авторизация
*
*
Генерация пароля
Яндекс.Метрика