Технический форум по робототехнике.
alexxy » 29 окт 2017, 20:54
Как известно одна из популярных прошивок для 3D принтеров Marlin обзавелась поддержкой 32битных контроллеров на базе следующих чипов:
- AT91SAM3X8E (на базе Arduino Due) (например RAMPS-FD, RADDS)
- LPC176x (Всем известные девайсы на базе Smoothieboard) (работают ReARM, MKS Sbase, Azteeg X5 GT, AZSMZ mini)
- STM32F1
- Teensy 3.5/3.6 (они уже Cortex-M4 с FPU)
Предыстория: Товарижчь
setar подбросил мне плату
Azteeg X5 GT с драйверами
BigFoot BSD2660. В оригинале плата работала на Smoothiware, но мне хотелось попробовать Marlin на ней. Собственно дело оставалось за малым, добавить в Marlin поддержку этой платы. К плате прилагался дисплей Viki2.
На фото ниже, Marlin запущенный на Azteeg X5 GT с Viki2 (к принтеру пока не подключал, драйвера tmc2660 не удалось запустить, надо написать или найти библиотеку для них)
Что сейчас работает:
- Мапинг базовых пинов
- Эндстопы
- Грелки
- Сервы
- Термисторы
- Экран Viki2
- Драйверы (пробовал drv8825 и tmc2100)
Что не работает:
- Драйверы BSD2660 (нет библиотеки, надо написать)
- Ну и потенциально всё что не проверялось
![Wink ;)](http://roboforum.ru/images/smilies/wink.gif)
Как всё это было: вся проблема заключалась в том, что по этой борде нет нормальной спецификации с пинами, а предположение что все пины будут совпадать с тем что заявлено для Smoothieboard мягко говоря не оправдалось =). Так что пины искались методом реверс энжиниринга и научного тыка. Порт по сути делался не с нуля, а в качестве базы использовалось то, что было сделано уже для re-arm. Фотки и может пара видео этого дела будет в следующих постах.
Мой код поддержки Azteeg X5 GT смержили в основное дерево Marlin, так что берем бранч bugfix-2.0.x и пользуем
Базовая инструкция для сборки- Ставим platformio
- Клонируем основную репу марлина
- Код: Выделить всё • Развернуть
git clone https://github.com/MarlinFirmware/Marlin
- Переключаем бранч на bugfix-2.0.x
- Код: Выделить всё • Развернуть
git checkout -b bugfix-2.0.x origin/bugfix-2.0.x
- Конфигурим как обычно, выставляем нужные параметры для платы и тип платы
- Собираем
- Код: Выделить всё • Развернуть
pio run -e LPC1768
- В итоге получится файл firmware.bin (смотрим где он в выводе pio), копируем его на флешку, и перезапускаем плату
- Радуемся Marlin на 32битной борде
setar » 08 окт 2018, 09:08
M42 P26 S{PWM 0 -255}
// возможно пин как требуется P0_26 описывать - нужно проверить
http://marlinfw.org/docs/gcode/M042.html
ursus » 08 окт 2018, 11:53
Да спасибо, разобрался. Рулится такой командой М42 Р026 S...
UPD: Есть нюанс. В файле пинов нужно назначить пин 0.26 на серву 2(может быть на любую другую тоже заработает, не пробовал) #define SERVO2_PIN P0_26
И включить в конфиге поддержку серв вообще. #define NUM_SERVOS 3 и задать им всем делей #define SERVO_DELAY { 300, 300, 300 }. Иначе работать не будет. Может кому пригодится.
setar » 11 окт 2018, 11:15
очень даже пригодится
![Smile :)](http://roboforum.ru/images/smilies/smile.gif)
я сегодня вторую серву описывать буду (Bltouch + extruder switch), про зависимость от массива SERVO_DELAY я бы долго разбирался.
спасибо!
Strijar » 31 окт 2018, 12:22
Надо же, я как раз поменял на днях Marlin плату на MKS SBase и жалел, что для SBASE нет Marlin. Но потом обновил "смузю" на последнюю версию и она мне больше нравится чем Marlin. Печатает плавней на больших скоростях. Хотя я в Marlin через Cura настраивал ускорения и рывки, но смузя это делает оптимальней. Опять же в смузи код прозрачней - ковырять проще (;
Strijar » 02 ноя 2018, 12:03
Почитал исходники Marlin 2 и решил таки попробовать. Народ, как оно на SBASE - юзабильно уже? Стоит заморачиваться со сборкой под него? И есть какой нибудь "олдскульный" способ сборки под Linux без установки всяких IDE и проч? (toolchain под arm уже стоит)
Alexus12 » 02 ноя 2018, 16:31
Strijar писал(а):Почитал исходники Marlin 2 и решил таки попробовать. Народ, как оно на SBASE - юзабильно уже? Стоит заморачиваться со сборкой под него? И есть какой нибудь "олдскульный" способ сборки под Linux без установки всяких IDE и проч? (toolchain под arm уже стоит)
Я установил себе и не могу нарадоваться. Намного лучше Смузи, перешел потому что Смузи не все команды Гкода отрабатывает. Собирал через Платформио.
Есть правда один глючок, непонятный. При печати на экране скачет температура стола. То показывает заданную, то подскочит до 5-6 тысяч, то опять упадет. По факту вроде держит заданную ПИДом, но на экране такая вот фигня. Датчик менял. У экструдера все нормально, такой же датчик. Никто не сталкивался?
Strijar » 12 ноя 2018, 13:59
Да, я тоже уже собрал и поставил. Пока устраивает. Одно раздражает не сохранение настроек. Раньше эмулировал EEPROM в файле на SD, но я так понял что выпилили эту фичу. Надо будет заняться и вернуть. А то ради поправки z-offset пересобирать прошивку как-то напрягает.
Народ, а кто занимался портированием Marlin2 на Selena Compact? Я купил ее, жду драйвера ST820. Как приедут хотел бы перейти на нее. Какие-то конфиги уже лежат в исходниках - на каком оно там этапе? Можно скооперироваться и дожать.
setar » 13 ноя 2018, 18:49
селена работает, EEPROM сохраняется на флешке.
UBL Autolevel принципиально не выполнить без калибровки (пересборкой прошивки не выполняется) которая и сохраняется в EEPROM.
по селене могу дать конфиги.
Добавлено спустя 9 минут 5 секунд:кроме стандартного конфига из коробки
#define MOTHERBOARD BOARD_SELENA_COMPACT
я добавлял поддержку их же графического дисплея (конфигурировал как VIKI2), пришлось немного контакты поправить
Marlin/src/pins/pins_SELENA_COMPACT.h
- Код: Выделить всё • Развернуть
#endif // REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
+//Panel Selena 3.1.0
+#if ENABLED(VIKI2)
+ #undef DEFAULT_LCD_CONTRAST
+ #define DEFAULT_LCD_CONTRAST 200
+
+//# SPI сигналы аппаратные
+// #define SCK_PIN P0_15
+// #define MOSI_PIN P0_18
+
+//# SPI сигналы на панели
+// #define SCK_PIN P0_07
+// #define MISO_PIN P0_08
+// #define MOSI_PIN P0_09
+
+ #define DOGLCD_SCK P0_07
+ #define DOGLCD_MOSI P0_09
+
+ #define DOGLCD_A0 P1_01
+ #define DOGLCD_CS P1_00
+
+ #define BTN_EN1 P3_25
+ #define BTN_EN2 P3_26
+ #define BTN_ENC P1_30
+
+ #define SDSS P0_28
+ #define SD_DETECT_PIN P0_27
+
+ #define BEEPER_PIN P1_31
+#endif // VIKI2
Strijar » 14 ноя 2018, 12:56
селена работает, EEPROM сохраняется на флешке.
А какая версия? В последней из git нет даже пункта меню для сохранения.
И кстати, у меня тут Марлин2 перестал нормально печатать. Я просто экспериментировал с разными соплами и он вдруг стал дико перегревать экструдер. Я обычно печатаю на 235, а тут стал пластик закипать. Я уже снизил до 225 - и все равно не помогало. Стенки кривые, косые. Сдвигает слои. Я чего только не делал. Даже ремни нятягивал-ослаблял. И сопло поставил новое. Потом плюнул поставил "смузи" и оно все стало просто идеально. Так что пока на нем побуду.
UBL Autolevel принципиально не выполнить без калибровки (пересборкой прошивки не выполняется) которая и сохраняется в EEPROM.
Я автолевелом не пользуюсь. Стол выровнял и не трогаю. Иногда только z-offset поправляю когда сопла меняю.
setar » 14 ноя 2018, 13:14
все работает, поломок в последнее время не фиксировал (может перескочил через сбойные коммиты ?)
версия оригинальная
https://github.com/MarlinFirmware/Marlin.git ветка bugfix-2.0.x
Strijar » 14 ноя 2018, 16:24
все работает, поломок в последнее время не фиксировал (может перескочил через сбойные коммиты ?)
Да я как взял исходники так и не накатывал. Просто пересобирал изменяя конфиг. Сам не понимаю как оно случилось.
Ну да, ее и использую. Но все таки мне кажется что "смузи" лучше управляет движками. Может частота больше или еще что. Токи у меня одинаковые выставлены что в "смузи", что в Марлин. Но при этом "смузи" работает значительно тише и как-то четче. Хочу поковырять "смузи" под Селену. Убрать поддержку сети (web, ethernet, telnet) и прикрутить Micropython (;
pamalofeev » 24 ноя 2018, 11:23
Strijar писал(а): Но при этом "смузи" работает значительно тише и как-то четче.
Потому, что там другая математика. Марлин так и остался на старых добрых джерках, смузи, а вслед за ней и клиппер, используют
junction_deviation. Если интересны подробности, можно там
https://onehossshay.wordpress.com/2011/09/24/improving_grbl_cornering_algorithm/ почитать.
setar » 26 ноя 2018, 18:32
Смузи хороша математикой, да.
Но для серьезных проектов не подходит.
Там много чего нету, взять тот же функционал автоуровня UBL:
криволинейная матрица поверхности, что очень нужно, ибо почти всегда стол представляет из себя закрученную винтом поверхность.
Это особенно начинает чувствоваться при размерах 400x400 и больше.
всякие миксеры для использования DiamondHead, переключаемые экструдеры (один мотор/два сопла),
паркуемые экструдеры.
Я уже не говорю про prusa mmu2 (переключатель цвета прутка)
Strijar » 27 ноя 2018, 11:44
Марлин так и остался на старых добрых джерках, смузи, а вслед за ней и клиппер, используют junction_deviation
Да, конечно же я все это уже понял и даже посмотрел как это реализовано (;
Я пару недель назад столкнулся с тем что Марлин перестал нормально печатать. Я решил попробовать поменять сопло и началось. То не липнет к столу, то пластик начинает кипеть (хотя параметры термистора и температура та-же!), когда начал печатать качество резко упало - стенки кривые, углы завалены итд итп. Я уже и ремни натянул, потом ослабил. Ничего не помогало. Плюнул, запустил под Смузи - и все стало просто идеально!
Там много чего нету, взять тот же функционал автоуровня UBL:
криволинейная матрица поверхности, что очень нужно, ибо почти всегда стол представляет из себя закрученную винтом поверхность.
Я автоуровнем не пользуюсь. Хотя индуктивный датчик был на голове, чтобы печатать на стекле я его перенес на раму. Со стеклом проблем кривизны стола нет. Хотя может это пока стол 220х220. Вот сделаю следующий ~350-400мм тогда посмотрю. Тут родилась безумная идея - приклеить силиконовую грелку прямо на 6мм стекло (;
OBN_RacerMan » 27 ноя 2018, 14:24
Strijar писал(а):Тут родилась безумная идея - приклеить силиконовую грелку прямо на 6мм стекло (;
Стекло обязательно должно быть закалённым... иначе либо стол будет вынужден греться пол-часа, либо лопнет от быстрого нагрева.
P.S. Думаю, можно попробовать использовать для эксперимента плоское закалённое автостекло, например, опускное с задней двери "классики" 2105.