Guia CNC Brasil - Tudo sobre CNC, Router, Laser, Torno e 3D Print
SOFTWARES => Controle => Mach 2/3 => Tópico iniciado por: luiscastanharo em 28 de Maio de 2016, 19:36
-
Oi galera! Procurei e não consegui encontrar nada do tipo, quero criar uma rotina que utilize um apalpador para centralizar um furo, alguém já usou algo assim?
-
Se você possuir um apalpador tridimensional, digo que funciona - escreví diversas macros para centralização e alinhamento de arestas e furos...
-
Sim eu tenho, estou por enquanto meio na mão sem ser automático
-
Luis,
Abaixo uma rotina para centralização de furo feita pelo interno...
Sub MainRoutine
Dim Posn as Double
Dim Start as Double
Dim Metric as Boolean
Dim Dist As Double ' distancia preparada para fazer probe
Dim OffDist As Double ' distancia para liberar o toque
' Probe Rad does not matter
Dim XLeft, XRight, XCentre, YTop, YBottom, YCentre As Double
Dim Tol As Double
If GetOEMLed (16) Then
Message "Não pode fazer o Toque quando em Coordenadas Maquina"
Exit Sub
End If
Code "G90G80G69G50"
Metric = GetOEMLED(802)
If Metric Then
Dist = 100
OffDist = 1
Tol = 0.1
Else
Dist = 4 'polegada
OffDist = 0.04
Tol = 0.01
End If
Start = GetOEMDRO (800)
Posn = Start - Dist ' X inicial
Message "Toque para Esquerda em X"
Code "G31 X" & nFmt (Posn, 4) ' probe esquerdo
While ISMoving ()
Sleep 20
Wend
XLeft = GetVar (2000)
If GetOEMDRO (800) <= Posn + Tol Then
Message "*** Não encontrou o Furo. Z muito Alto?"
Exit Sub
End If
Code "G01 X" & nFmt (GetOEMDRO (800) + OffDist, 4)
While IsMoving ()
Sleep 20
Wend ' Sai do ponto de toque
Posn = Start + Dist ' para mover à direita
Message "Toque para Direira em X"
Code "G31 X" & nFmt (Posn, 4) ' probe direita
While ISMoving ()
Sleep 20
Wend
XRight= GetVar (2000)
If GetOEMDRO (800) >= Posn - Tol Then
Message "*** Não encontrou o Furo. Z muito Alto?"
Exit Sub
End If
XCentre = (XRight + XLeft) /2.0 ' primeira aproximação no centro
Message "Indo para o Centro em X"
Code "G01 X" & nFmt (XCentre, 4)
While ISMoving ()
Sleep 20
Wend
Start = GetOEMDRO (801)
Posn = Start - Dist ' Y inicial
Message "Toque para Y menos"
Code "G31 Y" & nFmt (Posn, 4) ' Toque em Y menos
While ISMoving ()
Sleep 20
Wend
YBottom = GetVar (2001)
If GetOEMDRO (801) <= Posn + Tol Then
Message "*** Não encontrou o Furo. Z muito Alto?"
Exit Sub
End If
Code "G01 Y" & nFmt (GetOEMDRO (801) + OffDist, 4)
While IsMoving ()
Sleep 20
Wend ' sai do ponto de toque
Posn = Start + Dist ' toque em Y mais
Message "Toque em Y Mais"
Code "G31 Y" & nFmt (Posn, 4) ' toque em Ymais
While ISMoving ()
Sleep 20
Wend
YTop= GetVar (2001)
If GetOEMDRO (801) >= Posn - Tol Then
Message "*** Não encontrou Furo. Z muito Alto?"
Exit Sub
End If
YCentre =(YBottom + YTop) / 2.0 ' estimativa
Message "Indo para o Centro em Y"
Code "G01 Y" & nFmt (YCentre, 4)
While IsMoving ()
Sleep 20
Wend
' faz a rotina em X de novo para maior acurácia
Start = GetOEMDRO (800)
Posn = Start - Dist ' X inicial
Message "Refining X left"
Code "G31 X" & nFmt (Posn, 4) ' toque p/ esquerda
While ISMoving ()
Sleep 20
Wend
XLeft = GetVar (2000)
If GetOEMDRO (800) <= Posn + Tol Then
Message "*** Não encontrou o Furo. Z muito Alto?"
Exit Sub
End If
Code "G01 X" & nFmt (GetOEMDRO (800) + OffDist, 4)
While IsMoving ()
Sleep 20
Wend ' sai do ponto de toque
Posn = Start + Dist ' move p/ direita
Message "Refinando X p/ Direita"
Code "G31 X" & nFmt (Posn, 4) ' toque p/ direita
While ISMoving ()
Sleep 20
Wend
XRight= GetVar (2000)
If GetOEMDRO (800) >= Posn - Tol Then
Message "*** Não encontrou o Furo. Z muito alto?"
Exit Sub
End If
Message "Encontrando o Centro"
XCentre = (XRight + XLeft) /2.0 ' aproximação do centro
Code "G01 X" & nFmt (XCentre, 4)
While ISMoving ()
Sleep 20
Wend
SetOEMDRO 800, GetOEMDRO (800) - XCentre
SetOEMDRO 801, GetOEMDRO (801) - YCentre
SetUserDRO 1064, XCentre
SetUserDRO 1065, YCentre
Message ""
Code "G91 G0 Z15"
Code "G28.1 X-65.03 Y-87.42"
End Sub ' MainRoutine
MainRoutine
Crie um botão na tela do Mach3 e copie este código para ele.
Posicione o probe dentro do furo e execute - a rotina termina com o centro da maquina no centro do furo.
-
Muito obrigado vai ajudar muito!!!
-
Coloquei essa rotina, após centralizar ela procura uma coordenada, depois referência a máquina. Após feito o auto zero z funciona de forma incorreta, após encostar na placa de set invés de subir desce 2mm... alguém tem a solução?
-
Veja se os movimentos estão corretos - quando desce o Z, os valores no digital devem ser negativos (à partir de zero) ou diminuírem...
Se quando você baixa o Z pelo teclado o digital aumenta o valor, precisa inverter na janela Homing/Offsets
-
Quando reinicia o mach3, funciona certo, apenas acontece o erro após fazer a rotina de centralização, acho que deve ficar alguma função modal ativada quando centraliza, e influência na rotina do set de altura.
-
Na minha fez isso tbm, nas últimas linhas Ta escrio Code g28 x... y... apaga essa linha ai a máquina só vai subir pra sair do furo e vai parar.
-
F.Gilii (https://www.guiacnc.com.br/profile/?u=4)
Boa tarde, você poderia me dar uma previa de como criar um botão para usar essa macro ? Eu já uso o probe para o Z e não queria altera essa macro (botão)...
E no seu comentaria você fala de criar um botão para executar essa macro, já procurei e ainda estou procurando na internet, mas não estou encontrando nada relacionado.
Muito obrigado pelo seu tempo...
Abraços...
-
fiz uma programação em código G mesmo.
segue o programa.
roda bem no LinuxCNC
%
#1 = 90 ; raio do furos
#2 = 300 ; velocidade do apalpador
#3 = 1000 ; velocidade do movimento
G54
G91 G38.3 X#1 F#2 ; apalpa
#1001 = #5061 ; variável x1
G90 G1 X0 F#3 ; retorna no centro do furo
G91 G38.3 x[0-#1] F#2 ; apalpa
#1002 = #5061 ; variavel x2
G90 G1 X0 F#3 ; retorna no centro do furo
G91 G38.3 Y#1 F#2 ; apalpa
#1003 = #5062 ; variável y1
G90 G1 Y0 F#3 ; retorna no centro do furo
G91 G38.3 y[0-#1] F#2 ; apalpa
#1004 = #5062 ; variavel y2
#1005 = [[#1001 + #1002]/2] ; centro do furo 1 no eixo X [x1+x2/2]
#1006 = [[#1003 + #1004]/2] ; centro do furo eixo Y
g90 G1 x#1005 y#1006 F#3
%