Desde hace un tiempo venía rumiando este proyecto: mi versión de un drawbot (robot dibujante). Hay varias implementaciones ya hechas, todas derivadas, por lo que entiendo, del original: el hektor.
La idea es la siguiente: Mover un marcador sobre una pizarra, usando dos hilos conectados cada uno a un motor paso a paso:
Vista general |
Materiales:
2 motores paso a paso 200°/rev.
2 carreteles de tanza de pescar.
Cable de cuatro hilos.
Arduino + Motor stepper shield.
Marcador.
Armado
Primero aseguré los motores en las esquinas superiores del pizarrón: uno a cada lado. Con un poco de cinta de papel, engrosé el eje para que los carreteles encastren sin resbalar:
Alargué los cables de los motores para que alcancen al Arduino+Shield en la base.
Extendí ambos hilos hasta el centro y los até al sujetador del marcador
Con el hardware instalado, me puse a trabajar en el software.
Extendí ambos hilos hasta el centro y los até al sujetador del marcador
Con el hardware instalado, me puse a trabajar en el software.
Para dibujar con facilidad, necesitaba poder transformar las longitudes de ambos lados en coordenadas cartesianas (x,y). Esto se resuelve desempolvando un poco de trigonometría símple:
Con un pequeño programa de Arduino, implementé la función moverA(x,y).
Con eso funcionando, es sencillo implementar otras primitivas más complejas , como rectángulo, o circulo.
Para la primera implementación que escribí, usé la biblioteca AFMotor de Adafruit. Esta biblioteca solo permite manejar un motor stepper por vez. Eso implica que para hacer un movimiento conjunto, tengo que alternar pasos de los motores, lo cual genera mucha vibración en el marcador, ya que se alternan los tirones de un lado y otro. Afortunadamente, descubrí la librería AccelStepper, que me facilitó el uso de los dos steppers a la vez, con resultados mucho más suaves.
La velocidad a la que se mueven los motores también altera el resultado (y por supuesto, la velocidad a la que dibuja). Imprimí un pattern de prueba. Velocidades más altas dan resultados mas desprolijos :
Lo ultimo que probé fue convertir una foto para que pueda ser dibujada por el robot. Un algoritmo sencillo convierte una imagen con pocos niveles de gris a una linea contínua:
Un video del robot en (leeeeenta) acción:
Lo que sigue
Es un proyecto todavía en progreso. Mi idea es poder leer archivos vectoriales e implementar otros algoritmos para mostrar archivos bitmap. Se aceptan sugerencias!
Es un proyecto todavía en progreso. Mi idea es poder leer archivos vectoriales e implementar otros algoritmos para mostrar archivos bitmap. Se aceptan sugerencias!
Güenísimo!
ResponderEliminarPodrías cambiar de marcador y hacer una impresion RGB :P
Muy buenas,
ResponderEliminarsuper intereesante tu proyectopero, ¿ podrias publicar esquemas y codigo ?
gracias y felicitaciones.
Hola Gentes, estas es mi v-plotter y sus primeros resultados, lo comparto a ver que les parece
ResponderEliminarhttps://www.youtube.com/watch?v=iuoK1WN1Sqs
Saludos
y aqui algunas fotos
ResponderEliminarhttp://justanothervplotter.blogspot.com.ar/
Amigo sera que podrías pasarme el código para tener una idea de como empezarlo para un proyecto que debo entregar.
ResponderEliminarcomo convertir las fotos para que genere coordenadas que seguir?
ResponderEliminar