GRBL - 2 silniki na oś i niezależne bazowanie
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 14
- Posty: 2329
- Rejestracja: 25 kwie 2016, 11:58
- Lokalizacja: Jodlowa
- Kontakt:
GRBL - 2 silniki na oś i niezależne bazowanie
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ć?
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ć?
-
- 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
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.
Krańcówki podłącza się parami do dwóch wejść X1, Y/X2, Z.
-
Autor tematu - Lider FORUM (min. 2000)
- Posty w temacie: 14
- Posty: 2329
- Rejestracja: 25 kwie 2016, 11:58
- Lokalizacja: Jodlowa
- Kontakt:
Re: GRBL - 2 silniki na oś i niezależne bazowanie
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:
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?
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:
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?
-
- 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
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.
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 - Lider FORUM (min. 2000)
- Posty w temacie: 14
- Posty: 2329
- Rejestracja: 25 kwie 2016, 11:58
- Lokalizacja: Jodlowa
- Kontakt:
Re: GRBL - 2 silniki na oś i niezależne 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.
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
Kod: Zaznacz cały
#define DUAL_AXIS_SELECT Y_AXIS
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

-
- 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
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:21Ok, rozumiem. Myślałem, że czwarty sterownik nie ma połączenia z mikrokontrolerem i można jedynie zworkami skopiować sterowanie z któregokolwiek innego.
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-drzasiek90 pisze: ↑19 sty 2021, 12:21rozumiem ż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:orazKod: Zaznacz cały
#define ENABLE_DUAL_AXIS
A więc,Kod: Zaznacz cały
#define DUAL_AXIS_SELECT Y_AXIS
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łemPod X+ lub X-?
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.
-
- 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
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."
-
- Lider FORUM (min. 2000)
- Posty w temacie: 8
- Posty: 9320
- Rejestracja: 26 lut 2011, 23:24
- Lokalizacja: mazowieckie
Re: GRBL - 2 silniki na oś i niezależne bazowanie
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 ?
-
- 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
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.