Strona 1 z 1

Marlin 2.0 + Arduino DUE + TMC2130

: 07 lip 2019, 15:32
autor: stormy
Mam problem z uruchomieniem zestawu Marlin bugfix-2.0.x + Due3Dom LE + TMC2130.

Do obsługi TMC2130 Marlin 2.0 wymaga biblioteki TMCStepper.
Jednak po zainstalowaniu tej biblioteki przy kompilacji jest ostrzeżenie:
"UWAGA: biblioteka TMCStepper działa na architekturze(/architekturach) (avr) i może nie być kompatybilna z obecną płytką która działa na architekturze(/architekturach) (sam)."
Używam tej biblioteki: https://github.com/teemuatlut/TMCStepper
Oczywiście z tak skompilowanym firmware drukarka nie startuje (pusty wyświetlacz).

A architekturą SAM jest kompatybilna biblioteka TMC2130Stepper, ale ona nie działa z Marlin 2.0 bo ten od wersji 1.1.9 działa tylko z TMCStepper.

Znalazłem podobny problem: https://github.com/MarlinFirmware/Marlin/issues/12144 ale nie doczekał się sensownego rozwiązania.

Jakieś pomysły? Ktoś używa Marlina na Due3Dom z TMC2130?

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 07 lip 2019, 18:36
autor: bialy_worek
stormy pisze:Do obsługi TMC2130 Marlin 2.0 wymaga biblioteki TMCStepper.
Jednak po zainstalowaniu tej biblioteki przy kompilacji jest ostrzeżenie:
"UWAGA: biblioteka TMCStepper działa na architekturze(/architekturach) (avr) i może nie być kompatybilna z obecną płytką która działa na architekturze(/architekturach) (sam)."
Używam tej biblioteki: https://github.com/teemuatlut/TMCStepper
Dziwne bo rzekomo wspiera Atmel Sam (Arduino DUE).
W pliku konfiguracyjnym platformio.ini powinien być taki fragment :

Kod: Zaznacz cały

[env:my_build_env]
platform = [color=#FF0000]atmelavr[/color]
framework = arduino

lib_deps =
  # Using a library name
  TMCStepper
masz fragment zaznaczony na czerwono u siebie w konf. ? Próbowałeś zmienić to na coś w stylu atmelsam. Ja bym spróbował w pierwszej kolejności tam pozmieniać.

Kolejną opcja jest może spróbowanie Arduino 1.9.0 w wersji Beta i wgranie biblioteki TMCStepper i wybranie Arduino DUE/SAM tamże ?

stormy pisze: A architekturą SAM jest kompatybilna biblioteka TMC2130Stepper, ale ona nie działa z Marlin 2.0 bo ten od wersji 1.1.9 działa tylko z TMCStepper.
A nie myślałeś, żeby po prostu wrzucić tam 1.1.9 ? Wydaje się najmniejszą linią oporu, zaraz przed zmiana na inną płytkę :D

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 07 lip 2019, 19:25
autor: Berg
U mnie działa. Jeśli nie startuje Ci wyświetlacz to jest jakiś inny problem.

- Jeśli masz wyświetlacz graficzny, to on generalnie nie działa z Marlinem 2.0 na SAM
- Jeśli kompilujesz na OSX to też może nie działać. Jest jakiś bug w Arduino IDE
- Jeśli kompilujesz w PaltformIO to też nie działa kompilacja na SAM , użyj Arduino na Win lub Linux

:D

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 08 lip 2019, 09:57
autor: samezrp
Potwierdzam, akurat TCM2130 działają w TMCStepper mimo ostrzeżenia. Pisałem w osobnym wątku. Nie działa za to drukowanie :/
viewtopic.php?f=14&t=4537
Znaczy działa, ale głowica potrafi walnąć w wydruk. Na oryginalnej płycie to się nie dzieje, więc wykluczam mechanikę.
BTW @rafaljot możesz się podzielić konfigami?

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 08 lip 2019, 11:16
autor: Berg
Do Delty. Mogę ale tam nic specjalnego nie ma.

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 08 lip 2019, 13:01
autor: stormy
Dzięki za odzew.

@bialy_worek:
TMCStepper nie wspiera SAM.

Tak wygląda library.properties

Kod: Zaznacz cały

name=TMCStepper
version=0.4.5
author=teemuatlut
maintainer=teemuatlut
sentence=Arduino library for Trinamic stepper drivers
paragraph=Easily configure your Trinamic stepper motor drivers
category=Device Control
url=https://github.com/teemuatlut/TMCStepper
architectures=avr
a dla porównania z TMC2130Stepper:

Kod: Zaznacz cały

name=TMC2130Stepper
version=2.5.1
author=teemuatlut
maintainer=teemuatlut
sentence=Arduino library for Trinamic TMC2130 stepper drivers
paragraph=Easily configure your TMC2130 stepper motor drivers
category=Device Control
url=https://github.com/teemuatlut/TMC2130Stepper
architectures=avr,sam
Nie chciałbym się cofać do 1.9 bo 2.0 do momentu upgrade stepsticków działało świetnie.

@rafaljot
Mam graficzny 12864 i bez problemu działa z Marlinem 2.0 na SAM.
Kompiluje w Arduino IDE na Linuxie.

Ale to wszystko nie może być problemem, bo do momentu zmiany stepsticka wszystko działało pięknie.

Jeżeli w Configuration.h mam:

Kod: Zaznacz cały

#define X_DRIVER_TYPE  A4988
#define Y_DRIVER_TYPE  A4988
#define Z_DRIVER_TYPE  A4988
to wszytko działa pięknie, a jak tylko te 2 linijki zmienię na:

Kod: Zaznacz cały

#define X_DRIVER_TYPE  TMC2130
#define Y_DRIVER_TYPE  TMC2130
#define Z_DRIVER_TYPE  A4988
to jest podane ostrzeżenie o niekompatybilnej architekturze i Arduino nie startuje (tak, nie startuje, to nie jest tylko kwestia wyświetlacza, nie da się z nim połączyć przez USB) - dokładnie jak to opisano tutaj: https://github.com/MarlinFirmware/Marlin/issues/1214
Całkowicie powtarzalne, więc to MUSI być coś związanego z tą biblioteką.

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 08 lip 2019, 13:46
autor: Berg
a zobacz z tmc2130 ale bez wyświetlacza. Problemem może być to że tmc i wyświetlacz chodzą na wspólnym SPI, o ile tka to masz zrobione.


A mógłbyś zrobić test. Absolutnie czysty, świeży Marlin 2.0 i tylko wybrać odpowiednią płytę główną, wyświetlacz. Sprawdzić, czy Ci działa. wyświetlacz? Czyli powtórzyć test, o którym pisałem w tym issue 16 dni temu (pod koniec):
https://github.com/MarlinFirmware/Marli ... -330997178

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 08 lip 2019, 18:56
autor: stormy
@rafaljot:
Bez wyświetlacza też jest źle, więc to nie kolizja z wyświetlaczem.
W ogóle to Arduino tak się po tym blokuje, że bez wciśnięcia przycisku "Erase" nie jest możliwe wgranie czegokolwiek.
Na początku mocno mnie to nastraszyło, bo myślałem, że uwaliło się Due.

Co do twojej prośby:
- ściągnąłem czystego Marlina 2.0
- zmodyfikowałem pins.h dodając linijkę:

Kod: Zaznacz cały

#elif MB(DUE3DOM_LE)
  #include "pins_DUE3DOM_LE.h"        // SAM3X8E                                    env:DUE env:DUE_USB env:DUE_debug
  
- zmodyfikowąłem boards.h dodając lilnijkę:

Kod: Zaznacz cały

#define BOARD_DUE3DOM_LE              3099  // DUE3DOM LE for Arduino DUE
- dograłem plik pins_DUE3DOM_LE.h (załączam)
- w Configuration.h wpisałem

Kod: Zaznacz cały

  #define MOTHERBOARD BOARD_DUE3DOM_LE
i odkomentowałem:

Kod: Zaznacz cały

#define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
Cała reszta została nietknięta.

O oto efekt:
IMG_20190708_182421.jpg
Natomiast ciekawostka jest taka, że zrobiłem jeszcze jeden eksperyment i dopisałem do tego czystego configa

Kod: Zaznacz cały

#define X_DRIVER_TYPE  TMC2130
#define Y_DRIVER_TYPE  TMC2130
#define Z_DRIVER_TYPE  A4988
i Arduino się uruchomiło (co prawda wypisując na dole wyświetlacza komunikat TMC communication error, ale to szczegół).

Następny krok - wgranie do tego nowszego Marlina (mój był z 10.04.2019) mojego konfiga. Efekt - wisi.
Więc wygląda na to, że coś z czymś się gryzie.
Muszę teraz pracowicie linijka po linijce sprawdzić co z czym koliduje.
Najbardziej upierdliwe jest to, że po każdej nieudanej próbie muszę wymontować Due bo inaczej nie mogę się dostać do przycisku "erase" a bez jego wciśnięcia nie da się wgrać niczego ani przez Programing port ani przez Native USB.

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 08 lip 2019, 20:15
autor: Marvin27
@stormy masz może dodatkowy moduł pod termopary ?

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 09 lip 2019, 13:18
autor: stormy
rafaljot pisze:Problemem może być to że tmc i wyświetlacz chodzą na wspólnym SPI, o ile tka to masz zrobione.
Nie, TMC chodzą na sprzętowym SPI, a LCD chodzi na pinach 43-47 czyli pewnie na SoftSPI.

@Marvin27:
Nie i nie planuję.
Obecnie mam zwykły termistor taki jak fabrycznie był w klonie V6 od TDI-CAD.
Będę pewnie zmieniał na PT1000, ale niestety w PL nie da się tego kupić w małej obudowie a nie mogę teraz nic zamówić z Aliexpress.

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 09 lip 2019, 14:12
autor: stormy
No dobra, już widzę co z czym się gryzie...

Przepis na katastrofę:
1. Ściągamy czystego marlina
2. W pins.h dodajemy linijkę:

Kod: Zaznacz cały

#elif MB(DUE3DOM_LE)
  #include "pins_DUE3DOM_LE.h"        // SAM3X8E                                    env:DUE env:DUE_USB env:DUE_debug
3. W boards.h dodajemy linijkę

Kod: Zaznacz cały

#define BOARD_DUE3DOM_LE              3099  // DUE3DOM LE for Arduino DUE
4. Wgrywamy pins_DUE3DOM_LE.h do odpowiedniego katalogu
5. W Configuration.h modyfikujemy/odkumentowujemy:

Kod: Zaznacz cały

  #define MOTHERBOARD BOARD_DUE3DOM_LE
  #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

  #define X_DRIVER_TYPE  TMC2130
  #define Y_DRIVER_TYPE  TMC2130
  #define Z_DRIVER_TYPE  A4988
Kompilujemy, wgrywamy, działa.

6. W Configuration.h odkumentowujemy:

Kod: Zaznacz cały

  #define PSU_CONTROL
  #define AUTO_POWER_CONTROL  // Enable automatic control of the PS_ON pin
Kompilujemy, wgrywamy i... katastrofa.
Arduino Due wisi tak, że nie da się ponownie nic do niego wgrać. Trzeba na włączonym wcisnąc przycisk "erase" a następnie "reset" i dopiero ożywa.

Czyli jest jakaś niezrozumiała kolizja między TMC2130 a AUTO_POWER_CONTROL.
I nie chodzi o piny, bo próbowałem PS_ON_PIN zmienić z 40 na np. 31 ale dalej jest to samo.

Jakieś pomysły o co chodzi?

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 09 lip 2019, 15:37
autor: stormy
Przepraszam, że tak post pod postem bo blog się z tego robi, ale niestety na tym forum z niezrozumiałych dla mnie powodów nie da się edytować postów po 10 minutach...

Wszystko już jasne.

W power.cpp

Kod: Zaznacz cały

void Power::power_on() {
  lastPowerOn = millis();
  if (!powersupply_on) {
    PSU_PIN_ON();

    #if HAS_TRINAMIC
      delay(100); // Wait for power to settle
      restore_stepper_drivers();
    #endif
  }
}
I w stepper_indirection.cpp

Kod: Zaznacz cały

void restore_stepper_drivers() {
  #if AXIS_IS_TMC(X)
    stepperX.push();
  #endif
I problem polega na tym, że bezpośrednio po włączeniu zasilania wywoływana jest metoda 'push()' z biblioteki TMCStepper.
Tak po prostu na pałę, bez żadnego sprawdzenia czy jest komunikacja, czy nie. A z jakiś powodów jej nie ma, być może coś jest jeszcze nie zainicjowane, albo delay jest za krótki - tego już mi się nie chce sprawdzać.
Wystarczy zakomentować linijkę "stepperX.push();" (i ew. odpowiednio dla Y itd.) albo "restore_stepper_dirvers()" i wszystko startuje a na wyświetlaczu pojawia się komunikat "TMC Connection Error" albo normalny ekran startowy.
Do tego jeszcze oryginalne TMC nie komunikują się jeżeli nie mają podanego napięcia na Vmot (dziwne, IMHO do komunikacji powinno im wystarczyć tylko podanie Vcc).

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 09 lip 2019, 15:59
autor: tig33r
To teraz załóż issue z tym na gicie marlina. Oszczędzisz problemów wielu ludziom. :)

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 09 lip 2019, 16:00
autor: Berg
Hmmm. @stormy, No bo u mnie było odwrotnie tmc na soft a wyświetlacz na sprzętowym. No i tu może być klucz do wyjaśnienia zagadki.
Powiedz jeszcze jaką masz wersję Arduino IDE (rozumiem, że linux)

To możesz spróbować przepiąć SPI od TMC na jakieś wolne piny. i dodać w configu:
TMC_SW_MOSI
TMC_SW_MISO
TMC_SW_SCK

może obejdzie się bez modyfikacji innych plików. Z ciekawości sprawdzę, czy jakieś waity nie będą mieć wpływu również na inicjację wyświetlacza z przy sprzętowym SPI

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 09 lip 2019, 16:04
autor: Berg
To jeszcze dodam. Pewnie, jak wszyscy, masz klona Arduino DUE. Warto zanim wszystko poskładasz wykonać tę poprawkę:

https://forum.arduino.cc/index.php?topic=256771.60
https://copperhilltech.com/blog/arduino ... res-reset/
http://forum.freetronics.com/viewtopic.php?f=45&t=6055

Mam dwa DUE. W jednym zrobiłem bo włączał się co drugi raz. W drugim tego nie zrobiłem ale widzę że raz na jakiś czas dostaje dziwnego szału przy uruchomieniu.

ja mam u siebie tak jak tu:
Obrazek

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 09 lip 2019, 16:59
autor: stormy
@tig33r:
Oczywiście już jest. https://github.com/MarlinFirmware/Marlin/issues/14558

@rafaljot:
1. Mam Arduino IDE 1.8.9 na linuxie (ale to nie ma znaczenia - patrz pkt 4)
2. Nie chcę przepinać SPI od TMC bo na DUE3DOM LE jest to zrobione na PCB (poza tym to bez sensu i nic nie da - patrz pkt 4)
3. Arduino Due mam oryginalne
4. Dalsze testy i kombinowania nie mają już sensu, bo to jest ewidentny bug w Marlinie.

Quick&Dirty fix to po prostu zakomentowanie tych push'ów, bo one nie są i tak konieczne. Tak na szybko zrobiłem i wszystko działa.
Elegancki fix to było by zrobienie porządnej, zgodnej ze sztuką obsługi błędów komunikacji z TMC2130 w metodzie "restore_stepper_drivers()".

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 11 lip 2019, 14:03
autor: stormy
Mały update:

Nie pisałem tutaj o tym, ale oprócz zgłoszenia issue #14558 opisałem problem w komentarzu do innego issue - https://github.com/MarlinFirmware/Marlin/issues/12144

W efekcie jeden z devloperów przyznał, że problem istnieje i "[...]we just have to not go into an infinite loop if the steppers are un-powered, whether at boot or any other time.[...]"
Zaź samo issue #14558 uzyskało statusy "Bug: confirmed!" oraz "Needs patch" więc jest nadzieja, że to zostanie szybko poprawione.

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 29 paź 2019, 22:17
autor: Basia M.
Dobry wieczór Szanownym forumowiczom.

Czytam to forum od długiego już czasu, ale dziś chciałabym się dopytać w temacie, na który nie znalazłam sama odpowiedzi.

Od kilku miesięcy staram się złożyć drukarkę 3D wg. schematu Hypercube Evolution.
Mechanikę mam już zasadniczo złożoną...... ale poległam na oprogramowaniu.

Dysponuję Arduino DUE + SmartRamps, oraz sterownikami 2208 - dlatego piszę w tym wątku, poniekąd pokrewnym.

Chciałabym uruchomić TMC2208 via UART, korzystając z Marlina 2.0
Same sterowniki są już przygotowane ( jest to wersja fysetc V1.2 ).

Wiem, że:
- potrzebuję uruchomić je via TMCStepper by teemuatlut
- wiem, że istnieje biblioteka soft_uart dla Due Atmel ATSAM3X8E
- wiem też, że istnieje gałąź TMCStepper due_sw_uart (niestety nierozwijana ostatnio :( )

Nie wiem niestety, jak to wszystko pożenić - nieszczególnie znam się na konfigurowaniu bibliotek.

Czy mogę prosić o pomoc, albo skierowanie do lepszych źródeł?



Aha - jeszcze jedno - wiem, że mam dostępne co najmniej dwa porty sprzętowe UART, zasadniczo może to by wystarczyło dla obsługi XY, a Z i E puściłabym w trybie TMC2208_STANDALONE ?

--
Basia M.

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 29 paź 2019, 22:38
autor: Holgin
Nie wiem na czym stoi rozwój SW_UART na DUE aktualnie, ale kilka miesięcy temu zrezygnowałem z Arduino DUE na rzecz LPC1768 właśnie z tego powodu, tj braku obsługi softowego UARTa na DUE. Pamiętaj, że jeden port sprzętowy jest używany przez USB.

Oś Z spokojnie może chodzić w trybie Standalone, ale nie wiem jak ekstruder - wiele osób raportowało problemy z ekstruderem na TMC i wtedy fajnie jest pokombinować z konfiguracją.

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 29 paź 2019, 23:20
autor: Berg
@Basia M. Na początek spokojnie możesz uruchomić wszystko bez UART. W zasadzie w tej drukarce ten UART nic specjalnie Ci nie da.
Ustawisz prąd stepstików potencjometrem tak by silniki były ciepłe lub obliczając właściwy vref i będzie śmigać.
Możesz też spokojnie założyć wątek o swojej drukarce tu:
viewforum.php?f=63

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 30 paź 2019, 12:43
autor: tig33r
Załóż temat o drukarce :DD. Ten uart można puścić w trybie soft na dowolnym wolnym opinie, o ile mnie pamięć nie myli, ale tmc2208 nie ma chyba sensu tak ustawiać, standalone powinno wystarczyć.

Re: Marlin 2.0 + Arduino DUE + TMC2130

: 06 lis 2019, 12:11
autor: Basia M.
Dziękuję pięknie za Wasze odpowiedzi.

@Holgin
na początek chciałabym skonfigurować sprzętowe UARTy,
0 jest używany przez USB, ale patrząc na pinout do 1, 2 i 3 mogę mieć dostęp po przemapowaniu paru pinów - prawda?

@rafaljot
UART chcę wykorzystać do min. ustalenia HYBRID_THRESHOLD.
Mogłabym na stałe zaprogramować wartości w 2208, ale skoro już mam tak zaawansowany :D sprzęt to chciałabym się nauczyć go wykorzystywać.

Wątek na pewno założę, jak znajdę chwilę i światło na kilka zdjęć maszyny.