32 бита от BIGTREETECH - казнить нельзя помиловать?

Vladik
Идет загрузка
Загрузка
18.01.2019
8407
29
Техничка

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

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

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

24
Не так давно мой подвальный трудяга Мега стал иногда саботировать задания, заставляя замирать сопло на несколько секунд, а то и минут. И если вначале спасала перезагрузка Mk4Duo, то сейчас это уже не помогает. Логи Octoprint показали, что причина кроется в длительном отсутствии ответа от Меги на команду.

Дилемму, то ли контакты спиртом почистить, то ли поменять плату контроллера, доминирующая трезвость решила в пользу второго варианта, и были приобретены клон Re-Arm с RAMPS 1.6Plus и SKR v1.1 от BIGTREETECH, ну и заодно драйвера TMC2130.

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

На мой взгляд, исчерпывающая информация о каждой плате содержится на её странице в магазине, по крайней мере, мне её оказалось достаточно. Поэтому я не стал (ну почти не стал) дублировать картинки оттуда, а просто добавил ссылки в заголовки.

Кроме того, здесь, на сайте, есть две отличные статьи. Про установку Marlin 2.0 на Re-Arm и настройку TMC2130. Повторять из них информацию в своей статье я тоже не буду.

К сожалению, с качеством изготовления не всё хорошо. Олова у производителя, кажется, много, а вот со временем - не очень. Поэтому платы, Re-Arm и RAMPS 1.6Plus, выглядели как ожерелья из оловянных бусинок висящих на выводах - это я так попытался холодную пайку описать. Результат не заставил себя ждать, контакт между кнопкой энкодера и ножкой микроконтроллера отсутствовал. Пришлось паять, тратя своё время, заодно пропаял и все остальные ножки. Но без профита я тоже не остался, у меня теперь есть припой, которого хватит на пару таких плат.

SKR v1.1 на их фоне выглядит образцово, у неё не только всё хорошо с пайкой, но она ещё и была отмыта от флюса. К драйверам претензий у меня тоже нет.

Теперь несколько поподробнее о платах.

SKR v1.1
Плата в целом мне понравилась. Да, она достаточно минималистична в плане выведенных контактов. Разгуляться с большим количеством периферии здесь не удастся. Но как плата начального уровня - очень достойный вариант. SPI для драйверов на плате не разведён, и я включал плату только с A4988.

Что касается разъемов EXP1 и EXP2. Если их воспринимать как интерфейс для плат репраповских дисплеев, то да, проблема есть. Но если на эти разъёмы посмотреть, как на два независимых, и только внешне похожих на репраповский интерфейс, то всё могло бы встать на свои места, если бы не контакт кнопки, разлученный с остальными контактами энкодера.

Я не пытаюсь оправдать производителя с его странной разводкой этих двух разъёмов, но для меня более важно то, что соседний с ними разъём полностью дублирует их. Выведи на него дополнительные контакты, и плата, как мне кажется, смогла бы претендовать на звание одной из лучших. А переделать шнурок, во-первых, не сложно, а во-вторых, я бы его в любом случае заменил, например, на экранированный сетевой патч-корд.
Но это всё лирика. В наличии же у меня есть лишь всё по отдельности - LCD12864, картридер и энкодер. И с их подключением и работой никаких проблем не возникло.

1. LCD12864, распаянный, как на этой картинке:
подключал к EXP1:
  • 1 -> +5 В
  • 2 -> Земля
  • 4 -> 0.16
  • 5 -> 0.18
  • 6 -> 0.15

2. Картридер, с небольшими изменениями:
  • Сделал питание от 3.3 В, запаяв перемычку между контактами AMS1117-3.3 - выделил красным (для этой платы можно не делать, тогда подключать не к 3.3 В, а к 5 В)
  • Для определения наличия карты, соединил контакт разъема (выделил синим) с последним контактом слота картридера (выделил жёлтым)

Подключал его к EXP2:
  • 1 -> +3.3 В (с разъема ICSP в центре платы)
  • 2 -> 1.31
  • 3 -> 0.17
  • 4 -> 0.18
  • 5 -> 0.15
  • 6 -> 1.23
  • 7 -> Земля

3. Энкодер
  • Со стороны двух контактов, один подключил к земле, а второй к 2.11 на разъёме EXP1.
  • Со стороны трёх контактов, средний подключил к земле, а крайние к 3.25 и 3.26 на разъёме EXP2



После этого, свободными остались только контакты трёх концевиков и пищалки. Если в принтере один экструдер, то добавляются ещё четыре контакта, два из которых можно использовать для I2C.

Прошивка мало чем отличается от изложенного в указанной выше статье. Только в configuration.h надо указать вместо BOARD_RAMPS_14_RE_ARM_xxx BOARD_BIQU_SKR_V1_1. И прошивка нормально собирается без удаления строки extra_scripts в platformio.ini. Редактирование контактов надо тоже производить не в pins_RAMPS_RE_ARM.h, а в pins_BIQU_SKR_V1.1.h.

После перепрошивки на Marlin, Smoothie порт превратится в новое устройство, для установки которого надо подсунуть следующий файл: [lpc176x_usb_driver.inf]

Попробовал нагревать силиконовую грелку 12 В, 200 Вт. Напряжение просело до 11 Вольт на входных клеммах, а на выходе к грелке было 10.8 В. Грел не долго, минут 10, температура полевика была порядка 65 градусов. Хочу заметить, что производитель не рекомендует подключать к плате нагрузку выше 180 Вт.

клон Re-Arm и RAMPS 1.6Plus
Именно эту связку я хочу установить вместо Меги в свой принтер.

И сначала я подключил, как и предыдущем пункте, LCD12864, картридер и энкодер:

1. LCD12864 подключал к AUX-4 RAMPS:
  • 2 -> Земля
  • 4 -> 18
  • 5 -> 17
  • 6 -> 16,
  • а +5 В с разъёма UART Re-Arm

2. Картридер, с описанными выше изменениями, просто надел на AUX-3 RAMPS.

3. Энкодер
  • Со стороны двух контактов, один подключил к земле, а второй к 10 контакту AUX-4 RAMPS.
  • Со стороны трёх контактов, средний подключил к земле, а крайние к 11 и 12 контактам AUX-4 RAMPS.



В процессе подключения оказалось, что AUX-2 RAMPS в связке с Re-Arm как бы и есть, но к микроконтроллеру он не подключён. Но не всё так плохо, на самом Re-Arm есть разъём J12, на котором можно найти контакты AUX-2 RAMPS.

Прошивка, после замены названия платы и редактирования контактов в pins_RAMPS_RE_ARM.h, прошла без проблем. Всё подключённое заработало сразу, только надо не забыть, при использовании драйверов A4988 или DRV8825, на платах соединить между собой контакты Sleep и Reset, как указано на странице RAMPS1.6 Plus.

Несмотря на то, что и на платах SKR и Re-Arm используются полевики с одной и той же маркировкой, результат нагрева был несколько иной. При тех же 11 В на входе, на выходе было только 10.6 В, а полевик разогрелся почти до 80 градусов. Но повторюсь, производитель не рекомендует подключать к плате нагрузку выше 180 Вт, а у меня грелка была 200 Вт.

Таким образом, предварительная проверка с драйвером A4988 каких-либо проблем не выявила, и можно было преступать к проверке работы платы с TMC2130 в режиме 'частичного' SPI.

TMC2130

Драйвера поставляются уже готовыми работать в режиме SPI, ничего с ними делать не надо. На плате же RAMPS1.6 Plus необходимо переставить перемычки под драйверами TMC2130 так, чтобы они замыкали контакты чёрного, а не белого, разъёма. Это подключит к нужным контактам драйвера SPI и сигнал выбора чипа.

Настройка в текущей версии Marlin 2.0 несколько отличается от описанного в вышеуказанной статье.

Во-первых, надо в разделе Stepper Drivers файла configuration.h, установить для нужных осей правильный тип драйвера. Я проверял на оси Z, поэтому я привёл строку с Z_DRIVER_TYPE к такому виду:
#define Z_DRIVER_TYPE TMC2130
Во-вторых, я отредактировал некоторые строки в секции tmc_smart файла configuration_adv.h:
#define Z_CURRENT 400

#define MONITOR_DRIVER_STATUS

#define TMC_DEBUG
Следующие изменения в том же файле, думаю, не нужны, а может даже вредны, так как заставить остановиться двигатель у меня не получилось:
#define SENSORLESS_PROBING // TMC2130 only

//#define X_STALL_SENSITIVITY 8

//#define Y_STALL_SENSITIVITY 8

#define Z_STALL_SENSITIVITY 8
Попытка компиляции закончилась ошибкой, так как при использовании LCD12864 необходимо для драйверов включать софтовый SPI. Честно говоря, это сообщение меня не обрадовало. Покупка RAMPS1.6 Plus была обусловлена именно желанием обойтись без лишних проводов, что при использовании софтового SPI невозможно.

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

Поэтому я решил вернуться к LCD2004. Ну как вернуться? Вообще-то он у меня сейчас не работает, а когда работал, я им не пользовался, так как все мои потребности общения с принтером с лихвой перекрываются Octoprint. Но для порядку, решил я, подключить надо.

Отредактированная конфигурация превратилась в прошивку без предупреждений, и легко была залита в контроллер. Но вот только драйвер не заработал. Причём сначала он даже не крутил мотором. Именно тогда я обнаружил, что нужные контакты, используемые для сигнала выбора, не подключены к AUX-2 RAMPS и, соответственно, к драйверам. Проводок от J12 к AUX-2 решил эту проблему - мотор начал вращаться. Но команда M122 продолжала ругаться до тех пор, пока я полностью не отключил в конфигурации дисплей. Но для порядку-то он нужен...

Являясь счастливым обладателем LCD2004 с интерфейсом I2C, я вовремя вспомнил, что в configuration.h есть упоминание о чём-то подобном. Будем пробовать...

Сначала надо установить библиотеку LiquidCrystal_I2C [файл LiquidCrystal_I2C.zip]. Есть, точнее, я знаю, два пути - простой и сложный. Опишу оба:

Простой.

Копируем из архива два файла, LiquidCrystal_I2C.h и LiquidCrystal_I2C.cpp, например, в папку Marlinsrclibs

Сложный.

Копируем папку из архива в папку libraries фреймворка нашего микроконтроллера, например, в c:.platformiopackagesframework-arduino-lpc176xlibraries, где c:.platformio - это место установки PlatformIO.

Добавляем в файл platformio.ini, в секцию [env:LPC1768] для параметра lib_deps новую строку LiquidCrystal_I2C, должно получиться как-то так:
lib_deps = Servo

LiquidCrystal

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

И здесь опять же есть два способа - простой и сложный. Опять же расскажу про оба:

Простой

в файле configuration.h находим, например, следующую строку: '//#define LCM1602', и после неё добавляем следующий код:
#define LCD_I2C_TYPE_PCA8574 // он мне больше всего понравился

#define LCD_I2C_ADDRESS 0x27 // Адрес дисплея на шине I2C, обычно 0x27

#define LCD_WIDTH 20 // Ширина дисплея в символах

#define LCD_HEIGHT 4 // Количество строк дисплея

#define ULTIPANEL // Без этого ничего не заработает
и если Вы выбрали простой путь установки библиотеки, надо в файле ultralcd_HD44780.h,
под строкой: #elif ENABLED(LCD_I2C_TYPE_PCA8574)

заменить строку: #include LiquidCrystal_I2C.h // название обрамлено знаками меньше и больше

на строку: #include '../../libs/LiquidCrystal_I2C.h' // здесь надо указать путь до библиотеки относительно редактируемого файла
Сложный

в файле configuration.h находим, например, следующую строку: '//#define LCM1602', и после неё добавляем новую строку:

#define LCM1602_I2C // придумали новый тип дисплея

в файле SanityCheck.h находим следующую строку: ' + ENABLED(LCM1602) ', и после неё добавляем новую строку:
+ ENABLED(LCM1602_I2C)
в файле Conditionals_LCD.h находим следующую строку: '#elif ENABLED(REPRAPWORLD_GRAPHICAL_LCD)', и ПЕРЕД ней добавляем следующие строки:
#elif ENABLED(LCM1602_I2C)

#define LCD_I2C_TYPE_PCF85741

#define LCD_I2C_ADDRESS 0x27

#define LCD_WIDTH 20

#define LCD_HEIGHT 4

#define ULTIPANEL
в файле ultralcd_HD44780.h находим следующую строку: '#elif ENABLED(SR_LCD_2W_NL)', и ПЕРЕД ней добавляем следующие строки:
#elif ENABLED(LCD_I2C_TYPE_PCF85741)

#include

#include

#define LCD_CLASS LiquidCrystal_I2C
в файле ultralcd_HD44780.cpp находим следующую строку: '#elif ENABLED(SR_LCD_2W_NL)', и ПЕРЕД ней добавляем следующие строки:
#elif ENABLED(LCD_I2C_TYPE_PCF85741)

LCD_CLASS lcd(LCD_I2C_ADDRESS, LCD_WIDTH, LCD_HEIGHT);
в этом же файле ищем строку: '#elif ENABLED(LCD_I2C_TYPE_PCA8574)', а буквально через две строки видим оператор '#else'. Вот перед этой строкой с оператором и вставляем следующие строки:
#elif ENABLED(LCD_I2C_TYPE_PCF85741)

lcd.begin();

lcd.backlight();
Любой путь когда-нибудь заканчивается, и, после компиляции и заливки новой прошивки со всеми этими изменениями, я ожидал наконец-то увидеть оживший экран, но увидел только 'зебру'. И продолжал я её наблюдать ещё несколько часов, перепробовав разные комбинации библиотек и типов экранов. Не работает.

Уже под конец рабочего дня (начало светать) обнаружив несколько интерфейсов I2C, я решил проверить, к тому ли подключаюсь? Но осциллограф радостно рисовал кривые на тех самых контактах. Тупик.

Перед выключением решил я всё-таки глянуть, а что там шлёт плата экрану? - И с удивлением обнаружил на шине числа 0x13. Выяснять, кто творит это безобразие, превращая с помощью лишнего сдвига на разряд адрес 0x27 в 0x13, я не стал, удовлетворившись, после замены адреса 0x27 на 0x4E, наконец-то заработавшим экраном.
Ах, да, вывод же нужен. С оговоркой про качество ручной пайки, помиловать.

P.S. В названиях контактов возможны ошибки, поэтому рекомендую сверять их со схемами и файлом контактов конфигурации.

P.P.S. Картинки взяты из Интернета, со страниц магазина, а также из папки DCIM телефона.

P.P.P.S. К сожалению, файлы lpc176x_usb_driver.inf и LiquidCrystal_I2C.zip приложить к статье не смог. Но они достаточно легко находятся в Интернете. Только надо учитывать, что для сложного подключения библиотеки в папке должен быть файл library.properties, а простое подключение экрана требует наличия в библиотеке LiquidCrystal_I2C метода init().

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

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

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

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

Комментарии

18.01.2019 в 09:07
1

У себя на Re-Arm и Ramps непропайки не обнаружил. Всё, вроде, в норме.
Единственно, при подключении дисплея MKS Mini 12864 вылез ещё один момент. При установке переходника на Ramps, для подключения экрана, оказалось, что разъем EXP1 задействован только наполовину. Из-за этого сигналы DOGLCD_CS и DOGLCD_A0 пришлось брать отдельно с платы, и прописать этот экран в pins_RAMPS_RE_ARM.h.

19.01.2019 в 00:42
0

разъем EXP1 задействован только наполовину.
Может я Вас не правильно понял, но все три сигнала для 12864 выведены на гребёнку из 18 контактов, и, соответственно на переходнике и EXP1 они тоже должны быть... Может всё же непропай?

19.01.2019 в 08:24
1

Для обычного 12864 всё есть. А для MKS mini зачем-то нужно ещё 2 сигнала. Разработчики  Marlin даже не добавили поддержку этого экрана для Re-Arm.

18.01.2019 в 10:13
1

Статья читалась на одном дыхании, Благодарю!

Значит, у меня есть надежда - просто заменить RAMPSобургер.v.1.4 c 8-битной MEGA2560 на 32-бита SKR1.1 .

Значит, стандартом дисплея, который 'просто работает' - является теперь LCD2004 с интерфейсом I2C...

Будем покупать...

К сожалению, файлы lpc176x_usb_driver.inf и LiquidCrystal_I2C.zip приложить к статье не смог.
Можно разместить в разделе модели, в виде небольших .zip без компрессии.

ski
19.01.2019 в 01:00
1

Статья читалась на одном дыхании, Благодарю!

Пожалуйста, рад, что понравилась.

Можно разместить в разделе модели, в виде небольших .zip без компрессии.
Честно говоря, сама публикация статьи уже выводит из себя. Такой уровень недружелюбности к автору ещё надо поискать. Нет элементарных вещей, как форматирования, спойлеров, блоков для кода и т.п., предпросмотр показывает что угодно, но только не то, что будет показано после публикации...
Короче, заниматься придумыванием костылей, когда есть нормальные механизмы, в том числе и для привязки сопутствующих материалов, - увольте.

18.01.2019 в 10:23
0

SPI для драйверов на плате не разведён
Вообще то разведен. Даже на плате подписано куда он разведен.

19.01.2019 в 00:46
0

Нет, конкретно, т.е. без дополнительных проводов чтобы, для драйверов не разведён, а так конечно - SPI есть, ведь к нему подключаются картридер и экран.

18.01.2019 в 11:37
0

Не могу понять, ну нафига нужен этот мазохизм ?? 
Что то допаивать, дописывать, вникать в прошивку ??
Видать для тех у кого времени много и печать не так важна как настройка всей этой приблуды. 
По мне так лучше взять готовый контроллер с готовой прошивкой,  тачэкраном. И не мучиться. 

18.01.2019 в 12:07
5

Есть энтузиасты, есть потребители. 
Соответственно, есть устройства для энтузиастов, есть для потребителей.

18.01.2019 в 12:14
0

По мне так лучше взять готовый контроллер с готовой прошивкой, тачэкраном. И не мучиться.

Вы про Duet за многаденех?

18.01.2019 в 13:22
2

Отнюдь. 
Дуэт вообще не рассматриваю из за не адекватной цены.
Из бюджетных - 
На вскидку - Lerdge K, SBASE V1.3 Smoothieboard, MKS Rumba Plus +MKS TFT35+WIFI, MKS Robin+  TFT сенсорный экран.
По ценнику от 3 до 6 т.р.  Вполне нормально.

Просто есть люди которым важна печать, качество и сам конечный продукт печати. Которым некогда заниматься настройкой и улучшайзингами.
А есть люди которым сама печать вторична - им дай принтер собрать-поломать, контроллер покурочить, прошивку вдоль и поперек переписать. Этакие кулибины. 
Сам я где то по середине застрял. 
Иногда все эти доработки и доведения до ума начинают уже надоедать. Хочется простого решения - достал подключил и печатай. 
С минимум настроек.

18.01.2019 в 13:36
0

Из бюджетных
Lerdge K
о_О ну ок..))
А есть люди которым сама печать вторична
Не встречал таких)
Иногда все эти доработки и доведения до ума начинают уже надоедать. Хочется простого решения - достал подключил и печатай.
Lerdge K
Кстати, 
SBASE V1.3
А чем SGen не устроил?

18.01.2019 в 15:19
0

SBASE V1.3 Smoothieboard
Ну кагбэ бикьюшная плата и Re-ARM тоже на смузи. Человек решил туда марлин вкатить, просто потому, что валялся ненужный 2004, который смузи не любит.

18.01.2019 в 12:26
4

  • Иногда готовый вариант не отвечает твоим требованиям.
  • Иногда нужно просто знать как оно работает и уметь починить. Даже банальное 'заменить колесо на трассе'.
  • Иногда люди не хотят быть хомячками-пртребителями и готовы сделать что-то сами для себя.

18.01.2019 в 12:33
1

Иногда...
Иногда...
Иногда...

Подписываюсь и согласен с каждым Вашим пассажем,
ибо вижу в этом наилучшее толкование понимание сути самой концепции 'Open Source'.

Благодарю!

С Уважением,
Ski.


P.S.
В моём понимании, правда, наиболе часто первое слово - не 'Иногда...', а 'Частенько...'
Отдаю должное 'деликатности' Ваших формулировок ;-) .

19.01.2019 в 00:47
0

Не могу понять, ну нафига нужен этот мазохизм ??
Что то допаивать, дописывать, вникать в прошивку ??

Хобби, знаете ли...

18.01.2019 в 15:18
0

Пришла SKR, хочу подружить со своей дельтой, TMC2130, Смузи и SPI. Проблема что смузи 2130 не поддерживает(((

18.01.2019 в 15:52
1

А смузи обязателен?  А то мой skr на марлине вполне норм работает, на гитхабе на нём завели 2130 в spi

18.01.2019 в 16:36
0

Смузи подкупает простотой, на дельте стол калибровать легко.

18.01.2019 в 16:40
0

Ну, возможно на дельте да... Я от смузи плевался со страшной силой, но у меня дрыг

19.01.2019 в 17:32
0

Недавно переехал на 32, скажу, что большой разницы в качестве печатанного нет на штатных скоростях между DUE и Mega. Из преимуществ это быстрое позиционирование. Что на Mega что на DUE можно хорошо мазать пластик на скорости 80, на большей скорости начинаются проблемы с плавлением пластика и особого выигрыша нет. Все затупки Меги на сложных периметрах лечится настройкой ускорений и расстоянием на ускорение уменьшением дельта сегментов (для дельты по уши достаточно 30, затупки появляются если больше 90, а в паршивке по умолчанию установлено 160).

Про драйвера:
Заменил DRV8825 на TMC2208, и мотор экструдера крутится стал тихо, НО. Но шаг стал больше, точно такой же как на 4988 только тихо. С драйвером DRV8825 мотор поворачивался если скомандовать G1 E0.017 c TMC2208 стрелка на моторе передвигается только если E0.03, т.е. в два раза больше. Ну и то же самое с движением по Z, с TMC по Z двигается если 0.055 с 8825 0.027. TMC2130 вроде то же самое но с возможностью управлять по другому.

19.01.2019 в 19:18
0

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

У меня стоят DRV8825, и шума от моторов нет. ТМС2130 - это от любопытства, а не по необходимости.

19.01.2019 в 21:06
0

ТМС2130 - это от любопытства

А шагают 2130 так же как 8825 при 16 шагах?
Можете проверить при каком E повернётся мотор екструдера если 32 шага перемычками выбрать и G1 E0.01234 отправлять?

19.01.2019 в 23:09
0

У меня стоит 32 шага. А TMC2130  я в принтер не ставил. Но при равных шагах, уверен, они повернут на одинаковый угол, куда ж им деваться? Или я Вас неправильно понимаю? Вы же в прошивке задаёте количество шагов на миллиметр. Если дробность шага растет, например, с 16 до 32, то и в прошивке надо менять количество шагов, увеличивая их в два раза.

20.01.2019 в 20:47
0

Если кто думает взять SKR v1.1, то сейчас самое время. Со скидкой и купоном на 2 доллара цена выходит всего 944 рубля! 
http://s.click.aliexpress.com/e/blDtrvKK

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

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

Масштабная модель (1:10) завода по производству горючих жидкостей. (Промышленный макет)

Печать деталей из полиамида

Мощная постзасветка UV напечатанных фотополимерных моделей. На коленке, но не совсем

Результаты розыгрыша поездки на 3Dtoday Fest перенесены на 23.09.19

Убийца Апекса)) Точильный станок на 3Д ПРИНТЕРЕ, Knife Sharpener for 3D PRINTER

Последовательное сравнение экструдеров (фидеров) на Ender 3