Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

guardar movimientos de motor a pasos Arduino

¡Resuelto!
Ir a solución

Buenas días:

 

Estoy utilizando la interface de Arduino para Labview, para controlar un motor a pasos, ahora el problema es que necesito guardar todos los movimientos que realiza el motor a pasos, digamos tengo un dial, donde delimito el rango de pasos en los que actuará el motor, como podría guardar todos los movimientos del Dial ??????

 

 

0 kudos
Mensaje 1 de 10
9.736 Vistas

Hola,

 

      Ok ya vi el código, tu explicación en el otro post fue esta:

 

      "No he tenido mucho éxito adaptando el programa de los servos al del motor a paso, voy a iniciar otro post, el programa funciona correctamente con el motor a pasos, la caja de stepper write le manda l motor los pasos que debe dar, es decir en este caso tiene un dial delimitado de 0 a 360 pasos, puede ser cualquier indicador numérico y solamente actuará en este rango, parecido al control de los servos, de hecho al delimitarlo funciona similar a un servo ya que con el dial lo puedes ubicar en el paso que quieras, por eso pensé que prácticamente sería lo mismo para guardar los movimientos del motor a pasos que el servo, y la otra caja de steper to go, solamente es un indicador, que muestra si a el motor le faltan pasos por recorrer de los que le indicaste, la verdad es que estoy algo desesperado, ayuda por favor."

 

       Y el otro post de los servos a que hacemos mención es este guardar movimientos de servos

 

        Analizando el código, que ya vi que es el ejemplo que viene en el toolkit Arduino Example: Stepper Motor Example, tiene dos formas de movimiento, que son por el boton OK donde se mueve la cantidad de pasos indicados en # of Steps to Move, o por el botón dial donde se mueve la diferencia de pasos entre el valor actual del dial y el previo. Y la función Stepper Togo como tu lo señalas indica cuando el motor aun se esta moviendo por la última instrucción que le dimos.

 

        Lo primero que se me ocurre es que como tu motor es de 360 pasos, cambiemos ese dial de 200 a 359 (el 0 y 360 es la misma posición). Lo segundo es que hagamos que los movimientos a través del botón OK muevan el dial para que el dial siempre muestre la posición. Y que nos aseguremos de no mandar comandos mientras el motor se este moviendo.

 

        Luego que tengamos eso creo que podemos usar la posición del dial para indicar la posición. Con la salvedad que los servos tienen un mecanismo de control interno que les permite fijar su posición. Mientras nosotros con el stepper (motor de paso) la posición sera relativa a la posición inicial a partir de la cual empecemos a movernos.

 

        En lo que tenga algo de código lo subo.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
Mensaje 2 de 10
9.725 Vistas
Solución
Aceptado por el autor del tema HDFR

Hola,

 

      Te adjunto la version con los cambios que tenia en mente, no la revise al detalle, pruebala y me dices si va bien, sino mañana la vuelvo a mirar.

 

Saludos,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
Mensaje 3 de 10
9.708 Vistas

Buenos días amigo Luis Mata:

 

He probado el código, la verdad es que ha funcionado muy bien, ha grabado los movimientos del motor, ahora lo que quiero tratar es de incorporar tanto motor a pasos, como servo motores, para que guarde ambas posiciones en un mismo record, cree que solo baste con agregar mas estructuras event con los bloques de los servos?????

0 kudos
Mensaje 4 de 10
9.699 Vistas

Hola,

 

      Si te fijas en esta version hice la optimizacion que comente en el caso de los servos de solo guardar en caso de un cambio para ahorrar memoria y que se ajustaba mejor a como estaba el código de ejemplo base de los steppers.

 

      Si quieres montar los dos juntos si se puede con un codigo similar a este para los servos o como el del otro post, lo unico es que en este caso de los motores de paso tengo la restriccion de esperar que el motor termine de moverse antes de enviarle otra orden (ya que de lo contraria no voy a saber donde esta) y en el caso de los servos que tienen su control interno de posicion eso no hace falta.

 

      Entre los cambios que harian falta:

- Al cluster donde esta el tiempo y la posicion del stepper, agregar la posicion del servo.

- Sacar el event structure del case que lo condicionaba a cuando el stepper terminara de moverse, y usar dicha condición para deshabilitar el dial en su lugar.

- Agregar un control para la posicion del servo.

- En los eventos de dial y ok, añadir al cluster la posición del servo.

- Añadir un evento en caso de cambiar la posición del servo, donde al igual que en el evento del dial y el ok, se agregue al arreglo el cluster con el tiempo posicion stepper y posicion servo.

- Añadir al evento timeout la escritura de la posicion del servo. (opcional: seria bueno evitar escribir en el stepper si se esta moviendo, para ello habria que en lugar de añadir el servo al mismo cluster, tenerlos independiente creando otro cluster con su propia logica de tiempo y posicion para el servo)

 

       Yo estoy ocupado, espero puedas seguir mis ideas.


Saludos Cordiales,

Luis A. Mata C.
Ing. Electrónico
Whatsapp: +58-414-1985579
BBM Pin: 2B83E99A
Thanks: Kudos
Mensaje 5 de 10
9.693 Vistas

Buenas tardes amigo Luis Mata:

 

Fijate que ya probando movimientos con los servos, al terminar de reproducir la secuencia, los servos dan un golpe muy rápido, es decir regresan a la posición de ángulo 0, por qué sucederá esto??????

0 kudos
Mensaje 6 de 10
9.681 Vistas

deves igualar pos=pos

0 kudos
Mensaje 7 de 10
7.856 Vistas

Buenas Noches mi nombre es Ezequiel (de Argentina) hace un tiempo que estoy interesado y usando la plataforma de Labview y para ver los resulatdos compre un Arduino Uno. Tengo la idea de mover tres motores a pasos bipolares con una placa en donde me interesa la direccion y los pasos. El ejemplo que tiene el toolkit, no entiendo a donde esta el cambio de giro. 

A su vez quiero realizar movimiento y guardar la cantidad de pasos y la direccion en una base de datos para despues realizarlo como si fuese una trayectora robotica.

Desde ya muchas gracias.

0 kudos
Mensaje 8 de 10
7.663 Vistas

Hola a todos mi nombre es Manuel, encantado de participar en este grandioso foro, soy nuevo en LabView, muy nuevo, estoy siguiendo las conversaciones, y solo puedo añadir que el señor Luis_AM3C es un CRACK, un MAESTRO,  Luis_AM3C te admiro, es increible tu nivel, ya te ire haciendo pregustas si no existe inconveniente, pues estoy comenzando  a investigar sobre como enlazar las cordenadas por las que se mueve una webcam en el reconocimiento de un objeto y aplicarsela a un  servo, tengo dos proyectos guardados como oro, uno el codigo que reconoce un objeto, y otro el codigo de los servos, pero no se como unirlos, asi llevo casi dos meses, soy un torpe lo se, pero nadie nace sabiendo, y yo quiero aprender, un cordial saludo a todos   

0 kudos
Mensaje 9 de 10
7.541 Vistas

Una breve pregunta maestro Luis,

¿si movemos el torque del motor, osea el eje del motor fisicamente, tanto del servo como del motor pap ,con la mano,?  ¿ esos movimientos quedan registrados por LabView, una vez que pulsamos Record???

Gracias de ante mano 

0 kudos
Mensaje 10 de 10
7.539 Vistas