RepRapFirmware небольшой обзор прошивки + бонус библиотека для работы TMC2130 c RuRamps4D

svs0724
Идет загрузка
Загрузка
13.08.2019
2388
45
печатает на RepRap
Обзоры

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

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

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

32
Я как то уже писал о том как загрузить прошивку RepRapFirmware (RRF) на плату RuRamps4D и подключить дисплей FullGraphic. Прошивка эта очень интересная, но информации про нее на портале немного, поэтому я хочу восполнить этот момент.

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



Начнем с достоинств.

Что же отличает данную прошивку например от Marlin, Repetier и других?

1. Прошивка собирается из исходного кода непосредственно под плату, а не под принтер. Все параметры принтера задаются в текстовом файле, размещенном на SD карте, как на smoothieware. Кроме того параметры принтера можно так же менять «на лету» Gcode командами, вплоть до смены типа кинематики. Это очень удобно при настройке самосборных принтеров. Конфигурационные файлы можно редактировать непосредственно из web интерфейса.

2. В прошивке реализована работа с SD картой по высокоскоростному интерфейсу SDIO, а так же обмен данными с WIFI модулем ESP8266 по SPI, и все это работает через DMA (прямой доступ к памяти). Все это позволяет копировать файлы на SD карту принтера через WiFi на высокой скорости (1Мбайт/c).

3. В прошивке уже реализован web сервер и написан функциональный Web интерфейс, почти не уступающий интерфейсу OctoPrint () .

Приведу некоторые скриншоты web интерфейса RRF.



Основной экран интерфейса



Консоль для работы с GCODE. Как видно, из консоли можно не только вводить команды, но и получать информацию о результате выполнения.



Экран мониторинга за печатью.



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

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

5. Действия принтера при паузе/возобновлении печати так же можно прописать в конфигурационных файлах так, как вам необходимо.

6. Прошивка имеет модульную структуру, что позволяет просто добавлять дополнительный функционал, например новые кинематические схемы.

7. Прошивка написана с использованием FreeRTOS, благодаря чему переключение между задачами управление принтером четко распределены по приоритетам и не мешают друг другу. Что позволяет повысить надежность работы принтера.

8. Кроме функции управления принтером, прошивка так же может управлять лазерным гравером, фрезером и 3D сканером.

9. Отдельное преимущество прошивка дает владельцам дельта принтеров. Перемещения эффектора не сегментированы (разбиты на мелкие сегменты) как в других прошивках. Кроме этого есть несколько интересных алгоритмов калибровки дельта принтера.

10. Работой с драйверами Trinamic конечно уже не удивишь, но у RRF есть «фича». У драйверов TMC2130, 2660, 5130 есть опция stalldetect, который используют для парковки без концевиков. Но в RRF можно выбрать каким образом реагировать на stalldetect и кроме sensorless парковки можно еще и определять пропуск шага, после чего перепарковать нужную ось, и возобновить печать.

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

12. Добавлена возможность считывания и обработки данных тахо сигнала с трехпроводных вентиляторов (можно получать скорость вращения вентилятора).

12. Обновление прошивки может осуществляться через веб интерфейс или через SD карту.



Далее хочу немного рассказать о конфигурационном файле прошивки. Во первых если принтер с более менее стандартной конфигурацией, то можно воспользоваться web конфигуратором https://configurator.reprapfirmware.org, если же у вас например используется несколько моторов для какой нибудь оси, или драйвера требуют настойки длительности степ импульсов то надо будет править созданный файл конфигурации.



Теперь приведу пример и разбор конфигурационного файла принтера.



M667 S1

В данном случае выбрана кинематика COREXY, если используется кинематика cartezan, то команда должна выглядеть так M667 S0

Для выбора кинематики дельта принтера используется команда M665.

Настройка драйверов

M569 P0 S1 D3

M569 P1 S1 D3

M569 P2 S0 T2.5:2.5:5:0

M569 P3 S0 T2.5:2.5:5:0

M569 P4 S1 R1

Для настройки используется команда M569 з различными параметрами, так в данном примере используются следующие параметры:

Pnn - этот параметр задает номер драйвера

Snn - может принимать значения 0 и 1, и задает направление вращения мотора

Enn - может принимать значения 0 и 1, и задает активный уровень сигнала Enable

Dnn - параметр используется для драйверов Trinamic и задает режимы их работы D2 - spreadCycle, D3 stealthChop

Taa:bb:cc:dd - задает минимальные значения длительности STEP импульса, интервала, между ними, а так же время установки и удержания DIR импульса. Так в примере для драйверов 2 и 3 для STEP импульсов задана минимальная ширина и интервал между импульсами равными 2,5us и 5us на установку DIR импульса.

Причем в отличие от Marlin, для каждого драйвера можно задавать свои временные интервалы.

M584 X0 Y1 Z2:3 E4

Данной командой привязываем драйверы к осям, конкретно в данном примере морами оси Z управляют два мотора

M350 X16 Y16 I1

M350 Z16 E16 I0

Данная команда задает значение микрошага для каждой из осей, параметр I1 включает интерполяцию микрошага.

M92 X80 Y80 Z4000 E420 ; задаем значения шагов на мм

M566 X900 Y900 Z12 E120 ; задаем аналог Jerk (задается в мм/мин)

M203 X6000 Y6000 Z180 E1200 ; задается максимальная скорость (мм/мин)

M201 X500 Y20 Z250 E250 ; максимальные ускорения мм/c2

M906 X800 I30 ; тут задаем токи для драйверов и процент от максимального тока для удержания в процентах.



M208 X0 Y0 Z0 S1

M208 X230 Y210 Z200 S0

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



Концевики

M574 Z2 S1

M574 X2 Y2 S3

Параметр S задает вариант срабатывания концевика:

S0 - срабатывает при низком уровне сигнала

S1 - срабатывает при высоком уровне сигнала

S2 - используется датчик ZProbe

S3 - используется режим sensorless (для драйверов Trinamic)



Нагреватели

M305 P0 T100000 B4138 C0 R4700

M143 H0 S120

M305 P1 T100000 B4138 C0 R4700

M143 H1 S280

Параметры команды M305

Pnn - номер нагревателя ('0' - нагреватель стола)

T100000 - обозначает что при 25С термистор имеет сопротивление 100кОм

R4700 - обозначает что термистор относится к серии 4,7кОм

B4138 - бета коэффициент термистора

Вообще у команды M305 намного больше параметров, но рассмотрение их всех требует отдельной статьи.

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



Вентиляторы

M106 P0 S1 I0 F500 H-1

M106 P1 S1 I0 F500 H1 T45

В данном примере вентилятор 0 настроен на обдув модели, вентилятор 1 на охлаждение радиатора первого нагревателя, с автостартом при температуре 45С. Причем вентилятор может использоваться для нескольких нагревателей, тогда комада буде записана так M106 P1 S1 I0 F500 H1:2 T450



Инструмент (в данном случае печатающая голова)

M563 P0 D1 H1

Pnn - номер инструмента

Dnn - номер мотора экструдера

Hnn - номер нагревателя



G10 P0 X0 Y0 Z0 ; здесь просто задаются смещения инструмента

Собственно на этом с базовой конфигурацией можно закончить.



А теперь о недостатках прошивки.

На мой взгляд главный недостаток, из за которого прошивка мало распространена, это ограниченный набор плат, с которыми она может работать. Это платы линейки Duet3D, Alligator, RADDS и RURAMPS4D. Первые две платы довольно дорогие, а на двух других не получится завести Web сервер и интерфейс, входящий в состав прошивки. Это связано с ограничениями Arduino Due. Плюс прошивка поддерживает только ARM контроллеры семейства Atmel.

Но тут есть некоторые подвижки: не так давно появился порт RRF под контроллеры LPC1768/9, но данный у данного контроллера маловато памяти, и порт прошивки работает с рядом ограничений, так например не реализована работа с драйверами Trinamic по SPI, быстрая запись на SD карту по WiFi и ряд других моментов. Ну я понемногу допиливаю порт на STM32F429, дело идет хотя и не быстро. Хочется перенести все функции RRF, а что то и добавить.



Еще меня не устраивало то, что я не мог использовать данную прошивку c драйверами TMC2130 в режиме конфигурирования SPI на RuRAMPS4D, и я решил сам добавить в прошивку библиотеку для работы с ними, благо библиотека для TMC51xx уже была, хотя и под контроллеры старших серий. На данный момент библиотека TMC2130 работает только с платой RuRAMPS4D. На платах Duet3D драйверы моторов запаяны, TMC2130 не используется и смысла в этой библиотеки для Duet3D нет.



Вот ссылка на исходики и бинарник К сожалению я еще не реализовал возможности задания количества драйверов TMC2130 из GCODE, поэтому егего надо задать перед компиляцией прошивки, бинарник собран на использование 4-х TMC2130. Если кому то понадобится могу рассказать как пересобрать прошивку под необходимое количество, или соберу сам.

Ну и напомню как залить прошивку

Загрузка прошивки и настройка принтера.

В первый раз прошивка загружается с помощью программы bossa, для загрузки Arduino Due необходимо подключить к Native Port. Перед загрузкой обязательно стереть FLASH - нажать Erase, потом Reset. Erase удерживайте пока не отожмете Reset.

Пред загрузкой в программе bossa необходимо установить галочки 'Erase all' и 'Boot to flash'.

В результате конфигуратор сгенерирует нам набор файлов, который надо сохранить в папке /sys на SD карте

так же на карте необходимо создать еще папки:

/gcode - тут будут размещаться файлы моделей

/macros - папка для размещения макросов

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

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

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

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

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

Комментарии

13.08.2019 в 18:22
0

Правильно ли понимаю что без SD карты особо не попользоваться прошивкой?

А еще если корявая китацйская DUE на которой иной раз не работает порт Native то и прошить не получится?

13.08.2019 в 18:29
0

Все верно, поэтому на последней ревизии RuRAMPS4D добавил отдельный разъем под модуль SD карты.
Прошивка да, только через native, но я пока не встречал их с нерабочим портом. Другое дело что DUE сама по себе уже подустарела.
Но тут недавно узнал что у Adafruit появилась вот такая платка https://learn.adafruit.com/adafruit-grand-central
там RRF тоже заведется, надо взять как нибудь на пробу

13.08.2019 в 18:37
0

Увы мне домой такие попались...

Кстати скоро планируете RuRAMPS4D с контроллером выпускать?

А еще для установки термопары какой ключ нужно прописать?

13.08.2019 в 18:53
0

Не погк сказать пока сроки, сейчас все на прототипе обкатываю, но между прототипом и серийной платой может быть большой путь...
Термопары на Duet3D используют с микросхемой MAX31856, поэтому нет реализации для аналоговых усилителе как на RuRamps установлены, надо добавлять. Так же еще можно PT100, PT1000 использопать

14.08.2019 в 02:22
0

Ясно, ждем.
Успехов!

15.08.2019 в 21:52
0

Выложите пожалуйста распиновку этого SD разъема.

15.08.2019 в 21:57
1

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

16.08.2019 в 00:29
1

[TABLE] [TR] [TD]SD_DET[/TD] [/TR] [TR] [TD]SCK[/TD] [/TR] [TR] [TD]MISO[/TD] [/TR] [TR] [TD]MOSI[/TD] [/TR] [TR] [TD]SD_CS[/TD] [/TR] [TR] [TD]GND[/TD] [/TR] [TR] [TD]+3.3V[/TD] [/TR] [TR] [TD]+5V[/TD] [/TR][/TABLE]

Распиновка SD разъема

13.08.2019 в 18:37
0

не только для DUE  вот порт под процы LPC https://github.com/sdavi/RepRapFirmware, SKR 1.1 1.3 поддерживает и ReARM

13.08.2019 в 18:40
0

да, я упоминал про этот порт в статье

13.08.2019 в 18:30
0

Как всегда - СУПЕР!

13.08.2019 в 18:31
0

Спасибо!

13.08.2019 в 20:47
0

Спасибо. Я вот прицениваюсь к китайскому дуэту 2. Там-то, если по честноку, цена не сильно выше чем на комплект SKR + 5xTMCдрайвера+экранчик какой-никакой. Вроде бы вполне конкурентная плата выходит.

Если честно удручает малое количество информации по RRF, и, особенно, по работе RRF с дельта-принтерами - я себе на дельте хочу попробовать.

13.08.2019 в 21:01
1

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

14.08.2019 в 11:05
0

Я вас умоляю. Не берите китайскую копию. Погорят драйвера. Там нет металлизации под ними и качество оставляет желать лучшего. Не поскупитесь и возьмите оригинал. Будете довольны как слон

14.08.2019 в 11:30
1

Там нет металлизации под ними и качество оставляет желать лучшего
можно пруфы конкретно какой клон  этим страдает, где эта проблема обсуждалась пользователями.
Спасибо.

14.08.2019 в 18:11
1

Ваши мольбы звучат довольно странно. Платить за геморой с покупкой и доставкой материнки из Европы столько, сколько стоит новый принтер... Ну как бы я не буду доволен такой платой даже если там все будет работать действительно идеально. Так что нет - выкинуть 5 т.р. на проверку Китайского клона я еще готов, потому что если он будет работать, то это вариант к покупке, а вот платить 12-15к рублей с гемороем по доставке за плату, которую я в любом случае больше не куплю - ну его нафиг.

13.08.2019 в 21:47
0

Сергей, правда, очень интересно, на каком этапе сейчас плата на STM32F4 ?)

13.08.2019 в 21:57
3

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

13.08.2019 в 23:29
0

Сергей, здравствуйте.
И правда, очень ждем вашу плату на stm

06.09.2019 в 04:41
0

Скажите, а Ваш порт заведется на stm32f407? Вроде бы контроллеры сильно похожи. 

06.09.2019 в 08:48
1

Да по большому счету можно и на F407 с небольшими изменениями. Каналы DMA возможно поменять и подобные моменты. Изначально задачи сделать универсальность не было, но можно в дальнейшем для всей линейки F4

07.09.2019 в 01:07
0

Было бы здорово. 👍 

14.08.2019 в 02:23
0

Приветствую!
Я правильно понял что получилось завести веб интерфейс через ESP8266?
Потому что последний раз, спрашивая вас, о том есть ли возможность работать через веб интерфейс, вы ответили что нет.
Ну не писать же мне каждый раз вам в ЛС для того что бы узнать новости...
Если так, то хотелось бы увидеть статью не просто обобщенную о RRF, а о том что в данный момент реализовано в связке RRF + RuRamps.
А так же о том, как это дело успешно залить в Due, и не просто залить, а так что бы работал веб интерфейс и TMC2130.
Так как я бы с радостью залил бы RRF вместо марлина.

Но на данный момент я лишь могу догадываться о том что уже реализовано и как это дело  залить и заставить работать.
Поэтому хотелось бы увидеть статью о том как приготовить RRF для Ruramps и больше новостей с информацией.

14.08.2019 в 10:18
1

Нет, скриншоты веб интерфейса сделаны при работе с прототипом платы на STM32. На Arduino DUE все это реализовать теоретически возможно, но из за ограниченного количества памяти сложновато, и придется забрать некоторые пины, возможно с дисплея для работы с ESP.
Но пока я не закончу проект новой платы, я за это не возьмусь. Поддержку TMC2130 делал под STM32, и заодно добавить в сборку для RuRAMPS4D было не сложно, а с web сервером надо больше времени.

14.08.2019 в 10:05
0

Спасибо за статью, очень актуально!
Наверно ламерский вопрос))) Linear Advance в этой прошивке реализуем?

14.08.2019 в 10:09
0

Да, называется pressure advance, и появился значительно раньше чем в марлине
Включается командой типа M572 D0 S0.25, где D - номер экструдера, S - сам коэффициент

14.08.2019 в 10:29
0

Благодарю!

14.08.2019 в 22:13
0

Интересная статья, спасибо!

14.08.2019 в 23:44
0

Да не за что

15.08.2019 в 00:12
0

Очень интересно!
Есть у меня вопрос - кинематику, отличную от трех самых популярных, можно реализовать?
С подачи Sanitar решил построить принтер на интересной кинематике:
[IMG]https://cdn.hackaday.io/images/2988881485085759090.png[/IMG]

15.08.2019 в 00:25
1

В версии 2.03 добавили этот вид кинематики, в ближайшее время обновлю до нее сборку под RuRAMPS если необходимо
Вот полный список поддерживаемых кинематик

cartesian ,
coreXY,
coreXZ,
linearDelta,
scara,
coreXYU,
hangprinter,
polar,
coreXYUV,
reserved, // reserved for @sga, see https://forum.duet3d.com/topic/5775/aditional-carterian-z-axis-on-delta-printer
rotaryDelta, // not yet implemented
markForged,

15.08.2019 в 00:41
0

Спасибо!
Вы только под свою плату/платы допиливаете прошиву?
Я стартовать собираюсь на 8 бит. Есть в загашнике. А потом планировал на что-то другое переводить, когда принтер себе на что-то заработает.
Хоть SmartRamps/FD-Ramps или SKR. Если получится завести нужный вариант прошивы.
На первых двух репитер смогу настроить.
Не уверен что легко и просто потяну покупку Вашей платы, как бы не хотел это сделать.
Поковырялся с конфигуратором и заткнулся на автоуровне. 
Сейчас уже оттестировал и активно использую на тензодатчике. Само сопло является 'щупом', хотэнд висит на этом самом тензодатчике. Пока автоуровень использую в ультике. И подключил его вместо концевика по Z.
Сходу ночью не смог вкурить как правильно в таком варианте выбирать настройки в конфигураторе.

15.08.2019 в 09:03
1

На 8 битах RRF не заведется, на SKR можно попробовать порт прошивки для LPC, выше была ссылка.
Есть ли данная кинематик на Repetier или Marlin не знаю, но в принципе если взять за основу код кинематики COREXY то его не сложно будет переделать в markForged.

15.08.2019 в 10:08
0

В репитере подсказали как и что поправить в версиях 1.0.х
В версии 2.х там вообще весело описывается кинематика, но пока принтер только в электронном виде, не могу попробовать в работе.
В марлине пробовали править, но что-то не срослось с логикой работы концевиков.

Но в любом случае спасибо за ответы!
Альтернативы это всегда интересно )

15.08.2019 в 15:50
1

Вот не согласен с дороговизной дуета как бы это странно не было. Она дороговата  для 3д принтера как по моему, и то потому, что драйвера слишком мощные, потому как плата больше для цнц предназначена. Для 3д принтера маэстро есть, которое тожесамое, но драйвера другие. И стоит столько сколько стоит её дубовейшая надёжность и самодостаточность, так как смузе нужен монитор и октопринт (и качественные драйвера, да?), а тут всё есть (а монитор не нужен!!!!) ;) Восьмибитки не рассматриваем наверное...

Остальное всё так. Даже наверное можно отметить, что всякие новые фишки на репрапе быстрее чем в мерлинах и смузях появляЛИСЬ, сейчас не знаю. И, в отличии от той же смузи пока что особо не видно сильного подгорания авторов из-за появления китайских клонов дуета.

15.08.2019 в 17:51
0

Так же для 'сомневающихся' хотелось бы отметить хорошую послепродажную поддержку от официальных производителей. Поверьте/проверьте, общаться на прямую с разработчиком прошивки - очень эфективно. Другими словами, если есть возможность, рекомендую попробовать.

16.08.2019 в 00:41
0

Вы рассматриваете возможность портирования прошивки на Teensy (3.5/3.6/4.0)? Так, Teensy 4.0 - одна из самых быстрых плат. Плюс переходничок для них был бы интересен.

16.08.2019 в 01:05
0

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

16.08.2019 в 04:55
0

Для кодинга под эти платы обычно используется Arduino IDE, так что, теоретически, это не должно быть проблемой.

18.08.2019 в 11:11
0

Arduino IDE это просто среда разработки, причем не особо хорошая, серьезные проекты там делать не удобно, там даже отладку нормально  не сделаешь. Я посмотрел, там есть библиотеки ардуиновские, это упрощает задачу, но изучать сам микроконтроллер все равно придется, а по нему, кроме нет столько информации как по STM32. Время может много занять

19.08.2019 в 10:26
0

Коллеги, кто-то пробовал заливать прошивку, которую выложил Сергей в свою DUE? Я пробовал на двух разных DUE, но к сожалению результат одинаков - после прошивки плата входит в boot loop, в windows появляется и сразу пропадает COM-порт и так бесконечное число раз. 
Ради эксперимента  попробовал залить  RRF для RADDS, скачанную с  ГитХаба - заливается и работает. 
Куда копать не знаю. :(

20.08.2019 в 11:19
0

SD карта подключена? конфигурация на ней какая то есть?

20.08.2019 в 13:18
0

Пока экспериментирую на голой DUE, поэтому карту распаял на SPI разъём  Ардуины (CS на 4 ноге).  Конфиг на карте из примеров которые находятся в исходниках.
Поддержку дисплея в Pins_RADDS.h отключал, компилировал исходник и заливал заново прошивку - результат отрицательный.
Сергей, не мог бы ты посмотреть как  себя ведёт прошивка без подключенной SD карты? 
Спасибо.

20.08.2019 в 14:40
1

До выходных не смогу, железа рядом нет. Но я помню что без SD карты как раз перезагружалась плата постоянно, потому про карту и спросил

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

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

Печать диагностических моделей зубов

Морфинг одного персонажа. М 1:35

Вентиляция. То, чего нет в магазинах.

Небольшие заметки о клиппере

Распродажа 3D принтеров в интернет-магазине 3DSN

Согревающая акция на RK Gadget!