Znaleziono 3 wyniki

autor: tuxcnc
19 kwie 2020, 08:15
Forum: LinuxCNC (dawniej EMC2)
Temat: Radełko.
Odpowiedzi: 5
Odsłony: 1166

Re: Radełko.

mag999 pisze:
19 kwie 2020, 07:50
Robiłem to radelko na fanucu
"To", to znaczy które ?
Puszczałeś kod z Linuxcnc (który ?) na Fanucu, czy chodzi o sama zasadę ?
Natomiast problem mam podobny, niektóre nitki są przesunięte względem miejsca gdzie być powinny i to psuje cały efekt.

P.S.
Wbrew pozorom, cięcie radełka nożem ma sens, bo nie każdy materiał da się walcować moletką.
autor: tuxcnc
19 kwie 2020, 06:45
Forum: LinuxCNC (dawniej EMC2)
Temat: Radełko.
Odpowiedzi: 5
Odsłony: 1166

Re: Radełko.

zbimuch pisze:
18 kwie 2020, 22:00
podobne rozwiązanie
No właśnie o to chodzi, że podobieństw jest niewiele.
Widać to na filmie od 11 sekundy, a dobrze sobie film zatrzymać na 17 sekundzie.
Nóż nie tnie dwóch helis, prawozwojnej i lewozwojnej, tylko takie popieprzone pętelki, które czasem wyglądają w miarę, a czasem tragicznie, zależnie od długości, skoku, krotności i tolerancji ścieżki narzędzia (G61/G64).
Poza tym jest spory wybieg narzędzia w osi Z, na co czasem najzwyczajniej nie ma miejsca.
U mnie działa to inaczej.

P.S.
Gdzieś przeczytałem, że gość zrywa synchronizację G33 kodem G80. Trochę to dziwne, ale warto sprawdzić.
autor: tuxcnc
16 kwie 2020, 21:58
Forum: LinuxCNC (dawniej EMC2)
Temat: Radełko.
Odpowiedzi: 5
Odsłony: 1166

Radełko.

Temat potraktujcie jako wyzwanie, może sposób na zabicie koronawirusowej nudy, a może i na zrobienie czegoś całkiem użytecznego ...
Od dawna chodziło mi po głowie napisanie programu na radełkowanie nożem tokarskim.
Oczywiście nóż musi być specjalny, bo kąty są wariackie.
Teoretycznie problem jest trywialny - należy naciąć gwint wielozwojny, prawy na lewym, i gotowe.
W praktyce już tak różowo nie jest.
Ale do rzeczy.
Może gdzieś to jest napisane, ale ja się nigdy tym nie interesowałem, więc było to dla mnie zaskoczeniem.
Otóż gdy kontroler napotka kod G33 to czeka na sygnał indeksu z enkodera na wrzecionie. Zasadniczo wszyscy o tym wiedzą, że jest to po to, żeby kolejnymi przejściami trafiać w już naciętą nitkę gwintu.
Ale nigdzie nie widziałem rozważań na temat tego, co się stanie gdy kilka kodów G33 wystąpi bezpośrednio po sobie. Otóż kontroler czeka na indeks enkodera tylko przy pierwszym, kolejne jedzie już po kolei bez sprawdzania pozycji wrzeciona.
Co jest jeszcze ciekawsze, synchronizowana jest wyłącznie prędkość, bez znaczenia jest kierunek. Żeby było jeszcze ciekawiej, jeżeli kolejne ruchy G33 odbywają się w innych kierunkach, to suport zwalnia prze zmianie kierunku, po czym przyśpiesza i ruch coraz bardziej się rozjeżdża względem indeksu wrzeciona.
Krótko mówiąc uruchamiając poniższą sekwencję otrzymamy dość przypadkowe cuda :

Kod: Zaznacz cały

G0 Z0
G33 Z100 K1
G33 Z0    K1
G33 Z100 K1
G33 Z0    K1
G33 Z100 K1
G33 Z0    K1
G33 Z100 K1
G33 Z0    K1
; i tak dalej ...
Ale ma to też dobrą stronę.
Mianowicie nie ma potrzeby robić wybiegu wzdłuż osi Z aby przesunąć względem siebie kolejne nitki gwintu wielozwojnego. Taki wybieg skutecznie uniemożliwia wykonanie gwintu w przypadku gdy dalej pojechać się nie da.
Wybieg można zrobić nawet wzdłuż osi X, ważne żeby miał odpowiednią długość, bo będzie jechany z prędkością zsynchronizowaną z wrzecionem.
Ważne jest jeszcze to, że jeżeli każdy z następujących po sobie kodów G33 ma być osobno synchronizowany z indeksem wrzeciona, to trzeba po wykonaniu poprzedniego zerwać synchronizację, na przykład wykonując ruch G0 o niezerowej długości. Można nawet pojechać o milimetr w tą i z powrotem i kolejne G33 będzie już czekało na indeks wrzeciona.
Dzisiaj osiągnąłem spore postępy, ale program jest daleki od ideału.
Testowałem jeszcze z G61 i trochę mi się linie rozjeżdżały, teraz jest wpisane G64P0.5, ale jeszcze nie sprawdzałem na tokarce.
Ogólnie maszyna fajnie wygląda gdy tnie te helisy, jakby to dopracować, toby fajne rzeczy można było robić ...
Program to sub ngcgui, poniżej listing, oraz plik w załączniku.

Kod: Zaznacz cały

o<radełko> sub

#<Material_Dia> = #1 (=100 Średnica)
#<Pitch> =  #2 (=3 Skok)
#<Mult> =  #3 (=10 Krotność) 
#<Z_Start> =  #4 (=1 Początek w Z) 
#<Z_End> =  #5 (=-0 Koniec w Z)
#<Rpm> = #6 (=170 Obroty)
#<Coolant> =  #7 (=1 <> Chłodziwo)
#<ToolNumber> =  #8 (=99 Narzędzie)
#<Passed> = 0
#<Base_Dia> = [#<Material_Dia> + 2*#<Pitch>] ; 2*pitch because diameter mode

M6 T#<ToolNumber> G43 ;chose tool and load offsets
M3 S[#<Rpm>] G4P3 ; spindle start CW and wait for full speed
G64 P0.5
G7 ; diameter mode
G18 ; select XZ plane
G21 ; millimeters

o1 if [#<Coolant> eq 1] 
   M8 
o1 endif 

G0 X[#<Base_Dia>]
G0 Z#<Z_Start>

o100  while [#<Mult> gt #<Passed>]

#<Start>=[#<Base_Dia>-#<Passed>*2*#<Pitch>/#<Mult>] ; 2*pitch because diameter mode

G0  X[#<Start>]
G33 X[#<Material_Dia>] Z[#<Z_Start>] K[#<Pitch>]
G33 Z[#<Z_End>] K[#<Pitch>]
G0  X[#<Start>]
G33 X[#<Material_Dia>] Z[#<Z_End>] K[#<Pitch>]
G33 Z[#<Z_Start>] K[#<Pitch>]
#<Passed>=[#<Passed>+1]

o100 endwhile

G0 X[#<Base_Dia>]
M5 M9               ; stop spindle, all coolant off
G0 Z#<Z_Start>

o<radełko> endsub
radełko.tar
(10 KiB) Pobrany 92 razy

Wróć do „Radełko.”