TODOPIC
Mecatrónica => CNC - Control Numérico Computarizado => Mensaje iniciado por: Moyin en 10 de Octubre de 2010, 12:11:48
-
:lol: Que tal amigos quiero compartirles que después de mucho tiempo de estar armando mi CNC ya la he terminado y ahora estoy en fases de pruebas y ajustes, el día de ayer la conecte a la interface y a la PC para controlarla con el Mach y es ahora donde comienzan a surgir algunos detalles.
Aquí el primero: Resulta que observo que aunque trabajan los 3 ejes la máquina trabajaba muy lenta, después de estar insistiendo observé que él letrero de prueba era muy pequeño y que era poco el avance por el tipop de letra, posteriormente realizé una prueba con una sola letra grande para observar el avance lineal del eje X y Y y no consigo obtener una buena velocidad. Estuve modificando los parámetros de los motores y le di valores bajos medioy y altos de velocidad y aceleración pero no obtrengo resultados favorables, ¿hay algun valor estandar que pueda utilizar en los motores? movi los valores por todos lados y no trabajo en forma adecuada, tengo motores de 1.8 grados (200 pasos) con un husillo de 2.5 mm de avance por vuelta.
Segundo problema: Al momento de estar haciendo las pruebas me doy cuenta que aunque estan trabajando los motores, no tengo un desplazamiento constante es decir que en tramos largos el avance no es continuo, sucede que avanza una distancia y se interrumpe y continua el avance y asi continua en forma intermitente, repito si realiza el avance pero en forma intermitente y no es que pierda pasos porque esta a baja velocidad y el eje esta libre.
Estoy apenas empezando con el Mach y aun tengo muchas dudas y por ello recurro al foro para que me apoyen con estos problemas.
Saludos y gracias de antemano :-/
-
Que PC usas, a veces si no es potente el MAch para y vuelve a funcionar por falta de recursos del PC y no se pierden pasos.
Mira a ver este punto y la configuracion de velocidad del Kernel del MAch
-
Hola Moyin, que bueno que ya has tenido avances, yo te recomendaría hacer pruebas al vacío, es decir con los motores sin carga, lo que te recomienda Algec tiene mucho sentido, mira sino estas trabajando con una portatil, o si a tu interfaz esta bien armada, a mi me paso algo similar y era que al 74244 de mi interfaz no le estaba mandando GND. :-/
-
OK la verdad es que no había considerado el detalle de la PC y es que tengo una portatil Pentium 3 de 736 MHZ y solo tiene 256 MHZ de RAM, voy a probar con una de escritorio que tengo olvidada a ver que resultados obtengo.
Les agradezco a ambos los comentarios y haciendo las pruebas les platicaré los resultados.
Saludos :)
-
:5]Bueo pues aqui de nuevo. Realicé la prueba ahora con una PC de escritorio con un Pentium4 y 768 M en RAM y el resultado es similar al de la PC portatil, la prueba la hice con los motores desacoplados y observo que aunque trabajan no loo hacen en forma continua, sigue presentandose la misma situación avanza en forma intermitente, lo que observo es que el cursor en forma de cruz que sigue la trayectoria de corte en la pantalla de Mach marca también el tipo de avance del motor es decir avanza y pausa.
Quiero hacer una prueba más con otro equipo ya que esta PC no alcanza 1GHZ de RAM que se recomienda y no se si halla por esto problemas.
Algo que no había comentado es que en mi interface estoy usando un PIC para cada eje controlados por las señales de la PC aunque esto se que no es el problema porque ya había hecho algunas pruebas con señales de reloj y dirección externas y no hubo problemas.
Saludos
-
Aquí de nuevo amigos, solo para referencia quiero anexar el circuito de mi controladora, aquí en este caso empleo como driver unipolar cicuitos SLA7024 las cuales son controlados por un PIC16F84A cada una y estos por las señales que lentregan los CI 74LS245 provenientes del puerto LBT conectafo a la PC.
Me gustaría que lo revisaran para ver si acaso no existe algun detallito que me pueda estar afectando.
Saludos :lol:
-
Tienes el programa del Pic de tu controladora?
Tengo varios SLA y me interesa verlo, yo hice uno en C pero comparar siempre esta bien.
Si puedes publicalo o subelo o mandalo por email.
Gracias
-
Hola Algec, el programa lo realicé en Mikrobasic trabajando el SLA7024 a paso completo en 2 fases segun la hoja de datos.
Aquí el código:
program Step_ckCNC
' *Mikrobasic,Diciembre 2009
' * Descripcion:
' * Este codigo se emplea para controlar a través de un PIC la secuencia de
' avance de un stepper unipolar a paso completo empleando el CI SLA7024. Este
' CI requiere secuencia especial para poder entregar el código unipolar del
' stepper. Para generar el cambio de la secuencia del motor el PIC recibe un
' pulso de entrada en RA0 y otra señal para la dirección a través de RA1.
' Esta aplicación puede ser empleada en una controladora CNC.
' * Configuración:
' MCU: PIC16F84A
' Oscilador: XT, 4.000 MHz
' SW: MikroBasic v7.2
'Entradas en parte baja del PortA
symbol CK = porta.0 'Habilita el funcionamiento del motor
symbol Sentido = porta.1 'Selecciona el sentido de giro de motor
'"Paso" almacena numero de secuencia de 0 a 3, "pos" almacena valor correspondiente
'a esa secuencia, 'Secuencia contiene los 4 valores correspondientes al avance
dim paso,pos as byte 'Secuencia especial para ser
const Secuencia as byte[4]=($0A, $06, $05, $09) 'aplicada al SLA7024 a través de
'parte baja del PORTB
'------------Subrutina de avance---------------------
sub procedure avanza 'Avance en sentido horario del motor
if paso >= 3 then 'Paso1 alcanzo el ultimo estado?
paso=0 'Si, paso1 reeinicia cuenta
else 'Si paso1 no alcanzo último estado entonces se incrementa
inc(paso)
end if
pos=Secuencia[paso] 'La variable pos guarda valor de secuencia
end sub
'------------Subrutina de retroceso------------------
sub procedure retrocede 'Avanza motor en sentido antihorario
pos=Secuencia[paso] 'Variable pos guarda valor que asumira nueva secuencia
if paso<=0 then 'Paso actual es el inicial?
paso=3 'Si cumple, entonces como estamos en cuenta
else 'descendente el siguiente paso sera 3
dec(paso) 'si no es el paso inicial seguimos descontando
end if
end sub
'Programa principal
main:
'ADCON1 = 7 'Puerto A digital para series 16F87XX
TRISA = $FF 'Configura Puerto A como entrada
PORTA = 0 'Establece valor inicial del puerto en 0
TRISB = %11111111 'Configura PORTB como salida
paso = 0 'Variables a cero
pos = 0
'Ciclo infinito
while true
if CK=1 then 'Si CK=1
while CK=1 'Hasta que desaparezca CK avanzará el programa
wend
if Sentido=1 then 'Sentido de avance es 1, entonces
avanza 'Brinca a subrutina "avanza"
portb=pos
else
retrocede 'es cero, brinca a subrutina "retrocede"
portb=pos
end if
end if
wend
end.
-
Se parece al mio, muchas gracias, pensaba que era algo comercial.
-
Pues yo lo único que veo raro son las resistencias Pull UP que no son necesarias, si vas a entrar a logica digital. Yo por lo menos en mi controladora no las puse.
De ahí todo lo veo bien, todo será cuestion de que esté bien armada.
-
Que tal Maggy mira las resistencias en realidad son limitadoras no Pull-Up, estas las puse ya que en la interface de la impresora de la cual se obtuvo el SLA7024 venían implementadas pero no creo que afecten ya que solo son limitadoras y con valores de 33ohms. Voy a realizar la prueba de la interface en una PC con 1 Giga de RAM a ver que sucede.
Saludos
-
Hola a todos!
Como critica constructiva, me parece que en lo posible deberían usar alguna interrupción externa (RB0/INT) para la entrada de pasos al PIC, debido a que los programas de control numérico alcanzan tiempos mínimos de encendido de cada señal de hasta 1µs y, a la velocidad de reloj que tiene el PIC (1µs/instruccion), es posible que no detecte todos los pasos mediante la comprobación del estado de un pin asignado, (a lo mejor este es problema que tiene Moyin :shock:). Aunque aclaro que los tiempos de encendido son configurables en las opciones del programa.
Por otro lado me parece una buena idea reemplazar los PIC16F84 por PIC16F628, ya que este ultimo es considerablemente mas económico y posee un oscilador interno de 4MHz por lo que no seria necesario el uso de los cristales. Con respecto al programa solo deben configurar al PIC para que utilice el oscilador interno y desactive los comparadores analógicos (registro ADCON CMCON), el resto del programa es el mismo.
Espero haber sido de ayuda, Saludos!
-
Moyin, como para ir descartando cuando accionas en manual mueve a una velocidad aceptable o tambien lo hace lento, y que valores configurastes el setup de los motores ?
Saludos.
-
Nuevamente con resultados, estuve haciendo pruebas con una PC de 1 Giga de RAM y observo que el Mach trabaja mas fluido al momento de estar el cursor siguiendo la trayectoria, ya no se aprecia una avance pausado como en las pruebas anteriores con las PC limitadas, esta prueba la realicé con motor en vacío pero aun así noto que los motores no tienen el torque ni la velocidad adecuada e incluso me da la impresión que puede estar perdiendo pasos. Ahora con referencia a l punto que señala martincnc
los programas de control numérico alcanzan tiempos mínimos de encendido de cada señal de hasta
1µs y, a la velocidad de reloj que tiene el PIC (/instruccion), es posible que no detecte todos los pasos
mediante la comprobación del estado de un pin asignadoMe queda ahora la duda si el problema de los motores es por alli, ahora que frecuencia tienen los pulsos que envía el Mach a través del puerto paralelo ya que si son del orden de µs el motor pudiera perder torque y confiabilidad en los pasos si no cuenta con el driver adecuado.
Gracias por las respuestas y estoy al tanto de lo que opinen.
Saludos :)
-
Ya encamionados con el problema respondo a la pregunta que haces Negcea, mira al probarlo con la función que depliega la tecla "Tab" los motores trabajan de manera muy irregular , sin buen torque. Con respecto a la configuración de los motores he probado varias valores en los que los resultados son similares, bajo torque, movimientos irregulares, el motor se comporta de manera similar como cuando aumentas demasiado la frecuencia del pulso de reloj al trabajar con un stepper y deja de ser efectiva la velocidad y el torque.
Hago también esta pregunta, que frecuencia mínima y máxima maneja el Mach para atacar los driver ya que si es demasiada alta tendré que cambiar mi programa en los PICS empleando interrupciones como lo señala martincnc para poder captar los pulso de alta freceuencia o de `plano emplear otro tipo de driver.
Saludos
-
Hola Moyin.
Con lo que menciono anteriormente hago referencia al tiempo en que la señal permanece activa, indistintamente de la frecuencia de salida que esta dada por la cantidad de pasos por unidad de tiempo.
A continuación dejo una imagen para que quede mas claro, en este caso la salida es del tipo invertida, o sea que avanza un paso en cada estado bajo de la señal.
(http://img824.imageshack.us/img824/507/stepactivo.png)
En la imagen puse la comparación entre una señal con estado activo de 1us y la misma señal con estado activo de unos 5us que considero que es el mínimo necesario para ser detectado correctamente por el PIC haciendo uso de la comprobación del estado de un pin asignado.
De todas maneras repito que los tiempos de encendido son configurables en las opciones del programa.
Saludos!
-
El pc es importante, mira que no tenga nada conectado a red, antivirus etc. Todo lo que relentice el PC relentiza el Mach y trabaja de forma irregular.
Si no pierde pasos seguro que es el flujo de pulsos del PC a la controladora que se interrumpe.
Mi programa trabaja con interrupcion y con 16F628, van mejor.
-
Bueno amigos al fin se resolvio el problema. :-/ Siguiendo sus consejos modifique el programa de los PIC'S para controlarlos a base de interrupciones, emplea la de cambio de estado en la parte alta del puerto B del F84 y el motor trabajo muy bien, ahora ya avanza con buen torque y velocidad, solo resta el problema del funcionamiento intermitente de los motores pero esta otra situacion ya comprobe que es porque a mi portatil le falta RAM para soportar el Mach, queda solo trabajar en una PC adecuada para pasar a la etapa de pruebas de mi fresadora. Estaba perdiendo pasos con el programa original ya que el PIC al recibir los pulsos perdia algunas transisciones y generaba perdida de pasos en los stepper provocando todo este embrollo. Bueno pues gracias a todos ustedes por el apoyo y voy a seguir con mis pruebas y teniendo resultados les informo. :mrgreen:
Saludos
-
Amigos más avances :-/, probe el Mach con mi LAP la cual tien 2 Gigas de RAM y a la cual le adapté un tarjeta PCI que me genera un puerto paralelo físico y haciendo los ajustes necesarios me trabajo excelentemente el sotware, ya los motores trabajan en forma continua sin ningun brincoteo.
Eso si al acercar la mano a las interfaces hay cierta interferencia que provoca ahora si que haya movimientos erráticos de los motores pero esto se lo adjudicoa a que tal vez debi haber considerado un plano de masa en la interface para evitar este tipo de problemas, voy a realizar algunas pruebas y a ver que sucede.
Saludos
-
Hola Moyin, felicitaciones por tus avances! :mrgreen:
Como una alternativa al plano de masa podrías considerar poner las placas y los cables dentro de un gabinete metálico para evitar interferencias. (ver Jaula de Faraday (http://es.wikipedia.org/wiki/Jaula_de_Faraday))
Saludos!