Tabla de contenido:

Trazador de tambor CNC: 13 pasos (con imágenes)
Trazador de tambor CNC: 13 pasos (con imágenes)

Video: Trazador de tambor CNC: 13 pasos (con imágenes)

Video: Trazador de tambor CNC: 13 pasos (con imágenes)
Video: Curso Tornería Clase #13 - Rugosidad en procedimientos de mecanizado por desprendimiento de viruta 2024, Noviembre
Anonim
Image
Image
Trazador de tambor CNC
Trazador de tambor CNC

Este instructivo describe un trazador A4 / A3 hecho de una sección de tubería de plástico, dos motores paso a paso BYJ-48 y un servo SG-90. Esencialmente es un plotter de cama plana enrollado en un tambor.

Un motor hace girar el tambor mientras que el otro mueve el cabezal de impresión. El servo se utiliza para subir y bajar la pluma.

Este trazador tiene una serie de ventajas sobre un trazador de superficie plana tradicional:

  • huella significativamente más pequeña
  • solo requiere un riel de guía lineal
  • simple de construir
  • barato

Un intérprete integrado acepta la salida de gcode de Inkscape.

La comunicación con el trazador se realiza a través de un enlace bluetooth.

El trazador es compatible con la tableta gráfica CNC descrita en mi instructable

Si bien no es un instrumento de precisión, la precisión de este trazador es satisfactoria para su propósito de transferir contornos de acuarela al papel.

Paso 1: el circuito

El circuito
El circuito

El circuito comprende un microcontrolador Arduino UNO R3 y un escudo personalizado en el que se montan los componentes discretos. La energía se aplica a través de un regulador externo de 5 voltios y 1 amperio. La corriente promedio es de alrededor de 500 mA.

Los motores paso a paso BYJ-48 están conectados a PORTB (pines D8, D9, D10, D11) y PORTC (pines A0, A1, A2, A3). El servo de elevación de lápiz SG-90 está conectado al pin D3.

Las resistencias de 560 ohmios, que pueden omitirse, brindan una medida de protección contra cortocircuitos al arduino en caso de que algo salga mal. También facilitan el cableado del blindaje, ya que actúan como "puentes" a través de los rieles de suministro.

Las resistencias 1k2 y 2K2 evitan daños en el módulo bluetooth HC-06 [1] al reducir la salida de 5 voltios del arduino a 3.3 voltios.

[1] Desenchufe el módulo bluetooth HC-06 cuando cargue el código al arduino a través del puerto USB. Esto evitará cualquier conflicto con el puerto serie.

Paso 2: el accionamiento lineal

El accionamiento lineal
El accionamiento lineal
El accionamiento lineal
El accionamiento lineal
El accionamiento lineal
El accionamiento lineal

El accionamiento lineal está hecho de una barra de aluminio de 3 mm x 32 mm de longitud, una tira de lámina de aluminio y cuatro pequeñas poleas con cojinetes de bolas.

El aluminio está disponible en la mayoría de las ferreterías. Las poleas con ranura en U U624ZZ 4x13x7mm están disponibles en

Todo lo que necesita son herramientas manuales sencillas. Corte la barra de aluminio para que se adapte a las dimensiones de su plotter.

El conjunto del motor

Monte el motor paso a paso BJY-48 a través de la barra en un extremo y conecte una polea GT2 de 20 dientes y 5 mm de diámetro al eje del motor. Ahora monte otra polea GT2 en el otro extremo de su barra de modo que la polea pueda girar libremente. Usé un espaciador tubular (radio) de 5 mm de diámetro y un perno de 3 mm para lograr esto.

Ahora pase un tramo de correa de distribución GT2 alrededor de las poleas. Unir los extremos de la correa de distribución mediante un medio giro de modo que los dientes se entrelacen y se fijen con una brida.

Finalmente, fije el conjunto del carro a la correa de distribución con una brida.

El carro ensamblado

El conjunto del carro está hecho de una tira de lámina de aluminio [1] a la que se atornillan las poleas U624ZZ. Si es necesario, utilice una arandela de 4 mm para separar las poleas de la hoja de aluminio.

Las poleas, que tienen una ranura de 4 mm, se colocan a horcajadas en la parte superior e inferior de la barra de aluminio, de modo que no hay movimiento vertical, pero la tira de aluminio se mueve libremente hacia la izquierda y hacia la derecha.

Para asegurarse de que el carro funcione libremente, monte primero las dos poleas superiores y luego, con las poleas asentadas en la barra, marque las posiciones de las dos poleas inferiores. Ahora se pueden perforar los orificios para estas dos poleas. Utilice primero un taladro "piloto" pequeño para evitar que el taladro más grande de 4 mm se desplace.

Antes de doblar la tira de aluminio en forma de "U", taladre un orificio en la parte superior e inferior para que se adapte al diámetro de su bolígrafo. Ahora completa las curvas.

Fije la correa de distribución al conjunto del carro por medio de una brida para cables y un perno de 3 mm entre las dos poleas superiores.

El conjunto de pluma elevadora

Conecte un servo SG-90 a la parte superior del ensamblaje del carro usando una o dos bridas.

Deje caer su bolígrafo por los dos agujeros que ha perforado. Asegúrese de que el bolígrafo se deslice hacia arriba y hacia abajo libremente.

Sujete un "collar" a su bolígrafo de modo que el bolígrafo quede fuera del tambor cuando el servo esté en la posición de bolígrafo hacia arriba.

[1] El aluminio se puede cortar marcando ambos lados de la hoja con un cuchillo afilado (cortador de cajas) y luego doblando el corte sobre el borde de una mesa. Unos cuantos meneos y la hoja se fracturará dejando una rotura recta. A diferencia de las tijeras de hojalatero, este método no retuerce el aluminio.

Paso 3: el tambor

El tambor
El tambor
El tambor
El tambor
El tambor
El tambor

El tambor comprende una sección de tubo de plástico con dos tapones de madera [1].

Use una brújula, colocada en el radio interior de su tubería, para dibujar los contornos del tapón final. Ahora corte alrededor de cada contorno con una sierra de hoja fina ("cofia", "traste") y luego ajuste cada tapón con la ayuda de una escofina para madera. Fije los tapones de los extremos con pequeños tornillos para madera avellanados.

Un perno de ingeniería de 6 mm a través del centro de cada tapón de extremo forma el eje.

Dimensiones del tambor

Las dimensiones del tambor están determinadas por el tamaño del papel. Un tambor de 100 mm de diámetro admite formato A4 vertical y A3 horizontal. Un tambor de 80 mm de diámetro solo admitirá A4 horizontal. Utilice un tambor de diámetro lo más pequeño posible para reducir la inercia … los motores BYJ-48 son solo pequeños.

Un diámetro de tambor de 90 mm es ideal para papel A4 vertical y A3 horizontal, ya que los bordes opuestos, cuando se envuelven alrededor del tambor, se superponen aproximadamente 10 mm, lo que significa que solo tiene una costura para pegar en su lugar.

Girar el tambor

Cada eje pasa a través de un soporte de extremo de aluminio de modo que el tambor pueda girar libremente. La flotación final se evita mediante una polea GT-2, 20 dientes, diámetro interior de 6 mm, sujeta al eje en un extremo. Una correa de distribución GT-2 continua une el motor paso a paso con engranajes BJY-48 al tambor. El motor requiere una polea con un diámetro interior de 5 mm.

[1] Los tapones de plástico están disponibles para la mayoría de los diámetros de tubería, pero fueron rechazados porque encajan sobre la tubería en lugar de dentro y el plástico tiende a flexionarse. Probablemente estarían bien si se usara un eje continuo en lugar de los pernos … pero luego necesita algún método para fijar el eje a los tapones de los extremos.

Paso 4: Consejos de construcción

Asegúrese de que la pluma se desplace por el centro del tambor. Esto se puede lograr cortando las esquinas de los soportes de madera. Si el bolígrafo está descentrado, tenderá a deslizarse por el lateral del tambor.

Es importante perforar con precisión los dos orificios de la pluma. Cualquier oscilación en la guía del lápiz o en el conjunto del carro provocará oscilaciones a lo largo del eje X.

No apriete demasiado las correas de distribución del GT-2 … solo necesitan estar tensas. Los motores paso a paso BYJ-48 no tienen mucho torque.

Los motores paso a paso BJY-48 a menudo exhiben pequeñas cantidades de juego que es insignificante a lo largo del eje X pero es preocupante cuando se trata del eje Y. La razón de esto es que una rotación del motor del eje Y equivale a una rotación del tambor, mientras que el carro de la pluma requiere muchas vueltas del motor del eje X para atravesar la longitud del tambor. Cualquier holgura del eje Y se puede eliminar manteniendo un par constante en el tambor. Un método simple es sujetar un peso pequeño a una cuerda de nailon enrollada alrededor del tambor.

Paso 5: algoritmo de dibujo lineal de Bresenham

Algoritmo de dibujo lineal de Bresenham
Algoritmo de dibujo lineal de Bresenham
Algoritmo de dibujo lineal de Bresenham
Algoritmo de dibujo lineal de Bresenham

Este trazador utiliza una versión optimizada [1] del algoritmo de dibujo lineal de Bresenham. Desafortunadamente, este algoritmo solo es válido para pendientes de línea menores o iguales a 45 grados (es decir, un octante de un círculo).

Para sortear esta limitación, "mapeo" todas las entradas XY al primer "octante", luego las "desasojo" cuando es el momento de trazar. Las funciones de mapeo de entrada y salida para lograr esto se muestran en el diagrama anterior.

Derivación

El resto de este paso puede omitirse si está familiarizado con el algoritmo de Bresenham.

Dibujemos una línea desde (0, 0) a (x1, y1) donde:

  • x1 = 8 = distancia horizontal
  • y1 = 6 = distancia vertical

La ecuación para una línea recta que pasa por el origen (0, 0) viene dada por la ecuación y = m * x donde:

m = y1 / x1 = 6/8 = 0,75 = pendiente

Algoritmo simple

Un algoritmo simple para trazar esta línea es:

  • int x1 = 8;
  • int y1 = 6;
  • flotar m = y1 / x1;
  • plot (0, 0);
  • para (int x = 1; x <= x1; x ++) {
  • int y = round (m * x);
  • plot (x, y);
  • }

Tabla 1: Algoritmo simple

X metro m * x y
0 0.75 0 0
1 0.75 0.75 1
2 0.75 1.5 2
3 0.75 2.25 2
4 0.75 3 3
5 0.75 3.75 4
6 0.75 4.5 5
7 0.75 5.25 5
8 0.75 6 6

Hay dos problemas con este algoritmo simple:

  • el bucle principal contiene una multiplicación lenta
  • utiliza números de punto flotante que también son lentos

Arriba se muestra una gráfica de y versus x para esta línea.

Algoritmo de Bresenham

Bresenham introdujo el concepto de un término de error 'e' que se inicializa a cero. Se dio cuenta de que los valores de m * x que se muestran en la tabla 1 se pueden obtener mediante la suma sucesiva de 'm' a 'e'. Además, se dio cuenta de que y solo se incrementa si la parte fraccionaria de m * x es mayor que 0,5. Para mantener su comparación dentro del rango 0 <= 0.5 <= 1, resta 1 de 'e' siempre que y se incrementa.

  • int x1 = 8;
  • int y1 = 6;
  • flotar m = y1 / x1;
  • int y = 0;
  • flotar e = 0;
  • plot (0, 0);
  • para (int x = 1; x <= x1; x ++) {
  • e + = m;
  • si (e> = 0.5) {
  • e - = 1;
  • y ++;
  • }
  • plot (x, y);
  • }

Tabla 2: Algoritmo de Bresenham

X metro mi e-1 y
0 0.75 0 0 0
1 0.75 0.75 -0.25 1
2 0.75 0.5 -0.5 2
3 0.75 0.25 2
4 0.75 1 0 3
5 0.75 0.75 -0.25 4
6 0.75 0.5 -0.5 5
7 0.75 0.25 5
8 0.75 1 0 6

Si examina el algoritmo y la tabla 2, observará eso;

  • el ciclo principal solo usa suma y resta … no hay multiplicación
  • el patrón para y es el mismo que para la tabla 1.

Pero todavía estamos usando números de punto flotante … arreglemos esto.

Algoritmo (optimizado) de Bresenham

El algoritmo de punto flotante de Bresenham se puede convertir a una forma entera si escalamos 'm' y 'e' en 2 * x1, en cuyo caso m = (y1 / x1) * 2 * x1 = 2 * y1

Aparte de escalar 'm' y 'e', el algoritmo es similar al anterior excepto:

  • sumamos 2 * y1 a 'e' cada vez que incrementamos 'x"
  • incrementamos y si e es igual o mayor que x1.
  • restamos 2 * x1 de 'e' en lugar de 1
  • x1 se usa para la comparación en lugar de 0.5

La velocidad del algoritmo se puede aumentar aún más si el bucle utiliza cero para la prueba. Para hacer esto, necesitamos agregar un desplazamiento al término de error 'e'.

  • int x1 = 8;
  • int y1 = 6;
  • int m = (y1 << 1); // constante: pendiente escalada por 2 * x1
  • int E = (x1 << 1); // constante: 2 * x1 para usar en bucle
  • int e = -x1; // desplazamiento de -E / 2: prueba ahora hecha en cero
  • plot (0, 0);
  • int y = 0;
  • para (x = 1; x <= x1; x ++) {
  • e + = m;
  • si (e> = x1) {
  • e - = E
  • y ++;
  • }
  • plot (x, y);
  • }

Tabla 3: Algoritmo (optimizado) de Bresenham

X metro mi mi e - E y
0 12 16 -8 0
1 12 16 4 -12 1
2 12 16 0 -16 2
3 12 16 -4 2
4 12 16 8 -8 3
5 12 16 4 -12 4
6 12 16 0 -16 5
7 12 16 -4 5
8 12 16 8 -8 6

Una vez más, el patrón para y es el mismo que en las otras tablas. Es interesante notar que la tabla 3 solo contiene números enteros y que la razón de m / E = 12/16 = 0.75 que es la pendiente 'm' de la línea.

Este algoritmo es extremadamente rápido ya que el ciclo principal solo implica sumas, restas y una comparación con cero. La multiplicación no se usa aparte de cuando inicializamos los valores de 'E' y 'm' usando un "desplazamiento a la izquierda" para duplicar los valores de x1 e y1.

[1] Esta versión optimizada del algoritmo de Bresenham es de un documento "Bresenham Line and Circle Drawing", copyright © 1994-2006, W Randolph Franklin (WRF). Su material se puede utilizar para investigación y educación sin fines de lucro, siempre que le dé crédito y enlace a su página de inicio,

Paso 6: el código

Descargue el archivo adjunto en una carpeta con el mismo nombre y luego cárguelo en el trazador usando su arduino IDE (entorno de desarrollo integrado).

Desenchufe el módulo HC-06 bluetoorh antes de intentar la carga. Esto es necesario para evitar un conflicto del puerto serie con el cable USB.

Código de terceros

Además del código.ino anterior, necesitará los siguientes paquetes de software que son gratuitos / donation-ware:

  • Teraterm que está disponible en
  • Inkscape que está disponible en

Las instrucciones para instalar y usar cada uno de los paquetes de terceros anteriores se pueden encontrar en mi artículo

Paso 7: Menú

Menú
Menú

Haga una conexión bluetooth con su trazador usando "Teraterm".

Active su "bloqueo de mayúsculas" ya que todos los comandos están en mayúsculas.

Escriba la letra 'M' y debería aparecer un menú como se muestra arriba.

El menú se explica razonablemente por sí mismo:

  • M (o M0) abre el menú
  • G0 le permite enviar la pluma a una coordenada XY específica con la pluma levantada.
  • G1 le permite enviar el lápiz a una coordenada XY específica con el lápiz bajado.
  • T1 le permite colocar su lápiz sobre su coordenada 0, 0. Escriba 'E' para salir.
  • T2 le permite escalar su dibujo. Por ejemplo, "T2 S2.5" escalará su dibujo al 250%. La escala predeterminada es 100%
  • T3 y T4 le permiten subir o bajar el lápiz.
  • T5 dibuja un patrón de prueba "ABC".
  • T6 dibuja un "objetivo".
  • T7 dibuja un conjunto de líneas radiales, cuyo propósito es verificar que el algoritmo de Bresenham está funcionando en cada uno de los ocho "octantes".

Notas:

  • todos los movimientos del lápiz utilizan la escala de dibujo configurada mediante la opción de menú T2
  • los números "17:" y "19:" son los códigos de protocolo de enlace del terminal "Xon" y "Xoff" del intérprete arduino.

Paso 8: Calibración

Los valores de X_STEPS_PER_MM e Y_STEPS_PER_MM son para un tambor de 90 mm de diámetro.

Los valores para otros diámetros de tambor se pueden calcular utilizando las siguientes relaciones:

  • la circunferencia del tambor es PI * diámetro
  • 2048 pasos equivalen a una revolución de cada eje del motor
  • una revolución de una polea GT-2 equivale a un movimiento lineal de 40 milímetros de una correa de distribución

Otro método es ingresar los siguientes comandos,

  • G1 X0 Y100
  • G1 X100 Y100

luego mida la longitud de las líneas resultantes y "escale" los valores para X-STEPS_PER_MM e Y_STEPS_PER_MM

Paso 9: preprocesamiento de Gcode

Preprocesamiento de Gcode
Preprocesamiento de Gcode
Preprocesamiento de Gcode
Preprocesamiento de Gcode

Este trazador solo requiere cuatro de los gcodes de Inkscape (a saber: G0, G1, G2, G3). El código se ejecutará significativamente más rápido si eliminamos todos los gcodes y comentarios innecesarios.

Para hacer esto, necesita una copia de "Notepad ++". Este editor de texto gratuito contiene un motor de búsqueda de "expresiones regulares" para encontrar y eliminar texto no deseado. Notepad ++ está disponible en

Abra el archivo que se va a modificar con Notepad ++ y coloque el cursor en la parte superior del archivo.

Seleccione "Ver / Mostrar símbolo / Todos los caracteres" seguido de "Buscar / Reemplazar …" en la barra de menú superior.

Haga clic en la casilla de verificación "Expresión regular" (vea la primera imagen) e ingrese cada una de las siguientes secuencias de código en el cuadro de búsqueda.

Haga clic en "Reemplazar todo" después de cada entrada:

  • %
  • (.*)
  • ^ M. * $
  • Z. * $

Las expresiones regulares anteriores eliminan todos los símbolos%, todos los comentarios que se muestran entre paréntesis, todos los códigos M, todos los códigos Z y los códigos que siguen.

Ahora haga clic en la casilla de verificación "Expresión extendida" (vea la segunda imagen) e ingrese la siguiente secuencia de código:

r / n / r / n / r / n

Esta expresión elimina los retornos de carro y los avances de línea no deseados creados por la primera secuencia.

Guarde su archivo con un nombre diferente usando "Guardar como".

Hecho.

Paso 10: Resultados

Resultados
Resultados

Este plotter fue construido como "prueba de concepto" y nunca tuvo la intención de ser perfecto. Dicho esto, los resultados no son tan malos. Definitivamente cumplen con mi objetivo de diseño de transferir contornos de acuarela al papel.

Las primeras tres imágenes son los patrones de prueba incorporados T5, T6, T7 respectivamente.

El "¡Hola mundo!" El patrón se envió al trazador a través de bluetooth. Se adjunta una copia "preprocesada" de este archivo.

Paso 11: Actualización de código

Actualización de código
Actualización de código

El código de este trazador se ha actualizado a Drum_Plotter_V2.ino.

Los cambios del Drum_Plotter.ino original incluyen:

  • posicionamiento más suave del lápiz
  • ahora reconoce las instrucciones de gcode G02 (arcos en el sentido de las agujas del reloj)
  • ahora reconoce las instrucciones de gcode G03 (arcos en sentido antihorario)

El diagrama adjunto describe mi método para calcular el ángulo del arco.

Paso 12: Drum_plotter_v3.ino

Se adjunta una actualización de código para "Trazador de tambor CNC".

"drum_plotter_v3.ino" corrige un error menor que afectaba la precisión del trazador.

Cambia la historia

Versión 2:

Se agregaron curvas de doble arco

Versión 3:

Las siguientes funciones se reescribieron para solucionar un error menor que afectó la precisión del trazador.

  • (int) reemplazado con round () en la función move_to ().
  • Se mejoró el algoritmo de búsqueda "octante" de la función draw_line ()
  • El intérprete ahora usa funciones de cadena en lugar de punteros, lo que simplifica el diseño. Por ejemplo, ahora podemos buscar "MENÚ" en lugar de buscar la letra 'M' y luego extraer el número entero que sigue. Esto le permite personalizar el trazador con sus propios comandos.

Paso 13: Drum_plotter_plotter_v4.ino

16 de enero de 2017:

El código de este trazador de tambor se ha optimizado aún más. Se han agregado características adicionales.

Los cambios incluyen:

  • algoritmo draw_line () más rápido
  • función move_to () coincidente
  • contadores de pasos
  • corrección de errores menores

Para obtener más detalles, lea los comentarios en "drum_plotter_v4.ino" adjunto.

Haga clic aquí para ver mis otros instructivos.

Recomendado: