Autor Tema: Determinar velocidad de motores con Mach  (Leído 5671 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Determinar velocidad de motores con Mach
« 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  :-/
Sonrie Cristo te ama

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Determinar velocidad de motores con Mach
« Respuesta #1 en: 10 de Octubre de 2010, 12:49:17 »
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

Desconectado maggy

  • PIC16
  • ***
  • Mensajes: 152
Re: Determinar velocidad de motores con Mach
« Respuesta #2 en: 10 de Octubre de 2010, 13:05:53 »
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.    :-/

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Determinar velocidad de motores con Mach
« Respuesta #3 en: 10 de Octubre de 2010, 15:04:59 »
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 :)
Sonrie Cristo te ama

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Determinar velocidad de motores con Mach
« Respuesta #4 en: 11 de Octubre de 2010, 11:03:49 »
 :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
Sonrie Cristo te ama

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Determinar velocidad de motores con Mach
« Respuesta #5 en: 12 de Octubre de 2010, 18:25:02 »
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:
Sonrie Cristo te ama

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Determinar velocidad de motores con Mach
« Respuesta #6 en: 13 de Octubre de 2010, 06:11:46 »
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

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Determinar velocidad de motores con Mach
« Respuesta #7 en: 13 de Octubre de 2010, 12:27:20 »
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:
Código: [Seleccionar]
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.
Sonrie Cristo te ama

Desconectado Algec

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 974
Re: Determinar velocidad de motores con Mach
« Respuesta #8 en: 13 de Octubre de 2010, 15:01:05 »
Se parece al mio, muchas gracias, pensaba que era algo comercial.

Desconectado maggy

  • PIC16
  • ***
  • Mensajes: 152
Re: Determinar velocidad de motores con Mach
« Respuesta #9 en: 13 de Octubre de 2010, 15:19:46 »
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.

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Determinar velocidad de motores con Mach
« Respuesta #10 en: 13 de Octubre de 2010, 15:33:20 »
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
Sonrie Cristo te ama

Desconectado martincnc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 352
Re: Determinar velocidad de motores con Mach
« Respuesta #11 en: 13 de Octubre de 2010, 19:17:35 »
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!
« Última modificación: 14 de Octubre de 2010, 13:04:07 por martincnc »

Desconectado Negcea

  • PIC16
  • ***
  • Mensajes: 217
Re: Determinar velocidad de motores con Mach
« Respuesta #12 en: 13 de Octubre de 2010, 19:29:21 »
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.

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Determinar velocidad de motores con Mach
« Respuesta #13 en: 13 de Octubre de 2010, 20:08:11 »
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
Código: [Seleccionar]
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 asignado
Me 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 :)
Sonrie Cristo te ama

Desconectado Moyin

  • PIC16
  • ***
  • Mensajes: 102
Re: Determinar velocidad de motores con Mach
« Respuesta #14 en: 13 de Octubre de 2010, 20:23:14 »
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
Sonrie Cristo te ama