Saludos a Todos.. y espero me puedan echar una mano con mi CNC
Recientemente adquirí una Fresadora pero con la controladora electrónica totalmente QUEMADA a excepción de las 3 tarjetas de potencia cada una usa 2 Drive L6203
Hice cada etapa de control con un PIC16F628A para cada tarjeta de potencia use el PIC16F628A para ahorrarme el Cristal usando la frecuencia interna, pero aun soy novato usando Mikrobasic... Sucede q tengo el lenguaje hecho para leer los siguientes estados lógicos:
PASO (RA0)
Dirección(RA1)
ENABLE (RA2)
De esta manera el lenguaje me trabaja al 100% con ENABLE (RA2) Activo para empezar a leer los estados PASO(RA0) y Dirección(RA1)
1) Cuando presiono PASO (RA0) el motor Gira a la Derecha
2) Cuando presiono PASO (RA0) + Dirección(RA1) el motor Gira a la Izquierda
El Problema esta en que cuando presione PASO (RA0) dejando activo el motor debería solo dar un paso y cuando suerte y presione de nuevo avance al próximo paso y se preguntaran porque lo necesito así ? en mi caso estoy usando el MACH3
Pues como deben de saber los que han trabajado con CNC que para controlar la CNC desde la PC esta me envía pulsos através del puerto PLT1 y tal como veo en la configuración de software los envía a una velocidad de 25.000Hz minimo
En fin cuando conecto la CNC al PC los ejes X,Y,Z se desplazan con mucho ruido y mucha vibración y noto q los pasos son incorrectos y para nada precisos.... por eso necesito hacer q cada vez q reciba un pulso solo de un paso por cada pulso
Por lo cual se q falta algo en el lenguajes y me puse a investigar y me falta trabajar con INTERRUPCION pero no se como hacerlo. Este es el lenguaje de Mikrobasic: y una imagen de la conexión del motor y los pulsadores (o mejor dicho los pines del Puerto PLT1)
'************************************************************************************************
program MOTOR_PaP_2
Dim Paso as integer
Dim Contador as integer
main:
cmcon = 7
TRISA=255
PortA=0
TRISB=%00000000
Paso=0
PORTB=%00000000
Inicio:
'******************************************************************************
If PORTA.2 = 1 then 'Enable
' Delay_us(4)
if PORTA.0 = 1 then 'Paso
Contador= 0
if PORTA.1 = 1 then 'Direccion
if Paso = 8 then
Paso=1
goto Paso_Medio
else
paso=paso + 1
goto Paso_Medio
end if
else
if Paso = 0 then
Paso = 1 'Verifica Estado de PASO para ir a IZQ
end if
if Paso = 1 then
Paso = 8
goto Paso_Medio
else
paso=paso-(1)
goto Paso_Medio
end if
end if
end if
else
if contador= 20 then 'cuenta hasta 20 segundos
PORTB = %00000000 'y luego apago el Motor
else
delay_ms(1000)
contador=contador +1
end if
end if 'Fin de Enable
Paso_Medio:
select case Paso
Case 1
PORTB=%00000001
Case 2
PORTB=%00000011
Case 3
PORTB=%00000010
Case 4
PORTB=%00000110
Case 5
PORTB=%00000100
Case 6
PORTB=%00001100
Case 7
PORTB=%00001000
Case 8
PORTB=%00001001
end Select
Goto Inicio
end.
'******************************************************************************
Agradecería ayudar pues quiero pulirme en esta área un poco tengo pensado hacer la CNC con su propia LCD y control manual y vía PC de los ejes X,Y,Z