Offset pozycji wydruku

Awatar użytkownika
Miś
Posty: 625
Rejestracja: 14 sty 2015, 0:47
Lokalizacja: Bytom

Offset pozycji wydruku

Postautor: Miś » 13 maja 2015, 2:04

Zastanawia mnie przydatność takiej opcji w firmware.
Mamy wygenerowany G-Cod który drukuje nam element w danym miejscu stołu. A chcielibyśmy w innym, i nie chce się generować slicerem nowego G-Cod'a bo jest na karcie SD i jest OK. Więc jak nam się to miejsce nie podoba (np uszkodzony w tym miejscu BuildTak) chcemy se przenieść toto w inne miejsce stołu.
Mój pomysł wygląda tak:
1. Opcja dodania nowej komendy do G-Cod'a typu Mxxx Xxx.xx, Yyy.yy którą można (dopisując np. notatnikiem do gotowego G-Cod'a) spowodować dodanie offsetu na stole gdzie zostanie dany wydruk zrobiony.
2. Opcja ustawienia z poziomu LCD offsetu tak samo jak powyżej. Oczywiście ten offset będzie ważny tylko do czasu wyłączenia drukarki.
Oczywiście offset mógłby być w plusie jak i minusie. No i jak po uwzględnieniu offsetu wydruk wyszedłby poza pole robocze to sorry, będzie ograniczone do pola.
Tak się nad tą opcją zastanawiam... Mnie by się kilka razy przydała - zamiast kolejnego cięcia slicerem w innym miejscu stołu. Łatwiej jest ustawić z poziomu LCD, czy nawet dopisać do G-Cod'a linijkę z offsetem niż na nowo ciąć model slicerem - szczególnie jakiś stary który trzeba powtórzyć.

Awatar użytkownika
unitral
Posty: 446
Rejestracja: 09 sty 2015, 22:34
Lokalizacja: Wiedeń

Re: Offset pozycji wydruku

Postautor: unitral » 13 maja 2015, 6:05

Można zrobić komendą G92 x y podając nowe współrzędne głowicy.

Awatar użytkownika
adamJ1
Posty: 387
Rejestracja: 21 gru 2014, 16:24

Re: Offset pozycji wydruku

Postautor: adamJ1 » 14 maja 2015, 9:13

Czyli po rozpoczęciu wydruku głowica jedzie w miejsce x,y i realizuje kolejne komendy?

Awatar użytkownika
unitral
Posty: 446
Rejestracja: 09 sty 2015, 22:34
Lokalizacja: Wiedeń

Re: Offset pozycji wydruku

Postautor: unitral » 14 maja 2015, 9:35

Nie.
Ustawiasz głowicę w dowolnym miejscu, po czym komendą M92 X.xx Y.yy ustawiasz nową pozycję głowicy, ale bez jej przesunięcia.
Od tej pory sterownik myśli że głowica znajduje się w innym miejscu.

92: Set Position

Parameters :This command can be used without any additional parameters.

Xnnn new X axis position
Ynnn new Y axis position
Znnn new Z axis position
Ennn new extruder position


Czyli jak chcesz przesunąć wydruk o 10 w X i o 20 w Y to robisz na początku:
G28 ;Move to Origin (Home)
G0 X10 Y20 ;Move to X10 Y20
G92 X0 Y0 ;Reset X Y position

Od tego momentu mamy nowy punkt Home.
Oczywiście sterownik nie pozwoli wyjść poza oryginalny obszar roboczy.
Ale zastosowanie polecenia G28 ustawi ponownie rzeczywistą pozycję Home a nie naszą przesuniętą.

Awatar użytkownika
Miś
Posty: 625
Rejestracja: 14 sty 2015, 0:47
Lokalizacja: Bytom

Re: Offset pozycji wydruku

Postautor: Miś » 21 maja 2015, 22:36

Pobawiłem się trochę tą komendą G92 i znalazłem prostszy sposób na ofset.
To co podał Unitral umożliwia jedynie dodatni offset. Nie da się cofnąć wydruku np ze środka stołu do krawędzi przy X bliskim 0.

ALE... Sekwencja w kodzie startowym:
G28 X0 Y0
G28 Z0 ; takie coś robi Cura aby najpierw był home XY a potem Z
G92 X-10 Y-20

Powoduje dokładnie takie samo zachowanie jak opisał Unitral. Jeśli chcemy przesunąc wydruk w PLUSIE to parametr dla G92 musi być ujemny. Jeśli chcemy przesunąć w minusie, to dodatni. Czyli G92 X-20 Y40 przesunie wydruk w X o +20mm a w Y o -40mm.

W ten sam sposób możemy dodać offset do osi Z. Wstawiając G92 Z0.02 spowodujemy OBNIŻENIE głowicy o 0.02mm przed rozpoczęciem wydruku a wartościami ujemnymi - podniesienie.
Oczywiście w jednej komendzie G92 mogą się znajdować dane dla jednej, dwóch lub wszystkich trzech osi.

Ważne jest aby dopisać linię z G92 zaraz po komendzie HOME, nie później, kiedy głowica się przesunie na inną pozycję niż 0,0,0.

Aaa, i nie prawdą jest że kolejne G28 zeruje offsety. Nie zeruje. Tak więc przed rozpoczęciem innego wydruku trzeba albo zresetować sterownik, albo mieć w nagłówku G92 X0 Y0 Z0. Tak zachowuje się Repetier.
W sumie i dobrze, bo dodałem sobie do menu LCD możliwość ustawienia offsetów, więc teraz mogę sobie ustawić offset X na 20mm, Y na 30mm, a Z np na 0.03mm po czym spokojnie wybrać z panela LCD plik do wydrukowania z karty SD, zapuścić go i drukuje się z uwzględnieniem ustawionych wcześniej offsetów (pod warunkiem że w tym pliku nie ma komendy G92 która zmieni mi offsety ustawione z poziomu panela LCD). Pozycje pokazywane na LCD też uwzględniają ustawione offsety.

Awatar użytkownika
unitral
Posty: 446
Rejestracja: 09 sty 2015, 22:34
Lokalizacja: Wiedeń

Re: Offset pozycji wydruku

Postautor: unitral » 22 maja 2015, 5:41

Oczywiście Masz rację, ale ja podałem najprostszy przykład jaki mi przyszedł do glowy:-) Można w nim ustawić też ujemną pozycję, ale mój marlin nie ogranicza wtedy dobrze pola roboczego...
Metod jest kilka. Ty znalazłeś szybszą i super.
W marlinie niestety offset się zeruje.

Mam jeszcze prośbę o info jak dodajesz nowe pozycje do wyświetlacza?

Awatar użytkownika
Miś
Posty: 625
Rejestracja: 14 sty 2015, 0:47
Lokalizacja: Bytom

Re: Offset pozycji wydruku

Postautor: Miś » 22 maja 2015, 11:40

unitral pisze:Mam jeszcze prośbę o info jak dodajesz nowe pozycje do wyświetlacza?

W repetierze jest to dość upierdliwe. Trzeba robić zmiany w kilku plikach. Najpierw w "uimenu.h" trzeba zdefiniować co ma być w tym menu, oraz rozszerzyć istniejące menu o dodatkową podgrupę, potem w "ui.h" trzeba dopisać definicję akcji dla tego menu, następnie w "uilang.h" dopisujemy właściwe teksty dla nowego menu (wraz z ewentualnymi metaznakami umożliwiającymi wyświetlanie wartości zmiennych), a na koniec w "ui.cpp" trzeba dopisać dwa fragmenty kodu, jeden obsługujący akcje, czyli np zwiększanie i zmniejszanie wartości, i drugi obsługujący metaznaki który powoduje wyświetlanie tych wartości na LCD.
Jak chcesz to przytoczę tu odpowiednie fragmenty, ale jest tego sporo - dla głupiego jednego podmenu z trzema opcjami wewnątrz.

Awatar użytkownika
Fabrykator.pl
Posty: 8759
Rejestracja: 06 mar 2012, 20:07
Lokalizacja: Darłowo
Kontaktowanie:

Re: Offset pozycji wydruku

Postautor: Fabrykator.pl » 22 maja 2015, 12:14

Można to zrobić komendą w startowym gcodzie (po Home dla tych osi):

G1 Xxx ; ustawia pozycję X na zadaną wartość
G92 X0 ; resetuje pozycję X na 0
G1 Yxx ; ustawia pozycję Y na zadaną wartość
G92 Y0 ; resetuje pozycję Y na 0

Oczywiście wtedy trzeba mieć na uwadze maksymalny zakres danej osi, gdyż punkt 0 się nam przesunie,

... ale widzę, że kolega to wcześniej napisał :)

elaniusz
Posty: 37
Rejestracja: 28 mar 2014, 11:19

Re: Offset pozycji wydruku

Postautor: elaniusz » 14 lut 2018, 14:24

Witam serdecznie; Chciałbym trochę odgrzebać temat ponieważ mowa w nim jest o tym co mnie interesuje.

Zrobiliśmy dużą drukarkę DELTA do drukowania gliną. Potrzebuje zaimplementować do Marlina funkcję, o której pisał Miś Tzn.

Będę drukował na rożnych "podstawkach" np płyta kamienna, sklejka, szkło itp. oczywiście każda z nich ma różną grubość. Nie chcę tego za każdym razem wpisywać w g-code (nie tylko ja będę użytkownikiem drukarki), poza tym jeden g-code może być drukowanych na różnych podstawkach.
Coś na kształt funkcji z tego filmiku.
https://youtu.be/1DjVC5MxJr4?t=3m15s

Problem polega na tym, że używam wyświetlacza dotykowego TFT MKS 3.2 do sterowania maszyną.

Czy mógłbym prosić o pomoc, jak zmodyfikować firmware Marlin i ewentualnie firmware wyświetlacza żeby zaimplementować tę funkcję.
Za pomoc będę wdzięczny:)

Poniżej załączam fotkę wyświetlacza i kawałka drukary

Obrazek


Wróć do „Repetier Firmware”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości