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

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

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

В данной статье рассмотрим подробности настройки мозгов принтера на базе 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

65

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



19 комментариев на «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
  9. Попробовал Klipper, честно сказать виден прирост качества. Есть небольшие недостатки, которые решаются наличием хотя бы маленького бубна.
    Для себя решил оставаться на этой прошивке. Но пока не тестил на длительных печатях, хотя бы 5 часов.

    Принтер:
    Была Firmware: Repetier 0.92.9
    Board: Arduino Due (arm) + Ramps 1.4 (modified) + Fan Extender (4 chanel).
    Print server: OrangePI Zero with OctoPrint.

    0

Добавить комментарий




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