GRBL - 2 silniki na oś i niezależne bazowanie

Rozmowy dotyczące oprogramowania sterującego maszynami CNC i sterowników CNC obrabiarek numerycznych

Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 14
Posty: 1760
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

GRBL - 2 silniki na oś i niezależne bazowanie

#1

Post napisał: drzasiek90 » 18 sty 2021, 22:23

Buduję ploter laserowy dla żony. Aby sobie ułatwić i nieco przyspieszyć pracę kupiłem bardzo prostą gotową ramę (konstrukcję ramy ze sterowaniem) do montażu. Przerobię pod odpowiednie wymiary, zamontuję laser, wykonam elementy dodatkowe które są w tym zastosowaniu konieczne. Konstrukcja przewidziana jest na sterowanie GRBL, w zestawie jest arduino UNO oraz płytka CNC Shield i sterowniki. Korzystałem z Mach3, LinuxCNC jednak nigdy do tej pory nie korzystałem z GRBL a poszperałem nieco i wygląda że do lasera nadaje się dobrze, postanowiłem spróbować. Najpierw podkładam mechanikę, potem zrobię rozpoznanie odnośnie GRBL.
Producent ramy przewidział sterowanie bramą za pomocą 2 silników jednak obydwa mają pracować równocześnie na jednym sterowniku. Mi się to rozwiązanie nie podoba i w zasadzie nie jest do zaakceptowania. Nie wiem jak w takim wypadku maszyna ma zachować geometrię XY, wystarczy przesunąć nieco jedną stronę bramy na wyłączonych silnikach i po zabawie. Chciałbym zrobić sterowanie silnikami z osobnych sterowników, jako oś nadrzędna i podrzędną oraz niezależne bazowanie każdy na swój czujnik tak jak to robiłem dla dużych ploterów w LinuxCNC. I teraz pytanie, czy w GRBL da się coś takiego zrobić?



Awatar użytkownika

TOP67
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 11
Posty: 2224
Rejestracja: 17 wrz 2018, 10:47
Lokalizacja: Wrocław
Kontakt:

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#2

Post napisał: TOP67 » 18 sty 2021, 22:27

Tak. Trzeba jednak przekompilować GRBL i włączyć DUAL_AXIS. Trzeba też wybrać, która oś ma być powielona (tylko X lub Y)
Krańcówki podłącza się parami do dwóch wejść X1, Y/X2, Z.


Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 14
Posty: 1760
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#3

Post napisał: drzasiek90 » 19 sty 2021, 09:23

Nie wiem czy dobrze doczytałem, ale opcja DUAL_AXIS powinna znajdować się w pliku config.h.
Pobrałem grbl stąd: https://github.com/grbl/grbl
i w pliku config.h nie znajduję takowej opcji zakomentowanej.
Czy opcja ta dostępna jest w oficjalnym wydaniu GRBL czy jest to czyjaś modyfikacja?

Dodane 2 minuty 46 sekundy:
Ok, znalazłem:
https://github.com/gnea/grbl/releases
Jak się zupełnie nie miało styczności z GRBL i arduino to mimo że to proste to odczuwam pewne zagubienie :)

Dodane 54 minuty 41 sekundy:
TOP67 pisze:
18 sty 2021, 22:27
Tak. Trzeba jednak przekompilować GRBL i włączyć DUAL_AXIS. Trzeba też wybrać, która oś ma być powielona (tylko X lub Y)
Krańcówki podłącza się parami do dwóch wejść X1, Y/X2, Z.
Rozumiem, że oś powielona będzie na sterownik osi Z tak?
Czyli jeśli ustawię:

#define DUAL_AXIS_SELECT Y_AXIS

oznaczało to będzie, że na sterowniku osi X będę miał sterowanie X, na sterowniku osi Y będze miał sterowanie silnikiem 1 osi Y a na sterowniku osi Z będę miał sterowanie silnikiem 2 osi Y tak? I wtedy krańcówki podłączam X do sterownika Y a krańcówki Y1 i Y2 do sterownika Y i Z?

Awatar użytkownika

TOP67
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 11
Posty: 2224
Rejestracja: 17 wrz 2018, 10:47
Lokalizacja: Wrocław
Kontakt:

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#4

Post napisał: TOP67 » 19 sty 2021, 11:32

Nie. Oś Z pozostaje niezmienna. Trzeba odróżnić DUAl_AXIS od 2_AXIS
CNC Shield v3 ma 4 gniazda na stepsticki, więc można podłączyć 4 silniki. Ten czwarty może być zworkami zmostkowany z dowolną osią, ale wtedy bazowanie jest wspólne. Albo programowo podpięty pod oś X lub Y i mieć osobne bazowanie.
Ponieważ Arduino ma ograniczoną ilość portów, a potrzeba kolejnych do obsługi czwartego silnika, trzeba było zrezygnować z niektórych funkcji, jak obsługa chłodzenia. Jeden (a w zasadzie dwa) porty zaoszczędzono grupując krańcowki. Są tylko dwa porty, dla każdego silnika z podwójnej osi, które obsługują również pozostałe dwie. Ponieważ bazowanie odbywa się dla każdej osi osobno, nie jest to problemem.


Autor tematu
drzasiek90
ELITA FORUM (min. 1000)
ELITA FORUM (min. 1000)
Posty w temacie: 14
Posty: 1760
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#5

Post napisał: drzasiek90 » 19 sty 2021, 12:21

TOP67 pisze:
19 sty 2021, 11:32
Ten czwarty może być zworkami zmostkowany z dowolną osią, ale wtedy bazowanie jest wspólne. Albo programowo podpięty pod oś X lub Y i mieć osobne bazowanie.
Ok, rozumiem. Myślałem, że czwarty sterownik nie ma połączenia z mikrokontrolerem i można jedynie zworkami skopiować sterowanie z któregokolwiek innego.
TOP67 pisze:
19 sty 2021, 11:32
Jeden (a w zasadzie dwa) porty zaoszczędzono grupując krańcowki. Są tylko dwa porty, dla każdego silnika z podwójnej osi, które obsługują również pozostałe dwie.
Tego nie zrozumiałem. Tzn rozumiem że można zgrupować krańcówki ale nie rozumiem stwierdzenia, że są dwa porty które obsługują pozostałe 2.

Na CNC Shield mamy wejścia (X+ X- Y+ Y- Z+ Z-).
Na schemacie widzę, że wejścia + i - są połączone, co jest ok. Nigdy maszyna nie będzie jednocześnie na krańcówce + i -, jedyny minus to brak rozróżnienia na którą krańcówkę najechał ale po co to komu, przecież widać :)
Natomiast nie wiem gdzie podłączyć krańcówkę drugiego silnika sklonowanej osi.

Załóżmy, że klonuję silnik Y.
Popraw mnie jeśli źle zrozumiałem.
W grbl w pliku config.c odkomentuję linie:

Kod: Zaznacz cały

 #define ENABLE_DUAL_AXIS
oraz

Kod: Zaznacz cały

#define DUAL_AXIS_SELECT  Y_AXIS
A więc,
Silnik X podłączam pod stepscick X i krańcówkę X podłączam pod X+ lub X-, bez znaczenia.
Silnik Y1 podłączam pod stepstick Y i krańcówkę Y2 podłączam pod Y+ lub Y-.
Silnik Y2 podłączam pod stepstick A a krańcówkę Y2 pod? Tu jest to czego nie zrozumiałem ;) Pod X+ lub X-?

Awatar użytkownika

TOP67
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 11
Posty: 2224
Rejestracja: 17 wrz 2018, 10:47
Lokalizacja: Wrocław
Kontakt:

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#6

Post napisał: TOP67 » 19 sty 2021, 16:49

drzasiek90 pisze:
19 sty 2021, 12:21
Ok, rozumiem. Myślałem, że czwarty sterownik nie ma połączenia z mikrokontrolerem i można jedynie zworkami skopiować sterowanie z któregokolwiek innego.
Można zworkami podłączyć pod oś X, Y,Z lub pod D12 i D13, które po włączeniu DUAL_AXIS obsługują czwartą oś (często nazywaną A).
drzasiek90 pisze:
19 sty 2021, 12:21
rozumiem że można zgrupować krańcówki ale nie rozumiem stwierdzenia, że są dwa porty które obsługują pozostałe 2.

Na CNC Shield mamy wejścia (X+ X- Y+ Y- Z+ Z-).
Na schemacie widzę, że wejścia + i - są połączone, co jest ok. Nigdy maszyna nie będzie jednocześnie na krańcówce + i -, jedyny minus to brak rozróżnienia na którą krańcówkę najechał ale po co to komu, przecież widać :)
Natomiast nie wiem gdzie podłączyć krańcówkę drugiego silnika sklonowanej osi.

Załóżmy, że klonuję silnik Y.
Popraw mnie jeśli źle zrozumiałem.
W grbl w pliku config.c odkomentuję linie:

Kod: Zaznacz cały

 #define ENABLE_DUAL_AXIS
oraz

Kod: Zaznacz cały

#define DUAL_AXIS_SELECT  Y_AXIS
A więc,
Silnik X podłączam pod stepscick X i krańcówkę X podłączam pod X+ lub X-, bez znaczenia.
Silnik Y1 podłączam pod stepstick Y i krańcówkę Y2 podłączam pod Y+ lub Y-.
Silnik Y2 podłączam pod stepstick A a krańcówkę Y2 pod? Tu jest to czego nie zrozumiałem ;) Pod X+ lub X-?
Jeśli klonujesz oś Y, to krańcówki grupuje się tak [X,Y2] - do wejścia X+ lub X- /[Y1,Z] do Y+ lub Y-
Pin opisany jako Z jest wyjściem PWM do sterowania wrzecionem od GRBL 0.9

// NOTE: Arduino CNC Shield Clone (Originally Protoneer v3.0) has A.STP and A.DIR wired to D12 and D13, respectively. With the limit pins and stepper enable pin on this same port, the spindle enable pin had to be moved and spindle direction pin deleted. The spindle enable pin now resides on A3, replacing coolant enable. Coolant enable is bumped over to pin A4. Spindle enable is used far more and this pin setup helps facilitate users to integrate this feature without arguably too much work. Variable spindle (i.e. laser mode) does NOT work with this shield as configured. While variable spindle technically can work with this shield, it requires too many changes for most user setups to accomodate. It would best be implemented by sharing all limit switches on pins D9/D10 (as [X1,Z]/[X2,Y] or [X,Y2]/[Y1,Z]), home each axis independently, and updating lots of code to ensure everything is running correctly.

Z powyższego opisu wynika, że PWM zostanie wyłączone. Druga dostępna konfiguracja zachowuje PWM, ale ma A.STP i A.DIR na portach A3 i A4, więc wymagała by lutowania. Ale wszystko da się włączyć, odpowiednio zmieniając pliki konfiguracyjne.

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 7859
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#7

Post napisał: tuxcnc » 19 sty 2021, 20:01

TOP67 pisze:
19 sty 2021, 16:49
Z powyższego opisu wynika, że PWM zostanie wyłączone.
Chyba już kiedyś o tym dyskutowaliśmy, że ten opis jest debilny, bo nie chodzi o same sygnały, tylko o nadruk na płytce shielda ...

Awatar użytkownika

TOP67
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 11
Posty: 2224
Rejestracja: 17 wrz 2018, 10:47
Lokalizacja: Wrocław
Kontakt:

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#8

Post napisał: TOP67 » 19 sty 2021, 20:22

tuxcnc pisze:
19 sty 2021, 20:01
TOP67 pisze:
19 sty 2021, 16:49
Z powyższego opisu wynika, że PWM zostanie wyłączone.
Chyba już kiedyś o tym dyskutowaliśmy, że ten opis jest debilny, bo nie chodzi o same sygnały, tylko o nadruk na płytce shielda ...
To przeczytaj ze zrozumieniem co tam jest napisane. Nie ma to nic wspólnego z napisami. Po wybraniu tej płytki dla DUAL_AXIS, PWM musi być wyłączone, bo SpnEn zostanie przeniesione na port A3.

Albo spróbuj to skompilować

Kod: Zaznacz cały

  #if defined(DUAL_AXIS_CONFIG_CNC_SHIELD_CLONE) && defined(VARIABLE_SPINDLE)
    #error "VARIABLE_SPINDLE not supported with DUAL_AXIS_CNC_SHIELD_CLONE."

Awatar użytkownika

tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 8
Posty: 7859
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#9

Post napisał: tuxcnc » 19 sty 2021, 20:36

TOP67 pisze:
19 sty 2021, 20:22
Albo spróbuj
Wybacz, ale dzisiaj mi się po prostu nie chce.
Pamiętam natomiast długą dyskusję na temat tego debilizmu, że się nie da skompilować, bo się napisy na płytce nie będą zgadzały z sygnałami.
Najzwyczajniej trzeba skonfigurować shielda jako Protoneer v3.3 i nie przejmować się nadrukami.
Czy przypadkiem nie o to chodzi ?

Awatar użytkownika

TOP67
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 11
Posty: 2224
Rejestracja: 17 wrz 2018, 10:47
Lokalizacja: Wrocław
Kontakt:

Re: GRBL - 2 silniki na oś i niezależne bazowanie

#10

Post napisał: TOP67 » 19 sty 2021, 21:02

tuxcnc pisze:
19 sty 2021, 20:36
Najzwyczajniej trzeba skonfigurować shielda jako Protoneer v3.3 i nie przejmować się nadrukami.
Czy przypadkiem nie o to chodzi ?
Nie do końca, bo wtedy sterowanie czwartym silnikiem, będzie na A3 i A4. A na CNC Shield v3.0 są wyprowadzone D12 i D13.

Trzeba więcej pozmieniać, ale się da.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Ogólne Dyskusje na Temat Systemów Sterowania CNC”