Мой опыт прошивки Marlin 2 на Skr E3 DIP с драйверами 2208 UART.

DenisFox
Идет загрузка
Загрузка
09.10.2019
827
44
печатает на Ender 3 Pro
Личные дневники

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

1

Доброго времени суток.

Купил я пару недель назад Ender 3 Pro и сразу заказал к нему skr E3 DIP с драйверами 2208 UART в комплекте.

После установки столкнулся с проблемой что последний офф марлин работает некорректно на плате от skr.

Собрал сборку офф марлина почти без проблем и прошивается тоже хорошо ......

НО чтобы я не пробовал всегда была ошибка "tmc connection error" и что самое печальное - неверное количество шагов моторов.

Шаги моторов были увеличены в 2 раза

Если я хотел передвинуть какую либо ось на 10 мм , то она обязательно поедет на 20 мм. (Так чуть не упёрся в раму пару раз).

Хотя прошивка от BigTree компилировалась достаточно хорошо , проблем с шагами не было и TMC ошибки тоже , но мне хочется прошивку посвежее.

В течении 2 дней прогуглил всё возможное , пока не решил сравнить прошивку от BigTree и новую от марлин.

В итоге мой интерес пал на то как работает TMCStepper в обоих случаях (тот который рекомендует BigTree и тот что используется марлине).

Поиски привели меня к тому что в том драйвере , который использует marlin  , надо во время компиляции определить дополнительный параметр в ручную - TMC_SERIAL_SWITCH , так как сам он почему-то не дефайнился. 

А драйвера от БольшогоДерева по дефолту дефайнят всё сами.

(Я так и не понял почему . Но марлин чётко знает что использовать когда мы выбирает драйвера с UART.)

В обшем решил эти проблемы просто добавив дополнительный аргумент (флаг) для компиляции : -DTMC_SERIAL_SWITCH

Файл - platformio.ini

[env:STM32F103RC_bigtree]

...........

build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py ${common.build_flags} -DDEBUG_LEVEL=0 -std=gnu++14

-DHAVE_SW_SERIAL

-DTMC_SERIAL_SWITCH

..............

Также на всякий случай указал что пусть марлин использует последний билд TMCStepper.

Было -  TMCStepper@>=0.5.0<1.0.0

Стало - TMCStepper=https://github.com/teemuatlut/TMCStepper/archive/master.zip

Я до сих пор не знаю на сколько это корректное решение , но у меня печатает теперь корректно и практический без проблем.

Подпишитесь на автора

Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

Отписаться от уведомлений вы всегда сможете в профиле автора.

1
Комментарии к статье

Комментарии

09.10.2019 в 15:37
0

На гитхабе бигтри написано что делать в прошивке чтобы решить данную проблему, и ещё парочку с драйверами ТМС. Исправляется одной строчкой в файле ino, как раз заменой ссылки на либу тмсстеппер (от бигтри), и всё

09.10.2019 в 15:48
0

Если было бы так просто , то и проблем небыло бы )

Но вот ошибка в компиляции уже не позволяет просто подставить драйвер от BigTree.

Ванильный Марлин убежал вперёд и простот так драйвер когдато форкнутый БольшимДеревом уже не работает в ной версии марлина.

Марлину требуется версия 0.5.0+.


UPD: Китайцы обновили драйвер по китайский , просто переписав номер версии https://github.com/bigtreetech/TMCStepper/commit/58c47ee52fc65251637dfecc5b17de50caccde48

10.10.2019 в 11:41
0

Вот вам ссылка на мою прошивку для этой платы Прошивка

Единственное, нужно будет поменять тип термистора с 5 на 1, а также количество шагов экструдера (у меня директ). 

Да, ещё из настроек принтера с экрана не запоминаются настройки, то есть они применяются, но после выключения принтера сбрасываются. 

Ну или просто для ознакомления поковыряйте. 

09.10.2019 в 20:08
0

А я вчера победил прошивку, точнее сегодня утром :) Сегодня дотестю. Возможно отпишусь сюда. Эти драйвера от китайцев были актуальны, когда основную поддержку tmc еще не пульнули в основной билд Марлин. Сейчас нет в этом необходимости, т.к. оно само подтягивается.


Вы прежде чем себе компилировать, посмотрите сначала на контроллер. Он может быть банально RET6 а не RC. Были оба вариант. Последний присылают с RE и менять надо в platformio.ini на другие значения. 

Компиляция сегодня была, проблем не вызывала. А то что TMC Error, возможно драйвера у вас не в режиме UART, как и перемычка.


upd. Информация написана частично для автора и частично для тех кто это будет читать. Компилировал себе на вчерашних исходниках подогнав конфиг под блтач и эндер 3 стандарт

09.10.2019 в 20:32
0

Скомпилировать сложности не вызывает.

Сложности могут быть потом , когда принтером пользоваться начинаешь )))

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

Но у меня по-другому не работает принтер , возможно это надо только для skr 2208 UART v3 (такие у меня сейчас). Перемычка запаяна с завода резистором , а также джамперы стоят так как разработчик указал на схеме платы.

Такие же проблемы и у других пользователей - https://github.com/bigtreetech/BIGTREETECH-SKR-E3-DIP-V1.0/issues/31

09.10.2019 в 23:24
0

Посмотрите еще раз свои драйвера. Перемычка в нижнем положении стоит? И на плате перемычки должны стоять как с картинки

09.10.2019 в 23:41
0

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


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

Надо бы попробовать прозвонить перемычки , но думаю что там качество пайки не так важно.


09.10.2019 в 23:48
0

Посмотрел что у меня STM32F103RET6 , и это не может не радовать , так как по даташиту она немного вместительнее. Судя по тому что Marlin это уже решил , (https://github.com/MarlinFirmware/Marlin/blob/e6055dce76d19b3851138e71bed28f6b146e68b2/Marlin/src/pins/stm32/pins_BIGTREE_SKR_E3_DIP.h#L36) то остаётся  только при компиляции задать параметр что это STM32F103RE (-DMCU_STM32F103RE)


Если сравнить то всеголиш разница в "Объем памяти программ" и "Объем RAM"

10.10.2019 в 00:36
0

Я лишь поправил строку у себя в DIP секции под нашу плату

board = genericSTM32F103RE

10.10.2019 в 01:04
0

Это намного проше чем я сделал .... что я сразу не подумал об этом.
Я пошёл более сложным путём и создал новый профиль в platformio.ini.

Ваш метод мне больше понравился :)

10.10.2019 в 01:06
0

А вы прошивались через USB или через карточку?
Я так понял там чтото ешё вроде с бутлоадером надо сделать.

10.10.2019 в 01:07
0

Шьюсь через карточку. Попробовал про TMC ERROR посмотреть что выше советовали с доп флагами компиляции, и теперь у меня просто пищит бузер  с голым экраном.

10.10.2019 в 01:14
0

Была такаяже проблема когда я оставил только -DHAVE_SW_SERIAL без TMC

10.10.2019 в 01:16
0

Теперь еще больше вопросов относительно работы UART на E3 DIP. Пробовал с двумя флагами - бузер пищит. Пробовал только SW_SERIAL, получаю TMC ERROR. По схеме даже не понимаю что с распиновкой на плате.

10.10.2019 в 12:30
0

если запитано от USB то будет TMC ERROR.

Необходимо запитывать от БП всю плату.

10.10.2019 в 13:02
0

С этим понятно конечно. Питаю от лабораторного блока на 24В. Где-то ошибка в моей конфигурации чистого Марлина.

10.10.2019 в 12:29
0

а как шиться через USB, а то у меня защелка микроСД не фиксируется?

10.10.2019 в 01:33
0

На сколько я понял это касается UART-a



10.10.2019 в 01:36
0

А может знаете, что за прошивки на гитхабе скр для 2208?

firmware_tmc2208_chip_on_bottom типа такой.

10.10.2019 в 01:49
0

Посути если взять у них из гитхаба и скомпилить билд с TMC2208 в конвифиге

то получится firmware_tmc2208_chip_on_bottom

Как они получили firmware_tmc2208_chip_on_top я не знаю .

Там по дефолту стоит 2130 и SPI задефайнен , видимо они подготовили универсальную прошивку.

10.10.2019 в 01:50
0

top - Были такие версии драйверов. 1 или 2х. на 3.0 они снизу.

10.10.2019 в 02:03
0

После пару десятков перепрошивок , у меня заработал только такой setup:

[env:STM32F103RC_bigtree_custom]

platform = ststm32

framework = arduino

#board = genericSTM32F103RC

board = genericSTM32F103RE

platform_packages = tool-stm32duino

extra_scripts = buildroot/share/PlatformIO/scripts/STM32F103RC_SKR_MINI.py

build_flags = !python Marlin/src/HAL/HAL_STM32F1/build_flags.py

  ${common.build_flags}

  -DDEBUG_LEVEL=0

  -std=gnu++14

  -DHAVE_SW_SERIAL

  -DTMC_SERIAL_SWITCH

build_unflags = -std=gnu++11

lib_deps =

  ${common.lib_deps}

  SoftwareSerialM=https://github.com/FYSETC/SoftwareSerialM/archive/master.zip


lib_ignore = Adafruit NeoPixel, SPI

src_filter = ${common.default_src_filter} +

monitor_speed = 115200

upload_protocol = stlink

debug_tool = stlink

10.10.2019 в 02:10
0

А драйвера BTT или FYSE?

Потому как вижу https://github.com/FYSETC/SoftwareSerialM/archive/master.zip 

10.10.2019 в 02:18
0

Я прошел десятки тем на гитхабе и уже забыл почему поставил SoftwareSerialM.

Вроде TMCStepper нуждается в SoftwareSerial а марлин его не предоставляет или я уже просто запутался во всём этом)))

Но драйвера у меня те что на фотографии , тоесть BTT.


10.10.2019 в 02:40
0

Не осилил я. Поставил все 1 в 1, и фиг. Теперь ловлю TMC ERROR ) Файлы все те же, марлин багфикс последний.

10.10.2019 в 12:05
0

Я думаю возму чистую и свежую версию марлинаи попробую с ней разные варианты.
Заметил что порой PatformIO зачемто пихает библиотеки которые в папке с зависимостями , хотя они указаны как неиспользуемые.

Случилось так что я скопилировал и залил прошивку , а она не встала (синий экран и всё)
Почистил полностью папку .pio в ручную и после компиляции успешно заработала прошивка.

В итоге теперь я перед копиляцией удаляю все скаченые библиотеки и собираю проект каждый раз скачивая заново их)


10.10.2019 в 09:33
0

Подскажите по TMC2208  - в настройках в Марлине по Х и У количество шагов выставлять 1/256 ??

#define DEFAULT_AXIS_STEPS_PER_UNIT {1280, 1280, ??      

10.10.2019 в 11:58
0

А для какого принтера?

Если я вас правильно понял , то:

Эндер 3 - по дефолту #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 }

Если включена интерполяция то TMC2208 сам должен дробить шаг на 256.

10.10.2019 в 12:06
0

У меня плата SKR V1.3 едут драйвера 2209.  

Вот у меня и возник вопрос  - прописывать шаги из расчета 1/16.  или из расчета интерполяции 1/256 ?? 

10.10.2019 в 12:34
0

Это спорная тема. Кто-то считает, что можно лупить 1/256, а кто-то считает, что механника такой точности все-равно не даст и нет смысла грузить CPU этими 1/256. Достаточно 1/16 а сам драйвер пусть интерполирует до 1/256

10.10.2019 в 13:28
1

У меня была 1.3 с 2208. Работало по UART с перемычкой. В настройках Марлин было так

#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 93 }

#define DEFAULT_MAX_FEEDRATE { 500, 500, 5, 25 }

10.10.2019 в 14:57
0

Спасибо!  А почему работало ?   Что то в 2208 не понравилось ?  На что поменяли? 

10.10.2019 в 15:21
0

Все отлично работало. Просто эксперименты теперь с SKR E3 DIP.

10.10.2019 в 15:32
0

А мне едет SKR PRO.  V1.3  маловата оказалась. Не хватает независимых драйверов на Z, на два мотора. 

11.10.2019 в 01:52
0

2 мотора - это проблемы. По умному реализация лучше, когда они между собой завязаны одним ремнем. Иначе вы задолбаетесь калибровать потом оси между собой. Достаточно на одну надавить и перекос.

11.10.2019 в 05:21
0

когда грамотно сделано, даже 3 мотора это не проблема, это фича )


1) 1го мотора может не хватить на тяжелый стол/портал. хотя на сток эндере прекрасно хватает 1го мотора в сочетании с п.2. но вдруг он туда лазер или вообще шпиндель цеплять собрался )


2) можно винты объединить кольцевым ремнем, 2 мотора не мешают, см. п.1


3) если есть кол-во концевиков равное кол-ву моторов, марлин умеет автовыравнивание.


4) если есть автоуровень, марлин умеет еще более умное автовыравнивание


11.10.2019 в 09:41
0

Вот поэтому и заказана SKR PRO, будет два независимых драйвера и два оптических концевика по Z. 

BL-Touch уже есть и работает на SKR V1.3. 

На SKR V1.3 два мотора запараллелены и перекос присутствует просто по движению по Z при парковке. Хотя моторы одинаковы и развесовка стола 50/50 на обе оси равномерна. 

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

10.10.2019 в 15:53
0

А интересно , есть ли смысл для ендара 3 чтото выше чем skr mini или skr dip .

Skr Pro, гигантская по сравнению с другими платами и походу для неё уже нужно принтер свой собирать.

Да и стоймость как 1/3 ендера )))))

10.10.2019 в 20:14
0

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

Для сборки нужны:

Visual Studio Code/Atom + Platformio-ide + TMC либа.

Причем под плату с RET6 адаптировал, т.к. под RC не было необходимости.

E3 DIP + TMC2208 

10.10.2019 в 20:19
0

А я почемуто думал что у вас она сразу заработата без особых проблем?

Причем под плату с RET6 адаптировал, т.к. под RC не было необходимости.

А это board = genericSTM32F103RE или там чтото ешё нужно?




10.10.2019 в 21:14
0

RE - присылают сейчас, RC не видел пока что у кого-либо. Поменял все файлики + добавил пару скриптов (не своих).

10.10.2019 в 21:34
0

А можно посмотреть на ваши изменения которые вы внесли в прошивку для RE?

11.10.2019 в 01:03
0

Да теперь конечно. Это полноценная сборка Marlin под работу с 2208 с UART, 3DTouch. Ее можно смело компилировать под себя, предварительно поправив конфиги. За полноценную версию марлина с правками благодарность b4tman.

Файл марлина актуального - тут

Концевик автоуровня подключать к штатному разъему. Возле сервы я не реализовал, т.к. уже лениво было. На картинке китайцев, распиновка servo неверная. +5 и GND между собой спутаны. 


Для датчика уже настроены оффсеты по осям, кроме Z (это надо под себя самому). Моделька используется эта.

15.10.2019 в 21:46
0

Спасибо за прошивку, завтра попробую.

Для написания комментариев, пожалуйста, авторизуйтесь.

Читайте в блогах

Кнопка а/м 2110

-3DP-BCoreXY- широкоформатный принтер под тяжелую печать. Портал. Хотенд/экструдер

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

Подавалка припоя.

Продолжаем печать. Крым в Миниатюре. Мелочевка.

Почти случайно получилось