roboforum.ru

Технический форум по робототехнике.


Marlin 2.0 (32bit)

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Marlin 2.0 (32bit)

Сообщение 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 не удалось запустить, надо написать или найти библиотеку для них)
DSC_0339.JPG

DSC_0340.JPG

DSC_0341.JPG

DSC_0342.JPG


Что сейчас работает:
  • Мапинг базовых пинов
  • Эндстопы
  • Грелки
  • Сервы
  • Термисторы
  • Экран Viki2
  • Драйверы (пробовал drv8825 и tmc2100)
Что не работает:
  • Драйверы BSD2660 (нет библиотеки, надо написать)
  • Ну и потенциально всё что не проверялось ;)

Как всё это было: вся проблема заключалась в том, что по этой борде нет нормальной спецификации с пинами, а предположение что все пины будут совпадать с тем что заявлено для 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битной борде
alexxy
 
Сообщения: 93
Зарегистрирован: 05 фев 2015, 22:58

Re: Marlin 2.0 (32bit)

Сообщение Ruslan » 10 окт 2019, 22:26

Сергей, OBN_RacerMan, спасибо за идеи!
Дисплея есть два: REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER и REPRAP_DISCOUNT_SMART_CONTROLLER. Оба протестированы на MEGA+RAMPS. Это точно снимает вопрос с контрастностью.

Я подозреваю электрические проблемы в плате...
Аватара пользователя
Ruslan
 
Сообщения: 603
Зарегистрирован: 03 июн 2007, 22:32
Откуда: Москва
ФИО: Руслан

Re: Marlin 2.0 (32bit)

Сообщение setar » 11 окт 2019, 15:40

проверь как вот такой патч (его я делал для селены, там пришлось менять дефолтную контрастность) проблема схожая.
ключевое #define DEFAULT_LCD_CONTRAST 200
и на всякий случай оставил ремарки по выбору режима работы SPI (программный / аппаратный)
это в файле описания пинов в борде.

Marlin/src/pins/pins_SELENA_COMPACT.h
Код: Выделить всёРазвернуть
     #define SD_DETECT_PIN       -1
#endif // REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

+//Panel Selena 3.1.0
+#if ENABLED(VIKI2)
+/*
+    #define ULTRA_LCD
+    #define DOGLCD
+    #define ULTIMAKERCONTROLLER
+    #define LCD_CONTRAST_MIN       0
+    #define LCD_CONTRAST_MAX     255
+    #define DEFAULT_LCD_CONTRAST 200
+    #define U8GLIB_ST7565_64128N
+*/
+    #undef DEFAULT_LCD_CONTRAST
+    #define DEFAULT_LCD_CONTRAST 200
+
+/* из HAL
+// onboard SD card
+  #define SCK_PIN           P0_07
+  #define MISO_PIN          P0_08
+  #define MOSI_PIN          P0_09
+  #define SS_PIN            P0_06
+// external
+  #define SCK_PIN           P0_15
+  #define MISO_PIN          P0_17
+  #define MOSI_PIN          P0_18
+  #define SS_PIN            P1_23
+  #define SDSS              SS_PIN
+*/
+// DOGLCD_SCK == SCK_PIN && DOGLCD_MOSI == MOSI_PIN => using HW-SPI
+
+//# 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
+
Аватара пользователя
setar
Site Admin
 
Сообщения: 10671
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Marlin 2.0 (32bit)

Сообщение Ruslan » 12 окт 2019, 00:09

проверил DEFAULT_LCD_CONTRAST - это не оно. тому же под Smoothie дисплей тоже не работает.
Решил плюнуть и заказать какой-нибудь совсем другой дисплей, например Viki.
Аватара пользователя
Ruslan
 
Сообщения: 603
Зарегистрирован: 03 июн 2007, 22:32
Откуда: Москва
ФИО: Руслан

Re: Marlin 2.0 (32bit)

Сообщение Myp » 07 сен 2020, 14:44

А вот скажите, кто-то уже делал безсенсорную парковку по Z на tmc2209 ?
Я значит поставил на все оси эти драйвера, сконфигурил по мануалу MKS все 3 оси одинаково, в итоге оси X и Y стали парковаться сразу и без вопросов
а ось Z в полный отказ.
С драйвера на ноге diag нет сигнала при парковке, хотя все 3 оси сконфигурены идентично. Драйвера менял местами, разницы нет.
Если вход парковки от драйвера переключить на оптический концевик то парковка работает, то есть парковка сконфигурена верно и сигнал проходит.

настройки вроде простые, задаём тип драйвера
#define X_DRIVER_TYPE TMC2209
включаем режим безсенсорной парковки
#define SENSORLESS_HOMING
настраиваем чувствительность
#define X_STALL_SENSITIVITY 110

Добавлено спустя 1 час 50 минут 56 секунд:
Победил.
Глючный марлин (((

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

<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 17796
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Marlin 2.0 (32bit)

Сообщение setar » 07 сен 2020, 16:58

интересно какова повторяемость ?
вот если паузу поставил, выключив двигатели подвигал (например почистил), и продолжил печать.
Попадет ли в то же место ??
Аватара пользователя
setar
Site Admin
 
Сообщения: 10671
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: Marlin 2.0 (32bit)

Сообщение Myp » 08 сен 2020, 01:15

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

Код: Выделить всёРазвернуть
/**
   * TMC Homing stepper phase.
   *
   * Improve homing repeatability by homing to stepper coil's nearest absolute
   * phase position. Trinamic drivers use a stepper phase table with 1024 values
   * spanning 4 full steps with 256 positions each (ergo, 1024 positions).
   * Full step positions (128, 384, 640, 896) have the highest holding torque.
   *
   * Values from 0..1023, -1 to disable homing phase for that axis.
   */
   #define TMC_HOME_PHASE { 896, 896, 896 }


После калибровки паркует довольно нежно, можно палец сунуть =)


хочу безсенсорное выравнивание сделать, но наверно не получится, консольный стол при упирании в сопло дальним концом ощутимо выгибается, пружины стола сжимаются,
не хватает чувствительности с винтом.
Вроде ещё скорость влияет, сигнал срабатывает с небольшой задержкой, на высокой скорости успевает даже хрустнуть - пропустить шаг.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 17796
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Marlin 2.0 (32bit)

Сообщение Начинающий » 08 сен 2020, 10:53

А если ускорение по Z поставить до неприличия большое? Драйвер ведь по логике вещей скорее всего считывает тот момент, когда идет ЭМ всплеск в обмотках шаговика и потом на этот всплеск реагирует.
Можно еще и джерк по Z поставить минимальным, т.к. если я правильно понял, то это минимальное изменение скорости, при котором происходит ускорение.
Принтер TevoTarantula
Прошивка Marlin 1.1.5
Слайсер Slic3r
Пластик ABS
Начинающий
 
Сообщения: 298
Зарегистрирован: 08 апр 2017, 21:49

Re: Marlin 2.0 (32bit)

Сообщение Myp » 08 сен 2020, 15:16

При большом ускорении происходит ложное срабатывает в момент трогания ШД, то есть сигнал концевика приходит ещё пока мотор делает #define SENSORLESS_BACKOFF_MM { 5, 5 } // (mm) Backoff from endstops before sensorless homing.
поэтому ускорение должно быть маленькое, чтобы мотор трогался без перегрузок, отводил каретку и плавненько медленно вёл в ноль.
да, двигать ось надо тоже медленно, ато пока сигнал придёт, мотор успевает хрюкнуть.

я пока не понял можно ли разделить ускорения и джерк для парковки и для работы
т.к. низкие значения для парковки не годятся для постоянной работы.
возможно придётся делать макрос, ставить низкие параметры, парковаться, ставить обратно высокие.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 17796
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: Marlin 2.0 (32bit)

Сообщение Начинающий » 08 сен 2020, 17:15

Как по мне, я вижу только один нормальный вариант, это лезть в саму прошивку, где из редактора NPP в исходниках найти обработчики команд G27, G28, G29 , и в начале и конце каждой из этих команд делать вызов обработчиков команд M204 и M205 с заданными параметрами ускорений/джерков. Тогда думаю можно будет не париться, а если делать только в слайсере в начальном и конечном кусаках кода, то можно по запарке забыть и грохнуть принтер, когда будете делать это в ручном режиме.

Собственно все команды в марлине 2.0 распиханы по папкам в виде отдельных .cpp файлов по адресу
...\Marlin-2.0.x\Marlin-2.0.x\Marlin\src\gcode\...
Принтер TevoTarantula
Прошивка Marlin 1.1.5
Слайсер Slic3r
Пластик ABS
Начинающий
 
Сообщения: 298
Зарегистрирован: 08 апр 2017, 21:49

Re: Marlin 2.0 (32bit)

Сообщение Myp » 09 сен 2020, 01:44

setar писал(а):интересно какова повторяемость ?

В пределах погрешности часового индикатора.


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

Но в реальной жизни проку от такой супер точной парковки я не вижу.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 17796
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Пред.

Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 17

cron
Mail.ru counter