Autor Tema: Software para interpolar puntos !!!  (Leído 7542 veces)

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

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
Software para interpolar puntos !!!
« en: 26 de Diciembre de 2004, 20:26:00 »
   Hola a todos !!
   Mi problema es muy concreto pero hasta ahora muy dificil para poder resolverlo.
   Y es sobre un software que haga la interpolación entre puntos que se encuentra en un archivo *.dat  que contiene estas coordenadas en dos columnas ( X , Y  respectivamente ).
    La utilidad sería la de poder dar valores intermedio a los puntos conocidos para poder "llenar las zonas donde no hay declarada un punto" (así se describe una curva suave )   en mi frezadora.
    La ayuda podria ser que me pudieran decir si ya existe este software para poder utilizarlo con mi software controlador de mi fresadora, o de ultima que me pasen el algoritmo o polinómio ( aproximación por circunferencias etc)
    Esto es todo, desde ya muchas gracias a todos !!!!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Software para interpolar puntos !!!
« Respuesta #1 en: 27 de Diciembre de 2004, 00:50:00 »
¿Interpolación lineal?

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Software para interpolar puntos !!!
« Respuesta #2 en: 27 de Diciembre de 2004, 06:51:00 »
Necesitas el centro de la curva que definen esos dos puntos como tercer dato, de lo contrario, las posibilidades son infinitas.

Sabiendo el centro y los puntos, sacamos el radio, y de ahi, mediante una expresion algebraica, conseguimos una funcion matematica que por cada X valor nos dará dos puntos en el eje Y (aunque a nosotros solo nos interesa uno).
La formula primordial es:
(X - Zx)² + (Y - Zy)² = R²

Seria cuestion de despejar Y.



salu2

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
RE: Software para interpolar puntos !!!
« Respuesta #3 en: 27 de Diciembre de 2004, 21:26:00 »
Perdoname la ignorancia Nocturno66 !!!
  Z, X x, Y y, que valores respresentan si solo tengo tres puntos como datos y todos ellos en 2D (X,Y) ?

  Quería agregar que este archivo tiene una lista de puntos que van en orden (renglón a renglón),  por esto el punto que correspondería al punto del centro, no se encuentra a la mitad de la distancia con respecto a los dos puntos que lo rodean, por lo que no se estaría cumpliendo lo que es necesario para que esta ecuación que me pasaste se cumpla ( especie de ecuación de una circunferecia )
y estos puntos no tienen una separación iguales sobre el eje X, por lo que si tomara tres puntos el del centro sería muy dificil que se encuentre en el centro.

   Desde ya muchas gracias por tu ayuda !!!

   Rebotado

Desconectado Jimmy_pop

  • PIC12
  • **
  • Mensajes: 72
RE: Software para interpolar puntos !!!
« Respuesta #4 en: 28 de Diciembre de 2004, 09:55:00 »
si no estás seguro de qé hacer lo mejor es que hagas interpolacion lineal pura y dura aproximando por rectas los segmentos, si quieres currartelo mas igual hacer uso de una curva de bezier (polinomio de mayor grado) por ejemplo inventandote la 1a derivada para suavizar mas.. pero con el inconveniente de hacer mas redondas las esquinas :C

depende del propósito de tu interpolación

por ejemplo la lineal

(p1x,p1y), (p2x,p2y)

(X,y)=(p1x,p1y)+K·(p2x-p1x,p2y-p1y)

y dar a K valores entre 0 y 1 dividiendo el intervalo 0-1 en tantas partes como puntos desees...

o normalizar (p2x-p1x,p2y-p1y) dividiendolo entre su modulo y dar a K un valor constante que sea la maxima distancia aceptable entre dos puntos consecutivos interpolados

o yoqsé..

papel y lapiz y paciencia

Desconectado mariosaul

  • PIC10
  • *
  • Mensajes: 21
RE: Software para interpolar puntos !!!
« Respuesta #5 en: 27 de Enero de 2005, 18:13:00 »
software tal cual no creo que encuentres,

Tienes tres opciones creo yo,

1-Agarrar un libro de calculo y aprender las ecuasiones matematicas que te generar una funcion a partir de un conjunto discreto de puntos,  interpolacion de simpson y muchas otras que no recuerdo nombre, generalmente se trata de generar un polinomio de grado N que pase por los puntos.

2- Buscar lo anterior en libros de algoritmos, ya implementado,  quizas este en un lenguaje que desconoces, podria ser muy larga la busqueda

3- Unir los puntos por lineas rectas, si es para fresadora va a quedar bien feo.

El unirlo mediante segmentos de circunferencia no creo que sea buena opcion, no va a quedar con una curva suave, sino que quedara como forzada , y en los puntos de inflexion va a ser bien fea la curva.

El metodo que uses definira la suavidad de la curva.
Si encuentro algo en mis libros de calculo lo posteo aca

suerte

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
RE: Software para interpolar puntos !!!
« Respuesta #6 en: 27 de Enero de 2005, 22:37:00 »
Hola Mariosaul !!

        Desde ya muchas gracias a todos los que dejaron su ayuda, la verdad que tendría  que ver cada caso para ver si el resultado se acerca a mis necesidades y desde luego Mariosaul, cualquier info será bien venida !!!
        Saludos a todos !!!

Desconectado tornar

  • PIC18
  • ****
  • Mensajes: 342
RE: Software para interpolar puntos !!!
« Respuesta #7 en: 01 de Marzo de 2005, 10:00:00 »
Puedes probar usando esta sencilla formula, siempre que estemos hablando de interpolacion lineal entre 2 puntos a velocidad constante:

x(t)= [x-i - (x-i-1)] . [(t- ti)/T] - (x-i-1)


donde:

 T= tf - ti

ti= tiempo inicial

tf=tiempo final

x-i-1= punto inicial

x-i= punto final

En funcion de los valores intermedios entre ti y tf que des a la variable t, obtienes distintos puntos x.

Desconectado IvanCarlos

  • PIC10
  • *
  • Mensajes: 7
Re: Software para interpolar puntos !!!
« Respuesta #8 en: 04 de Mayo de 2008, 20:19:17 »
Más o menos creo entender lo que tratas de hacer .Espero que esto te ayude a simplificar lo que quieres.
En las maquinas CNC se trabaja básicamente con dos tipos de curvas las circunferencias y la rectas. Los programas CAD CAM  se encargan de convertir a través de los posprocesadores  ; los diseños  o  dibujos en códigos G y M . El microprocesador de las CNC interpreta el código haciendo las respectivas interpolaciones .
Internamente en las CNC  se   generen una lista de tiempos  para cada micra de movimiento  y  en cada  eje que quieres controlar . Las variables que se procesa es el valor del tiempo para cada micra de distancia  . O sea si tienes la longitud ( una micra )  tendremos la variable final valores de  tiempo.

El proceso de control de todos los movimientos de una CNC se simplifica a  un movimiento constante y a un movimiento de velocidad variable . En el  caso de los códigos G  son: El  G01    y G02  .  Por ejemplo :G01 X300Z400F50 ,   . El resto de los códigos  G son  variantes y combinaciones de estos  .Otros códigos tienen funciones especificas y no necesariamente de movimiento  tenemos al  G04 ( tiempo de espera) , G21( milímetros)  G22  (pulgadas)  etc.


Veamos que hace el microprocesador para el caso del ejemplo

Primero se tiene que  encontrar el tiempo que demoraría en una micra de espacio ,  en cada eje :
                                                                   
                              Z =400(horizontal  como en los tornos  CNC)     X=300  Vertical
                  =arctang 300/400  o sea el arco cuya tangente es ¾   37



La velocidad esta en dirección de la diagonal (hipotenusa ) por lo tanto  la velocidad en  el eje Z será   50 cos()     ( la velocidad F esta expresada en mm/ M)


Para encontrar el tiempo que tomara por cada micra de espacio tienes que hacer la conversión necesaria  o sea :

mm 1000/mm
--------------------           =/60ms
MX60s/MX1000ms/s

Al final si queremos saber cuanto tiempo tomaría en una  a la velocidad de 50 mm/M en la diagonal para el eje Z  seria =1 /  50 /60ms cos()   =48/50ms y para X = 36/50ms

 luego el programa tiene que ser tal que vaya sacando pulsos simultáneamente  por un puerto  a un ritmo constante  de 48/50 ms para el driver Z( hasta completar 400millones de pulsos o sea 400mmde recorrido)  y a 36/50 ms  para el driver X  ( obviamente también llegara a los 300 millones de pulsos al final ) 


Si logras hacer un programa que logre esto con  un DSpic  tienes la base de un control CNC

Ivan Tarnawiecki