Go Down

Topic: Mejora de control de Slider, Pan & Tilt  (Read 556 times) previous topic - next topic

AXELINUX

May 23, 2019, 12:39 pm Last Edit: May 23, 2019, 01:50 pm by AXELINUX
Hola señores, buenos días, tengo un  duda y quisiera poder contar con sus consejos para resolver mi problema:

1. Objetivos:

Hacer o encontrar controlador, incluído software,  para un slider, pan & tilt (3 ejes).

 

2. Antecedentes:

Realicé un proyecto que consiste en un Slider con Pan & Tilt. Cada eje tiene un motor NEMA 17 (son 3 motores en total) y son controlados por medio de un arduino UNO y una CNC shield. Asimismo, utilizo GRBL y manejo el slider por medio del universal G code sender. Para su control, escribo manualmente el código G.

Los 3 ejes funcionan bien, pero no como quisiera. El problema radica en que con GRBL y universal G code sender los motores siempre funcionan al mismo tiempo (vale decir, no se pueden controlar los movimientos, las velocidades y la aceleración de manera independiente).

Lo sé, el GRBL no ha sido diseñado para ese tipo de movimientos. A continuación, les dejo el video de mi Slider (debo actualizar el video, porque el fin de semana cambié todas las partes de madera por plástico). Por cierto, algunas palabras están en Alemán porque estoy aprendiendo el idioma por medio de los videos.

https://www.youtube.com/watch?v=BPDZkQYG-Lg


3. Busqueda de soluciones:


Dediqué bastante tiempo a buscar soluciones para mi problema y encontré algunas soluciones, que son excelentes, pero que no se ajustan a mi presupuesto. A continuación les dejo lo que encontré:

A. Controlador NMX: Son excelentes para el control de motores de manera independiente, este controlador está diseñado para trabajar con slider, pan & tilt. Precio 400 euros.

https://www.dynamicperception.com/Digital-NMX-timelapse-and-video-motion-controller-p/dp-nmx1.htm


B. Controlador PUREMOCO: Este controlador utiliza la placa Teensy y viene con un software para el control del slider y también de la cámara. Precio: entre 400 y 700 euros.

https://puremoco.com/

C. Controlador DMX: estos controladores son antiguos y son diseñados para el control de luces de espectaculos. Lamentablemente, no encontré mucha información referente a ese tema. Salvo unos cuantos videos.

https://www.youtube.com/watch?v=rbKFATq3wYc

D. Software Dragonframe: También investigué los videos de Edu Puertas. El utiliza cnc shield y un código motion control. Es muy bueno, pero el software cuesta 300 euros. Hice las pruebas con el software y funciona, aunque el software es demasiado costoso, tomando en cuenta que solo sirve para stopmotion. Precio: 300 dólares.

E. Encontré otro tipo de controladores y software dedicados para cinematografía pero sobrepasaban los 1000 euros y decidí no ahondar en ese terreno.


4. Solicitud de ayuda:

Necesito su guía o consejos para encontrar lo siguiente:

+ Controlador de motores paso a paso de manera independiente basado en Arduino que no utilice el GRBL.
+ Software o App que pueda controlar los motores de manera sencilla. No quiero utilizar el IDE de Arduino porque no quisiera escribir a cada momento el código necesario.


5. Nivel

Mi nivel en programación de Arduino es bajo, mi fuerte es el Hardware y la parte mecánica.


Espero poder contar con sus consejos y muchas gracias de antemano.

Saludos cordiales.

 

surbyte

Bueno entonces resumido, primer problema manejar 3 steppers simultáneamente con algun metodo que le envié ordenes de modo que se comporte con suavidad no como se ve en el video que tiene algunos lapsus.

Mi primer recomendación es que uses AccelSteper como librería que permite justo lo que quieres, el control de varios stepper simultáneamente.

Estas son las ventajas de esta librería

  • Supports acceleration and deceleration
  • Supports multiple simultaneous steppers, with independent concurrent stepping on each stepper
  • API functions never delay() or block
  • Supports 2, 3 and 4 wire steppers, plus 3 and 4 wire half steppers.
  • Supports alternate stepping functions to enable support of AFMotor (https://github.com/adafruit/Adafruit-Motor-Shield-library)
  • Supports stepper drivers such as the Sparkfun EasyDriver (based on 3967 driver chip)
  • Very slow speeds are supported
  • Extensive API

Subclass support

Asi que digamos que estas en camino.
Falta ahora encontrar un método y porque no usar el mismo código GRBL pero adaptado con esta librería. No se lo que tienes hecho pero supongamos que usaste stepper.h los cambios con esta librería no representan mucho esfuerzo.


AXELINUX

Muchas gracias por tu respuesta.


Ya había visto información sobre esas librerias (accelstepper y multistepper) pero no encontré información sobre si lo puedo utilizar con una cnc shield (para evitarme hacer otro circuito). Se puede hacer? y en este caso, todos los movimientos los debo controlar desde el mismo IDE?

Lo que comentas sobre el GRBL me interesa. Adaptar la libreria. Mi pregunta es, con cúal software podría controlar el movimiento de los motores. Universal G code sender no es bueno para eso. Merlin y otros pareceidos que trabajen con G code tienen el mismo resultado. No se puede controlar los motores independientemente. Conoces alguno que se adapte a ese tipo?.

El día de mañana voy a actualizar el video del Slider. Tuve un problema con la estructura de madera (agua) y ahora ya es completamente diferente. Muchas gracias por tu tiempo.

Saludos

 

_jose_

Este parece un buen punto de partida:
https://howtomechatronics.com/tutorials/arduino/diy-motorized-camera-slider-pan-tilt-head-project/
Usa una placa diseñada por el mismo con un Nano,pero no seria complicado cambiar los pines por los que usa la cnc shield.

surbyte

Pregunto: siempre hablan de còdigo de CNC, no esta disponible el còdigo abierto de dicho CNC?

_jose_

Si te refieres a Marlin (firmware impresoras 3d) y Grbl (firmware para fresadoras ,laser,etc) ,si ,el codigo esta en github y cualquiera puede verlos/modificarlos pero son bastante complejos ,solo tienes que ver la cantidad de archivos que contienen,ademas de que los movimientos son interpolados ,es decir para ir a una determinada coordenada ,los ejes se coordinan en velocidad para llegar a ese punto,lo que hace dificil controlar los ejes por separado.

surbyte

Pues yo iria con Marlin que esta resuelto e intentaría adaptarlo a lo que necesito o iría al foro CNC planteo mi problema y escucharia sugerencias mas adecudadas de como adaptar algo ya existente.
Creo que el problema esta resuelto pero solo es intuicón, no se lo que dices _jose_?

AXELINUX

#7
May 26, 2019, 10:06 am Last Edit: May 26, 2019, 10:13 am by AXELINUX
Hola José gracias por tu comentario. Yo empecé viendo ese video del que haces referencia. Mandé a fabricar los PCB pero cuando lo probé no me gustó el resultado. Ese código está hecho para un control manual y más que nada para fotografías time lapse. Hice muchas pruebas y el resultado no fue el esperado. Ahora tengo en casa 10 tarjetas que no necesito :)

Por otro lado, estoy pensando hacer un controlador pero con una tarjeta Teensy. Es un poco más cara que un Arduino UNO.

Surbyte, definitivamente el código G no puede ser modificado ya que al final de cuentas, al momento de escribir el código G el software se encargará de controlar los motores en simultaneo y no independientemente. Seguiré investigando, si tengo alguna actualización se las compartiré ya que este proyecto me parece interesante.

_jose_

Quote
Por otro lado, estoy pensando hacer un controlador pero con una tarjeta Teensy. Es un poco más cara que un Arduino UNO.
Esas tarjetas son carisimas para lo que son ,el proyecto puede hacerse perfectamente con el UNO + CNC shield,si no es que quieres aprovechar software ya hecho para esa placa.

PeterKantTropus

#9
May 26, 2019, 03:10 pm Last Edit: May 26, 2019, 03:13 pm by PeterKantTropus
En realidad, si tienes alergia al IDE de arduino, es difícil resolverlo  :)  . Si lo que buscas es mover los motores independientemente,  pero coordinados, no es algo difícil. Como te dijo Surbyte, se puede lograr con la librería AccelSteper, de hecho hace poco ayudamos a un "artista"  que necesitaba mover 18 motores de manera coordinada en una trayectoria de una curva seno.
 Con respecto al hardware, como te aconsejo Jose, si ya tienes una CNC shield no es necesario nada mas.
 Saludos
"Si no entra como tornillo, entra como clavo"

AXELINUX

Hola Peter, en realidad no tengo alergía al IDE, lo que no quiero es tener que utilizar en cada momento el IDE para cambiar las trayectorias de los motores. De todas formas voy a seguir investigando, quizás pueda adaptar el codigo del controlador DMX al arduino. Muchas gracias de igual manera por tu consejo.

PeterKantTropus

De ningún modo dije que hay que compilar cada vez que necesites cambiar la trayectoria, se pueden pasar desde el monitor serial o alguna ide desarrollada a tal efecto, pero implica programar mucho con el IDE de arduino  (según mi punto de vista, menos que modificar una librería compleja).

Saludos
"Si no entra como tornillo, entra como clavo"


PeterKantTropus

Fíjate, que muy equivocados no están nuestros consejos. Desde enlace que colocaste a PureMocco se puede descargar el firmware y toda la aplicación esta construida alrededor de AccelStepper.

Saludos
"Si no entra como tornillo, entra como clavo"

surbyte


Go Up