Tabla de contenido:

El dispensador robótico de filamentos para Arduino: 8 pasos (con imágenes)
El dispensador robótico de filamentos para Arduino: 8 pasos (con imágenes)

Video: El dispensador robótico de filamentos para Arduino: 8 pasos (con imágenes)

Video: El dispensador robótico de filamentos para Arduino: 8 pasos (con imágenes)
Video: 13 PROYECTOS con ARDUINO para PRINCIPIANTES || en ESPAÑOL 2021 || fácil y rápido 2024, Noviembre
Anonim
Image
Image

Por qué una herramienta motorizada

El filamento de las impresoras 3D, generalmente casi robusto, es tirado por la extrusora mientras el rollo se coloca cerca de la impresora, libre para girar. He observado diferencias significativas en el comportamiento del material según el nivel de uso, referidas a rollos de filamento de 1Kg. Un carrete de filamento nuevo (lleno) fluye casi bien, pero la fuerza aplicada por la extrusora debería ser relativamente relevante: el peso es de al menos 1,5 kg.

El motor de la extrusora (en la mayoría de los casos un paso a paso Nema17) tiene suficiente potencia para hacer el trabajo, pero los dos engranajes de la extrusora que empujan el filamento hacia el lado del extremo caliente mientras se trabaja recogen partículas del filamento debido a las fuerzas aplicadas; esto requiere un mantenimiento frecuente de la extrusora para evitar la obstrucción de la boquilla. Estas partículas tienden a desprenderse y mezclarse con el filamento limpio mientras se alimenta, aumentando los problemas de las boquillas y un desgaste más frecuente de las boquillas; esto ocurre con mayor frecuencia con boquillas de 0,3 mm de diámetro.

Cuando el rollo de filamento se usa a la mitad o más, sus espirales se vuelven más pequeñas y, en algunas condiciones ambientales, el filamento tiende a romperse con demasiada frecuencia. Los trabajos de impresión largos se vuelven menos fiables y estresantes; No puedo dejar la impresora funcionando sola durante una noche entera sin controlarla. Controlando así la alimentación del filamento mediante figuras motoras resolviendo una serie de cuestiones.

El kit está disponible en Tindie.com

Paso 1: Contenido del kit

El contenido del kit
El contenido del kit
El contenido del kit
El contenido del kit

El kit incluye todas las piezas impresas en 3D y la mecánica para montar el dispensador de filamento motorizado. En cambio, hay dos partes opcionales: el motor y la placa del controlador del motor.

En mi configuración he utilizado un motor con engranajes con escobillas McLennan de 12 V, pero cualquier motor con engranajes de 37 mm de diámetro puede caber correctamente dentro del soporte del motor.

Las mejores prestaciones se alcanzan con un escudo Arduino TLE94112LE de Infineon (revisión completa aquí); Esta placa controladora de motor de CC puede admitir hasta 6 kits de dispensador robótico diferentes al mismo tiempo.

He probado todo el sistema tanto en un Arduino UNO R3 como en el kit de arranque XMC1100 de la placa compatible con Arduino de Infineon y el sistema respondió muy bien con las dos placas de microcontrolador.

Se sugiere el uso del protector TLE94112LE, pero no es esencial. Cualquier controlador de motor de CC para Arduino, ¡incluido su propio proyecto! - puede funcionar bien con esta herramienta

El kit está dividido en dos conjuntos de componentes, ya que dos partes están diseñadas para trabajar juntas. La plataforma base soportará el rollo de filamento girando sobre los cuatro cojinetes de rueda libre. La base se fija al sensor de peso para controlar el mecanismo giratorio que dispara su activación y monitorear las condiciones del filamento: peso, metros y porcentaje. Se puede acceder a una gran cantidad de información, así como a un conjunto de comandos completo, desde Arduino a través de un terminal en serie.

Herramientas que necesitas

Para completar el montaje necesitas un pegamento plástico robusto para algunas piezas, un destornillador y un juego de tornillos Allen.

Paso 2: el proyecto y el diseño

El proyecto y el diseño
El proyecto y el diseño
El proyecto y el diseño
El proyecto y el diseño
El proyecto y el diseño
El proyecto y el diseño

Este proyecto es la tercera evolución de la serie de dispensadores de filamentos para impresoras 3D. Hace algunas veces creé la base giratoria para optimizar el flujo del filamento cuando es tirado por la extrusora de la impresora 3D.

El segundo modelo incluía un sensor de peso para monitorear en tiempo real el uso del filamento con una placa Arduino. Este último proyecto incluye la liberación automática del filamento en función de las necesidades del trabajo de la impresora 3D. Se basa en la variación de peso virtual cuando la extrusora comienza a tirar del filamento. Este evento activa el microcontrolador a través del sensor de peso y el rollo de filamento motorizado comienza a liberar algunas pulgadas de material, luego desacelera y se detiene.

Los componentes se han exportado en formato STL y se han impreso en 3D, luego se han refinado y ensamblado. He creado un soporte personalizado para alinear la parte de movimiento con la base. El riel de aluminio más largo también se usó para soportar el Arduino y el escudo del motor para hacer que toda la herramienta sea compacta y fácil de mover.

Al crear el diseño seguí una serie de supuestos:

  • Haciendo que el motor automatizado sea casi simple y fácil de reproducir
  • Reduzca tanto como sea posible la cantidad de componentes no imprimibles en 3D para que sea
  • Reduzca tanto como sea posible la tensión aplicada a la extrusora durante la impresión
  • Utilice una placa de microcontrolador de bajo costo y fácil de programar
  • Utilice el sensor de carga de peso para mantener bajo control el consumo de filamento y la alimentación de filamento Maneje el ruido ambiental que interfiere con las medidas de peso del filamento

Este es el resultado que alcancé.

Paso 3: Montaje de la base

Montaje de la base
Montaje de la base
Montaje de la base
Montaje de la base
Montaje de la base
Montaje de la base

El primer paso es ensamblar la base con el sensor de peso.

  1. Inserte el tubo del eje del rodamiento pequeño en el orificio del rodamiento
  2. Coloque los dos discos separadores a los lados del rodamiento
  3. Introducir los componentes dentro del soporte del rodamiento tamaño "U" alineando los orificios
  4. insertar el tornillo Allen a un lado y la arandela y la tuerca al otro lado cerrando la tuerca sin demasiado esfuerzo

Debe repetir la operación en los cuatro soportes de cojinetes. Luego pruebe el conjunto: los cojinetes deben girar libremente.

Ahora fije con los tornillos Allen los cuatro soportes de cojinetes en la base superior con los cuatro orificios de regulación. Alinee los soportes de los cojinetes para mantenerlos paralelos. Regule la distancia en función del ancho de sus rollos de filamento.

El siguiente paso es ensamblar la barra del sensor de peso sosteniendo juntas la base superior e inferior. El sensor de peso tiene dos tornillos Allen diferentes en ambos lados y debe orientarlo de modo que la etiqueta de peso máximo sea legible cuando la base esté colocada correctamente. La base inferior tiene dos orificios laterales adicionales para fijar el amplificador A / D del sensor de peso. El amplificador basado en el HX711 IC se alimentará y conectará a la placa Arduino a través de los cuatro cables como se muestra en la hoja de datos del sensor adjunta.

El último paso es montar la base superior completa sobre el sensor de peso ya fijado a la parte inferior.

¡Se ha configurado el primer componente!

Paso 4: Montaje de las piezas del motor de movimiento del carrete

Montaje de las piezas del motor de movimiento del carrete
Montaje de las piezas del motor de movimiento del carrete
Montaje de las piezas del motor de movimiento del carrete
Montaje de las piezas del motor de movimiento del carrete
Montaje de las piezas del motor de movimiento del carrete
Montaje de las piezas del motor de movimiento del carrete

El procedimiento más fácil para ensamblar el motor de movimiento de carrete es ensamblar por separado los cuatro componentes más importantes y luego completar la construcción final:

El motor de CC con engranajes en la caja de transmisión del motor

El motor de CC debe montarse en la parte central del soporte de la estructura; Antes de atornillar el motor debes decidir cuál será tu lado preferido donde colocar el lado de los engranajes para alinear correctamente los dos brazos que sujetan el motor y el engranaje grande accionado.

El engranaje grande impulsado

El engranaje grande debe atornillarse con el bloque cónico truncado con los cuatro tornillos Allen. Este engranaje quedará bloqueado en el eje de rotación mediante tuercas; la parte cónica sujetará el carrete de filamento que está bloqueado al otro lado por una contratuerca similar dentro de otro bloque cónico truncado. Esta solución no solo mantiene el mecanismo de movimiento en su lugar, sino que dirige todo el peso a la base y es la tara del sistema.

El soporte del candado de carrete

Este es el bloque cónico truncado que junto con el lado de bloqueo similar del engranaje impulsado sujetará el mecanismo de movimiento al carrete de filamento. Por cuestión de tacto, es el rollo de filamento el que completa el edificio, mientras que el soporte de movimiento de dos brazos es libre para moverse en el otro lado.

Como se muestra en las imágenes, el portacarretes está construido en dos partes. Primero inserte la tuerca M4 en la parte más grande del bloque y luego pegue la segunda parte (la cubierta) manteniendo los bloques juntos. La tuerca queda aprisionada dentro del soporte de la cerradura que se atornillará al eje accionado roscado.

La caja de rodamientos

La caja de cojinetes tiene dos funciones: otorgar un buen apoyo a los engranajes de transmisión y un movimiento suave y silencioso. Para ensamblar la caja de rodamientos, siga estos sencillos pasos:

  1. Atornille la primera tuerca M4 a uno de los dos extremos del eje impulsado del portacarretes roscado
  2. Inserte el primer rodamiento
  3. Inserte el separador
  4. Inserte el segundo rodamiento
  5. Atornille la segunda tuerca y bloquéela moderadamente. El separador de plástico interno se opondrá a la fuerza suficiente para mantener las cosas en su lugar también durante un uso prolongado.
  6. Inserte los rodamientos ensamblados en la caja de rodamientos. Debe hacerse de forma forzosa para otorgar mejores resultados así que no expandas demasiado el interior de la caja al refinar las piezas de plástico.

¡Estamos listos para el montaje final de los componentes!

Paso 5: completar el ensamblaje del motor de movimiento

Finalización del montaje del motor de movimiento
Finalización del montaje del motor de movimiento
Finalización del montaje del motor de movimiento
Finalización del montaje del motor de movimiento
Finalización del montaje del motor de movimiento
Finalización del montaje del motor de movimiento

Estamos a punto de terminar el ensamblaje de la estructura y luego podemos movernos para probar el movimiento. Ahora necesitas de nuevo un poco de pegamento. La caja de cojinetes, ensamblada en el paso anterior, debe insertarse en el orificio del soporte de la caja del soporte del motor de dos brazos y posiblemente pegarse antes de atornillar la tapa de la caja.

Advertencia: no pegue la tapa de la caja, solo atorníllela. La cubierta es importante para la protección contra el polvo y debe poder quitarse para cualquier operación de mantenimiento futura.

Cuando esta configuración esté completa antes de agregar el engranaje impulsado (el más grande), agregue el anillo separador pequeño: mantiene el engranaje grande alineado con el engranaje del motor que actúa como una arandela para fijar el conjunto móvil impulsado.

Luego inserte el engranaje impulsor (el pequeño) en el eje del motor. Tenga en cuenta que también hay un lado plano en el motor en el orificio central del engranaje para mantener el engranaje girando impulsado por el motor de CC.

En el último paso, inserte el engranaje impulsado grande como se muestra en las imágenes y bloquéelo al eje roscado con dos tuercas M4.

¡La construcción de la mecánica está completa!

Paso 6: Bonificación: cómo personalicé el soporte para administrar el kit

Bonificación: cómo personalicé el soporte para administrar el kit
Bonificación: cómo personalicé el soporte para administrar el kit
Bonificación: cómo personalicé el soporte para administrar el kit
Bonificación: cómo personalicé el soporte para administrar el kit
Bonificación: cómo personalicé el soporte para administrar el kit
Bonificación: cómo personalicé el soporte para administrar el kit

Para mantener el kit en su lugar, hice una estructura muy simple basada en dos tubos cuadrados de aluminio para soportar tanto la base como la estructura de movimiento. La base se ha fijado con cuatro tornillos a los dos rieles (de unos 25 cm de largo) y con un par de pequeños soportes impresos en 3D he fijado el motor de movimiento para que se pueda mover para facilitar la inserción y extracción del rollo de filamento.

Cualquiera puede elegir su propia solución dependiendo de cómo esté organizado su banco de trabajo.

Paso 7: cableado y conexión a Arduino

Image
Image
Cableado y conexión a Arduino
Cableado y conexión a Arduino

Como se explicó en el paso del contenido del kit, he utilizado un protector de motor de CC Infineon TLE94112LE para Arduino y he probado el motor tanto en Arduino UNO R3 como en el kit de arranque Infineon XMC110.

Si va a controlar el motor (necesita características PWM) con una placa controladora de CC de su elección, simplemente adapte las instrucciones a las especificaciones técnicas de su escudo.

Una nota sobre el TLE04112LE Arduino Shield

Uno de los límites que he experimentado con otros escudos de control de motor para Arduino es que usan las características del mismo microcontrolador (es decir, pines PWM y GPIO); esto significa que su placa se dedica a estas tareas mientras que solo algunos otros recursos (MPU y GPIO) están disponibles para otros usos.

Teniendo la posibilidad de poner las manos en el escudo Arduino TLE94122LE para pruebas en carretera, la ventaja más evidente del IC en el que se basa la placa es simplemente su integridad. La placa Arduino se comunica con el escudo a través del protocolo SPI utilizando solo dos pines. Cada comando que envía al escudo es procesado de forma autónoma por el TLE94112LE IC sin consumir recursos de la MPU. Otra característica destacable de la placa Infineon es la posibilidad de controlar hasta seis motores cepillados con tres canales PWM programables. Esto significa que Arduino puede configurar uno o más motores, arrancarlos y continuar trabajando en otras tareas. Este escudo se reveló perfecto para soportar hasta seis rollos de filamento diferentes al mismo tiempo, el movimiento es solo una de las tareas a cargo de la MPU. Considerando la posibilidad de administrar seis carretes de filamento diferentes con un solo escudo Arduino + el costo del microcontrolador impacta. en cada controlador de filamento por menos de 5 euros.

El sensor de peso

Después de hacer algunos experimentos vi que era posible controlar todo el sistema - monitoreo y alimentación automática - con un solo sensor; una celda de carga (sensor de peso) es capaz de medir dinámicamente las variaciones de peso de la bobina de filamento proporcionando toda la información que necesitamos.

Usé una celda de carga económica en el rango de 0-5 Kg junto con una pequeña placa basada en el Amplificador HX711 AD, un IC específico para administrar los sensores de las celdas de carga. No hubo problemas de interfaz ya que está disponible una biblioteca Arduino que funciona bien.

Tres pasos para configurar el hardware

  1. Inserte el protector en la parte superior de la placa Arduino o el kit de arranque Infineon XMC110
  2. Conecte los cables del motor a los conectores atornillados Out1 y Out2 del blindaje
  3. Conecte la alimentación y las señales del amplificador del sensor de peso HX711 AD a los pines Arduino. En este caso he usado los pines 2 y 3 pero todos los pines libres están bien.

Advertencia: las p ins 8 y 10 están reservadas por la pantalla TLE94113LE para la conexión SPI

¡Eso es todo! ¿Listo para configurar el software? Adelante.

Paso 8: El software y el conjunto de comandos de control

El conjunto de comandos de software y control
El conjunto de comandos de software y control
El conjunto de comandos de software y control
El conjunto de comandos de software y control
El conjunto de comandos de software y control
El conjunto de comandos de software y control
El conjunto de comandos de software y control
El conjunto de comandos de software y control

El software completamente documentado se puede descargar desde el repositorio de GitHub 3DPrinterFilamentDispenserAndMonitor

aquí consideramos solo las partes más significativas y los comandos de control.

Hay una razón impuesta por la cantidad de pines disponibles en el Arduino UNO. Decidí controlar el sistema a través del terminal serial USB; Como cada unidad motorizada se basa en un sensor de peso, el control de seis dispensadores de filamentos diferentes requiere la lectura de datos de seis sensores de peso. Cada celda de carga "consume" dos pines, los pines 0 y 1 están reservados (Tx / Rx) para el serial y los pines 8 y 10 están reservados para el canal SPI que conecta el blindaje TLE94112LE.

Estado del sistema

El software de control funciona a través de cuatro estados diferentes, definidos en filament.h:

#define SYS_READY "Ready" // Sistema listo

#define SYS_RUN "Running" // Filamento en uso #define SYS_LOAD "Load" // Roll cargado #define SYS_STARTED "Started" // Aplicación iniciada // Códigos de estado #define STAT_NONE 0 #define STAT_READY 1 #define STAT_LOAD 2 #define STAT_RUN 3

Estado: iniciado

Este estado ocurre después de un reinicio del hardware o cuando el sistema está encendido. El encendido (y la llamada de configuración () cuando comienza el boceto) inicializa los valores internos predeterminados y debe iniciarse sin peso adicional en la plataforma como parte de la secuencia de inicialización es la adquisición de la tara absoluta para alcanzar el peso físico cero.

Estado: listo

El estado listo ocurre después de un reinicio suave (enviado desde el terminal en serie). Es similar a la resección física pero no se calcula la tara; el comando de reinicio también se puede ejecutar cuando el sistema está en funcionamiento.

Estado: carga

El estado de carga ocurre cuando el terminal envía el comando de carga. Esto significa que se ha cargado el rollo de filamento y se ha calculado la tara dinámica. El peso exacto del filamento se obtiene mediante el tipo de configuración del rollo restando el peso de la unidad del motor y el rollo vacío.

Estado: en ejecución

Este estado habilita el cálculo automático del peso y el dispensador automático de filamentos.

Mensajes de terminal

La versión actual del software devuelve mensajes legibles por humanos al terminal dependiendo de los comandos. Los mensajes de cadena se definen en dos archivos de encabezado: commands.h (mensajes y respuestas relacionados con el comando) y filament.h (cadenas utilizadas por el analizador para crear mensajes compuestos).

Comandos

Dos archivos diferentes están involucrados en la gestión de comandos: commands.h que incluye todos los comandos y parámetros relacionados y filament.h que incluye todas las constantes y definiciones utilizadas por el sistema de ponderación y por el analizador.

Si bien los cálculos internos los realiza automáticamente el software, he implementado una serie de comandos para configurar el comportamiento del sistema y controlar manualmente algunos parámetros.

Las palabras clave de comando distinguen entre mayúsculas y minúsculas y solo deben enviarse desde la terminal. Si un comando no es apropiado para el estado actual del mismo, no se reconoce, se devuelve un mensaje de comando incorrecto; de lo contrario, se ejecuta el comando.

Comandos de estado

Cambie el estado actual del sistema y el comportamiento también se adaptará

Comandos de filamento

Utilizando comandos separados, es posible configurar las características del filamento y el rollo según el peso y los tamaños más comunes disponibles en el mercado en la actualidad.

Comandos de unidades

Estos son un par de comandos para configurar la visualización de las unidades de medida en gramos o centímetros. De hecho, es posible eliminar estos comandos y representar siempre los datos en ambas unidades.

Comandos de información

Mostrar grupos de información según el estado del sistema

Comandos de motor

Controle el motor para la alimentación o tracción del filamento.

Todos los comandos del motor siguen una ruta de aceleración / desaceleración. Los dos comandos feed y pull ejecutan una secuencia corta como se define en motor.h por la constante FEED_EXTRUDER_DELAY mientras que los comandos feedc y pullc se ejecutan indefinidamente hasta que no se recibe un comando de parada.

Comandos del modo de ejecución

El estado de funcionamiento acepta dos modos; modo hombre acaba de leer periódicamente el peso y el motor se mueve hasta que no se envía un comando de control del motor. En cambio, el modo automático ejecuta dos comandos de alimentación cuando la extrusora necesita más filamento.

El principio se basa en las lecturas de peso, contextualizadas a este entorno particular. Esperamos que el consumo de filamento sea relativamente lento, las impresoras 3D son casi lentas y las oscilaciones de peso normales dependen de la vibración del entorno (mejor si no pones todo el material en la impresora 3D)

Cuando la extrusora tira del filamento, la diferencia de peso aumenta drásticamente (50 go más) en muy poco tiempo, normalmente entre dos o tres lecturas. Esta información es filtrada por el software que "deduce" que se necesita un nuevo filamento. Para evitar lecturas incorrectas, se ignoran las variaciones de peso mientras el motor está funcionando.

Lógica de la aplicación

La lógica de la aplicación se distribuye en el.ino main (el boceto de Arduino) a lo largo de tres funciones: setup (), loop () y parseCommand (commandString)

El boceto usa dos clases separadas: clase FilamentWeight para administrar todos los cálculos de filamento y la lectura del sensor a través de la clase HX711 IC y MotorControl que interconecta los métodos de bajo nivel del protector Arduino TLE94112LE.

configuración()

Lanzado una vez cuando se enciende o después de un reinicio del hardware, inicializa las instancias de las clases, configura el hardware y la comunicación del terminal.

círculo()

La función de bucle principal gestiona tres condiciones diferentes.

Si bien hay dos clases de sensores de peso y motores relativamente complejos, existe la ventaja de que el boceto resultante es realmente fácil de entender y administrar.

  1. Compruebe (en modo automático) si la extrusora necesita más filamento
  2. Si el motor está funcionando, compruebe si hay errores de hardware (devuelto por el TLE94112LE)
  3. Si hay datos en serie disponibles, analice el comando

parseCommand (commandString)

La función de análisis verifica las cadenas que provienen de la serie y cuando se reconoce un comando, se procesa inmediatamente.

Cada comando actúa como una máquina de estado que impacta en algún parámetro del sistema; siguiendo esta lógica todos los comandos se reducen a tres acciones secuenciales:

  1. Envíe un comando a la clase FilamentWeight (comandos de peso) o a la clase MotorControl (comandos de motor)
  2. Ejecuta un cálculo para actualizar los valores de peso o actualizar uno de los parámetros internos
  3. Mostrar en el terminal y en la salida de información cuando se complete la ejecución

Instale la biblioteca Arduino HX711, descargue el software de GitHub y cárguelo en su placa Arduino, ¡luego disfrute!

Recomendado: