¿Para que nos puede servir una impresora 3d?


La impresión 3D es un proceso de fabricación que se utiliza para crear objetos tridimensionales a partir de un archivo digital. Durante el proceso, una impresora 3D deposita materiales en capas sucesivas hasta formar el objeto final  en el proceso conocido como fabricación aditiva, dado que la nueva pieza se genera añadiendo capas nuevas a la pieza, a diferencia del proceso de fabricación  sustractiva donde se parte de una pieza maciza y mediante herramientas se va eliminando capas. Los materiales utilizados para la impresión 3D pueden incluir plásticos, resinas, metal, cemento y otros materiales.

El PLA (poliolactide) es un material de impresión 3D comúnmente utilizado. Se trata de un plástico biodegradable hecho de recursos renovables, como la caña de azúcar y el maíz. Es popular debido a su facilidad de uso y a la poca cantidad de energía térmica que requiere durante el proceso de impresión. Además, el PLA tiene una buena resistencia y durabilidad y se puede utilizar para imprimir una amplia variedad de objetos. Además su precio es bastante inferior al resto de materiales ( aproximadamente unos 20€ la bobina de 1kg). 

Sin embargo, a pesar de su gran versatilidad , también hay algunas desventajas al utilizar PLA. Por ejemplo, no es tan resistente al calor como algunos otros plásticos y puede deformarse a temperaturas elevadas. También es menos resistente a la deformación que otros plásticos y puede ser más frágil. Es importante tener en cuenta estas limitaciones al seleccionar PLA como material de impresión 3D.

pla

En cuanto a las impresoras 3D se utilizan en una amplia variedad de campos, como la ingeniería, la medicina, la arquitectura y la artesanía. Hay muchos tipos diferentes de impresoras 3D disponibles en el mercado, que varían en tamaño, precio y capacidad. Algunas impresoras 3D son grandes y costosas y se utilizan en fábricas y laboratorios, mientras que otras son más pequeñas y asequibles y se pueden utilizar en el hogar o en pequeñas empresas. Por ejemplo, una de las impresoras mas conocidas y populares  es la Ender 3 del fabricante Creality ( la cual personalmente recomiendo por su gran relación calidad precio).

ender3

Muchas voces afirman que la impresión 3D es uno de los principales motores de una nueva revolución industrial que cambiará por completo la forma de fabricar y consumir productos. Ciertamente  la impresión 3D está teniendo un impacto significativo en la industria y está impulsando una nueva revolución industrial. La impresión 3D permite una mayor flexibilidad y personalización en la fabricación de productos, lo que puede tener un gran impacto en la forma en que se producen y distribuyen los bienes.

Además, la impresión 3D puede mejorar la eficiencia y reducir los costos de producción al eliminar la necesidad de moldes y herramientas costosas y al permitir la producción de piezas y productos a medida. También puede permitir la fabricación de piezas y productos en lugares remotos o de difícil acceso, lo que facilita la distribución y el transporte de bienes.

Podríamos distinguir cinco tipos de aplicaciones en los que ya se utiliza:

  • Modelado de concepto: permite a las empresas de ingeniería y diseño ampliar su alcance probando más ideas y desarrollando sólo los proyectos adecuados.
  • Diseño ergonómico de productos: un diseño ergonómico correcto es vital para evitar lesiones y para mejorar la productividad. Los modelos impresos en 3D permiten la evaluación precisa del rendimiento ergonómico durante el proceso de desarrollo del producto.
  • Marketing y diseño gráfico: los modelos de concepto impresos en 3D son excelentes herramientas de marketing porque es posible mostrar a los grupos de discusión el modelo previo al lanzamiento de un producto nuevo, casi idéntico al producto real. Pueden verlo, sostenerlo y examinarlo desde todos los ángulos. La impresión 3D permite realizar modelos de producto de alta calidad en cuestión de horas, sin necesidad de enviar los diseños a otro lugar
  • Prototipado funcional: los prototipos funcionales permiten a las empresas detectar y corregir errores, así como realizar mejoras sobre todo en las primeras fase de diseño, ahorrando mucho dinero a las empresas involucradas, además de conseguir prototipos con un realismo asombroso y con el aspecto del próximo producto acabado.
  • Obtención de piezas finales: una de las ventajas de la revolución de la impresión en 3D es la posibilidad de empezar a producir sin la demora y sin los gastos de mecanizado y de producción de los métodos tradicionales, además de producir artículos personalizados de geometría compleja sin las limitaciones que hasta ahora estos métodos de manufactura tradicionales nos han impuesto.

A nivel del hogar, hoy en dia también podemos hacer uso de las bondades de la impresion 3d para un sinfin de aplicaciones  y usos  bien diseñando las piezas por nosotros mismos ( por ejemplo desde la plataforma gratuita Tinkercad de Autodesk ) o descargándola desde  cualquier repositorio de piezas 3d , donde sin duda no podemos olvidar el lider indiscutible que es Thinginverse.

En efecto ,Thingiverse es una plataforma gratuita en línea para compartir archivos de diseño de impresión 3D y descargar modelos de otros usuarios. La plataforma fue creada por la compañía de impresión 3D MakerBot y se encuentra en la web en thingiverse.com. Thingiverse es una de las plataformas más grandes y populares para compartir y descargar modelos de impresión 3D y es utilizada por una amplia variedad de personas, desde aficionados a la impresión 3D hasta profesionales de la industria. Los usuarios pueden subir sus propios diseños a la plataforma y descargar y imprimir modelos creados por otros usuarios. Thingiverse también ofrece una amplia variedad de recursos y herramientas para ayudar a los usuarios a crear y compartir sus propios diseños de impresión 3D.

Veamos algunos ejemplos de cosas que podemos imprimir que nos puedan resultar muy útiles en el dia a dia:

Auriculares impresos

auriculares-impresos-3d

El laboratorio de diseño de Teague quería retar “el actual paradigma de diseño de la electrónica de consumo” con su prototipo de auriculares impresos :el modelo  13:30 de Teague Labs.

Para ello, la firma usó tecnología de impresión 3D y componentes electrónicos estándar, logrando un producto equivalente a un coste similar a los modelos producidos en masa.

Aunque, a diferencia de los auriculares convencionales, 13:30 es un auricular personalizado cuyo diseño podría adaptarse a las prerrogativas de cada usuario.

 Juguetes

Se  pueden  imprimir  desde robots a piezas conectoras universales. Ya en la década de los 90, Nicholas Negroponte aventuraba que los juguetes serían impresos no en muchos años. La idea sonaba entonces más descabellada que ahora, cuando firmas como 3D Systems presentan juguetes como los robots Cubify: pequeñas piezas intercambiables que configuran distintos modelos de robot.

juguetes-impresos-3d

3D Systems vende tanto los robots acabados como el material para imprimirlos uno mismo por una fracción del precio. Cubify es sólo un ejemplo del brillante futuro de los juguetes a la carta, usando diseños propios o modelos descargados de Internet, gracias a la impresión 3D casera.

Ya hay firmas que trabajan en métodos estándar de ensamblaje que faciliten la fabricación de piezas para articular objetos usando un sistema similar a LEGO.

Por ejemplo, FAT Lab y Sy-Lab han presentado lo que llaman kit de construcción gratuito y universal, que permite a los entusiastas del ensamblaje juguetes mediante bloques de plástico intercambiables usar un adaptador que hace compatibles las piezas de Lego, N’Kex, la desaparecida firma española Tente, Fischertechnik, etc.

 

Imprimir BB-8 de Star Wars

El pequeño robot tiene que imprimirse a tres colores, blanco, gris y naranja, y la resolución que ha utilizado para sus pruebas es de 150micras aunque el diseño está en formato STL por lo que no habrá problemas para imprimirlo en cualquier impresora 3D. Formado por diez partes su ensamblaje es muy simple y además no necesita sujeciones así que hay pocas cosas más vistosas y simples de imprimir. El propio diseñador ha confirmado que su diseño está pensado para ser montado de una forma muy simple y rápida, simplemente imprimiendo las 10 piezas y utilizando un poco de pegamento para mantenerlo siempre unido.

De entre todos los proyectos para recrear un BB-8 este es el único que lo hace verdaderamente simple ya que otros tutoriales y diseños incluyen electrónica y distintas formas de controlar al pequeño robot. En este caso simplemente tendremos un modelo bastante fidedigno para dejarlo en nuestro escritorio y sorprender a todos con las posibilidades de las impresoras 3D. Si quiere un BB-8 funcional y controlable mediante bluetooth o radiocontrol hay decenas de tutoriales para construirlos, aunque será mucho más complicado que simplemente darle a “Imprimir en 3D” y esperar para montarlo.

¿Quiere un BB-8 impreso en 3D? Descargue el modelo desde Thinkiverse y montae su BB-8 hoy mismo.

Un abridor de botellas universal impreso en 3D

abridor-impreso-3d

Este abridor de botellas asegura un buen agarre en cualquier situación. Se acabaron esas botellas imposibles de abrir porque están mojadas, su tapón se ha trabado o porque tenemos las manos aceitosas de estar cocinando. Además, uno de los manguitos sirve para abrir botellines con chapa. Lo puede descargar aquí.

Un anclaje de mochila impreso en 3D

hebilla-impresa-3d

Ya sea de montaña o para el colegio muchas mochilas llevan este tipo de anclajes que permiten unir dos cintas para mejorar la sujeción o cerrarlas con más protección. El plástico de los anclajes suele ser bueno pero un golpe o el simple paso del tiempo pueden dejar inservible esta útil pieza de las mochilas, por eso puede descargar uno aquí y imprimirlo.

Una maceta con autorriego impresa en 3D

mazetero-impreso-3d

Tener plantas en casa está muy bien pero regarlas ya es harina de otro costal, ya sea porque se nos olvida o porque nos vamos unos días a veces las plantas se quedan sin su líquido elemento necesario. Gracias a este moderno macetero esto no nos volverá a pasar ya que además de ser bonito se asegura de que la planta tiene agua durante varias semanas. Puede descargarlo aquí.

Sujetacables para el escritorio impresos en 3D

sujetacables

Aunque los periféricos de nuestro PC empiezan a ser inalámbricos seguimos teniendo un montón de cables, que si cargar el móvil, conectar la cámara… Y esos cables se quedan conectados al PC mientras se escurren bajo la mesa cuando no los estamos utilizando. Hay decenas de sujetacables para imprimir y es una esas pequeñas utilidades que podemos imprimir en 3D descargándolas aquí.

Una forma útil de atarse los zapatos impresa en 3D

porta-cordones-zapatos-impresos-3d

Atarse los zapatos está sobrevalorado, aprender está bien pero si nos imprimimos estos artilugios nombrados Klöts nuestros zapatos quedarán perfectamente fijados en un momento. Lo puede descargar aquí.

Un kit para preparar sushi impreso en 3D

moldes-impresion-3d-para-sushi

Preparar sushi es bastante fácil hasta que uno se pone a montar los makis, entonces enrollar el alga rellena de arroz se convierte en una odisea que sólo la práctica o un kit para preparar sushi pueden solucionar. Puede descargarlo aquí y empezar a preparar sushi mucho más rápidamente gracias a tu impresora 3D.

Anuncio publicitario

Reciclaje de papel gracias a la impresión 3D


Sólo hay unos pocos materiales de ingeniería verdaderamente antiguos, y entre los más antiguos está el papel. Tradicionalmente, el papel es plano y se puede doblar en formas. Sin embargo, el papel se puede moldear en, por ejemplo como lo vemos en material de embalaje o en el ejemplo mas tipico : las cajas de huevos.

La mayoría de los lectores conocerán la obra del artista neerlandés Theo Jansen, cuyas esculturas mecánicas de andar impulsadas por el viento Strandbeest (animal de playa) merodean por las playas de los Países Bajos. La conexión de Jansen permite fabricar máquinas con una marcha curiosa pero eficaz a partir de una entrada rotacional, y ha sido copiada con entusiasmo en todo tipo de productos, desde juguetes de sobremesa hasta bicicletas.

Uno podría pensar que un acoplamiento Jansen estaría más allá de algunos materiales, y podría sorprenderse al ver uno de papel. Pues adelante [Luis Craft], con un «Strandbeest» (animal de playa) de papel andante. Diseñado en Blender, cortado en una cortadora de papel CNC de sobremesa y accionado por un par de pequeños robots conectados a un Arduino y controlados por un enlace Bluetooth, tiene cuatro juegos de patas y puede empujar objetos de escritorio. No lo habríamos creído posible, pero ahí está.

Afirma que es un Strandbeest de origami, pero el origami debe estar hecho de papel doblado al estilo japonés y no de papel cortado y pegado como aquí. Sin embargo, esto no resta calidad al trabajo

Creemos que éste es el primer Strandbeest de papel que vemos, pero en la web a lo largo de los años se pueden ver innumerables más. Aquí está una versión de [Jansen], con forma de ola.

XYZAidan tiene un proceso que permite reciclar papel usado en objetos similares desechados de papel en útiles nuevos objetos . Para ello se necesita una impresora 3D, pero en realidad no imprime el papel, pues en su lugar, se utiliza la impresora 3d para crear un molde que pueda formar pulpa de papel que hace con papel reciclado (también usa una licuadora y una trituradora) ofreciendo en su pagina de thinginverse siete moldes diferentes que van desde una bandeja de escritorio y un plato a cubos y posavasos simples.

En la imagen (tomada de su repositorio de thinginverse) podemos ver algunos ejemplos terminados de algunos productos fabricados con esta técnica:

Los moldes impresos en 3D tienen que ser muy fuertes porque usará un torno improvisado para exprimir el agua de la pulpa. Se puede utilizar casi cualquier tipo de papel a menos que sea brillante o tenga un recubrimiento de plástico. Asimismo puede rasgar las piezas a mano o usar una trituradora.

Una licuadora creará la pulpa, pero también tendrá que añadir agua y un aglutinante. Aidan muestra que puede usar pegamento PVA, pasta de arroz o almidón de maíz (se puede hacer pasta de arroz fácilmente a partir del arroz ordinario cocinándolo hasta que se convierta en pasta). También hemos visto telas usadas en papeles y nos preguntamos si agregar fibras de tela a la pulpa podría funcionar de alguna manera extraña.

Básicamente como vemos en la siguiente imagen cada molde esta compuesto de tres partes: una base, el molde hembra y el molde macho que hace de tapa.

Sobre el interior del molde hembra se vierte la mezcla, se coloca el molde macho y es vital apretar el conjunto para expulsar el agua por ejemplo usando un banco de trabajo y sargentos a modo de prensa casera.


El material resultante tiene la textura del papel, pero es tan duro y rígido como el plástico, moldeable en una infinita variedad de formas y completamente biodegradable.

Hay algunas desventajas porque al ser un proceso doméstico tenemos que dejar que el papel se seque durante horas o incluso un día o dos. Además, la pulpa se encoge a medida que se seca, por lo que obtener dimensiones exactas podría ser un problema. El material es casi tan duro como la madera, pero no lo hace bien cuando está mojado.

Hay 7 diseños de moldes diferentes disponibles para descargar desde thingiverse en la pagina del autor (https://www.thingiverse.com/thing:3912997) .

Estos son los diseños de los moldes disponibles:

  • Posavasos de 60 mm (coasterMold1/2.STL)
  • Cubo (cube_base/frame/press.STL)
  • Superficie triangulada (Mesh_base/frame/press.STL)
  • Superficie sinusoidal (Box_base/Box_frame/Box_Sine_press.STL)
  • Mapa topográfico del Monte San Antonio (Box_base/Box_frame/Box_terrain_press.STL)
  • Plato (Dish_Base/Wall/Press.STL)
  • Bandeja (Tray_Base/Wall/Press.STL)

Cada molde tiene tres partes (excepto el posavasos): una base, una pared/marco y la herramienta de prensado y se hancreado con Fusion 360

Ajustes de impresión :
Resolución: .1mm-.2mm
Notas:
Ajustes de la pieza base:
10-15% de relleno
2 capas
2-3 capas de suelo
3-4 capas de techo

Configuración de piezas de pared:
15-20% relleno
3 capas
2 capas de suelo
2 capas de techo

Ajustes de la herramienta de prensado:
10-15% de relleno
2 capas de techo
2-3 capas de suelo
2-3 capas de techo 

Esperemos que este proyecto inspire a las personas y a los fabricantes a explorar nuevos usos para nuestros materiales de desecho cotidianos y encontrar nuevos sustitutos para el plástico.

El autor ha publicado un video en ingles donde nos explica el proceso completo (https://www.youtube.com/watch?v=0ItPfhx3ulw&feature=youtu.be) viendo como se ha desarrollado un proceso para convertir el papel en un material tridimensional, utilizando tan poco como una impresora 3D, una licuadora, un tornillo de banco y una pizca de arroz.

Todos los moldes de pueden descargar de https://www.thingiverse.com/thing:3912997

Cómo convertir su impresora 3D en un plotter en dos pasos


Un plotter o trazador es un dispositivo que puede dibujar texto e imágenes en papel con un utensilio ( por ejemplo un bolígrafo). 

Si pensamos en en el hardware necesario , podemos pensar que un buen atajo puede ser una vieja ( o no) impresora 3D pues estas ya incluyen todo el hardware y la electrónica que necesitamos: sólo hay que encontrar la manera de adjuntar un utensilio de dibujo y cómo decirle que dibuje.

En realidad como vamos a ver es mucho más fácil de lo que nos podemos imaginar, asi que en esta publicación de blog, aprenderá cómo puede hacer su propio dibujo de impresora.

Ejemplo del primer dibujo de su impresora 3D! 

Convertir una impresora 3D en una impresora 2D

Quizás se pregunte cuál es la utilidad de convertir una impresora 3D en algo que pueda dibujar imágenes 2D en un papel. Después de todo, las impresoras convencionales hacen eso desde hace varias décadas, ¿no es eso un paso atrás?

Pues , un plotter le permitirá dibujar con bolígrafo, lápices de colores, crayones, marcadores e incluso una pluma (básicamente todo lo que pueda dejar marcas en un papel). Pero no solo eso, incluso podemos dibujar en diferentes materiales, como cartón o vidrio. También puede ser creativo con tipos de tinta únicos, como dorada, plateada o que brillan en la oscuridad

Una utilidad innegable para los electrónicos es ayudar en la fabricación de circuitos impresos pues normalmente el diseño de la pcb se realiza calcando el diseño en la parte del cobre y luego hay que volver hay que repintar el diseño con un rotulador edding ( Además incluso puede ayudar en el taladrado con un cnc los orificios para los componentes)

Paso 1 – Colocación de un utensilio de dibujo

Desea montar de manera confiable un bolígrafo en el cabezal de la impresora y asegurarse de que la punta del bolígrafo quede un poco por debajo de la boquilla. Empecé diseñando una pequeña parte de este propósito. Se sujeta al cabezal de la impresora utilizando un pequeño tornillo M3 para fijar el bolígrafo en él:

Puede conseguir el modelo en thingiverse aquí . Debe adaptarse a cualquier impresora Creality Ender-3 o CR-20, y posiblemente a otras impresoras Creality. También es personalizable, por lo que puede modificar las dimensiones (si desea colocar un marcador más grande o necesita un ajuste más ajustado con la impresora).

Para otras impresoras, deberá diseñar su propio mecanismo de montaje (cuando lo haga, comparta un enlace en los comentarios). Si bien también es posible usar tornillos para montar el bolígrafo, personalmente prefiero el mecanismo de recorte, ya que me permite cambiar entre los modos de impresora 3D y trazador muy rápido, y también cambiar los bolígrafos muy rápido.

Paso 2 – Calibración

Una vez que haya montado correctamente su lápiz en su impresora, es hora de calibrarlo. Deberá adjuntar una hoja de papel a la cama de la impresora:

Bolígrafo montado, papel adjunto, ¡listo para su comando!

A continuación, deberá encontrar la altura correcta para imprimir. Se recomiendo usar Repetier Host pen lugar del clasico Cura, pues Repetier Host hara todo mucho más fácil ).

Antes de comenzar, asegúrese de que la plataforma de la impresora esté nivelada y que tanto la boquilla como la plataforma de la impresora estén frías.

Después de ubicar su impresora, vaya a la pestaña «Control manual» dentro de Repetier y mueva el cabezal de impresión hacia arriba hasta que la punta del bolígrafo esté por encima del papel. Luego, mueva su eje X / Y al borde de donde desea que esté su dibujo. Finalmente, mueva el eje Z hacia abajo en incrementos de 0,1 mm, hasta que vea que la punta del bolígrafo toca el papel. A continuación, puede mover un poco la X / Y y comprobar que el bolígrafo realmente deja un rastro en el papel. Cuando termine, observe los valores X / Y / Z que aparecen en la línea superior:

Calibración de la posición de su lápiz en Repetier Host.

En mi caso, los valores fueron 47 para X, 40 para Y y 14,6 para Z. Usaremos estos valores en breve cuando generemos el archivo GCode para imprimir.

Paso 3: elegir qué imprimir y generacion del gcode

Esa es una dificil pues existen infinitass opciones. Sin embargo, deberá obtenerlo en formato vectorial, por lo que si usa Google Imágenes, agregue el texto type:svg al final de su consulta de búsqueda. También puede convertir imágenes JPEG y PNG a SVG , pero sugeriría comenzar con algo que ya viene como un vector para simplificar las cosas.

Cuando se comenza un proyecto asi seguro que se piensa en el tiempo para conseguir el hardware correcto, pero se sorprenderalo rápido que se hace funcionar la parte del hardware. Sin embargo, el software es otra historia completamente diferente; como siempre, el software es donde reside la verdadera complejidad .

 Además de Repetier Host mencionado anteriormente, también necesita obtener Inkscape (que, por cierto, ¡también es útil si desea crear arte de PCB !).

Dentro de Inkscape, cree un nuevo archivo y vaya al menú Archivo → Propiedades del documento (Acceso directo: Ctrl + Shift + D). Luego, establezca el tamaño del documento un poco más pequeño que el tamaño de la cama de impresión y asegúrese también de usarlo mm para las unidades.

Una vez que haya establecido el tamaño, puede importar cualquier archivo SVG que desee o simplemente dibujar un texto con la herramienta Texto:

Cuando termine, con el texto aún seleccionado, haga clic en el menú Ruta → Objeto a ruta (Mayús + Ctrl + C). Esto convertirá el texto en una serie de puntos conectados por líneas, lo cual es necesario para alimentar la impresora. Puede agregar más elementos como espirales y formas de estrella, repitiendo la operación «Objeto a ruta» para cada uno:

Al imprimir, los objetos no se rellenarán, por lo que es posible que desee eliminar su color de relleno y establecer su color de trazo en negro (o el color de su lápiz), para obtener una representación más precisa del resultado final. Seleccione todos los objetos (Ctrl + A) y luego elimine el relleno y aplique color negro para el trazo (Ctrl + Shift + F):

Establecer el color de la pintura de trazo en negro

Cuando esté satisfecho con el resultado, es hora de generar el GCode para la impresora. Usaremos una extensión llamada «Gcodetools», que viene incluida con Inkscape (si no, tiene una versión anterior y necesita actualizar).

Comenzaremos definiendo los puntos de orientación, que le dicen a la impresora cómo mapear las líneas en la pantalla en el papel. Vaya al Menú de extensiones → Gcodetools → Puntos de orientación  y después de asegurarse de que el modo “2 puntos” esté seleccionado, haga clic en Aplicar y luego en Cerrar . Ahora debería ver dos nuevos elementos de texto agregados en la parte inferior de su dibujo:

Estos son los puntos de orientación. Cada punto es una lista de coordenadas X, Y, Z que especifica la ubicación de destino de ese punto en el sistema de coordenadas de la impresora. Debe editarlos para que coincidan con la X / Y que encontró en el paso de calibración y establecer la Z (la tercera coordenada) en 0.

Edite el texto en el punto izquierdo y actualícelo para que contenga las coordenadas X / Y que encontró. En mi caso lo fue (47; 40; 0). Para el punto correcto, agregue 100 al valor X, copie el Y / Z del primero, por ejemplo (147; 40; 0):

A continuación, necesitamos generar una herramienta y configurar su velocidad. Este paso es opcional, pero si no lo hace, su impresora se dibujará realmente muy lento. Vaya al menú Extensiones → Gcodetools → Biblioteca de herramientas  y seleccione «predeterminado» en «Tipos de herramientas»:

Haga clic en Aplicar y luego en Cerrar, y debería ver un rectángulo verde con muchas configuraciones agregadas a su dibujo:

Puede alejar este rectángulo (junto con todos los valores) para que no se sobreponga en su dibujo. Luego, desea editar el texto y cambiar los valores de «Alimentación», «Alimentación de penetración», «Alimentación de paso» para establecer la velocidad de movimiento de la impresora al dibujar. Yo uso 4500 para todos ellos (la unidad es mm / min, por lo que este valor corresponde a 75 mm / seg).

¡Finalmente estamos listos para generar el GCode! Seleccione todos los elementos en su dibujo (Ctrl + A) y vaya a Extensiones → Gcodetools → Ruta a Gcode…

Allí, vaya a la pestaña Opciones y establezca «Escala a lo largo del eje Z» en 1, y «Desplazamiento a lo largo del eje Z» al valor Z que encontró en el paso de calibración, menos uno (encontré 14.6, así que lo configuré aquí a 13.6):

A continuación, vaya a la pestaña Preferencias y establezca el nombre del archivo de salida y la ruta del directorio cuando desee que se guarde. También puede configurar la altura segura Z en un valor más bajo, para acelerar la impresión (yo uso 5):

Finalmente, cambie a la pestaña Ruta a Gcode , configure la Función de profundidad en 1y haga clic en Aplicar. Tardará unos segundos y es posible que muestre una advertencia acerca de que no se han seleccionado rutas, que puede ignorar con seguridad. Debería ver una nueva capa en la parte superior de su dibujo, mostrando los movimientos del cabezal de impresión en el archivo Gcode generado:

En este punto, sugiero abrir el archivo .gcode en un editor de texto y verificar que se vea legítimo, especialmente que los valores Z coincidan con el valor de calibración que encontró:

¡GCode generado! Tenga en cuenta que el valor Z es 14.60000 aquí

También sugiero editar la primera linea G00 y agregar F4500 al final, de lo contrario, su impresora podría hacer que el movimiento inicial del cabezal sea realmente lento:

¡Eso es! Estás listo para imprimir. Cargue su archivo Gcode en el host de Repetier y debería ver su dibujo en la pantalla:

Diga su oración, haga clic en el botón «Iniciar impresión» y … ¡disfrute del espectáculo!

Fuente :https://urish.medium.com/

Usos para las bobinas gastadas de filamento


Tras meses   imprimiendo piezas  sanitarias  para ayudar contra la grave pandemia sufrida , o tal  vez simplemente imprimiendo  para  fabricar cosas  que tal vez necesitábamos, ahora amigo lector  tal vez se encuentre  con unas cuantas bobinas  gastadas  que no sabemos muy bien  que hacer con ellas y tal vez le de pena deshacerse de estas.

Es cierto   que  normalmente   todas las bobinas suelen indicar  el tipo de material con el que esta hecho (PVC ,  ABS  aunque también las  hay de cartón)   , por lo que  casi todas  se pueden reciclar llevándolas a un  punto de reciclaje , pero  como sabemos , esos procesos de  reciclaje consumen recursos   y energía , lo cual  en los tiempos  que corren no es bueno ,   así que  lo ideal  mejor que reciclar   es reusar: es decir darle una nueva vida  a  esas cosas  que creemos que ya no nos sirven .

Pues bien ,esas bobinas vacías de filamento   que quizás tenga ahí sin saber  hacer muy bien con estas , como vamos a ver ,son perfectas para hacer creaciones muy útiles  , así  que  desde estas lineas hemos hecho un  recopilatorio   de  una serie de ideas para que reutilicemos   nuestras  bobinas de filamento.

Por supuesto amigo lector si conoce alguna idea que no este reflejada  o quiere ampliar alguna idea  expuesta no dude  en hacérnoslas saber  para completar esta especie de resumen de ideas que podemos poner en practica para aprovechar las viejas bobinas.

 

Peana para monitor

En efecto,  sin imprimir nada , podemos subir la altura  nuestro monitor ( o TV)  con una simple bobina usada de filamento, ya que ofrece una base lo suficientemente robusta para soportar el peso. 

Para que no desentone demasiado , aunque esto es cuestión de gustos, lo ideal es que la bobina usada sea  transparente , pero  como comentamos tampoco esta mal una bobina negra si el monitor o tv es negro.

Ademas una utilidad extra  es que  nos permite enrollar los cables   alrededor del eje  ( por ejemplo los cables de ratón,teclado o de alimentación ) , lo cual en caso de un mini-pc enganchado atrás del monitor puede ser muy útil .

Ademas puede ofrecer incluso un espacio extra para lector dni-electrónico  o el hub de puertos usb.

Lo mejor de esta solución es que no necesita descargar  e imprimir nada: tan sólo se necesita una bobina de filamento vacía.

Almacenador de cables

Una forma fácil de evitar dejar las luces de navidad de forma enrollada y caótica puede ser usar una vieja bobina de filamento.  

De hecho esta Navidad pasada pudimos ver imágenes curiosas en las redes sociales, donde los usuarios enrollaban las luces navideñas alrededor de los carretes.

Wind cables

Source: Rigid.ink

Obviamente  esta idea se puede extrapolar  otros tipos de cables  , como por  ejemplo las  típicas  alargaderas  de TV, de teléfono   o  c.a  que todos tenemos en casa.

También en esta ocasión tampoco necesitamos descargar nada , tan sólo nos hará una o varias  bobinas de filamento vacías.

Almacenadores con piezas impresas en 3d

Y ahora  llega el momento de utilizar nuestra impresora 3d , así  que ya que tenemos el armazón o esqueleto que nos hace  perfectamente de soporte mecánico,  para complementar éste   podemos imprimir los receptáculos que irán dentro de las bobinas,pues uno de los usos más extendidos dentro de la comunidad de impresión 3D es utilizar los carretes como base de un sistema de almacenamiento. 

Para crear este sistema solo es necesario imprimir los cajones y atornillarlos al carrete .  Proponemos  desde estas lineas distintos modelos para realizar almacenadores con las  viejas  bobinas de filamento

Puede hacer una torre cajonera con las bobinas usadas , usando un tubo de pvc de los usados en   fontaneria como eje .

Cajonera

Puede encontrar el  fichero para imprimir  en thingiverse

En realidad  la idea es realmente práctico para almacenar herramientas u otros materiales de distintos tamaños en este diseño pero existe también una variante del  modelo anterior     con menos separadores  pero  que  también puede ser bastante útil pues conseguirá espacio bastante grande de almacenamiento.

Cajonera con bobinas de filamento

Puede descargarlo en thingiverse

Otro modelo de almacenamiento con gran capacidad pero con un eje impreso a modo de asa.

Almacenador con bobinas de filamento

También este modelo  puede descargarlo en thingiverse

Existe otro  organizador de MatterHackers que tiene también varios tamaños, que nos  permitirá adaptarlo a diferentes necesidades.

Almacenador

El  fichero puede conseguirlo esta   vez  en MyminiFactory

En este  vídeo podemos ver el proceso  de ensamblaje   de los cajones alrededor de la estructura  , pudiendo ver el resultado final ya montado

Los enlaces  de los archivos en thinginverse son los siguientes:

 

En todo caso en los repositorios más conocidos de modelos 3D como thingiverse ,minfactory o desde el  buscador de piezas mito3d.com   hay muchísimos  diseños simples con  solo dos o mas cajones, asi como   diseños más complejos con compartimentos específicos   ( por ejemplo para tarjetas SD, memorias USB, adaptadores , etc. ).  Incluso existen diseños con receptáculos que soportan  diferentes diámetros de boquillas para imprimirlos mas rapidamente ,  o incluso con dos alturas para aprovechar mejor el espacio .

 Almacenadores diversos

Aquí descastan  los  estante de pintura  disponible en Myminifactory que muchos aficionados adaptan  para poder almacenar sus propos tiepos de  pinturas Vallejo . Es ideal pues se pueden elegir  colores con facilidad porque gira fácilmente sobre el eje. Se puede considerar una adaptación dependiendo de las bobinas que se usen porque el diámetro interno no siempre es el mismo

Este modelo que puede descargarlo en thingiverse  permite organizar pinceles y botes, en varias alturas.

 

Almacenador pintura con bobinas reutilizadas

 

Este otro modelo  que puede conseguirlo en thingiverse  es muy similar al anterior . Es también un  almacenador de botes de pintura, pinceles o herramientas, hecho a partir de bobinas de filamento, que  permitirá colocar lo que quiera de forma ordenada y en varias alturas.

Con unas cuantas  bobinas usadas  y unas breves impresiones, podrá hacer un almacenador giratorio para las pinturas .

Esta  idea se puede también adaptar a las cocina por ejemplo par los botes de especias.

Almacenador giratorio

Puede   descargar el diseño en Cults3D

Expositores 

También podemos crear un estupendo expositor para exponer las impresiones sean del tipo que sea,  siendo el concepto muy similar al de las pinturas .

Expositor hecho con bobinas de Filamento 3D

Las piezas a imprimir también se reducen a un pivote  y una especie de arandela para poder girar .Puede descargar lo necesario a través de thingiverse

Maceteros

Esta es una de las mejores ideas para reutilizar las bobinas:  la creación de maceteros.  Proponemos un par de ideas que nos han encantado:

En este ingenioso macetero que puede descargar a través de thingiverse. tendrá que imprimir el soporte.

Como se puede ver  realmente sencillo y muy agradable a la vista.

Macetero con bobinas de Filamento 3D

Este otro macetero es de lo que más nos ha gustado pues  requiere de unas pocas impresiones y podrá tener muchas plantaciones en un mismo lugar.

Macetero 2 con bobinas de filamento 3D

Puede descargarlo a través de MyMiniFactory

 

Taburete para niños

Aprovechando una de las muchas bobinas de filamento vacía también podemos  fabricar  un pequeño taburete imprimiendo las tres patas que harán que la bobina suba en altura

 Las piezas la puede descargar en https://www.thingiverse.com/thing:2802907

Reloj

Seguramente, muchos usuarios tienen un reloj antiguo que ya no usan y está recogiendo polvo en una esquina. Con ese viejo reloj , una bobina vacía y un poco de imaginación, se puede crear un reloj a su gusto y en cuestión de minutos.

Reloj de reciclaje

Fuente: Reddit.

 

 

No nos cansamos querido lector  si conoce alguna idea que no haya sido reflejada  o quiere ampliar alguna idea  expuesta no dude  en hacérnoslas saber   para completar el  resumen de ideas  para aprovechar las viejas bobinas.

Esperemos que os hayan gustado estas formas de reutilizar bobinas de filamento . 

Recuerde que, si las  ideas  que hemos visto no le ha motivado   y las va a tirar, debería  acudir a tu Punto Limpio más cercano e informarles del material de la bobina para que le indiquen donde debe depositarlas.

Porque no debemos imprimir en 3d mascarillas de proteccion


Muchas cosas pueden y deben imprimirse en 3D como respuesta a la crisis global  como por ejemplo las viseras  compuestas por acetatos  y soportes impresos en 3d, salva-orejas   o por ejemplo piezas  para respiradores ,  pero las máscarillas no deberíamos de hacerlas … Y antes de decir: «es mejor que nada», vemos algunos  motivos pues aparte de la falsa seguridad que puede conllevar su  uso , incluso puede ser peor para usted (y para los que lo rodean) que no usar ninguna máscara.  Ademas como soluciones alternativas  estará mucho mejor protegido con el mínimo de una bufanda, pañuelo o cualquier resto de tela vagamente densa envuelta alrededor de su cara.

 

En realidad se ha hecho realmente popular la   construcción casera  de mascarillas durante la pandemia porque las mascarillas quirúrgicas escasean de sobremanera tanto  que en muchos partes del planeta no están disponibles   o  han subido tanto su coste que este  no es asumible por gran parte de la población.

La tecnología de impresión 3D FFF simplemente no es capaz de producir una máscara de respirador segura y efectiva pues está más allá de los límites de FFF y ningún cambio de diseño simple o variación en las piezas utilizadas puede superar eso. Lo peor es que algunos de estos diseños incluso afirman ser tan efectivos como un FFP2 o N95 si se usa el material de filtro adecuado.

Es un desperdicio de plástico, que por cierto, ya está escaseando en este momento  en algunas  zonas del planeta , así como también puede ser un desperdicio desmontar  mascarillas comerciales  FFP2  o  N95, ya que algunas personas incluso sugieren cortarlas para usar como material de filtro para estos respiradores impresos.

La buena noticia es que  aunque  las  mascarillas fabricadas en 3d no son aconsejables por las razones  que vamos a exponer , las  fabricadas con textil o con  otros materiales como el papel de filtro  ya harían  una buena función .

La física de aerosoles

En  efecto  si nos atenemos a la física de aerosoles, o lo que es lo mismo la física del contagio  existen diferentes distancias   a la que es posible  trasmitir partículas ( como el covid-19) ,  incluso  a una distancia mayor de 6 metros.

Para verlo mas claro en la siguiente imagen, que se considera a una persona contagiada que no sabe que lo está y no se pone ninguna mascarilla para evitar contagiar a terceros , esto es lo que lo que sucede:

De la  imagen podemos ver  tres situaciones claramente diferentes

      • Estornudo,es el que  llega más lejos con gotas submilimétricas, cuanto más grande la gota, más carga vírica (más virus caben en ella) pudiendo superar 6 metros de distancia  . Precisamente de ahi la conveniencia  de usar pantallas protectoras  o la obligatoriedad e de ponerse el codo  cuando se estrornuda
      • Tos , llega menos lejos, pero aun así bastante lejos, puede superar los 2 metros.
      • Rrespirado normal, es el que llega menos lejos, pero aun así también se exhalan gotas cargadas de virus, no suele superar los 2 metros de distancia.

En los tres casos se producen aerosoles, gotas micrométricas en suspensión, que no caerán al suelo,  que por su tamaño no suelen proyectarse y se localizan alrededor del contagiado. En la calle esto no es un problema porque el aire se mueve, y estas gotas micrométricas se van con el aire que las mueve pero esto empieza a ser un problema en entornos cerrados como los ascensores y desde luego es un problema a considerar en entorno de alta infección como la sala de UCI de un hospital. Este aerosol es la razón por la que tenemos que guardar una distancia de seguridad en el supermercado y la razón por la que debemos dejar las mascarillas FFP3 para sanitarios en riesgo alto de infección, como los que trabajan en una UCI.

Los tapabocas son útiles para prevenir el contagio aunque no son tan buenos como las mascarillas antipartículas porque dejan pasar un 33% o 25% de partículas en el caso de un textil o una mascarilla quirúrgica, respectivamente . Sobre todo, previenen el contagio por gotas proyectadas de un estornudo o tos de alguien sin mascarilla.

Pero más importante es prevenir contagiar a terceros. Como este virus se contagia mientras seguimos sintiendo que estamos sanos, por precaución deberíamos actuar como si estuviésemos contagiados. Cualquier mascarilla quirúrgica o textil parará tus gotas proyectadas en un estornudo o tos, los principales vectores de transmisión.

 

Las mascarillas impresas en 3D

No podemos estar más de acuerdo en tanto a que una mascarilla impresa que no es estanca contra la cara (es decir que tapando el agujero del filtro y al inspirar haga «chupón») y sin un filtro  homologado (P1, P2, N95, P3, HEPA compatibles para respirar a través de ellos), no son más que unos tapabocas muy modernos, una barrera física, que  cumple su función social pero que por desgracia adolece de bastantes inconvenientes tal y como nos explican  numerosas  entidades sanitarias al rededor  de todo el mundo como por ejemplo la AFES Chile :

POROSIDAD

La  FFF (fabricación de filamentos fundidos) se basa  en  extruir plástico derretido a través de una boquilla en líneas que se fusionan a medida que el plástico se enfría, creando cada parte línea por línea y luego capa por capa ( de hecho la inspiración de su creador, que luego fundaría Stratasys, es automatizar cómo una pistola de pegamento caliente derrite barras de pegamento y las arroja a chorros).

El primer problema con la fabricación de piezas FFF médicamente seguras ya debería ser evidente: las piezas terminadas son porosas de modo que los gérmenes, las bacterias y la suciedad se acumularán dentro de los vacíos entre cada línea y capa de filamento, mucho más profundo de lo que puede penetrar cualquier proceso de desinfección / esterilización.

Tenga en cuenta que un viroide SARS-CoV-2 (COVID-19) tiene entre 0,125 y 0,08 micras de ancho. Si una célula sanguínea fuera del tamaño de una gominola, una partícula de coronavirus sería del tamaño de un grano de arena lo cual  significa que cualquier  barrera  que queramos poner para que sea efectiva  y no penetre el virus deberían ser lo suficiente pequeño ( es decir menos de 0.08micras  )  para no dejar pasar dichas particular

 

Desgraciadamente  respecto a los micro-poros que existen en las piezas impresas en 3d, como el virus tiene 60-140 nm de diámetro,en un estudio hecho sobre PLA, impreso en 3D, por el profesor Fernando Alba de la Universidad de la Rioja , se caracterizan estos microporos, que tienen un tamaño de unas pocas micras:

 

Es de esperar, que con varias capas de material (imaginemos una capa de plástico con poros en sitios aleatorios y ponemos otra detrás y otra detrás, con los poros en distintos sitios cada vez) esta microporosidad no resulte en canales abiertos de extremo a extremo, por lo que  en ambientes de grado bajo de riesgo,  esto es un problema que todo apunta a que pudiera ser despreciable pero distinto sería si la mascarilla fuese hecha con un solo perímetro, pues entonces seria claramente un colador para los virus en aerosol, aunque seguiría funcionando como tapabocas.
 
Sin embargo en entorno de alta densidad de virus en suspensión, por ejemplo en una UCI, este riesgo no se puede asumir. El profesor Fernando Alba nos indica que en el mismo estudio se comprueba como una capa superficial de polímero (él usa PEG) tapa estos microporos:
 

 

 

¿Y  SU CUBRIMOS LAS PIEZAS ?

De acuerdo, las partes son porosas, pero ¿qué pasa si las cubrimos con pintura o resina para evitar que algo entre? Claro, esa es una opción, pero :

      • ¿qué sucede si no tiene un recubrimiento 100% sólido en toda la parte (pista: esto es difícil de hacer para geometría compleja como una máscara de respirador)?
      •  ¿qué sucede si esa capa protectora se rompe o se desgasta durante el uso normal? Las bacterias y virus  se introducirian debajo de esa capa y su problema seria aun peor porque la capa «protectora» hace que sea aún más difícil que cualquier tipo de desinfectante ingrese y desinfecte (y por supuesto  no puede ver nada de lo que esta sucediendo)

En principio,  una capa de vaselina o crema de base oleosa aplicada por el exterior debería resolver estos problemas pero no se puede garantizar. Por supuesto también seria desaconsejable  barnices, pues ademas  podrian  ser tóxicos, (aunque haya algunas propuestas interesantes involucran barnices de uso alimentario) .

Por otro lado, el profesor Jordi Torrent, de la Universidad de Girona, publicó un artículo en el cuál caracteriza el sellado de los poros de una pieza impresa en ABS con acetona   no obstante, este método requiere cierta pericia al parecer al tener que hacer un baño de vapor de acetona controlado, con recirculación del vapor con un ventilador.

Asimismo , nos llegan experiencias de que este proceso ejecutado en ámbito casero a veces resulta en una debilitación paulatina de la pieza, pero en un ambiente controlado en un fablab podría ser una solución a tener en cuenta:


Imágenes SEM antes y después del tratamiento con acetona. La línea roja indica la fusión de las capas exteriores, tapando microporos.

La conclusión es  pues que las máscarillas  impresas  en3d no son seguras ni efectivas, y la información al respecto simplemente no se está difundiendo lo suficientemente bien.

HIGIENIZACION DE  MASCARILLAS

En efecto  un  segundo  problema grave con las mascarillsa impresas ne 3d es la higienizacó de estas  pues no podemos  llevarlas a un autoclave pues se derretirían (para más detalles sobre esto, busque en google «¿es segura la impresión 3D de alimentos?»)

Pero ¿qué significa esto?Significa que su máscara impresa se contaminará, incluso después de un solo uso  pues  no podemos limpiarla  de modo que si alguien le tose, lo que sea que haya en esa tos , es más que probable que quede  fijada  en su máscara permanentemente ( ademas de todos modos, cualquier cosa que esté en su respiración mientras exhala también se incrustará en la máscara).

También , debido a que la parte es plástica, la humedad en su aliento puede condensarse en el interior de la máscara, gotear por la máscara y luego las gotas de agua que contienen virus pueden ser aerosolizadas en el aire que exhala, haciendo que el ambiente sea aún más peligroso para los demás.

¿Se puede aislar su máscara después de usarla hasta que muera algún virus? Si, pero sin embargo, COVID-19 puede seguir siendo viable en una superficie de plástico de 3 a 7 días, por lo que, a menos que tenga un suministro de máscaras impresas para una semana, no tendrá una máscara limpia todos los días con el consiguiente peligro grave de ser contagiado por la propia mascarilla.

 

HERMETICIDAD Y ERGONOMIA

Las máscaras impresas en 3d   supuestamente  tipo FFP2 deberían crear un sello hermético en la cara del usuario,función que no siempre cumplen.

Si pensamos en las  mascarillas comerciales FFP2  se deben flexionar para ajustarse alrededor de su cara cuando las bandas elásticas lo empujan. Incluso en el puente de la nariz donde la máscara no puede flexionarse por sí sola, hay una tira de metal que el usuario se dobla para formar Un sello hermético.

Sin embargo las mascarillas impresas en 3D  no hacen nada de eso pues para obtener un sello similar, se debe hacer una de dos cosas:

      • El plástico se calienta con una pistola de aire caliente y la parte tibia 
      • Flexible, se forma en  la cara del usuario específico, o una tira de sellado de espuma / goma se une alrededor de los bordes de la máscara.

No parece  que ninguna de esas técnicas haya sido clínicamente probada como tan efectiva como una mascarilla comercial FFP2 o  N95 para sellar la cara del usuario , por lo que  la parte impresa simplemente no se sellará a su cara de manera tan efectiva (o remotamente cómoda) como una comecial  N95, lo cual  elimina completamente cualquier afirmación de que las máscaras impresas pueden reemplazar a una FFP2 o  N95 pues esa certificación requiere un sello hermético.

Con su máscara impresa, el aire fluirá libremente alrededor de los bordes de la máscara, eliminando cualquier mecanismo de filtrado que incorpore.Sin embargo, ese mal sellado es algo bueno pues el aire que fluye alrededor de los bordes de la máscara, aunque posiblemente esté lleno de viroides, podría ser lo único que le impide desmayarse o morir.

Si alguna vez ha corrido o hecho trabajo de intensidad media mientras usabas una mascarilla FFP2 o usó una para un turno completo de ocho horas, entonces sabe lo difícil que es poder respirar con unas mascarillas y lo incómodo que puede ser una mala calidad durante períodos prolongados.

Con una máscara FFP2 o  N95 típica, hay una buena cantidad de resistencia al aire, por  que toda la máscara está hecha de material de filtro, lo cual se hacer  para maximizar el área de superficie por la que puede pasar el aire, permitiendo el mayor flujo de aire posible.

Es evidente que intentar respirar a través de un pequeño disco de material de filtro como con la mayoría de los diseños de máscaras impresas será como intentar respirar a través de una pajita,a menos que, por supuesto, su material de filtro no sea tan denso (léase: efectivo) como lo es en una FFp2 o  N95 .

El resultado de esta respiración forzada y la falta de flujo de aire es la acumulación de CO2, que si la máscara impresa tuviera un sello hermético en la cara, lo mataría.( desgraciadamente ni siquiera sabríamos que está sucediendo;pues  nos quedaríamos dormidos y nunca nos  despertaríamos).

 

RESUMEN 

Correcto, así que ignorando todos estos escollos, echemos un vistazo a los requisitos para hacer una máscara de respirador impresa en 3D «aceptable»:

      • El filamento de plástico,
      • Un poco de pintura o resina segura para alimentos para cubrir las piezas (y por lo tanto, un espacio de trabajo bien ventilado),
      • Bandas elásticas,
      • Algún tipo de material de sellado (muchos diseños están utilizando densa espuma de celdas cerradas / goma resistente a la intemperie),
      • Hermético resistente al agua (condensación !) adhesivo para unir el material de sellado, oh, y
      • Algún tipo de material de filtro (que probablemente no podrá reutilizar con el resto de la máscara).

Como podemos deducir todo esto  es mucho tiempo desde la impresión de la pieza hasta el procesamiento posterior y el ensamblaje.Ademas  algunos de esos elementos de la lista de materiales pueden ser difíciles de obtener si planea hacer un montón de estos , pero   a pesar  de todo , como hemos visto no son recomendables  por las  razones expuestas  de la alta porosidad, falta de higienización , falta de hermeticidad , ninguna ergonomía, etc.

 

 

MASCARILLAS CASERAS

Simplemente lleva más tiempo y esfuerzo hacer una máscara impresa en 3d, «correctamente», que coser una quirúrgica o  simplemente fabricar una con papel de filtro de café.

Con la escasez de mascarillas que hay en este momento y el hecho de que la mayoría de mascarillas hechas en casa, sólo ayudan a que los que están contagiados no contagien a más gente, podemos  probar hacer este  tipos de mascarilla en casa  pues como vamos a ver tampoco necesitan un proceso muy complejo

Realizar   mascarillas desechables con papel de filtro  de Cafe no  cuesta más que 2 minutos  .En este  video podemos ver que el proceso es realmente sencillo

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

Importante :  Cuide de hacer la mascarilla  con precaución si la va a donar, asumiendo que podría estar contagiado para tomar todas las precauciones necesarias para que otros más vulnerables no se contagien por usted.

Asimismo existen diseños textiles fáciles de implementar   como las mascara Olson , pico de patato o incluso diseños simples de tela plisada

 

MASCARILLAS TEXTILES 

A diferencia de las máscaras impresas, con las máscaras cosidas puede esterilizarlas completamente simplemente lavando o incluso pasandolas   por el autoclave

Sobre el tipo de tejidoa  que debemos usar  para fabricar mascarillas caseras   , según la reciente investigación, publicada en ACS NANO, la revista de la Sociedad Americana de Química, habría que tener en cuenta las propiedades de filtración mecánica y electrostática para poder contestar a esta duda   las telas «híbridas» o mezclas de telas (algodón-seda, algodón-gasa, algodón-franela) tienen potencial para filtrar más del 80% de las partículas de menos de 300 nanometros, y puyedenn filtrar más del 90% de partículas de 300 nanómetros( las mascarillas sanitarias con filtros FFP2 filtran como mínimo un 92% de las partículas, y las FFP3 deben filtrar hasta un 98% o más de dichas partículas).

Los investigadores sugieren que este gran rendimiento en las mascarillas de tela se debería precisamente a la combinación de varios tejidos, y al efecto combinado de una filtración mecánica y electrostática:

    •  La filtración mecánica implica que la tela atrapa físicamente las partículas. Telas como el algodón tienen una gran filtración mecánica por poseer muchos hilos en su interior; cuanto más pequeños son los agujeros entre el tejido, menos partículas pueden escapar.
    •  La filtración electrostática es algo relacionado con las carga electrica dado que materiales como el poliéster son muy estáticos, y lo que hacen es mantener los aerosoles dentro del entorno estático, basado en las cargas de las partículas y no en su tamaño como tal.Las mascarillas comerciales FFP2 s tienen un componente de carga estática que ayuda a atraer y adherir partículas al filtro, y esto se logra a través de complejos procesos de fabricación, lo cial es pocoo probable que no lo consiga en discos cortados de algodón o filtros HVAC 

Mascarilla Olson.

Esta mascarilla puede ser usada por profesionales de salud – en USA ya las están usando – y personas en riesgo o que tienen la salud débil en estos momentos y desean protegerse lo más que puedan. También puede ser usada por el resto 

Los  materiales y herramientas excepto el filtro son realmente sencillos de  obtener:

        • Tela de algodón (~ 0.45 m es suficiente para 2-3 mascarillas) •
        • Hilo y aguja o máquina de coser si tienen pero no es necesario (si cosen a mano, pasen doble cada puntada) •
        • 2 ligas de pelo o 2 elásticos y una cinta
        •  Tijeras 
        • Cinta adhesiva para piel doble o Gorilla tape doble
        •  Filtro HEPA para partículas de 0.3 micras (0.3 microns) 0 filtro parecido ( Hay personas qeu usan compresas ). La forma de cómo cortarlo dependerá del tipo de filtro que consigan pero tiene que ir alrededor de la boca y nariz  asi como también á de la persona que lo use
        •  Papel A4 para imprimir los patrones en tamaño real o imprimir en A3 pero asegurarse que no se seleccione el «Autofit’ al imprimir

 Instrucciones en inglés y español incluídos patrones y moldes: https://drive.google.com/open?id=1y0u…

En este vídeo podemos ver  como hacer una mascarilla protectora Olson con filtro para protegerse del Coronavirus

Por mencionar otros diseños , también existen mascarilla pico de pato  o incluso diseños simples de tela plisada : solo es cuestión en decidirse por un diseño y echarse manos a la obra

Importante :  Cuide de hacer la mascarilla  con precaución si la va a donar, asumiendo que podría estar contagiado para tomar todas las precauciones necesarias para que otros más vulnerables no se contagien por usted.

 

Finalmente, los investigadores también hacen hincapié en la necesidad de usar correctamente las mascarillas: un ajuste inadecuado puede reducir hasta un 60% la eficacia de la filtración inicial de una buena mascarilla de tela, según los investigadores

 

 

Mas información en: 

Impresoras 3D su uso en el COVID19


 El mes  pasado , 25 de ,  D. Héctor Jerez , co-fundador de E-Proform y fundador de Politólogo en Red. Licenciado en Ciencias Políticas y Sociología, especializado en Políticas Activas de Empleo, Investigación del Mercado de Trabajo y Desarrollo Local  entrevistó a  Carlos  Rodriguez Navarro  , actual bloguuer de este blog , sobre el uso de las Impresoras 3D  durante la Pandemia del Covid19. 

Hector es apasionado  por la comunicación, la tecnología y las Redes Sociales  con un  perfil profesional que abarca líneas como el análisis del mercado laboral, el fomento del emprendizaje, el trabajo en ámbitos del desarrollo local y el constante estudio de los «Social Media» como herramientas de interés para el empleo y el autoempleo . Ademas  Hector forma parte de la red de voluntariado de Andalucía Compromiso Digital, una iniciativa promovida por la Junta de Andalucía y gestionada por Cruz Roja dentro del ciclo de entrevistas tecnológicas centradas en explicar de forma breve aspectos relacionados con la tecnología, desde trámites online hasta consejos de seguridad informática, o, como el caso de hoy   sobre la tecnologua de impresion 3D

Precisamente  dentro de este ciclo de entrevistas tecnológicas vamos a ver en este post  un  extracto sobre la  entrevista del 25 de Marzo    sobre la utilidad de la impresion 3D durante la grave pandemia  en la que por desgracia aun seguimos  inmersos      mostrando algunos ejemplos   de las cosas que hemos hecho dentro del grupo de coronavirusmakers.org

 

 

 

Una impresora 3D es una máquina capaz de realizar réplicas de diseños en 3D  , creando piezas o maquetas volumétricas a partir de un diseño hecho por ordenador surgiendo  con la idea de convertir precisamente esos archivos de 2D en prototipos reales o 3D.

Comúnmente se ha utilizado en el prefabricado de piezas o componentes, en sectores como la arquitectura y el diseño industrial. En la actualidad se está extendiendo su uso en la fabricación de todo tipo de objetos, modelos para vaciado, piezas complicadas, alimentos, prótesis médicas (ya que la impresión 3D permite adaptar cada pieza fabricada a las características exactas de cada paciente), etc

 

TIPOS DE IMPRESORAS 3D

 

Respecto a los  tipos de impresoras  que existen  comercialmente disponibles ,  citamos ahora de forma resumida las mas comunes:

  • Impresoras 3D por Estereolitografía (SLA).Esta técnica fue la primera en utilizarse. Consiste en la aplicación de un haz de luz ultravioleta a una resina líquida (contenida en un cubo) sensible a la luz. La luz UV va solidificando la resina capa por capa. La base que soporta la estructura se desplaza hacia abajo para que la luz vuelva a ejercer su acción sobre el nuevo baño, así  hasta que el objeto alcance la forma deseada.Con este método se consiguen piezas de altísima calidad, aunque, por sacar un inconveniente, se desperdicia cierta cantidad de material en función del soporte que sea necesario fabricar. Algunos ejemplos de impresoras 3D que funcionan por estereolitografía son: Projet 1500, 1200 ó 3510 de 3D Systems. Puede costar unos  300€ una Anycubic Photon                                                                                                                             
  • Impresoras 3D de Sinterización Selectiva por Láser (SLS):También conocido en inglés como Selective Laser Sintering (SLS), esta tecnología se nutre del láser para imprimir los objetos en 3D.Nació en los años 80, y pese a tener ciertas similitudes con la tecnología SLA, ésta permite utilizar un gran número de materiales en polvo (cerámica, cristal, nylon, poliestireno, etc.). El láser impacta en el polvo, funde el material y se solidifica. Todo el material que no se utiliza se almacena en el mismo lugar donde inició la impresión por lo que, no se desperdicia nada.Una de las impresoras 3D más famosas que utilizan esta tecnología de impresión 3D es la EOS(+1000€).

Con las dos últimas tecnologías se consigue una mayor precisión de las piezas impresas y mayor velocidad de impresión.

  • Impresoras 3D por Inyección :Este es el sistema de impresión 3D más parecido a una impresora habitual (de tinta en folio), pero en lugar de inyectar gotas de tinta en el papel, inyectan capas de fotopolímero líquido que se pueden curar en la bandeja de construcción.

Como ejemplo de impresoras 3D por inyección destacamos X60 de 3D Systems o la Zprint 450.(+1000€)

  • Impresión por deposición de material fundido (FDM) :También conocida por FFF (Fused Filament Fabrication, término registrado por Stratasys) .

La técnica aditiva del modelado por deposición fundida es una tecnología que consiste en depositar polímero fundido sobre una base plana, capa a capa. El material, que inicialmente se encuentra en estado sólido almacenado en rollos, se funde y es expulsado por la boquilla en minúsculos hilos que se van solidificando conforme van tomando la forma de cada capa. Se trata de la típica bobina de  filamento pla, abs, etc.   Se trata de la técnica más común en cuanto a impresoras 3D de escritorio y usuarios domésticos se refiere. Aunque los resultados pueden ser muy buenos, no suelen ser comparables con los que ofrecen las impresoras 3D por SLA, por ejemplo.

La ventaja principal es que esta tecnología ha permitido poner la impresión 3D al alcance de cualquier persona con impresoras como la CubeX, Prusa o cualquier impresora de RepRap. ( a partir de 200€)

 

 

TIPOS DE FILAMENTOS

En   cuanto a los materiales necesarios para imprimir,actualmente se utilizan una gran variedad de materiales, entre los que predominan ABS y PLA.

  • PLA   : su precio ronda  entre los 15 a 20€ :EPLA o poliácido láctico es, sin duda, alguna, el material más empleado actualmente en los filamentos para impresión 3D.Se trata de un material con un origen natural (su principal materia prima es el maíz) y que es biodegradable.Entre sus cualidades destacan el ser un material reciclable, muy estable y que resulta fácil de imprimir, sobre todo para usuarios principiantes.Otra de las grandes ventajas del PLA es que no se necesita emplear cama caliente para su impresión. La temperatura del extrusor debe rondar los 200º, dependiendo de la impresora.Por contra, el filamento PLA tiene menor resistencia térmica y mecánica que otros materiales de impresión 3D. Esto hace que se pueda deformar a partir de temperaturas de 60ºC  y que no resulte apto para realizar cortes o perforaciones.
  • ABS  o Acrilonitrilo Butadieno Estireno. Su precio oscila entre los 25 a 30€ .Tras el PLA, el más utilizado probablemente sea el filamento ABS  Se trata de un material más robusto que el PLA y más resistente al mecanizado, por lo que se le pueden hacer cortes y perforaciones. También es uno de los plásticos más resistentes a las altas temperaturas.Sin embargo, el ABS también resulta un material más complejo que el PLA y que puede dar más problemas durante la impresión. Es necesario tener una cama calentada a unos 60ºC-80ºC y la temperatura del extrusor debe ser superior a la del PLA (unos 235ºC).Conseguir que las condiciones de temperatura del entorno sean adecuadas será esencial para evitar que la pieza se resquebraje. Por ello con filamentos ABS no se recomienda emplear ventiladores de capa.
  • Flexible  :su precio ronda en torno a los 32€  la bobina .Los más habituales son el TPE y TPU.Estos materiales están compuestos en base a elástómeros que les confieren una gran elasticidad. Además, son resistentes a la abrasión, tienen gran durabilidad y no se encojen al enfriarse. Tampoco se necesita que la impresora 3D posea cama caliente.Por contra, este tipo de filamento para impresión 3D resulta más difícil de imprimir ya que es necesario ajustar muy bien la temperatura y el caudal de aporte.  Entre el TPE y el TPU también existen algunas diferencias. Por ejemplo, el TPE es más transparente, mientras que el TPU tiene una mejor resistencia a grasas y aceites, por lo que suele ser usado en automoción.
  • De fibra de carbono : Su precio ronda entre entre los  42 a 115€ la bobina .Este filamento se emplea como material de apoyo para filamentos PLA, ABS o PETG. Gracias al aporte de pequeñas partículas de fibra de carbono, los materiales principales obtiene mejores propiedades en cuanto a dureza y resistencia.Una de las ventajas de la fibra de carbono es que a la hora de ajustar los parámetros de la impresión éstos serán similares a los del material principal de aporte, ya sea PLA, ABS o nylon.Hay que tener en cuenta que las partículas de fibra de carbono tienen a atascarse con mayor facilidad y a producir un mayor desgaste por abrasión en la boquilla. Para paliar esta desventaja se recomienda usar boquillas para impresoras 3D  de acero inoxidable de más de 0,4 mm. de diámetro.
  • PET (tereftalato de polietileno): Su precio  ronda en trono a los 20€ la bobina .Es otro de los materiales más empleados para filamentos de impresoras 3D. Se trata de un plástico inodoro y transparente en su origen que va perdiendo estas propiedades cuando se le aplica calor o frío.Sus principales ventajas son su elasticidad (superior a la del PLA o ABS), resistencia o facilidad para la impresión. Por contra, es higroscópico, es decir, absorbe la humedad del ambiente, por lo que es necesario guardarlo en un lugar con las condiciones de humedad adecuadas.

Podemos encontrar diferentes variantes:

      • PETG  35€ :Es una de las variantes de filamento PET. La «G» viene por el glicol, un elemento que le otorga mayor transparencia.Este tipo de filamento para impresora 3D se caracteriza por su capacidad para ser curvado en frío. Por su resistencia y flexibilidad es apto para un gran número de aplicaciones. Es uno de los plásticos más utilizados del mundo, por ejemplo se utiliza para envases de alimentos o botellas de agua.
      • PETT :El PETT es muy similar al PETG, con la salvedad de que es un poco más rígido y no tiene el aporte de glicol, por lo que no es tan transparente. Al igual que el PETG,  es inodoro y bastante duradero.Se podría decir que el filamento PET, junto con el PLA y ABS, es el más utilizado en el mundo de las impresoras 3D.
  • De nylon o poliamida: Su precio  ronda entre los  30 a 100€ la bobina :Si hablamos de la combinación de flexibilidad, resistencia o duración, probablemente el nylon no tenga competencia en el ámbito de los filamentos para impresoras 3D.

VENTAJAS : las piezas se pueden volver a calentar y deformar una vez impresas, sin que el nylon pierda ninguna de sus propiedades originales. El filamento de nylon tiene una dificultad de impresión media. Uno de los principales factores que hay que tener en cuenta es que el nylon tiene una temperatura de fusión muy alta, por lo que es necesario que la boquilla esté a unos 250º y que la cama esté precalentada a unos 80º (estas cifras pueden variar dependiendo de la impresora 3D)

DESVENTAJAS :al contrario que otros filamentos para impresión 3D como el PLA o el PET, no es un material biodegradable. Además, al calentarse el nylon emite vapores tóxicos por lo que hay que tomar precauciones durante la impresión. También hay que tener en cuenta que, al igual que el PETG es higroscópico, absorbe la humedad del aire.

  • NylonX :Al añadirle al nylon un pequeño aporte de fibra de carbono obtenemos este filamento para impresoras 3D denominado NylonX. Se trata de un tipo de filamento que combina la flexibilidad y durabilidad del nylon con la dureza y resistencia de la fibra de carbono.
  • PC  o  policarbonato ; su precio ronda los  35€ la bobina:Este filamento está compuesto de un material translúcido siendo  uno de los materiales más fuertes y resistentes, bastante por encima del nylon. De hecho se suele utilizar para elementos que requieren de una gran resistencia a impactos, como pantallas de dispositivos electrónicos o incluso para fabricar cristales a prueba de balas.
  •  PVA  o alcohol polivinílico : El precio de la bobina ronda entre los 30 a  50€:Hay algunos tipos de filamentos para impresoras 3D que no se suelen utilizar como material principal, sino como aporte complementario. Para ello sería necesario emplear impresoras 3D con doble extrusor.Este es el caso de filamento PVA, uno de los filamentos para impresoras 3D solubles en agua (por lo que es  especialmente importante guardarlo en un lugar seco). El PVA  se puede emplear como material de aporte junto a otros filamentos como PLA, ABS o nylon.
  • HIPS (poliestireno de alto impacto)  : Su precio ronda entre los  20 a1 20€ según el color .Este  filamento combina diferentes cualidades que lo hacen muy interesante como estructura de soporte. Es un polímero que tiene gran resistencia y elasticidad y que se emplea como material secundario junto con el ABS.

Sin embargo, la principal cualidad es que el HIP es soluble en un líquido llamado limoneno. Esto le permite ser utilizado como material de relleno en estructuras que necesiten un apoyo para las capas de ABS. Una vez terminada la impresión, la figura se sumerge en limoneno y se disuelven las partes de HIPS, dando como resultado la pieza definitiva de ABS.Al contrario que el PVA, que puede ser usado con ABS, PLA o nylon, el fllamento HIPS tan solo puede ser empleado con ABS ya que el resto de materiales pueden deteriorarse al ser sumergidos en limoneno.

  • PP  (polipropileno.): El precio del bobina ronda los 30€ :Este filamento ofrece  un plástico fuerte y flexible que se emplea bastante en la industria textil y en la fabricación de envases. También es el plástico con menor densidad, por lo que es útil para reducir el peso de las piezas.

Lo malo de este filamento para impresión 3D es que es un material que resulta difícil de imprimir ya que la adhesión de las capas resulta complicada y tiende a deformarse bastante.

  • De cera :El filamento de cera se suele emplear como molde para fabricar objetos de metal en sectores como la joyería. Gracias a un proceso denominado fundición a la cera perdida se obtiene un molde de cera que se derrite al ser calentada en un horno. De esta forma, se obtiene un molde que se puede rellenar con el material definitivo, normalmente un metal.
  • Glow-In-The-Dark (Ácido poliláctico) : su precio ronda los  50€  por bobina. Básicamente, se trata de una variante del filamento PLA. Este tipo de filamento para impresión 3D se caracteriza por absorber la luz y brillar en la oscuridad durante largo tiempo. Es el que conocemos como filamento fosforescente, ideal para figuras o decoraciones de carnaval o Halloween.
  • Filamento nGen (Amphora AM3300) : Su precio ronda entre los  20 a los  40€ . El nGen es un filamento para impresoras 3D de reciente creación llegando al mercado como un filamento de lujo, con unas propiedades similares a las del PETG o el PLA, pero superiores en muchos aspectos.

Una de sus grandes ventajas radica en su gran resistencia a las temperaturas extremas. También es un materia muy ligero y resistente a los impactos. Cada vez se emplea con mayor frecuencia en la construcción de piezas y elementos mecanizados.Se puede decir que es una especie de mezcla de las mejores propiedades del PLA y el ABS. La temperatura ideal de la boquilla es de unos 240ºC mientras que la cama debe estar a unos 80-85ºC. Como siempre, estos valores varían en función de la impresora 3D.

  • Conductivo :Los filamentos conductivos son filamento que pueden soportar pequeñas cargas eléctricas y que, por tanto, suelen ser usados para la construcción de circuitos electrónicos.

Este filamento se puede combinar con PLA o ABS es una impresora 3D con doble extrusión para crear circuitos eléctricos o diversas piezas conductoras de electricidad, por lo que es ideal par makers con nociones de ingeniería eléctrica.

  • PLA reforzado :Cabe destacar que el filamento PLA, además de ser el más usado, cuenta con numerosas variantes. Estos tipos de filamento PLA le añaden un nuevo material de aporte que le confiere algunas características más específicas.Existen numerosas tipos de filamentos PLA reforzados, aunque algunos de los mas frecuente son aquellos a los que se le añade acero, fibra de carbono, hierro magnético o polvo de metal.Por ejemplo, al combinar PLA con polvo de metal nos da como resultado el filamento de metal, que permite imprimir en 3D piezas con la apariencia del latón, bronce o cobre.
  • Laybrick :Es un tipo de filamento para impresión 3D bastante reciente, que se usa especialmente para decoración. Su característica principal es que confiere a los objetos un aspecto de piedra, una especie de textura de arenisca.

Dependiendo de la temperatura de extrusión, el filamento Laybrick puede tener una apariencia más o menos rugosa. Como consejo de uso, se recomienda cargar e imprimir filamento PLA después de haber usado Laybrick, para eliminar los restos que pudieran quedar en la boquilla y evitar atascos de filamento.

  •  Laywood : Su precio ronda los 30€ :Es un tipo de filamento para impresoras 3D compuesto por madera reciclada, a la cual se le añade un polímero de unión. Esto hace que, aunque no sea madera 100%, las figuras hechas con Laywood parezcan (e incluso huelan) como madera.

Este tipo de filamento se utiliza básicamente para decoración y figuras de artesanía.

  • LayCeramic :El filamento LayCeramic emplea la arcilla para crear objetos de cerámica, por lo que es ideal para la impresión 3D de platos, tazas o figuras.

El gran problema de este material es que hay pocas impresoras 3D en el mercado que sean capaces de trabajar con él. Para poder imprimir cerámica en 3D se necesita una impresora 3D de altas prestaciones con hotend de metal, un calentador de filamentos muy potente (ya que la arcilla se puede quebrar con facilidad) y un horno para el tratamiento post-impresión de la figura.

 

 

Destacar  por ultimo  como hemos vistos  que en la actualidad ya nos podemos encontrar filamentos capaces de imitar a muchos materiales, por ejemplo arcilla u hormigón  o los  alimentos    de modo que  cada  dia surge algún  nuevo filamento  que sin duda nunca nos deja  de sorprender.

 

USO  DE LA IMPRESIÓN 3D DURANTE LA PANDEMIA

Respecto a la pregunta de cuánto tarda en hacerse una pantalla protectora como las que se  han donado a lo sanitarios, a los cuerpos  de seguridad del estado   y en general a los colectivos  que lo han demandado  ,  este  un tiempo que varia según el diseño  que se haya decidido imprimir

En términos generales se suele tardar  sobre una hora o menos según el modelo elegido , asi como por su puesto de la impresora 3d a la que disponga

Luego hay que añadir el tiempo del pos-tprocesado y mecanizado  

Finalmente hay que  higienizarlas, embolsar , empaquetar y,tramitar el envio  ,gestionar la entrega a protección civil   y  actualizar el inventario

En mi caso  he impreso   mas de  250  pantallas y unas 40 salvaorejas (unos cinco  rollos 1k de PLA)

Desde estas lineas , aprovecho ademas para recordar que las mascarillas impresas en 3d  , aunque haya muchos modelos disponibles , no son recomendables pues por el propio proceso de impresión  existen microporos  por donde podría entrar el vurus    pudiendo infectar a su portador  generando sobre todo una falsa sensación de seguridad. 

 

Respecto a los  problemas que nos podemos  encontrar a la hora de imprimir la pantalla protectora podríamos englobarlos en tres  tipos:

      • Asociados a la propia impresora : obstrucciones y  bloqueos del hot-end , desajustes en la cama caliente, alinealidades en los ejes , fallos en la electrónica
      • Asociados al cambio filamento
      • Asociados al modelo seleccionado pues para cada pieza se debe seleccionar los ajustes apropiados en el programa de laminación

 

Lo mas importante  es que cualquier persona puede usar una impresora en 3d, aunque se deben tener conocimientos transversales tanto de hw como de sw  . De  todos modos los mas importante es que   se debe tener paciencia pues los resultados no son tan inmediatos que con una impresora de papel convencional

A  modo de extracto , ayudan los conocimientos siguientes:

      • Asociados al mantenimiento de la impresora pues son habituales las obstrucciones , desajustes y averías    (por eso una impresora en kit ayuda a familiarizarse)
      • Asociados al sw de laminación ( Cura, Simplify3d, PrusaSlicr3r,slicr, EasyPrint)
      • Asociados con la creación de modelos en 3d ; básico con Tinkercad o mas avanzado con Fussion 360,OpenScad, FreeCad

 

Para finalizar, como consejo par cualquier aficionado que se quiera iniciar en este mundo de la impresión  3d, es recordarle que  un mundo  apasionante  sin duda  ,donde apenas  atisbamos a comprender  hasta donde iremos a  llegar  pero no por ello exento de cierta problematica  sobre todo para todos aquellos qeu nos acercamos a este

  Si en efecto  le gusta el  tema d elaimpresion 3d    y le puede encontrar  utilidad  en su vida personal o profesional ( en mi caso  , por ejemplo como electrónico , me interesan los receptáculos para albergar la electrónica ) , se puede partir  de una impresora  3d conocida  cuyas referencias ofrezcan un aceptable relación calidad precio  ( por ejemplo la Ender 3  )  huyendo del sector profesional  sin gastarse una fortuna  , estudiando  , documentándose  y   teniendo  mucha  paciencia y perseverancia  ,  tarde  o temprano   se pueden resolver todos los problemas que vayan surgiendo  , se puede llegar a obtener resultados  realmente sorprendentes   

Amigo lector , no le quiero cansar  más  , en el siguiente  video  podemos ver la entrevista completa  por si le interesase profundizar «en vivo» los aspectos que hemos comentado en las lineas anteriores.

 

 

 

Entrevista tecnológica sobre el uso de las Impresoras 3D y su ayuda en el COVID19, presentado por Héctor Jerez Losada Técnico de la Red de Voluntariado Digital, entrevistando a Carlos Rodríguez Navarro, Ingeniero Informático en Sistemas. Andalucía Compromiso Digital, una iniciativa promovida por la Junta de Andalucía y gestionada por Cruz Roja Española. Si quieres saber más sobre Andalucía Compromiso Digital, puedes seguirnos a través de nuestras redes sociales y de la web http://www.andaluciacompromisodigital.org

Ingenieria inversa con Cura


Cura  de Ultimaker  actualmente  es  el software mas usado en laminado en 3d(slicing ) pudiendo traducir  archivos  de objetos en  3D  de tipo STL, OBJ o 3MF a un formato que la impresora puede entender: es decir en código G-CODE permitiendo por tanto  convertir los ficheros de objetos virtuales creados por software 3d en objetos reales  físicos  gracias a la tecnologia de la impresión 3d 

Muy resumidamente  g-code son  instrucciones para que una  impresora 3D   pueden realizar movimientos sobre los eje x x,y o z ,ajustar temperaturas   del fusor o de la cama, activar el extrusor ,etc: es decir  un conjunto de códigos para el gobernar el cabezal de impresión  y todo el hw  adicional codificados en RS274NGC , es decir en código G estándar.  Tal es la aceptación de este sw que sólo hay un puñado de impresoras 3D que no son soportadas por Cura pero  aun  así, puede incluso añadirse la impresora por  uno mismo. Además los Firmwares RepRap  también son bastante utilizables para el fresado CNC y aplicaciones similares.

 

Como cada impresora tiene una configuración, área de impresión, placa de construcción y tamaño de boquilla diferentes, el software de corte Cura necesita conocer estos detalles de hardware en un perfil de impresora de modo que una vez se  que tenga los detalles necesarios, se pueden especificar ajustes como la altura y el grosor de la capa . Basándose en importantes estadísticas de la impresora y en su configuración, Cura calculará la ruta que debe tomar el cabezal de impresión para imprimir su modelo  produciendo una lista de instrucciones para la impresora,instrucciones  que como sabemos se guardaran en ese archivo G-Code , el cual lo mas normal es que guardaremos en una tarjeta SD  (o enviarse directamente desde Cura a la impresora de modo inalámbrico o por cable, dependiendo de la impresora).

 

 

¿Porque  estamos hablando de g-code cuando en realidad  todo el trabajo  el sw de Cura?  Pues básicamente porque para cada pieza se suelen hacer muchos ajustes   en Cura que quedan guardados ,  al menos parcialmente, en estos ficheros ( y quizas no recordemos ) ,  por lo que es posible con los  g-code deducir  que ajustes se usaron   en la obtención de esa pieza   y con ello extrapolar la configuración usada.

Si conoce versiones anteriores de Cura , en efecto esta exportación de ajustes era posible  a través del fichero g-code  pero desgraciadamente en las versiones  mas actuales ya  NO es posible,  pero  no se preocupe, porque vamos a  ver como podemos deducir  mucha información de ajustes  de   Cura  desde los ficheros .gcode  sin instalar nada

 

 

 

Pues en efecto para deducir  los ajustes de  nos  apoyaremos de  gCodeViewer , sw  en linea que es un visualizador y analizador visual de GCode  que podemos usar en nuestro propio navegador funcionando por tanto  en cualquier sistema operativo y en casi cualquier navegador moderno (chrome, ff, safari 6, opera, ie10 ).

Todo lo que necesitamos  pues hacer es arrastrar su archivo * .gcode a la zona designada y podemos ya estudiar fácilmente el gcode.

Las características actuales incluyen:

    • Visualización  GCode en 2D, capa por capa
    • Mostrar retractaciones y reinicios
    • Mostrar velocidades de impresión / movimiento / retracción
    • Mostrar solo parte de la capa, secuencia animada de impresión de capa
    • Muestra dos capas simultáneamente para que pueda verificar los voladizos
    • Ajuste el ancho de línea para simular la impresión más de cerca

Una vez  cargado el fichero , el visor de Gcode intentará analizar los diámetros de boquilla y filamento de gcode, pero puede que no lo haga por lo que en ese caso, deberá configurarlo manualmente en la pestaña ‘Información de la impresora’

Este   programa pues nos permite analizar GCode: Tiempo de impresión, cantidad de plástico utilizado, altura de capa, etc. para todo el archivo y para una sola capa

Una funcionalidad interesante de este sw es que podemos hacer referencia a una  parte visualizada en el archivo GCode :es decir, seleccionamos una parte determinada de la visualización 2D, cambiamos a la vista GCode y  resaltará la lista de líneas responsables de la pieza visualizada

Este sw   Multiplataforma, disponible en línea , también funciona sin conexión localmente  no carga el código g en ningún lado ni descarga nada excepto la aplicación en sí por lo que es una herramienta muy interesante para nuestro cometido

 

EJEMPLO INGENIERÍA INVERSA DE FICHEROS GCODE

 

Veamos  como ejemplo analizar 4 ficheros g-code de 4 objetos diferentes laminados con diferentes versiones de Cura (Cura_SteamEngine 4.6.0,Cura_SteamEngine 4.6.1 y Cura_SteamEngine 4.4.1.)

Para ver mas fácilmente las diferencias  del código gcode    copiaremos  en columnas diferentes    de excel las primeras  lineas  obtenidas con el gcode analyzer

Como  la impresora  3d (una Geetech Prusa I3  pro w)   es la misma , a grandes rasgos la información  hasta la linea  12  no deberia ser  demasiado relevante para este análisis ya que hace referencia a los movimientos máximos  y mínimos de  x, y , z, pero podemos en el código que hay grandes diferencias:

;MINX:9.648   ;MINX:18.574   ;MINX:17.054   ;MINX:11.993
;MINY:11.059   ;MINY:85.061   ;MINY:9.375   ;MINY:5.508
;MINZ:0.3   ;MINZ:0.3   ;MINZ:0.3   ;MINZ:0.3
;MAXX:182.112   ;MAXX:181.424   ;MAXX:180.006   ;MAXX:188.007
;MAXY:198.228   ;MAXY:114.941   ;MAXY:190.625   ;MAXY:194.492
;MAXZ:1.42   ;MAXZ:1.42   ;MAXZ:15.98   ;MAXZ:20.9

Estos   parámetros como el lector  conoce definen los desplazamientos maximos  y minimos de los tres ejes , por lo que deberian coincidir en los cuatro casos , lo cual evidencia que  podria haber errores en los dos primeros ejemplos  

 

Especialmente interesante   es  tambien la linea 12  qeu nos diece con diferentes versiones de Cura (Cura_SteamEngine 4.6.0,Cura_SteamEngine 4.6.1 y Cura_SteamEngine 4.4.1.)

 

Bien  y ahora desde la linea 12 ( versi9on de Cura )  hasta la linea 34  si veremos un bloque común  , que  es preciosamente el que definimos en cura para iniciar la impresora  y que por tanto debería coincidir en las diferentes versiones:

M140 S50
M105
M190 S50
M104 S220
M105
M109 S220
M82 ;absolute extrusion mode
G21 ;metric values
G90 ;absolute positioning
M82 ;set extruder to absolute mode
M107 ;start with the fan off
G28 X0 Y0 ;move X/Y to min endstops
G28 Z0 ;move Z to min endstops
G1 Z15.0 F9000 ;move the platform down 15mm
G92 E0 ;zero the extruded length
G1 F200 E3 ;extrude 3mm of feed stock
G92 E0 ;zero the extruded length again
G1 F9000
;Put printing message on LCD screen
M117 Printing…
G92 E0
G92 E0

Bueno este es un bloque comun ( el definido en cura como bloque inicial)  ,pero a partir de esta linea  segun la version  puede haber diferencias 

 

;LAYER_COUNT:5   G1 F1500 E-6.5   G1 F1500 E-7   G1 F1500 E-7
;LAYER:0   ;LAYER_COUNT:5   ;LAYER_COUNT:57   ;LAYER_COUNT:71
M107   ;LAYER:0   ;LAYER:0   ;LAYER:0
G0 F3600 X17.865 Y16.327 Z0.3   M107   M107   M107
;TYPE:SKIRT   G0 F3600 X22.667 Y89.806 Z0.3   G1 F600 Z1.3   G1 F600 Z1.3
    ;TYPE:SKIRT   G0 F3600 X39.412 Y37.756 Z1.3 G0 F3600 X65.981 Y65.476 Z1.3
        ;TYPE:SKIRT   ;TYPE:SKIRT
             

En este caso claramente se ha configurado el tipo de adherencia a la placa de impresion como skirt ( falda)

Y a  partir de este bloque   ya deberían localizarse los movimientos x,y, z  según la pieza elegida   y que por tanto dependerá de cada modelo

 

 

Bueno  y ahora vamos al bloque final, que también es definido por Cura  y por tanto debiera ser común en todas las versiones ;

 

M140 S0
M107
M104 S0 ;extruder heater off
M140 S0 ;heated bed heater off (if you have it)
G91 ;relative positioning
G1 E-1 F300  ;retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more
G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way
M84 ;steppers off
G90 ;absolute positioning
M82 ;absolute extrusion mode
M104 S0
;End of Gcode

 

 

Finalmente finalizado este bloque  y esto es lo interesante esta comentado en metadatos  todos los ajustes importantes realizados en cura ;

End of Gcode
;SETTING_3 {"global_quality": "[general]\\nversion = 4\\nname = Fine #2\\ndefini
;SETTING_3 tion = prusa_i3\\n\\n[metadata]\\nquality_type = normal\\ntype = qual
;SETTING_3 ity_changes\\n\\n[values]\\nlayer_height = 0.28\\nmaterial_bed_temper
;SETTING_3 ature = 70\\n\\n", "extruder_quality": ["[general]\\nversion = 4\\nna
;SETTING_3 me = Fine #2\\ndefinition = prusa_i3\\n\\n[metadata]\\nquality_type =
;SETTING_3 normal\\nposition = 0\\ntype = quality_changes\\n\\n[values]\\ninfil
;SETTING_3 l_pattern = grid\\ninfill_sparse_density = 50\\nmaterial_flow = 80\\n
;SETTING_3 material_print_temperature = 220\\noptimize_wall_printing_order = Tru
;SETTING_3 e\\nretraction_amount = 7\\nretraction_hop_enabled = True\\nroofing_l
;SETTING_3 ayer_count = 1\\nspeed_print = 50\\ntop_bottom_thickness = 1.2\\nwall
;SETTING_3 _thickness = 1.2\\n\\n"]}

 

Por desgracia no siguen el mismo orden en las diferentes versiones de cura, asi que tendremos que extraer de aqui el valor de lo diferentes campos despreciando la cadena SETTING_3    asi como eliminano los retornos de linea

{"global_quality": "[general]\\nversion = 4\\nname = Fine #2\\ndefinition = prusa_i3\\n\\n[metadata]\\nquality_type = normal\\ntype = quality_changes\\n\\n[values]\\nlayer_height = 0.28\\nmaterial_bed_temperature = 70\\n\\n", "extruder_quality": ["[general]\\nversion = 4\\nname = Fine #2\\ndefinition = prusa_i3\\n\\n[metadata]\\nquality_type =normal\\nposition = 0\\ntype = quality_changes\\n\\n[values]\\ninfill_pattern = grid\\ninfill_sparse_density = 50\\nmaterial_flow = 80\\nmaterial_print_temperature = 220\\noptimize_wall_printing_order = Tru
e\\nretraction_amount = 7\\nretraction_hop_enabled = True\\nroofing_layer_count = 1\\nspeed_print = 50\\ntop_bottom_thickness = 1.2\\nwall_thickness = 1.2\\n\\n"]}

 

De esto  ya finalmente si los ordenamos en campos  deducimos los parámetros ajustados:

 

nversion = 4
nname =  Fine #2
ndefinition =  prusa_i3
ntype =  quality_changes
nquality_type =  normal
nlayer_height =  0.28
nmaterial_bed_temperature =  50
nposition =  0
nbottom_layers = 4
nbrim_line_count =  1
nbrim_outside_only =  False
nbrim_width   
   
ninfill_pattern =   grid
ninfill_sparse_density =  50
nmaterial_flow =  50
 nmaterial_print_temperature =  220
 nretraction_enable =  False
 nskirt_brim_minimal_length =  25
 nspeed_print =  40
 nspeed_topbottom =  speed_print / 2
 ntop_layers = 4
 nwall_thickness   1.2

 

 

Con esto claramente  podemos pues deducir   cuales fueron los parámetros   que se ajustaron con esa pieza, así como  si deseamos comparar con otros gcodes de otras piezas:

nversion = 4   4   4   4
nname =  Fine #2   Fine #2   Fine #2   Fine #2
ndefinition =  prusa_i3   prusa_i3   prusa_i3   prusa_i3
ntype =  quality_changes   quality_changes   quality_changes   quality_changes
nquality_type =  normal   normal   normal   normal
nlayer_height =  0.28   0,28   0,28   0,28
nmaterial_bed_temperature =  50   50   70   ?70
nposition =  0   0   0   0
nbottom_layers = 4   4        
nbrim_line_count =  1   1        
nbrim_outside_only =  False   False        
nbrim_width              2
               
ninfill_pattern =   grid    grid   grid   grid
ninfill_sparse_density =  50   50   50   50
nmaterial_flow =  50   50   80   80
 nmaterial_print_temperature =  220   220   220   220
 nretraction_enable =  False            
 nskirt_brim_minimal_length =  25   25       25
 nspeed_print =  40   40   50   50
 nspeed_topbottom =  speed_print / 2   speed_print / 2        
 ntop_layers = 4   4        
 nwall_thickness   1.2   1,2   1,2   1,2
ntop_bottom_thickness             1,2
               
noptimize_wall_printing_order          true   true
nretraction_amount          7   7
nretraction_hop_enabled          True   true
nroofing_layer_count          1   1
               
nadhesion_type              brim

Como  vemos , no todos los parámetros en  Cura  se ajustaron , lo cual queda muy evidenciado  precisamente en esos valores claramente diferentes  en las 4 columnas  y que están en  algunas piezas  y en otras no

Por cierto  para terminar este caso , los datos  correspondientes a los dos primeros ejemplos la piezas delatan   que no se pudieron imprimir correctamente por esa incorrecta parametrización de Cura

.

Campos de G Code RepRap

En esta sección se explican los campos que van precedidos por una letra. Los números en los campos son representados por nnn . Los Números de Ser pueden Enteros (enteros) (128) o Números racionales (12,42), dependiendo del contexto. Por ejemplo, la coordenada X puede ser entera ( X175 ) o racional ( X17.62 ), pero seleccione el extrusor número 2.76 sin sentido sentido.

Letra SIGNIFICADO
Gnnn Comando GCodelo estándar, como moverse hasta un punto
Mnnn Comando definido por RepRap, como activar un ventilador
Tnnn Seleccionar la herramienta nnn. En RepRap, las herramientas son extrusores
Snnn Parámetro de comando, como la tensión enviada a un motor
Pnnn Parámetro de comando, como el tiempo en milisegundos
Xnnn Una coordenada X, normalmente para moverse a ella. Puede ser un número entero o racional.
Ynnn Una coordenada Y, normalmente para moverse a ella. Puede ser un número entero o racional.
Znnn Una coordenada Z, normalmente para moverse a ella. Puede ser un número entero o racional.
Innn Parámetro – Actualmente no utilizado
Jnnn Parámetro – Actualmente no utilizado
Fnnn Avance en mm por minuto. (Velocidad de movimiento del cabezal de impresión)
Rnnn Parámetro – usado para temperaturas
Qnnn Parámetro – Actualmente no utilizado
Ennn Longitud a extrusión en mm. Ex exactamente como X, Y y Z, pero para la cantidad de filamento a extrusión. Mejor: Skeinforge 40 y siguientes interpretan esto como la longitud absuluta de filamento insertado, no como la longitud de la extrusión que sale.
Nnnn Número de línea. Utilizado para pedir la repetición de la transmisión en caso de errores de comunicación.
* nnn Suma de comprobación. Usado para verificar errores de comunicación.

Comentarios

Los comentarios en Gcode comienzan con punto y coma y terminan al final de la línea:

N3 T0 * 57; Esto es un comentario
N4 G92 E0 * 67
; Esto también lo es
N5 G28 * 22

Los comentarios y espacios en blanco serán ignorados por su impresora RepRap. Es mejor quitarlos en el ordenador portátil antes de enviar el Gcode a tu impresora, ya que así se ahorra ancho de banda.

Comandos individuales

Comprobación

N y *

Ejemplo: N123 [… Código G aquí …] * 71

Estos son el número de línea y la suma de verificación. El firmware RepRap comprueba la suma de comprobación con un valor calculado localmente y, si difieren, solicita una transmisión repetida de la línea del número dado.

Puede omitir ambos: RepRap seguirá funcionando, pero no hará la comprobación. Sin embargo, debes tener ambos o ninguno.

La suma de comprobación «cs» para una cadena de GCode «cmd» (incluido su número de línea) se calcula exorbitando los bytes en la cadena hasta y sin incluir el carácter * de la siguiente manera:

int cs = 0;
para (i = 0; cmd [i]! = '*' && cmd [i]! = NULL; i ++)
   cs = cs ^ cmd [i];
cs & = 0xff; // Programación defensiva ...

y el valor se agrega como un entero decimal al comando después del carácter *.

El firmware RepRap espera que los números de línea aumenten en 1 cada línea, y si eso no sucede, se marca como un error. Pero puede restablecer el recuento utilizando M110 (ver más abajo).

Comandos G almacenados

El firmware RepRap almacena estos comandos en un buffer de anillo internamente para su ejecución. Esto significa que no hay retraso (apreciable) mientras se reconoce un comando y se transmite el siguiente. A su vez, esto significa que las secuencias de segmentos de línea se pueden trazar sin pausa entre uno y el siguiente. Tan pronto como se recibe uno de estos comandos almacenados, se reconoce y almacena localmente. Si el búfer local está lleno, el reconocimiento se retrasa hasta que haya espacio para el almacenamiento en el búfer disponible. Así es como se logra el control de flujo.

G0 y G1: mover

Uso
G0 Xnnn Ynnn Znnn Ennn Fnnn Snnn
G1 Xnnn Ynnn Znnn Ennn Fnnn Snnn
Variables
No todas las variables deben usarse, pero al menos una debe usarse
Xnnn La posición para moverse en el eje X
Ynnn La posición para moverse en el eje Y
Znnn La posición para moverse en el eje Z
Ennn La cantidad a extruir entre el punto inicial y el punto final
Fnnn La velocidad de avance por minuto del movimiento entre el punto inicial y el punto final (si se proporciona)
Snnn Flag para verificar si se tocó un tope S1 para verificar, S0 para ignorar, S2 ver nota, el valor predeterminado es S0 ) 1
Ejemplos
G0 X12 (mover a 12 mm en el eje X)
G0 F1500 (Ajuste la velocidad de avance a 1500 mm / minuto)
G1 X90.6 Y13.8 E22.4 (Mover a 90.6 mm en el eje X y 13.8 mm en el eje Y mientras extruye 22.4 mm de material)

La especificación de firmware RepRap trata a G0 y G1 como el mismo comando, ya que es tan eficiente como no hacerlo. 2

La mayoría de los firmwares RepRap hacen cosas sutiles con los avances.

1. G1 F1500
2. G1 X50 Y25.3 E22.4

En el ejemplo anterior, establecemos el avance a 1500 mm / minuto en la línea 1, luego nos movemos a 50 mm en el eje X y a 25,3 mm en el eje Y mientras extruimos 22,4 mm de filamento entre los dos puntos.

1. G1 F1500
2. G1 X50 Y25.3 E22.4 F3000

Sin embargo, en el ejemplo anterior, establecemos una velocidad de avance de 1500 mm / minuto en la línea 1, luego hacemos el movimiento descrito anteriormente acelerando a una velocidad de avance de 3000 mm / minuto mientras lo hace. La extrusión se acelerará junto con el movimiento X e Y, por lo que todo permanecerá sincronizado.

La especificación RepRap trata el avance como simplemente otra variable (como X, Y, Z y E) para ser interpolada linealmente. Esto proporciona un control completo sobre la aceleración y desaceleración del cabezal de la impresora de tal manera que se garantiza que todo se mueva suavemente y que se extruya el volumen correcto de material en todos los puntos. 3

Para invertir la extrusora en una cantidad dada (por ejemplo, para reducir su presión interna mientras realiza un movimiento en el aire para que no gotee) simplemente use G0 o G1 para enviar un valor E que sea menor que la longitud extruida actualmente .

Notas
  •  Algunos firmwares permiten que RepRap active o desactive la «detección» de paradas finales durante un movimiento. Verifique con el firmware que esté utilizando para ver si son compatibles con la variable S de esta manera, ya que puede dañarse si asume incorrectamente. En el firmware Duet-dc42, el uso del parámetro S1 o S2 en una impresora delta hace que los parámetros XYZ se refieran a las posiciones individuales del motor de la torre en lugar de la posición del cabezal, y también permitan la detección de tope final si el parámetro es S1.
  •  En la especificación RS274NGC, G0 es Movimiento rápido , que se utilizó para moverse entre el punto actual en el espacio y el nuevo punto de la manera más rápida y eficiente posible, y G1 es Movimiento controlado , que se utilizó para moverse entre el punto actual en el espacio y el nuevo punto lo más preciso posible
  • Es posible algunos firmwares no admitan establecer el avance en línea con un movimiento.
  • La bifurcación  zpl del firmware Duet implementa un parámetro adicional ‘R1’ para indicarle a la máquina que regrese a las coordenadas en las que originalmente se detuvo la impresión.

Algunas máquinas antiguas, CNC o de otro tipo, solían moverse más rápido si no se movían en línea recta. Esto también es cierto para algunas impresoras no cartesianas, como las impresoras delta o polares, que se mueven más fácil y más rápido en una curva.

G2 y G3: movimiento de arco controlado

Uso
G2 Xnnn Ynnn Innn Jnnn Ennn (Arco horario)
G3 Xnnn Ynnn Innn Jnnn Ennn (Arco en sentido antihorario )
Variables
Xnnn La posición para moverse en el eje X
Ynnn La posición para moverse en el eje Y
Innn El punto en el espacio X desde la posición X actual para mantener una distancia constante de
Jnnn El punto en el espacio Y desde la posición Y actual para mantener una distancia constante de
Ennn La cantidad a extruir entre el punto inicial y el punto final
Ejemplos
G2 X90.6 Y13.8 I5 J10 E22.4 (Mover en un arco en sentido horario desde el punto actual a punto (X = 90.6, Y = 13.8), con un punto central en (X = current_X + 5, Y = current_Y + 10), extruyendo 22,4 mm de material entre el inicio y la detención)
G3 X90.6 Y13.8 I5 J10 E22.4 (Moverse en un arco en sentido antihorario desde el punto actual a punto (X = 90.6, Y = 13.8), con un punto central en (X = current_X + 5, Y = current_Y + 10), extruyendo 22,4 mm de material entre el inicio y la detención)
Notas

1 El firmware Marlin puede alternar el soporte para estos Gcodes. Para habilitar el soporte, asegúrese de definir SCARA en el momento de la compilación, de lo contrario, se ignorarán los Gcodes.

G28: Mover al origen (Inicio)

Uso
G28
Variables
Este Gcode se puede usar sin ninguna variable adicional suministrada
X Flag para volver al origen del eje X
Indicador Y para volver al origen del eje Y
Z Flag para volver al origen del eje Z
Ejemplos
G28 (Ir al origen en todos los ejes)
G28 XZ (Ir al origen solo en los ejes X y Z)

Cuando el firmware RepRap recibe este comando, mueve todos los ejes (o los suministrados) de regreso a los topes extremos cero tan rápido como puede, luego retrocede un milímetro y lentamente retrocede a los puntos de activación del tope final cero para aumentar la precisión de la posición. Este proceso también se conoce como » Homing «.

Si agrega coordenadas, estas coordenadas se ignoran. Por ejemplo, G28 Z0.00da como resultado el mismo comportamiento que G28 Z.

Cuando se utiliza el firmware Duet-dc42 para controlar una impresora delta, cualquier comando G28 alojará las tres torres, independientemente de las letras XYZ.

G29: Sonda Z detallada

Sondea la cama en 3 o más puntos.

G30: Sonda Single Z

En su forma más simple, las sondas se acuestan en la ubicación XY actual.

Algunas implementaciones permiten un comportamiento más general: si se especifica un campo Pn, los valores sondeados X, Y y Z se guardan como punto n en la cama para calcular el plano de desplazamiento. Generalmente n es 0, 1 o 2. Si se especifican valores X, Y, o Z (por ejemplo, G30 P1 X20 Y50 Z0.3), esos valores se utilizan en lugar de las coordenadas actuales de la máquina. Un valor Z tonto (menor que -9999.0) hace que la máquina pruebe en el punto actual para obtener Z, en lugar de usar el valor dado. Si se especifica un campo S (por ejemplo, G30 P1 Z0.3 S), el plano del lecho se calcula para compensación y se almacena. La combinación de estas opciones permite que la máquina se mueva a puntos usando comandos G1, y luego sondee la cama, o que el usuario coloque la boquilla de manera interactiva y use esas coordenadas.El usuario también puede registrar esos valores y colocarlos en un archivo GCode de configuración para su ejecución automática.

La variante dc42 de RepRapFirmware utiliza el valor del parámetro S para especificar qué cálculo realizar. Si el valor es cero o no hay ningún valor después de la letra S, el plano de la cama se calcula y almacena como de costumbre. En una impresora delta, si el parámetro es 4, se realiza la autocalibración para determinar el radio delta, las correcciones de tope final y la altura de referencia. El número de coordenadas sondeadas debe ser 4, de las cuales las tres primeras deben estar frente a las torres X, Y y Z, respectivamente, y la cuarta debe estar en el centro de la cama.

G31: Informar el estado actual de la sonda

Cuando se usa por sí solo, esto informa si la sonda Z se activa o da el valor de la sonda Z en algunas unidades si la sonda genera valores de altura. Si se combina con un campo Z y P (ejemplo: G31 P312 Z0.7), esto establecerá la altura Z en 0.7 mm cuando el valor de la sonda Z alcance 312 cuando se envíe un comando G28 Z0 (cero eje Z). Luego, la máquina se moverá otros -0.7 mm en Z para colocarse en Z = 0. Esto permite que las sondas de medición sin contacto se acerquen pero no toquen la cama, y ​​que se permita el espacio restante. Si la sonda es una sonda táctil y genera una señal simple de 0/1 apagado / encendido, entonces G31 Z0.7 le dirá a la máquina RepRap que está a una altura de 0.7 mm cuando se activa la sonda.

En el firmware Duet-dc42, se pueden definir parámetros G31 separados para los tipos de sonda 0, 1/2 y 3 (los tipos de sonda 1 y 2 comparten el mismo conjunto de parámetros). Para especificar para qué sonda está configurando los parámetros, envíe un comando M558 para seleccionar el tipo de sonda antes de enviar el comando G31.

El firmware Duet-dc42 admite parámetros adicionales S (temperatura del lecho en ° C a la cual el parámetro Z especificado es correcto, el valor predeterminado es la temperatura actual del lecho) y C (coeficiente de temperatura del parámetro Z en mm / ° C, cero predeterminado). Esto es útil para sondas ultrasónicas y otras que se ven afectadas por la temperatura.

Las versiones de firmware Duet-dc42 1.00b en adelante también permiten especificar los desplazamientos X e Y de la sonda Z en relación con el cabezal de impresión (es decir, la posición cuando se selecciona la herramienta vacía), agregando los parámetros X e Y. Esto le permite calcule las coordenadas de su sonda M557 en función de la geometría de la cama, sin tener que corregirlas para el desplazamiento de la sonda Z X e Y. También proporciona una compensación de cama más precisa.

G32: sondee Z y calcule el plano Z

Sondea el lecho en 3 o más puntos predefinidos (ver M557) y actualiza la matriz de transformación para la compensación de nivelación del lecho. Las versiones posteriores de RepRapFirmware ejecutan el archivo de macro bed.g si está presente en lugar de usar las coordenadas M557.

Comandos G sin búfer

Los siguientes comandos no están almacenados. Cuando se recibe uno, se almacena, pero no se reconoce al host hasta que se agota el búfer y luego se ejecuta el comando. Por lo tanto, el host hará una pausa en uno de estos comandos hasta que se haya completado. Las pausas breves entre estos comandos y cualquiera que pueda seguirlos no afectan el rendimiento de la máquina.

 

G4: morar

Ejemplo: G4 P200

En este caso, siéntate sin hacer nada durante 200 milisegundos. Durante los retrasos, el estado de la máquina (por ejemplo, las temperaturas de sus extrusoras) aún se conservará y controlará.

En Marlin y Smoothie, el parámetro «S» esperará unos segundos, mientras que el parámetro «P» esperará milisegundos. «G4 S2» y «G4 P2000» son equivalentes.

G10: Desplazamiento de herramienta


Ejemplo: G10 P3 X17.8 Y-19.3 Z0.0 R140 S205

Esto establece el desplazamiento de la herramienta (o en implementaciones anteriores de extrusión de cabeza) 3 (desde el P3) a los valores X e Y especificados. También puede poner un valor Z distinto de cero, pero esto generalmente es una mala idea a menos que las herramientas sean cargadas y descargadas por algún tipo de cambiador de herramientas. Cuando todas las herramientas están en la máquina a la vez, todas deben configurarse a la misma altura Z.

Recuerde que cualquier parámetro que no especifique se establecerá automáticamente en el último valor para ese parámetro. Eso generalmente significa que desea establecer explícitamente Z0.0.

El valor R es la temperatura de espera en o C que se utilizará para la herramienta, y el valor S es su temperatura de funcionamiento. Si no desea que la herramienta tenga una temperatura diferente cuando no esté en uso, configure ambos valores de la misma manera. Vea el código T (herramienta de selección) a continuación. En herramientas con múltiples calentadores, las temperaturas para todos ellos se especifican así: R100.0: 90.0: 20.0 S185.0: 200.0: 150.0.

El estándar NIST G-code menciona un parámetro L adicional, que se ignora.

Este comando está sujeto a discusión .

Tenga en cuenta que Marlin y Smoothie usan G10 / G11 para ejecutar un movimiento de retracción / no retracción. La versión RepRapPro de Marlin admite G10 para el desplazamiento de la herramienta.

G20: Establecer unidades en pulgadas

Ejemplo: G20

Las unidades de ahora en adelante están en pulgadas.

G21: establecer unidades en milímetros

Ejemplo: G21

Las unidades de ahora en adelante están en milímetros. (Este es el valor predeterminado de RepRap).

G90: Establecer en posicionamiento absoluto

Ejemplo: G90

Todas las coordenadas a partir de ahora son absolutas en relación con el origen de la máquina. (Este es el valor predeterminado de RepRap).

G91: Establecer en posicionamiento relativo

Ejemplo: G91

Todas las coordenadas a partir de ahora son relativas a la última posición.

G92: Establecer posición

Ejemplo: G92 X10 E90

Permite la programación del punto cero absoluto, restableciendo la posición actual a los valores especificados. Esto establecería la coordenada X de la máquina en 10 y la coordenada de extrusión en 90. No se producirá movimiento físico.

Un G92 sin coordenadas restablecerá todos los ejes a cero.

Comandos M y T sin búfer

M0: parada

Ejemplo: M0

La máquina RepRap finaliza los movimientos que quedan en su búfer, luego se apaga. Todos los motores y calentadores están apagados. Se puede volver a iniciar presionando el botón de reinicio en el microcontrolador maestro. Ver también M1, M112.

M1: sueño

Ejemplo: M1

La máquina RepRap finaliza los movimientos que quedan en su búfer, luego se apaga. Todos los motores y calentadores están apagados. Todavía se pueden enviar códigos G y M, el primero de los cuales lo despertará nuevamente. Ver también M0, M112.

M3: Husillo encendido, en sentido horario (CNC específico)

Ejemplo: M3 S4000

El husillo se enciende con una velocidad de 4000 RPM.

M4: Husillo encendido, en sentido antihorario (CNC específico)

Ejemplo: M4 S4000

El husillo se enciende con una velocidad de 4000 RPM.

M5: Husillo apagado (CNC específico)

Ejemplo: M5

El husillo está apagado.

M7: Refrigerante de niebla activado (CNC específico)

Ejemplo: M7

El refrigerante de niebla está encendido (si está disponible)

M8: Refrigerante de inundación activado (específico de CNC)

Ejemplo: M8

El refrigerante de inundación está encendido (si está disponible)

M9: Refrigerante apagado (específico del CNC)

Ejemplo: M9

Todos los sistemas de refrigerante están apagados.

M10: Vacío activado (específico de CNC)

Ejemplo: M10

Sistema de aspiración de recolección de polvo encendido.

M11: Vacío desactivado (CNC específico)

Ejemplo: M11

Sistema de aspiración de recolección de polvo apagado.

M17: activar / alimentar todos los motores paso a paso

Ejemplo: M17

M18: deshabilitar todos los motores paso a paso

Ejemplo: M18

Inhabilita los motores paso a paso y permite que el eje se mueva ‘libremente’.

M20: Lista de tarjeta SD

Ejemplo: M20

Todos los archivos en la carpeta raíz de la tarjeta SD se enumeran en el puerto serie. Esto da como resultado una línea como:

ok Archivos: {SQUARE.G, SQCOM.G,}

La coma final es opcional. Tenga en cuenta que los nombres de los archivos se devuelven en mayúsculas, pero cuando se envían al comando M23 (a continuación) deben estar en minúsculas. Esto parece ser una función del software SD. Imagínate…

El firmware Duet-dc42 devuelve los nombres de archivo (largos) en el caso correcto. Si el parámetro S2 está presente, la lista de archivos se devuelve en formato JSON, como una matriz única llamada «archivos». El parámetro opcional P especifica el directorio a listar, por defecto en el directorio / gcodes.

M21: inicializar tarjeta SD

Ejemplo: M21

La tarjeta SD se inicializa. Si se carga una tarjeta SD cuando la máquina está encendida, esto sucederá de manera predeterminada. La tarjeta SD debe inicializarse para que funcionen las otras funciones SD.

M22: liberar tarjeta SD

Ejemplo: M22

La tarjeta SD se libera y se puede extraer físicamente.

M23: seleccione el archivo SD

Ejemplo: M23 filename.gco

El archivo especificado como filename.gco (se admite la convención de nomenclatura 8.3) está listo para imprimir.

El firmware Duet-dc42 admite nombres de archivo largos y formato 8.3.

M24: Iniciar / reanudar impresión SD

Ejemplo: M24

La máquina imprime desde el archivo seleccionado con el comando M23.

M25: Pausa impresión SD

Ejemplo: M25

La máquina detiene la impresión en la posición actual dentro del archivo seleccionado con el comando M23.

M26: establecer la posición SD

Ejemplo: M26

Establecer la posición SD en bytes (M26 S12345).

M27: informe del estado de impresión SD

Ejemplo: M27

Informe el estado de impresión SD.

M28: Comience a escribir en la tarjeta SD

Ejemplo: M28 filename.gco

El archivo especificado por filename.gco se crea (o se sobrescribe si existe) en la tarjeta SD y todos los comandos posteriores enviados a la máquina se escriben en ese archivo.

M29: deja de escribir en la tarjeta SD

Ejemplo: M29 filename.gco

El archivo abierto por el comando M28 se cierra y todos los comandos posteriores enviados a la máquina se ejecutan normalmente.

M30: eliminar un archivo en la tarjeta SD

Ejemplo: M30 filename.gco

filename.gco se elimina.

M31: tiempo de salida desde el último inicio de M109 o tarjeta SD a serie

Ejemplo: M31

La respuesta se ve así:

 eco: 54 min, 38 seg

M32: seleccione el archivo e inicie la impresión SD

(Se puede usar al imprimir desde la tarjeta SD)

Ejemplo: M32 filename.gco

tba disponible en marlin (14/6/2014)

M33

Usado por algunas variantes del firmware Marlin. Propósito desconocido.

M34

Usado por algunas variantes del firmware Marlin. Propósito desconocido.

M36: devolver información del archivo

Ejemplo: M36 filename.gco

Devuelve información para el archivo de tarjeta SD especificado en formato JSON. Una respuesta de muestra es:

{«err»: 0, «size»: 457574, «height»: 4.00, «layerHeight»: 0.25, «filament»: [6556.3], «generateBy»: «Slic3r 1.1.7 el 09/11/2014 a las 17 : 11: 32 «}

El campo «err» es cero si tiene éxito, distinto de cero si no se encontró el archivo o se produjo un error al procesarlo. El campo «tamaño» siempre debe estar presente si la operación fue exitosa. La presencia o ausencia de otros campos depende de si se pueden encontrar los valores correspondientes leyendo el archivo. El campo «filamento» es una matriz de las longitudes de filamento requeridas de cada carrete. El tamaño está en bytes, todos los demás valores están en mm. Los campos pueden aparecer en cualquier orden y pueden estar presentes campos adicionales.

M37: Modo Simulación

 

Usado para cambiar entre el modo de impresión y el modo de simulación. El modo de simulación permite la electrónica calcular un tiempo de impresión preciso, teniendo en cuenta las velocidades máximas, aceleraciones, etc., que están configuradas.

M37 S1 entra en modo de simulación. Ningún código G o M funcionara, pero el tiempo que llevarían a ser ejecutados si serán tomados en cuenta para el cálculo final.

M37 S0 Venta de modo simulación.

M37 sin el parámetro S devuelve el tiempo que ha llevado a calcular la simulación, desde que se introdujo el comando M37 S1, hasta el momento actual (si el modo de simulación aún permanece en ejecución) o el punto en el cual la simulación ya acabó (Si el modo simulación ya no está activo).

M40: expulsar

Si su máquina RepRap puede expulsar las partes que ha construido fuera de la cama, este comando ejecuta el ciclo de expulsión. Esto generalmente implica enfriar la cama y luego realizar una secuencia de movimientos que eliminan las partes impresas. Las posiciones X, Y y Z de la máquina al final de este ciclo no están definidas (aunque se pueden encontrar utilizando el comando M114, qv).

Ver también M240 y M241 a continuación.

M41: lazo

Ejemplo: M41

Si la máquina RepRap estaba creando un archivo desde su propia memoria, como una tarjeta SD local (a diferencia de un archivo que se le transmitía desde una computadora host), esto vuelve al principio del archivo y lo ejecuta nuevamente. Entonces, por ejemplo, si su RepRap es capaz de expulsar partes de su plataforma de construcción, puede configurarlo para que se imprima en un bucle y se ejecutará y se ejecutará. Úselo con precaución: las únicas cosas que lo detendrán son:

  1. Cuando presionas el botón de reinicio,
  2. Cuando se agota el material de construcción (si su RepRap está configurado para detectar esto), y
  3. Cuando hay un error (como una falla del calentador).

M42: Detener en material agotado / Cambiar pin de E / S

M42 en ???

Ejemplo: M42

Si su RepRap puede detectar cuándo se agota su material, esto decide el comportamiento cuando eso sucede. Los ejes X e Y se ponen a cero (pero no Z), y luego la máquina apaga todos los motores y calentadores. Debe presionar Restablecer para reactivar la máquina. En otras palabras, se estaciona y luego ejecuta un comando M0 (qv).

M42 en Marlin / Sprinter

Ejemplo: M42 P7 S255

M42 conmuta un pin de E / S de uso general. Use M42 Px Sy para establecer el pin x en el valor y, al omitir Px se usará el LEDPIN.

M42 en teaCup

Innecesario. Los dispositivos de uso general se manejan como un calentador, ver M104 .

M43: espera sobre material agotado

Ejemplo: M43

Si su RepRap puede detectar cuándo se agota su material, esto decide el comportamiento cuando eso sucede. Los ejes X e Y se ponen a cero (pero no Z), y luego la máquina apaga todos los motores y calentadores, excepto el lecho calentado, cuya temperatura se mantiene. La máquina seguirá respondiendo a los comandos de código G y M en este estado.

M80: ATX encendido

Ejemplo: M80

Enciende la fuente de alimentación ATX del modo de espera al modo completamente operativo. Sin operación en electrónica sin modo de espera.

Nota : algunos firmwares, como Teacup , manejan el encendido / apagado automáticamente, por lo que esto es redundante allí. Consulte también el cableado de RAMPAS para activar / desactivar ATX

M81: apagado ATX

Ejemplo: M81

Apaga la fuente de alimentación ATX. Contraparte de M80.

M82: establecer extrusora en modo absoluto

Ejemplo: M82

hace que el extrusor interprete la extrusión como posiciones absolutas.

Este es el valor predeterminado en repetidor.

M83: Establecer extrusora en modo relativo

Ejemplo: M83

hace que el extrusor interprete los valores de extrusión como posiciones relativas.

M84: detener espera inactiva

Ejemplo: M84

Detenga la espera de ralentí en todos los ejes y extrusoras. En algunos casos, la espera inactiva provoca ruidos molestos, que se pueden detener desactivando la espera. Tenga en cuenta que al deshabilitar la espera inactiva durante la impresión, obtendrá problemas de calidad. Esto se recomienda solo entre o después de printjobs.

En Marlin, M84 también se puede usar para configurar o deshabilitar el tiempo de espera inactivo. Por ejemplo, «M84 S10» dejará inactivos los motores paso a paso después de 10 segundos de inactividad. «M84 S0» deshabilitará el tiempo de espera inactivo; los steppers permanecerán encendidos independientemente de la actividad.

M92: Establecer axis_steps_per_unit

Ejemplo: M92 X <newsteps> Sprinter y Marlin

Permite la programación de pasos por unidad de eje hasta que los componentes electrónicos se restablecen para el eje especificado. Muy útil para la calibración.

M98: Macro / Subprograma de llamadas

Ejemplo: M98 Pmymacro.g

Ejecuta la macro en el archivo mymacro.g. En los Códigos G convencionales para máquinas CNC, el parámetro P normalmente se refiere a un número de línea en el propio programa (P2000 ejecutaría la Macro comenzando en la línea O2000, por ejemplo). Para RepRap, que casi siempre tiene algún tipo de dispositivo de almacenamiento masivo incorporado, simplemente se refiere al nombre de un archivo GCode que se ejecuta mediante la llamada G98. Ese archivo GCode no necesita terminar con un M99 (retorno) ya que el final del archivo automáticamente produce un retorno. Por lo general, es una buena idea comenzar una macro con una instrucción M120 (Push) y finalizarla con una instrucción M121 (Pop), las llamadas macro qv generalmente no pueden anidarse o ser recursivas; es decir, no puede llamar a una macro desde una macro (aunque algunas implementaciones pueden permitir esto).

M99: Regresar de Macro / Subprograma

Ejemplo: M99

Vuelve de una llamada M98.

M98: Obtener axis_hysteresis_mm

En desuso: enfrentamientos con el código G estándar M98 anterior

Ejemplo: M98

Informe los valores de histéresis actuales en mm para todos los ejes.

Propuesto para Marlin

M99: Establecer axis_hysteresis_mm

En desuso: enfrentamientos con el código G estándar M99 anterior

Ejemplo: M99 X <mm> Y <mm> Z <mm> E <mm>

Permite la programación de la histéresis del eje. Poleas mecánicas, engranajes y roscas pueden tener histéresis cuando cambian de dirección. Es decir, una cierta cantidad de pasos ocurren antes de que ocurra el movimiento. Puede medir cuántos mm se pierden por histéresis y establecer sus valores con este comando. Cada vez que un eje cambia de dirección, se agregarán estos mm adicionales para compensar la histéresis.

Propuesto para Marlin

M101: Encienda el extrusor 1 (Adelante), Deshacer retracción

M101 en el firmware 

Si hay un extrusor de CC, enciéndalo. De lo contrario, deshaga la retracción del filamento, lo que significa que la extrusora está lista para la extrusión. Complemento a M103.

M101 en otros firmwares

Obsoleto. Con respecto a la retracción del filamento, ver M227, M228, M229.

M102: Encienda el extrusor 1 (reversa)

Obsoleto.

M103: apague todos los extrusores, retracción del extrusor

M103 en el firmware 

Si hay un extrusor de CC, apáguelo. De lo contrario, retraiga el filamento con la esperanza de evitar el babeo de la boquilla. Complemento a M101.

M103 en otros firmwares

Obsoleto. Con respecto a la retracción del extrusor, ver M227, M228, M229.

M104: Establecer la temperatura del extrusor

Ejemplo: M104 S190

Ajuste la temperatura del extrusor actual a 190 o C y regrese el control al host inmediatamente ( es decir, antes de que el extrusor haya alcanzado esa temperatura). El firmware Duet-dc42 también admite el parámetro T opcional (generado por slic3r) para especificar a qué herramienta se aplica el comando. Ver también M109.

Esto está en desuso porque las temperaturas deben establecerse utilizando los comandos G10 y T (qv).

 

M104 en el firmware de la taza de té

En el firmware de la taza de té, M104 se puede usar adicionalmente para manejar todos los dispositivos que usan un sensor de temperatura. Admite el parámetro P adicional, que es un índice basado en cero en la lista de sensores en config.h. Para dispositivos sin sensor de temperatura, consulte M106 .

Ejemplo: M104 P1 S100

Ajuste la temperatura del dispositivo conectado al segundo sensor de temperatura a 100 ° C.

M105: Obtenga la temperatura del extrusor

Ejemplo: M105

Solicite la temperatura del extrusor actual y la base de construcción en grados Celsius. Las temperaturas se devuelven a la computadora host. Por ejemplo, la línea enviada al host en respuesta a este comando se ve así:

ok T: 201 B: 117

La expansión / generalización de M105 se considerará utilizando el parámetro S1 como se indica en Pronterface I / O Monitor

En Repetier también puede agregar X0 para obtener valores sin procesar:

M105 X0
==> 11: 05: 48.910: T: 23.61 / 0 @: 0 T0: 23.61 / 0 @ 0: 0 RAW0: 3922 T1: 23.89 / 0 @ 1: 0 RAW1: 3920
Extensión Duet-dc42

El firmware Duet-dc42 devuelve una respuesta con formato JSON si se incluye el parámetro S2 o S3. Esto es utilizado por el panel de control de pantalla táctil. La respuesta comprende un único objeto JSON, sin anidamiento de objetos o matrices. Es similar al objeto devuelto por la solicitud de estado de la interfaz web, pero se omiten algunos campos. Aquí hay una respuesta de muestra cuando se usa S2:

{"estado": "I", "calentadores": [25.0,29.0,28.3], "activo": [- 273.1,0.0,0.0], "en espera": [- 273.1,0.0,0.0], "hstat" : [0,2,1], "pos": [- 11.00,0.00,0.00], "extr": [0.0,0.0], "sfactor": 100.00,
 "efactor": [100.00,100.00], "herramienta": 1, "sonda": "535", "fanRPM": 0, "referenciado": [0,0,0], "fracción_impresa": 0.572}

El significado de estos campos es:

estado: I = inactivo, P = imprimiendo desde la tarjeta SD, S = detenido (es decir, necesita un reinicio), C = ejecutando el archivo de configuración
calentadores: temperaturas actuales del calentador, numeradas según la máquina (normalmente, el calentador 0 es la cama)
activo: temperaturas activas de los calentadores
en espera: temperaturas en espera de los calentadores
hstat: estado de los calentadores, 0 = apagado, 1 = en espera, 2 = activo, 3 = falla
pos: las posiciones X, Y y Z del cabezal de impresión
extr: las posiciones de las extrusoras
sfactor: el factor de velocidad actual (ver comando M220)
efactor: los factores de extrusión actuales (ver comando M221)
herramienta: el número de herramienta seleccionado. Cero generalmente significa que no se seleccionó ninguna herramienta.
sonda: la lectura de la sonda Z
fanRPM: el ventilador de enfriamiento RPM
Homed: el estado de los ejes X, Y y Z (o torres en un delta). 0 = el eje no ha sido dirigido por lo que la posición no es confiable, 1 = el eje ha sido dirigido por lo que la posición es confiable.
fracción_impresa: la fracción del archivo que se está imprimiendo actualmente que se ha leído y procesado al menos parcialmente.

La respuesta cuando se usa S3 comprende estos campos más algunos adicionales que generalmente no cambian (por ejemplo, el nombre de la máquina y las longitudes de los ejes) y, por lo tanto, no es necesario buscarlos con tanta frecuencia. En particular, el nombre de la máquina se devuelve en la variable «myName».

Los campos pueden estar en cualquier orden en la respuesta. Otras implementaciones pueden omitir campos y / o agregar campos adicionales.

M106: ventilador encendido

Ejemplo: M106 S127

Encienda el ventilador de enfriamiento a media velocidad.

El parámetro obligatorio ‘S’ declara el valor PWM (0-255). M106 S0 apaga el ventilador. En algunas implementaciones, pwm se especifica mediante una fracción real: M106 S0.7.

M106 en firmware Duet

El firmware Duet-dc42 también admite un parámetro I opcional. Si este parámetro está presente y es mayor que cero, la salida del ventilador de enfriamiento se invierte. Esto hace que la salida del ventilador de enfriamiento sea adecuada para alimentar la entrada PWM de un ventilador de 4 cables a través de un diodo. Si el parámetro está presente y es cero o negativo, la salida no se invierte. Si el parámetro no está presente, el estado invertido / no invertido permanece sin cambios. El valor predeterminado en el encendido no está invertido.

Si se pasa el parámetro ‘R’ cuando se utiliza el firmware Duet-zpl (0,96 g +), se establecerá el último valor de ventilador conocido. Si se pasa el parámetro ‘S’ junto con ‘R’, el firmware no restablecerá el último valor conocido del ventilador. Esto puede ser útil para los archivos de macro de cambio de herramienta.

M106 en firmware de TeaCup

Además de lo anterior, el firmware de Teacup utiliza M106 para controlar dispositivos generales. Admite el parámetro P adicional, que es un índice basado en cero en la lista de calentadores / dispositivos en config.h.

Ejemplo: M106 P2 S255

Encienda el dispositivo # 3 a toda velocidad / potencia.

Nota : Al encender un calentador equipado con sensor de temperatura con M106 y M104 al mismo tiempo, el control de temperatura anulará el valor dado en M106 rápidamente.

M107: ventilador apagado

Obsoleto. Utilice M106 S0 en su lugar.

M108: Establecer la velocidad del extrusor

Establece la velocidad del motor de la extrusora. (Desaprobado en el firmware actual, ver M113)

M109: Establecer la temperatura del extrusor y esperar

M109 en teaCup

Innecesario. Para imitar el comportamiento de Marlin, use M104 seguido de M116 .

M109 en Marlin, Sprinter (puerto ATmega), Duet

Ajuste la temperatura del calentador del extrusor en grados centígrados y espere a que se alcance esta temperatura.

Ejemplo: M109 S185

El firmware Duet-dc42 también admite el parámetro T opcional (generado por slic3r) para especificar a qué herramienta se refiere el comando (ver más abajo).

M109 en Sprinter (puerto 4pi)

Parámetros: S (opcional), establece el valor de temperatura objetivo. Si no se especifica, espera la temperatura establecida por M104 . R (opcional), establece el valor máximo del rango de temperatura objetivo.

Ejemplo: M109 S185 R240 // establece la temperatura del extrusor en 185 y espera que la temperatura esté entre 185 y 240.

Si tiene varias extrusoras, use el parámetro T o P para especificar qué extrusora desea configurar / esperar.

Otra forma de hacer esto es usar G10 .

M110: Establecer número de línea actual

Ejemplo: M110 N123

Establezca el número de línea actual en 123. Por lo tanto, la siguiente línea esperada después de este comando será 124.

M111: Establecer nivel de depuración

Ejemplo: M111 S6

Establezca el nivel de información de depuración transmitida al host en el nivel 6. El nivel es el OR de tres bits:

#define DEBUG_ECHO (1 << 0)
#define DEBUG_INFO (1 << 1)
#define DEBUG_ERRORS (1 << 2)

Por lo tanto, 6 significa enviar información y errores, pero no repetir los comandos. (Este es el valor predeterminado de RepRap).

Para el firmware que admite Ethernet e interfaces web, M111 S9 activará la información de depuración web sin cambiar ninguna otra configuración de depuración, y M111 S8 la desactivará. La depuración web generalmente significa que las solicitudes HTTP se reflejarán en la interfaz USB, al igual que las respuestas.

Ejemplo: M253

M112: parada de emergencia

Ejemplo: M112

Cualquier movimiento en progreso se termina inmediatamente, luego RepRap se cierra. Todos los motores y calentadores están apagados. Se puede volver a iniciar presionando el botón de reinicio en el microcontrolador maestro. Ver también M0 y M1.

M113: Establecer extrusor PWM

Ejemplo: M113

Configure el PWM para el extrusor seleccionado actualmente. Por sí solo, este comando configura RepRap para usar el potenciómetro incorporado en la placa del controlador del extrusor para configurar el PWM para la potencia de pasos del extrusor seleccionado actualmente. Con un campo S:

M113 S0.7

hace que el PWM se establezca en el valor S (70% en este caso). M113 S0 apaga el extrusor, hasta que se envía un comando M113 que no sea M113 S0.

M114: Obtener posición actual

Ejemplo: M114

Esto hace que la máquina RepRap informe sus coordenadas X, Y, Z y E actuales al host.

Por ejemplo, la máquina devuelve una cadena como:

ok C: X: 0.00 Y: 0.00 Z: 0.00 E: 0.00

En Marlin, los primeros 3 números son la posición del planificador. Las otras posiciones son las posiciones de la función paso a paso. Esto ayuda a depurar un error de función paso a paso anterior.

X: 0.00 Y: 0.00 RZ: 0.00 LZ: 0.00 Cuenta X: 0.00 Y: 0.00 RZ: 41.02 LZ: 41.02

M115: Obtenga la versión de firmware y las capacidades

Ejemplo: M115

Solicite la versión de firmware y las capacidades del microcontrolador actual Los detalles se devuelven a la computadora host como clave: pares de valores separados por espacios y terminados con un salto de línea.

datos de muestra del firmware:

ok PROTOCOL_VERSION: 0.1 FIRMWARE_NAME: FiveD FIRMWARE_URL: http% 3A // reprap.org MACHINE_TYPE: Mendel EXTRUDER_COUNT: 1

Este código M115 se implementa de manera inconsistente y no se debe confiar en que exista o que se envíe correctamente en todos los casos. Una implementación inicial se comprometió a svn para el firmware FiveD Reprap el 11 de octubre de 2010. Actualmente se está discutiendo el trabajo para definir más formalmente las versiones de protocolo (octubre de 2010). 

Ejemplo: M116

Espere a que todas las temperaturas y otras variables que cambian lentamente lleguen a sus valores establecidos. Ver también M109.

La versión de firmware Duet-dc42 0.78c y posterior admite un parámetro P opcional, que se utiliza para especificar un número de herramienta. Si este parámetro está presente, entonces el sistema solo espera que las temperaturas asociadas con esa herramienta lleguen a sus valores establecidos. Esto es útil durante los cambios de herramienta, para esperar a que la nueva herramienta se caliente sin necesariamente esperar que la anterior se enfríe por completo.

M117: Obtener posición cero

Ejemplo: M117

Esto hace que la máquina RepRap informe las coordenadas X, Y, Z y E en pasos no mm al host que encontró cuando tocó por última vez el cero se detiene para esos ejes. Es decir, cuando pone a cero X, se registra la coordenada x de la máquina cuando llega al tope final de X. Este valor debería ser 0, por supuesto. Pero si la máquina se ha desviado (por ejemplo, bajando pasos), entonces no será así. Este comando le permite medir y diagnosticar tales problemas. (E se incluye para completar. Normalmente no tiene un tope final).

M117 en Marlin, Smoothie y Duet-dc42: Mostrar mensaje

Ejemplo: M117 Hola Mundo

Esto hace que el mensaje dado se muestre en la línea de estado en una pantalla LCD adjunta. El comando anterior mostrará Hello World.

M118: Negociar características

Ejemplo: M118 P42

Este código M es para pruebas futuras. NO firmware o hostware soporta esto en este momento. Se utiliza junto con la palabra clave FEATURES de M115.

 

M119: Obtener estado de fin de carrera

Ejemplo: M119

Devuelve el estado actual de las paradas finales X, Y, Z configuradas. Tiene en cuenta cualquier configuración de ‘tope final invertido’, por lo que uno puede confirmar que la máquina está interpretando los topes finales correctamente.

M120: empujar

Empuje el estado de la máquina RepRap en una pila. Exactamente qué variables se empujan depende de la implementación (al igual que la profundidad de la pila, una profundidad típica podría ser 5). Sin embargo, un mínimo razonable podría ser

  1. Avance actual, y
  2. Si los movimientos (y la extrusión por separado) son relativos o absolutos

M121: Pop

Recupere el último estado empujado a la pila.

M122: diagnosticar

El envío de un M122 hace que RepRap transmita información de diagnóstico, por ejemplo, a través de un enlace serie USB.

M123: valor del tacómetro

El envío de un M123 hace que RepRap transmita valores de tacómetro de filamento de todas las extrusoras.

M124: parada inmediata del motor

Inmediatamente detiene todos los motores.

M126: válvula abierta

Ejemplo: M126 P500

Abra la válvula del extrusor (si tiene una) y espere 500 milisegundos para que lo haga.

M127: Válvula de cierre

Ejemplo: M127 P400

Cierre la válvula del extrusor (si tiene una) y espere 400 milisegundos para que lo haga.

M128: Extrusora Presión PWM

Ejemplo: M128 S255

Valor PWM para controlar la presión interna del extrusor. S255 es presión total.

M129: presión del extrusor desactivada

Ejemplo: M129 P100

Además de establecer la presión del extrusor en 0, puede desactivar la presión por completo. P400 esperará 100 ms para hacerlo.

M130: establecer el valor PID P

Ejemplo: M130 P 0 S 8.0 # Establece el factor 0 P del calentador en 8.0

Teacup puede controlar varios calentadores con controles PID independientes. Para el valor predeterminado que se muestra en https://github.com/Traumflug/Teacup_Firmware/blob/master/config.default.h , el calentador 0 es el extrusor (P0) y el calentador 1 es la cama (P1).

Las unidades proporcionales PID de la taza de té están en pwm / 255 cuentas por trimestre C, por lo que para convertir de cuentas / C, dividiría por 4. Por el contrario, para convertir de cuenta / qC a cuenta / C, multiplique por 4. En el ejemplo anterior, S = 8 representa un Kp = 8 * 4 = 32 cuentas / C.

M131: establecer el valor PID I

Ejemplo: M131 P 1 S 0.5 # Establece el factor 1 del calentador en 0.5

Las unidades integrales PID de Teacup están en pwm / 255 cuentas por (cuarto C * cuarto de segundo), por lo que para convertir de cuentas / qCqs, dividirías por 16. Por el contrario, para convertir de cuentas / qCqs a cuentas / Cs, multiplica por 16. En el ejemplo anterior, S = 0.5 representa un Ki = 0.5 * 16 = 8 cuentas / Cs.

M132: establecer el valor PID D

Ejemplo: M132 P 0 S 24 # Establece el factor 0 D del calentador en 24.0

Las unidades derivadas PID de Teacup están en pwm / 255 cuentas por (cuarto de grado por 2 segundos), por lo que para convertir de cuentas / C, dividirías por 4. Por el contrario, para convertir de cuenta / qC a cuenta / C, multiplica por 8. En el ejemplo anterior, S = 24 representa un Kd = 24 * 8 = 194 cuentas / (C / s).

M133: Establecer valor límite de PID I

Ejemplo: M133 P 1 S 264 # Establece el valor límite del calentador 1 I en 264

Las unidades de límite integral PID de la taza de té están en cuartos-C * cuartos de segundos, por lo que para convertir de Cs, multiplicaría por 16. Por el contrario, para convertir de qC * qs a C * s, divida por 16. En el ejemplo anterior, S = 264 representa un límite integral de 16.5 C * s.

M134: Escribir valores PID en EEPROM

Ejemplo: M134

M135: Establecer intervalo de muestra PID

Ejemplo: M135 S300

Configure el PID para medir temperaturas y calcule la potencia para enviar a los calentadores cada 300 ms.

M136: Imprimir configuración PID al host

Ejemplo: M136 P1 # calentador de impresión 0 parámetros PID para alojar

M140: temperatura del lecho (rápido)

Ejemplo: M140 S55

Ajuste la temperatura del lecho de construcción a 55 o C y regrese el control al host inmediatamente ( es decir, antes de que el lecho haya alcanzado esa temperatura). Hay un campo R opcional que establece la temperatura de espera de la cama: M140 S65 R40.

M141: Temperatura de la cámara (rápida)

Ejemplo: M141 S30

Ajuste la temperatura de la cámara a 30 o C y regrese el control al host inmediatamente ( es decir, antes de que la cámara haya alcanzado esa temperatura).

M142: Presión de mantenimiento

Ejemplo: M142 S1

Ajuste la presión de mantenimiento de la cama a 1 bar.

La presión de mantenimiento está en bar. Para hardware que solo tiene retención de encendido / apagado, cuando la presión de retención es cero, apague la retención, cuando la presión de retención sea mayor que cero, encienda la retención.

M143: temperatura máxima de final caliente

Ejemplo: M143 S275

Ajuste la temperatura máxima del hot-end a 275C

Cuando la temperatura del hot-end excede este valor, tome contramedidas, por ejemplo, una parada de emergencia. Esto es para evitar daños por calor.

M144: espera junto a tu cama

Ejemplo: M144

Cambie la cama a su temperatura de espera. M140 lo devuelve a su temperatura activa; no es necesario ningún argumento para ese uso de M140.

M160: número de materiales mezclados

Ejemplo: M160 S4

Este comando ha sido reemplazado por el comando de definición de herramienta M563 (ver más abajo).

Establezca el número de materiales, N, que el extrusor actual puede manejar con el número especificado. El valor predeterminado es 1.

Cuando N> = 2, entonces el campo E que controla la extrusión requiere N valores separados por dos puntos «:» después de esto así:

M160 S4
G1 X90.6 Y13.8 E2.24: 2.24: 2.24: 15.89
G1 X70.6 E0: 0: 0: 42.4
G1 E42.4: 0: 0: 0

La segunda línea se mueve directamente al punto (90.6, 13.8) extruyendo un total de 22.4 mm de filamento. La relación de mezcla para el movimiento es 0.1: 0.1: 0.1: 0.7.

La tercera línea retrocede 20 mm en X extruyendo 42,4 mm de filamento.

La cuarta línea no tiene efecto físico.

M190: Espere a que la temperatura de la cama alcance la temperatura objetivo

Ejemplo: M190 S60

Esto esperará hasta que la temperatura de la cama alcance los 60 grados, imprimiendo la temperatura del extremo caliente y la cama cada segundo.

M200: Establecer el diámetro del filamento / Obtener estado final


Sin parámetros, se carga la grilla predeterminada, y con la extensión especificada se intenta cargar la grilla especificada. Si no está disponible no modificará la cuadrícula actual. Si Z se guardó con el archivo de cuadrícula, cargará la Z guardada con la cuadrícula.

M200 Dm.mmm establece el diámetro del filamento en m.mmm milímetros. Se utiliza con la ‘calibración volumétrica’ y el código G generado para un filamento ideal de 1.128 mm de diámetro, que tiene un volumen de 1 mm ^ 3 por milímetro. La intención es poder generar un código g independiente del filamento.

 

 

 

M201: establecer la aceleración máxima de impresión

Ejemplo: M201 X1000 Y1000 Z100 E2000

Establece la aceleración que los ejes pueden hacer en unidades / segundo ^ 2 para los movimientos de impresión. Para mantener la coherencia con el resto del movimiento del Código G, esto debería estar en unidades / (minuto ^ 2), pero eso da números realmente tontos y uno puede perderse en todos los ceros. Entonces para esto usamos segundos.

M202: establecer la aceleración máxima de desplazamiento

en unidades / s ^ 2 para movimientos de desplazamiento (M202 X1000 Y1000) ¡¡Sin usar en Marlin !!

M203: establecer la velocidad de avance máxima

Ejemplo: M203 X6000 Y6000 Z300 E10000

Establece los avances máximos que su máquina puede hacer en mm / min.

M204: establecer la aceleración predeterminada

S movimientos normales T el filamento solo se mueve (M204 S3000 T7000) im mm / seg ^ 2 también establece el tiempo mínimo del segmento en ms (B20000) para evitar la falta de amortiguación y la velocidad mínima de avance M20

M205: configuración avanzada

velocidad mínima de desplazamiento S = durante la impresión T = solo desplazamiento, B = tiempo mínimo de segmento X = máximo tirón xy, Z = máximo tirón Z, E = máximo tirón E

M206:

M206 Marlin – Establecer desplazamiento de inicio

Ejemplo: M206 X10.0 Y10.0 Z-0.4

Los valores especificados se agregan a la posición final cuando se hace referencia a los ejes. Lo mismo se puede lograr con un G92 justo después del recorrido de referencia (G28, G161).

Con el firmware Marlin, este valor se puede guardar en EEPROM con el comando M500.

Un comando similar es G10, la alineación de estos dos está sujeta a discusión .

Con Marlin 1.0.0 RC2, un valor negativo para z eleva (!) Su cabezal de impresión.

Repetidor M206 – Establecer el valor de eeprom

M206 T [tipo] P [pos] [Sint (largo) [Xfloat] Establecer el valor de eeprom

Ejemplo: M206 T3 P39 X19.9

Establece Jerk en 19.9

M207: calibre el eje z detectando la longitud máxima z

Ejemplo: M207

Después de colocar la punta de la boquilla en la posición que espera que se considere Z = 0, emita este comando para calibrar el eje Z. Realizará una rutina de referencia del eje az y calculará la distancia recorrida en este proceso. El resultado se almacena en EEPROM como z_max_length. Para utilizar este método de calibración, la máquina debe estar utilizando un tope Z MAX.

Este procedimiento suele ser más confiable que los ajustes mecánicos de un tope Z MIN.

NOTA: Marlin y Smoothie definen M207 como «establecer la longitud de retracción S [mm positivo] F [avance mm / min] Z [elevación / salto adicional], permanece en mm independientemente de la configuración de M200»

M208: Establecer el recorrido máximo del eje

Ejemplo: M208 X250 Y210 Z180

Los valores especificados establecen los límites del software para el desplazamiento del eje en la dirección positiva.

 

Con el firmware Duet-dc42, en una impresora cartesiana también puede usar este comando para especificar límites de software para el desplazamiento del eje en la dirección negativa, agregando el parámetro S1. Los límites de eje que establece también son las posiciones asumidas cuando se activa un tope final.

NOTA: Marlin / Smoothie define M208 como «recuperación de conjunto = longitud de retracción S [mm positivo excedente al M207 S *] F [avance mm / seg]»

M209: habilitar retracción automática

Ejemplo: M209 S1

Este valor booleano S 1 = verdadero o 0 = falso permite la detección de retracción automática si la rebanadora no era compatible con G10 / 11: cada movimiento normal de solo extrusión se clasificará como retracción según la dirección.

M210: Establecer velocidades de avance de referencia

Ejemplo: M210 X1000 Y1500

Establezca los avances utilizados para el retorno a los valores especificados en mm por minuto.

M211: Deshabilitar / Habilitar paradas finales de software

El valor booleano S 1 = habilitar o 0 = deshabilitar controla el estado del extremo del software.

El valor booleano X, Y o Z 1 = tope final máximo o 0 = tope final mínimo selecciona el tope final que se controla.

Ejemplo: M211 X1 Y1 Z1 S0

Deshabilita los extremos de X, Y, Z max

Ejemplo: M211 X0 S1

Habilita la parada final de X min.

Ejemplo: M211

Imprime el estado actual de las paradas finales de software.

M220: Establecer porcentaje de anulación del factor de velocidad

Ejemplo: M220 S80

S <factor en porcentaje> – establece el porcentaje de anulación del factor de velocidad

M221: Establecer porcentaje de anulación del factor de extrusión

Ejemplo: M221 S70

S <factor en porcentaje> - establece el porcentaje de anulación del factor de extrusión

M226: Pausa iniciada por Gcode

Ejemplo: M226

Inicia una pausa de la misma manera que si se presiona el botón de pausa. Es decir, la ejecución del programa se detiene y la impresora espera la interacción del usuario. Esto coincide con el comportamiento de M1 en el estándar NIST RS274NGC G-code y M0 en el firmware Marlin.

M227: Activar inversión automática y cebado

Ejemplo: M227 P1600 S1600

P y S son pasos.

«Invertir y cebar» significa que el filamento del extrusor se retrae cierta distancia cuando no está en uso y se empuja hacia adelante la misma cantidad antes de volver a usarlo. Esto ayudará a evitar el babeo de la boquilla del extrusor. El firmware de Teacup implementa esto con M101 / M103.

M228: Deshabilitar reversa automática y cebado

Ejemplo: M228

Ver también M227.

M229: Habilitar inversión automática y cebado

Ejemplo: M229 P1.0 S1.0

P y S son rotaciones de tornillo extrusor. Ver también M227.

M230: Deshabilitar / Habilitar espera para cambio de temperatura

Ejemplo: M230 S1

S1 Desactivar espera para cambio de temperatura S0 Activar espera para cambio de temperatura

M240: arranque del motor de la cinta transportadora / eco apagado

Ejemplo: M240

La cinta transportadora permite comenzar la producción en masa de una pieza con un reprap.

El eco puede controlarse en algunos firmwares con M111

M241: Detener el motor de la cinta transportadora / eco activado

Ejemplo: M241

El eco puede controlarse en algunos firmwares con M111

M245: Iniciar enfriador

Ejemplo: M245

Se utiliza para enfriar piezas / calentar el lecho después de la impresión para quitar fácilmente las piezas después de imprimir

M246: detener el refrigerador

Ejemplo: M246

M251: Mida los pasos Z desde la parada de referencia (impresoras Delta)

M251 S0 – Restablecer, S1 – Imprimir, S2 – Almacenar en longitud Z (también EEPROM si está habilitado)

(Esta es una característica única de Repetier-Firmware)

M280: establecer la posición del servo

(Marlin, Repetidor M340 )

M280 – establece la posición del servo absoluta. P: índice de servo, S: ángulo o microsegundos (Marlin)

M300: reproducir sonido de pitido

Uso: M300 S <frecuencia Hz> P <duración ms>

Ejemplo: M300 S300 P1000

Reproduzca un pitido, úselo para notificar eventos importantes como el final de la impresión.  También es compatible con el firmware duet-dc42 a través de la sonda en el panel de control de la pantalla táctil adicional.

M301: establecer parámetros PID

   Ejemplo: M301 P1 I2 D3; Marlin (solo extremo caliente; ver M304 para PID de cama)
   Ejemplo: M301 P1 I2 D3 C5 H1 B20 W127; RepRapFirmware
   Ejemplo: M301 P1 I2 D3 T0.2 H1 B20 W127 S0.8; Duet-dc42
   Ejemplo: M301 S0 P30 I10 D10; Smoothie (S0 es 0 para el hotend, y 1 para la cama, pueden aplicarse otros números a su configuración, dependiendo del orden en que declare los módulos de control de temperatura)

Establece valores proporcionales, integrales y derivados para hot end. El valor C se refiere a una velocidad de extrusión. El valor T es el PWM adicional aproximado (en una escala de 0 a 255) necesario para mantener cada temperatura adicional de 1C, que se usa para preajustar el acumulador I cuando se cambia completamente el encendido / apagado del calentador a PID. H es el número del calentador, predeterminado 1 (es decir, el primer calentador del extrusor).

El firmware Duet-dc42 interpreta un término P negativo como indicativo de que se debe usar el control de bolsa en lugar de PID (no se recomienda para el extremo caliente, pero está bien para H0, que es el calentador de la cama). El factor S está diseñado para permitir que se realice una corrección por un cambio en la potencia del calentador y / o el voltaje de la fuente de alimentación sin tener que cambiar todos los demás parámetros. Por ejemplo, un factor S de 0.8 significa que la salida final del controlador PID debe escalarse a 0.8 veces el valor estándar, lo que compensaría un calentador que es un 25% más potente que el estándar o un voltaje de suministro de 12.5 % más alto que el estándar.

 

Implementación alternativa

Ejemplo: M301 W125

Consulte M130, M131, M132, M133 para ver los códigos de Teacup para configurar los parámetros PID.

M302: permitir extrusiones en frío

Esto le dice a la impresora que permita el movimiento del motor del extrusor, cuando el hotend no está a la temperatura de impresión

Ejemplo: M302

Cuando se utilizan los firmwares Duet-zpl o Duet-dc42, ejecutar M302 solo informará el estado actual de extrusión en frío. Para permitir o denegar extrusiones / retracciones en frío, ejecute «M302 P1» o «M302 P0».

M303: ejecutar el ajuste PID

La sintonización de PID se refiere a un algoritmo de control utilizado en algunas repeticiones para ajustar el comportamiento de calentamiento para los extremos calientes y las camas calentadas. Este comando genera valores proporcionales (Kp), integrales (Ki) y derivados (Kd) para el hotend o bed (E-1). Envíe el código apropiado y espere a que la salida actualice el firmware.

Uso final caliente:

M303 S <temperatura> C <ciclos>

Uso de la cama:

M303 E-1 C <ciclos> S <temperatura>

Ejemplo:

M303 C8 S175

La sintaxis de Smoothie, donde E0 es el primer módulo de control de temperatura (generalmente el extremo caliente) y E1 es el segundo módulo de control de temperatura (generalmente la cama):

M303 E0 S190

M304: Establecer parámetros PID – Cama

   Ejemplo: M304 P1 I2 D3; establecer kP = 3, kI = 2, kD = 3
   Ejemplo: M301 P1 I2 D3 T0.7 H0 B20 W127; Duet-dc42 firmware
   Ejemplo: M304; Parámetros de informe

Establece valores proporcionales, integrales y derivados para la cama. El firmware Duet-dc42 interpreta un término P negativo como indicativo de que se debe usar el control de la bolsa en lugar del PID. En el firmware Duet-dc42, este comando es idéntico al M301, excepto que el parámetro H (número de calentador) está predeterminado en cero.

 

M305: Establecer parámetros de termistor y ADC


Establece los parámetros para la medición de temperatura. Compatible con la versión RepRapPro de Marlin, RepRapFirmware de 0.78c y firmware Duet-dc42.

Ejemplo: M305 P1 T100000 R1000 B4200

Esto le dice al firmware que para el calentador 1 (parámetro P: 0 = lecho calentado, 1 = primer extrusor) la resistencia del termistor 25C (parámetro T) es 100Kohms, la resistencia de la serie del termistor (parámetro R) es 1Kohms, el termistor beta (parámetro B ) es 4200. Todos los parámetros que no sean P son opcionales. Si solo se proporciona el parámetro P, se muestran los valores existentes.

Además, el firmware Duet-dc42 admite una funcionalidad de corrección ADC y una función de selección de termistor.

Ejemplo: M305 P1 T100000 R1000 B4200 H14 L-11 X2

Aquí la corrección de ADC de extremo alto (parámetro H) es 14, la corrección de ADC de extremo bajo (parámetro L) es -11 y la entrada del termistor n. ° 2 se usa para medir la temperatura del calentador n. ° 1.

M306: establecer el desplazamiento inicial calculado a partir de la posición del cabezal de herramienta

Ejemplo: M306 Z0

Los valores especificados se agregan a la posición final de parada calculada cuando se hace referencia a los ejes. El valor calculado se deriva de la distancia del cabezal de la herramienta desde el punto cero del eje actual.

El usuario normalmente colocaría el cabezal de la herramienta en el punto cero del eje y emitiría el comando M306.

Este valor se puede guardar en EEPROM con el comando M500 (como valor M206).

Implementado en Smoothieware

M320: Activar nivel automático (repetidor)

(Solo repetidor)

M321: Desactivar nivel automático (repetidor)

(Solo repetidor)

M322: restablecer matriz de nivel automático

Ejemplo: M322 S1

El parámetro S1 es obligatorio.

(Solo repetidor)

M340: controla los servos

(Solo repetidor , Marlin ver M280 )

M340 P <servoId> S <pulseInUS> / ServoID = 0..3 pulseInUs = 500..2500

Los servos están controlados por un ancho de pulso normalmente entre 500 y 2500 con 1500 ms en la posición central. 0 apaga el servo.

M355: enciende / apaga las luces de la carcasa

Habilitar luces
M355 S1
Desactivar luces
M355 S0
Estado del informe
M355

Cada llamada o cambio en el menú LCD envía un cambio de estado para el software de alojamiento conectado como

Luces del estuche encendidas
La caja se apaga
Sin luces de caja

M360: informe de configuración de firmware

 

Este comando ayuda al software de alojamiento a detectar detalles de configuración, que el usuario necesitaría ingresar de otra manera. Debería reducir el tiempo de configuración considerablemente si es compatible.

Ejemplo
M360
Respuesta
Config: Baudrate: 250000
Config: InputBuffer: 127
Configuración: NumExtruder: 2
Configuración: MixingExtruder: 0
Configuración: HeatedBed: 0
Configuración: Tarjeta SD: 1
Configuración: Fan: 1
Configuración: LCD: 1
Configuración: SoftwarePowerSwitch: 1
Configuración: XHomeDir: -1
Config: YHomeDir: -1
Configuración: ZHomeDir: -1
Configuración: Soporte G10G11: 1
Config: SupportLocalFilamentchange: 1
Config: CaseLights: 0
Configuración: ZProbe: 1
Config: Autolevel: 0
Configuración: EEPROM: 1
Configuración: PrintlineCache: 24
Configuración: JerkXY: 30.00
Configuración: JerkZ: 0.30
Config: RetractionLength: 3.00
Config: RetractionLongLength: 13.00
Config: RetractionSpeed: 40.00
Configuración: RetractionZLift: 0.00
Config: RetractionUndoExtraLength: 0.00
Configuración: RetractionUndoExtraLongLength: 0.00
Config: RetractionUndoSpeed: 0.00
Configuración: XMin: 0.00
Configuración: YMin: 0.00
Configuración: ZMin: 0.00
Configuración: XMax: 250.00
Configuración: YMax: 150.00
Configuración: ZMax: 90.00
Configuración: X Tamaño: 250.00
Configuración: Y Tamaño: 150.00
Configuración: Z Tamaño: 90.00
Config: XPrintAccel: 250.00
Configuración: YPrintAccel: 250.00
Configuración: ZPrintAccel: 100.00
Configuración: XTravelAccel: 250.00
Configuración: YTravelAccel: 250.00
Configuración: ZTravelAccel: 100.00
Config: PrinterType: Cartesian
Configuración: MaxBedTemp: 120
Config: Extr.1: Jerk: 50.00
Config: Extr.1: MaxSpeed: 100.00
Config: Extr.1: Aceleración: 10000.00
Config: Extr.1: Diámetro: 0.00
Config: Extr.1: MaxTemp: 220
Config: Extr.2: Jerk: 50.00
Config: Extr.2: MaxSpeed: 100.00
Config: Extr.2: Aceleración: 10000.00
Config: Extr.2: Diámetro: 0.00
Config: Extr.2: MaxTemp: 220

Códigos de calibración SCARA (Morgan)

Para facilitar la calibración de Reprap Morgan, se utilizan los siguientes códigos M para configurar la máquina

M360: Mover a la posición Theta de 0 grados

Los brazos se mueven a una posición donde el brazo de dirección Theta es paralelo al borde superior de la plataforma. Luego, el usuario calibra la posición moviendo los brazos con los botones de desplazamiento en software como pronterface hasta que esté perfectamente paralela. El uso de M114 mostrará la compensación de calibración que luego se puede programar en la unidad usando M206 (compensación inicial) X representa Theta.

Smoothieware: M360 P0 tomará la posición actual como paralela al borde de la plataforma y almacenará el desplazamiento en el desplazamiento de ajuste de referencia (M666) No se necesita más interacción del usuario.

M361: Moverse a la posición Theta de 90 grados

Theta se mueve a 90 grados con el borde de la plataforma. El usuario calibra utilizando brazos de desplazamiento para colocar exactamente 90 grados. Los pasos por grado se pueden leer con M114 y programar con M92. X representa a Theta. Programe Y (Psi) al mismo valor inicialmente. Recuerde repetir M360 después de ajustar los pasos por grado.

Smoothieware: M360 P0 aceptará la posición actual como 90 grados al borde de la plataforma. Se calculan nuevos pasos por ángulo y se ingresan en la memoria (M92). No se requiere ninguna otra interacción del usuario, excepto para rehacer M360.

M362: Mover a la posición Psi 0 grados

Los brazos se mueven a Psi 0 grados. Verificar solo después de otras calibraciones Theta

M363: Mover a la posición Psi 90 grados

Los brazos se mueven a Psi 90 grados. Verificar solo después de otras calibraciones Theta

M364: Mover a la posición de 90 grados Psi + Theta

Mueva los brazos para formar un ángulo de 90 grados entre los brazos Psi internos y externos. Calibre moviéndose hasta que el ángulo sea exactamente 90 grados. Lea con M114 y calibre el valor en el desplazamiento inicial M206. Psi está representado por Y.

Smoothieware: M364 P0 aceptará la posición actual como 90 grados entre los brazos. El desplazamiento se almacena como un ajuste de compensación (M666) y no se requiere más interacción del usuario, excepto para guardar todos los cambios a través de M500

M365: factor de escala SCARA

Ajuste la escala XY y Z ingresando el factor. El 100% de escala (predeterminado) está representado por 1

M370: nivel de cama manual Morgan – mapa claro

Borre el mapa y prepárese para la calibración Uso:

      M370

      M370 X <divisiones> Y <divisiones>

Sin parámetros, el valor predeterminado es X5 Y5 (25 puntos de calibración) Al especificar parámetros, se recomiendan números desiguales.

M371: pasar a la siguiente posición de calibración

Mover a la siguiente posición para la calibración. El usuario mueve la cama hacia el hotend hasta que solo toca

M372: registrar el valor de calibración y pasar a la siguiente posición

Se registra la posición de la cama y la máquina se mueve a la siguiente posición. Repita hasta que todas las posiciones programadas

M373: modo de calibración del nivel final del lecho

Finalice el modo de calibración y habilite la matriz de corrección z. No guarda la matriz actual

M374: Guardar cuadrícula de calibración

Guarda la cuadrícula de calibración. (Smoothieware) Uso:

      M374
      M374 <extensión de archivo> Z 

Sin parámetros, la cuadrícula se guarda en el archivo de cuadrícula predeterminado que se carga en el arranque El parámetro especifica la extensión del archivo de cuadrícula, útil para archivos de cuadrícula especiales, como una superficie de impresión especial, como una placa de impresión extraíble. La adición de Z guardará adicionalmente el desplazamiento de referencia M Z6 Z en el archivo de cuadrícula

M375: matriz de visualización / matriz de carga

Mostrar la matriz de calibración de nivel de lecho (Marlin) Cargar archivo de matriz de cuadrícula (Smoothieware)

      M375
      M375 <extensión de archivo>

Sin parámetros, se carga la grilla predeterminada, y con la extensión especificada se intenta cargar la grilla especificada. Si no está disponible no modificará la cuadrícula actual. Si Z se guardó con el archivo de cuadrícula, cargará la Z guardada con la cuadrícula.

M400: espera a que finalicen los movimientos actuales

Termina todos los movimientos actuales y, por lo tanto, borra el búfer. Eso es idéntico a G4 P0.

Ejemplo: M400

M420: Establecer colores RGB como PWM

Uso: M420 R <PWM rojo (0-255)> E <PWM verde (0-255)> B <PWM azul (0-255)>

Ejemplo: M420 R255 E255 B255

Establezca el color de sus LED RGB que están conectados a pines habilitados para PWM. Tenga en cuenta que el color verde está controlado por el valor E en lugar del valor G debido a que el código G es un código primario que no se puede anular.

M540: configurar la dirección MAC

Ejemplo: M540 P0xBE: 0xEF: 0xDE: 0xAD: 0xFE: 0xED

Establece la dirección MAC de RepRap. Esto debe hacerse antes que cualquier otro comando de red. La dirección MAC es seis números hexadecimales de un byte separados por dos puntos. El prefijo 0x es opcional en revisiones de firmware posteriores.

M550: Establecer nombre

Ejemplo: M550 PGodzilla

Establece el nombre de RepRap en (en este caso) Godzilla. El nombre puede ser cualquier cadena de caracteres imprimibles, excepto ‘;’, que aún significa comenzar a comentar.

M551: Establecer contraseña

Ejemplo: M551 Pmy-palabra-muy-secreta

En máquinas que necesitan una contraseña para activarlas, establezca esa contraseña. El código ‘P’ no es parte de la contraseña. Tenga en cuenta que, dado que esto se envía de forma clara, no ofrece (ni pretende) ofrecer un nivel de seguridad muy alto. Pero en las máquinas que están (digamos) en una red, evita que los usuarios no autorizados puedan jugar sin hacer nada. La contraseña puede contener caracteres imprimibles, excepto ‘;’, que aún significa comenzar a comentar.

M552: establecer dirección IP

Ejemplo: M552 P192.168.1.14

Establece la dirección IP de la máquina RepRap en (en este caso) 192.168.1.14. Es posible que sea necesario reiniciar antes de usar la nueva dirección IP. Si no se especifica ningún campo P, esto hace eco de la dirección IP existente configurada. Si S0 se agrega así: M552 S0 P192.168.1.14 la red está deshabilitada.

M553: Establecer máscara de red

Ejemplo: M553 P255.255.255.0

Establece la máscara de red de la máquina RepRap en (en este caso) 255.255.255.0. Es posible que sea necesario reiniciar antes de usar la nueva máscara de red. Si no se especifica ningún campo P, esto hace eco de la máscara de red existente configurada.

M554: Establecer puerta de enlace

Ejemplo: M554 P192.168.1.1

Establece la dirección IP de la puerta de enlace de la máquina RepRap en (en este caso) 192.168.1.1. Es posible que sea necesario reiniciar antes de utilizar la nueva dirección IP de la puerta de enlace. Si no se especifica ningún campo P, esto refleja la dirección IP de la puerta de enlace existente configurada.

M555: Establecer compatibilidad

Ejemplo: M555 P1

Para el firmware que puede hacerlo, establece el firmware en un modo donde su entrada y (especialmente) salida se comporta exactamente como otro firmware establecido. El valor del argumento P es:

Valor P Firmware
0 0 Nativo (es decir, sea cual sea el firmware)
1 RepRap_Firmware
2 Aguja
3 Taza para té
4 4 Sprinter
5 5 Repetidor

M556: compensación del eje

Ejemplo: M556 S100 X0.7 Y-0.2 Z0.6

Aunque con cuidado y ajuste, se puede configurar un RepRap con sus ejes en ángulo recto entre sí dentro de la precisión de la máquina, ¿quién quiere molestarse con cuidado y ajuste cuando el problema puede ser resuelto por el software? Esto le dice al software las tangentes de los ángulos entre los ejes de la máquina obtenidos al imprimir y luego medir una pieza de prueba. El parámetro S (100 aquí) es la longitud de un triángulo a lo largo de cada eje en mm. Las figuras X, Y y Z son el número de milímetros del lado corto del triángulo que representa cuán fuera de verdad es un par de ejes. La figura X es el error entre X e Y, la figura Y es el error entre Y y Z, y la figura Z es el error entre X y Z. Los valores positivos indican que el ángulo entre el par de ejes es obtuso, negativo agudo.

M557: Establecer punto de sonda Z

Ejemplo: M557 P1 X30 Y40.5

Establezca los puntos en los que se sondeará la cama para compensar que su plano esté ligeramente fuera de la horizontal. El valor P es el índice del punto (los índices comienzan en 0) y los valores X e Y son la posición para mover la extrusora 0 a la sonda. Una implementación debe permitir un mínimo de tres puntos (P0, P1 y P2). Esto solo registra las coordenadas del punto; en realidad no hace el sondeo. Ver G32.

M558: Establecer tipo de sonda Z

Ejemplo: M558 P0 X1 Y0 Z1

La sonda AZ puede ser un interruptor, un sensor de proximidad IR o algún otro dispositivo. Esto selecciona cuál usar. P0 indica que no hay una sonda Z presente. P1 proporciona una sonda IR no modulada, o cualquier otro tipo de sonda que emule una sonda IR no modulada (la salida de la sonda es una señal analógica que aumenta al disminuir la altura de la boquilla por encima del lecho). Si hay una señal de control en la sonda, se activa cuando el tipo de sonda es P1. P2 especifica una sonda IR modulada, donde la modulación es ordenada directamente por el firmware de la placa principal utilizando la señal de control a la sonda. P3 selecciona una sonda Z alternativa llevando la señal de control a la sonda baja. P4 selecciona un interruptor (en el Duet, este debe estar conectado a los pines del extremo E0).

Los parámetros X, Y y Z especifican si cada eje usa la sonda Z para referencia o no. Si el parámetro no es cero, la sonda Z se usa para dirigir ese eje. si el parámetro es cero, el interruptor de final de carrera para ese eje se usa para el recorrido de referencia. Ver también G31 y G32.

El firmware Duet-dc42 admite un parámetro R adicional, que especifica el canal de modulación. El canal 0 (predeterminado) usa el pin de modulación de sonda Z estándar en Duet 0.6. El canal 1 selecciona el pin de modulación de sonda Z alternativo en el Duet 0.7.

Las versiones de firmware Duet-dc42 1.00e en adelante admiten el parámetro adicional H. Esto especifica la altura de inmersión desde la cual se realiza el sondeo en respuesta a un comando G30 cuando el parámetro P está presente, o un comando G32.

M559: subir archivo de configuración

Ejemplo: M559

Si RepRap lo admite, esto carga un archivo que se ejecuta al reiniciar para configurar la máquina. Este archivo generalmente es un archivo de código G especial. Después de enviar M559, el archivo debe enviarse, terminando con un M29 (qv).

M560: subir archivo de página web

Ejemplo: M560

Para RepRaps que tienen soporte web y que pueden ser manejados por un navegador web, esto carga el archivo que es la página de control para RepRap. Después de enviar M560, el archivo (generalmente un archivo HTML) debe enviarse, terminado por la cadena

<! - ** EoF ** ->

. Claramente, esa cadena no puede existir en el cuerpo del archivo, pero se puede poner al final para facilitar este proceso. Esto no debería ser una restricción demasiado grave …

M561: Establecer transformación de identidad

Ejemplo: M561

Esto cancela cualquier ajuste del plano de la cama como resultado del sondeo (o cualquier otra cosa) y hace que la máquina se mueva en el sistema de coordenadas del usuario.

M562: error de reinicio de temperatura

Ejemplo: M562 P2

Restablezca una falla de temperatura en el calentador / sensor 2. Si RepRap se apagó y bloqueó un calentador porque detectó una falla, esto restablecerá la condición de falla y le permitirá usar el calentador nuevamente. Obviamente para ser utilizado con precaución. Si la falla persiste, se bloqueará nuevamente después de que haya emitido este comando. P0 es la cama; P1 el primer extrusor, y así sucesivamente.

M563: definir una herramienta

Ejemplo: M563 P3 D0: 5: 6 H1: 3

Las herramientas son generalmente (aunque no necesariamente) extrusoras. El campo P especifica el número de herramienta. Los números de herramienta pueden tener cualquier valor entero positivo y 0. El campo D especifica las unidades utilizadas por la herramienta; en este caso, las unidades 0, 5 y 6. La unidad 0 es la primera unidad de la máquina después de las unidades de movimiento (generalmente X, Y y Z). Si no hay campo D, la herramienta no tiene unidades. El campo H especifica los calentadores de la herramienta; en este caso, los calentadores 1 y 3. El calentador 0 suele ser el lecho caliente (si lo hay), por lo que el primer calentador del extrusor suele ser 1. Si no hay campo H, la herramienta no tiene calentadores.

Las herramientas se manejan utilizando múltiples valores en el campo E de los comandos G1, cada uno de los cuales controla la unidad correspondiente en el campo D anterior, de la siguiente manera:

G1 X90.6 Y13.8 E2.24: 2.24: 15.89
G1 X70.6 E0: 0: 42.4

La primera línea se mueve directamente al punto (90.6, 13.8) extruyendo un total de 2.24 mm de filamento de ambas unidades 0 y 5 y 15.98 mm de filamento de la unidad 6.

La segunda línea retrocede 20 mm en X extruyendo 42,4 mm de filamento desde la unidad 6.

Normalmente, un comando M563 es seguido inmediatamente por un comando G10 para establecer las compensaciones y temperaturas de la herramienta.

Está permitido que diferentes herramientas compartan algunas (o todas) de sus unidades y calentadores. Entonces, por ejemplo, puede definir dos herramientas con hardware idéntico, pero que solo funcionan a diferentes temperaturas.

Si utiliza el comando M563 con un valor P para una herramienta que ya se ha definido, esa herramienta se redefine utilizando los nuevos valores que proporcione.

El firmware Duet-dc42 admite una forma adicional del comando M563. El comando:

M563 S1

significa agregar 1 (el valor del parámetro S) a todos los números de herramienta que se encuentran en el resto del flujo de entrada actual (por ejemplo, el archivo actual si el comando se lee desde un archivo en la tarjeta SD), o hasta un nuevo comando M563 de Este formulario se ejecuta. El propósito de esto es proporcionar compatibilidad entre el firmware Duet, en el que los números de herramienta generalmente comienzan en 1, y programas como slic3r que asumen que las herramientas están numeradas desde cero.

M564: ejes límite

Ejemplo: M564 S0

Permitir movimientos fuera del volumen de impresión, o no. Si el parámetro S es 0, puede enviar códigos G para conducir el RepRap fuera de su volumen de trabajo normal, e intentará hacerlo. Cuidado con el usuario … Si establece el parámetro S en 1, RepRap no pensará fuera de la caja. El comportamiento predeterminado es S = 1.

M565: Establecer desplazamiento de sonda Z

Ejemplo: M565 X3 Y4.5 Z-2.37

Ajuste el desplazamiento desde la punta del extrusor hasta la posición de la sonda. Los valores X, Y y Z son el delta entre el extrusor y la posición real de disparo de la sonda. Si el punto de activación de la sonda está debajo del extrusor (típico), el desplazamiento Z será negativo. Esto solo registra el desplazamiento del punto; en realidad no hace el sondeo. Ver G32.

M566: Establecer cambio de velocidad instantáneo permitido

Ejemplo: M566 X20 Y20 Z2 E10

Evite una limitación del algoritmo de algunos firmwares, que no puede calcular los tiempos de paso para un inicio permanente. Teacup Firmware y Smoothieware no tienen esta limitación, por lo que M566 es obsoleto allí.

M566 establece las velocidades en mm / minuto que los ejes pueden hacer desde un inicio permanente. Si un algoritmo de aceleración comienza un movimiento con una velocidad cero en otros firmwares y luego acelera a partir de eso, puede dar problemas cuando se usa la velocidad inicial cero para calcular un paso de tiempo entre pulsos paso a paso al principio: el paso de tiempo termina siendo infinito. Entonces, estos sistemas tienen pequeñas velocidades iniciales para comenzar. Esto los establece.

La variante dc42 de RepRapFirmware no tiene la limitación, sino que utiliza este parámetro para determinar el cambio de velocidad máximo permitido de cada motor en las curvas.

M567: Establecer relaciones de mezcla de herramientas

Ejemplo: M567 P2 E0.1: 0.2: 0.1: 0.6

El ejemplo establece la relación de mezcla para la herramienta 2 (el valor P). Cuando se activa la mezcla (ver M568), solo se deben enviar valores E individuales en un comando G1 (cualquier valor E adicional se ignorará, pero no es ilegal):

G1 X20 E1.3

Esto se moverá a X = 20 extruyendo una longitud total de filamento de 1.3 mm. La primera unidad de la herramienta 2 extruirá 0.1 * 1.3 mm, la segunda 0.2 * 1.3 mm y así sucesivamente. Las proporciones no tienen que sumar 1.0, el cálculo realizado es como se acaba de describir. Pero es mejor si lo hacen.

Ver también M568.

M568: activar / desactivar las relaciones de mezcla de herramientas

Ejemplo: M568 P2 S0

Active / desactive las relaciones de mezcla automáticas para la herramienta 2. Si el parámetro S es 0, la mezcla se desactiva; si no es cero, está activado.

Después de desactivar el comando, las instrucciones G1 deben enviar tantos valores E como la herramienta tenga unidades:

G1 X20 E0.2: 0.4: 0.166: 0.3

El estado apagado es el predeterminado.

M569: establecer valores de dirección del eje

Ejemplo: M569 P0 S1

Establezca el valor de control para el variador especificado por P que lo envía hacia adelante al valor dado en el campo S. Después de enviar el ejemplo, enviar un 1 a X (unidad 0) lo hará avanzar, enviar un 0 lo hará retroceder. Obviamente para ser utilizado con extrema precaución …

M570: establecer el tiempo de espera del calentador

Ejemplo: M570 S120

Después de encender un calentador, espere 120 segundos para que se acerque a la temperatura establecida. Si lleva más tiempo que esto, marque una falla del calentador.

M571: Establecer salida en extrusión

Ejemplo: M571 S0.5

Esto activa una salida cada vez que se realiza la extrusión y la desactiva cuando finaliza la extrusión. La salida podría controlar un ventilador o un agitador o cualquier otra cosa que necesite funcionar justo cuando está ocurriendo la extrusión. El parámetro S establece el valor de PWM en la salida. 0.0 está apagado; 1.0 está completamente encendido.

M572: Establecer o informar la compensación de elasticidad del extrusor

Ejemplo: M572 P3 S0.06

Esto establece el tiempo de compensación en segundos (parámetro S) para la elasticidad del extrusor Bowden para la unidad especificada (parámetro P). Compatible con el firmware Duet-dc42. Tiene un efecto similar al factor EXTRUDER_ADVANCE_K en el firmware de Marlin. Normalmente, la compensación debe aplicarse solo a las unidades de extrusión (unidades 3 y superiores).

M573: Informe calentador PWM

Ejemplo: M573 P1

Esto proporciona un promedio de funcionamiento (usualmente más de cinco segundos) del PWM al calentador especificado por el campo P. Si conoce el voltaje del suministro y la resistencia del calentador, esto le permite calcular la potencia que va al calentador.

M574: configuración de final de carrera establecida

Ejemplo: M574 X1 Y2 Z0 S1

Esto define el tipo de interruptor de fin de carrera o sensor óptico que tiene la impresora para cada eje: 0 = ninguno, 1 = extremo bajo, 2 = extremo alto. El parámetro opcional S define si la entrada de fin de carrera está activa alta (S1, la predeterminada) o baja (S0). Diseñado para su uso con placas que proporcionan una entrada de tope final único para cada eje que puede usarse para un tope final alto o bajo, como el Duet. Compatible con el firmware Duet-dc42. En las impresoras delta, los parámetros XYZ se refieren a las torres y los topes finales normalmente deberían ser de gama alta.

M575: establecer parámetros de comunicación serie

Ejemplo: M575 P1 B57600 S1

Esto establece los parámetros de comunicación del canal de comunicaciones en serie especificado por el parámetro P. P0 especifica la interfaz serial principal (típicamente un puerto USB, o serial-over-USB), mientras que P1 especifica un puerto serial auxiliar (por ejemplo, el puerto usado para conectar un PanelDue). El parámetro B es la velocidad de transmisión requerida (este parámetro generalmente se ignora si el puerto es un verdadero puerto USB). El parámetro S es un mapa de bits de características. El bit más bajo, si se establece, especifica que solo los comandos que incluyen una suma de verificación válida se deben aceptar desde este canal de comunicaciones.

M665: establecer configuración delta

Ejemplo: M660 L250 R160 S200 (Marlin), M660 L250 R160 B80 H200 (Duet-dc42)

Establezca las variables de calibración delta. L = longitud de la barra diagonal, R = radio delta, S = segmentos por segundo, B = radio del lecho de impresión, H = altura de la boquilla sobre el lecho cuando se dirige después de permitir las correcciones del tope final.

No creo que sea una buena idea tener dos implementaciones diferentes para el mismo código G, y también cuestiono el valor práctico de especificar el radio del lecho de impresión al definir una configuración delta, ya que muchas impresoras delta usan una impresión cuadrada o rectangular cama. Entonces, quizás deberíamos apegarnos al comando definido por Marlin como la definición de este comando, y usar un comando diferente o un conjunto de comandos para definir la forma y el tamaño de la cama de impresión. – AndrewBCN ( charla ) 23:10, 31 de enero de 2015 (PST)

M666: Ajuste el ajuste del tope final

Ejemplo M666 X-0.1 Y + 0.2 Z0

Establece ajustes delta finales.

M906: Establecer corrientes del motor

Ejemplo: M906 X300 Y500 Z200 E350

Establece las corrientes para enviar a los motores paso a paso para cada eje. Los valores están en miliamperios.

M909: establecer microstepping

Ejemplo: M909 X3 Y5 Z2 E3

Establezca el valor de microstepping para cada uno de los steppers. En Canjear, esto se implementa como un valor 2 ^, por lo que
M909 X2 establece micropasos en el eje X en 2 ^ 2 = 4,
M909 Y3 establece microstepping en el eje Y en 2 ^ 3 = 8, etc.

M998: solicitud de reenvío de línea

Ejemplo: M998 P34

Solicite un reenvío de la línea 34. En algunas implementaciones, el código de manejo de entrada sobrescribe el código G entrante con esto cuando detecta, por ejemplo, un error de suma de verificación. Luego lo deja al intérprete GCode para solicitar el reenvío.

M999: reiniciar después de ser detenido por error

Ejemplo: M999

G: Lista todos los códigos G

Ejemplo: G

Esto enumera todos los códigos G implementados en el firmware con descripción y lo envía de vuelta al host.
(Nota: esto se ha implementado en Canjear , por lo que es solo una propuesta)

M: Lista todos los códigos M

Ejemplo: M

Esto enumera todos los códigos M implementados en el firmware con descripción y lo envía de vuelta al host.
(Nota: esto se ha implementado en Canjear , por lo que es solo una propuesta)

T: Seleccionar herramienta

Ejemplo: T1

Seleccione la herramienta (o en el extrusor de implementaciones anteriores) número 1 para construir.

La secuencia seguida es:

  1. Configure la herramienta actual a sus temperaturas de espera especificadas por G10 (ver arriba),
  2. Configure la nueva herramienta a sus temperaturas de operación especificadas por G10 y espere a que todas las temperaturas se estabilicen,
  3. Aplique cualquier desplazamiento X, Y, Z para la nueva herramienta especificada por G10,
  4. Usa la nueva herramienta.

Seleccionar una herramienta inexistente (100, por ejemplo) solo hace el Paso 1. anterior. Es decir, deja todas las herramientas en su estado de espera. Por supuesto, puede usar el comando G10 de antemano para establecer la temperatura de espera en cualquier cosa que desee.

Tenga en cuenta que es posible que desee moverse a una posición de estacionamiento antes de ejecutar un comando T para permitir que el nuevo extrusor alcance la temperatura mientras no está en contacto con la impresión. Es aceptable que el firmware aplique un pequeño desplazamiento [por convención (-1 mm x número de herramienta) en Y] a la posición actual cuando se ingresa la secuencia anterior para permitir que los cambios de temperatura surtan efecto justo fuera de la posición de estacionamiento. Cualquier compensación de este tipo debe, por supuesto, deshacerse cuando finalice el procedimiento.

Si el valor Z cambia en los desplazamientos y la herramienta se mueve hacia arriba, entonces el movimiento Z se realiza antes de que X e Y se muevan. Si Z se mueve hacia abajo, X e Y se hacen primero.

Algunas implementaciones (por ejemplo, RepRapFirmware) le permiten especificar macros de código G de cambio de herramienta. Normalmente hay tres especificados (cualquiera de los cuales no puede contener comandos si se desea) que se ejecutan en este orden:

  1. Acciones para hacer con la herramienta anterior antes de su lanzamiento: nombre de macro: tfreeN.g donde N es el número de herramienta;
  2. (Se lanza la herramienta antigua);
  3. Acciones para hacer con la nueva herramienta antes de seleccionarla: nombre de macro: tpreN.g donde N es el número de herramienta;
  4. (Se selecciona una nueva herramienta); y
  5. Acciones para hacer con la nueva herramienta después de seleccionarla: nombre de macro: tpostN.g donde N es el número de herramienta.

Con tales implementaciones no hay que esperar la estabilización de la temperatura. Eso se puede lograr con un M116 en cualquiera de las macros, por supuesto.

Después de un reinicio, las herramientas no comenzarán a calentarse hasta que se seleccionen. Puede ponerlos todos a su temperatura de espera seleccionándolos por turnos, o dejarlos apagados para que solo se enciendan si / cuando los usa por primera vez. Los comandos M0, M1 y M112 los apagan a todos. Por supuesto, puede apagarlos todos con el comando M1 y luego volver a encenderlos. No olvides también encender la cama caliente (si la hay) si usas ese truco.

La numeración de herramientas puede comenzar en 0 o 1, dependiendo de la implementación. Algunas implementaciones (aquellas que usan el comando M563 para definir herramientas) permiten al usuario especificar números de herramientas, por lo que con ellas puede tener las herramientas 17, 99 y 203 si lo desea. Los números negativos no están permitidos.

Códigos de configuración EEPROM propuestos

BREVEMENTE: cada RepRap tiene una serie de parámetros físicos que deben ser persistentes, pero fácilmente configurables, como pasos de extrusión / mm, varios valores máximos, etc. Estos parámetros están actualmente codificados en el firmware, por lo que un usuario tiene que modificar, recompilar y vuelva a actualizar el firmware para cualquier ajuste. Estas configuraciones pueden almacenarse en la EEPROM de MCU y modificarse a través de algunos códigos M. 

M500: almacenar parámetros en EEPROM

Guardar los parámetros actuales en EEPROM. La bifurcación zpl del firmware Duet implementa esto y permite pasar «S1», por lo que los parámetros modificados se pueden guardar automáticamente en EEPROM.

En Canjear, cualquier parámetro establecido a través de códigos G / M que sea diferente de lo que se lee de los archivos de configuración, se almacena de nuevo en la configuración local. Por ejemplo, la configuración de la corriente paso a paso y el microstepping a través de M906 y M907 seguido de M500 actualizarán /etc/redeem/local.cfg.

M501: leer parámetros de EEPROM

Establezca los parámetros activos a los almacenados en la EEPROM. Esto es útil para revertir parámetros después de experimentar con ellos.

M502: vuelve a la «configuración de fábrica» ​​predeterminada.

Este comando restablece todos los parámetros ajustables a sus valores predeterminados, como se establece en el firmware. Esto no restablece ningún parámetro almacenado en la EEPROM, por lo que debe seguirse con M501 si desea hacerlo.

M503: configuración de impresión

Este comando le pide al firmware que responda con la configuración de impresión actual almacenada en EEPROM. La salida de respuesta incluye los comandos del Código G para producir cada configuración. Por ejemplo, los valores de Pasos por unidad se muestran como un comando M92.

Respuestas de la máquina RepRap a la computadora host

Toda la comunicación está en caracteres ASCII imprimibles. Los mensajes enviados de regreso a la computadora host son terminados por una nueva línea y se ven así:

xx [número de línea para reenviar] [T: 93.2 B: 22.9] [C: X: 9.2 Y: 125.4 Z: 3.7 E: 1902.5] [Puede haber alguna depuración u otra información aquí]

xx puede ser uno de:

Okay

rs

!!

ok significa que no se ha detectado ningún error.

rs significa reenviar, y es seguido por el número de línea para reenviar.

!! significa que se ha detectado una falla de hardware. La máquina RepRap se apagará inmediatamente después de enviar este mensaje.

Los valores T: y B: son la temperatura del extrusor seleccionado actualmente y el lecho, respectivamente, y solo se envían en respuesta a M105. Si tales temperaturas no existen (por ejemplo, para una extrusora que funciona a temperatura ambiente y no tiene un sensor ), se devuelve un valor por debajo del cero absoluto (-273 o C).

C: significa que las coordenadas siguen. Esos son los valores X: Y: etc. Estos solo se envían en respuesta a M114 y M117.

La máquina RepRap también puede enviar líneas que se vean así:

// Esta es alguna información de depuración u otra información en una línea por sí sola. Se puede enviar en cualquier momento.

Dichas líneas siempre estarán precedidas por // .

En la última versión de Pronterface y pronto Octoprint un comentario especial del formulario:

// action: comando

se permite enviar desde el firmware, el comando actualmente se puede pausar, reanudar o desconectar, lo que ejecutará esos comandos en el host. Como este también es un comentario, otros hosts simplemente ignorarán estos comandos.

La respuesta más común es simplemente:

Okay

Cuando la máquina arranca, envía la cadena.

comienzo

una vez al host antes de enviar cualquier otra cosa. Esto no debe ser reemplazado o aumentado por números de versión y similares. M115 (ver arriba) los solicita.

Todo esto significa que cada línea enviada por RepRap a la computadora host, excepto la línea de inicio, tiene un prefijo de dos caracteres (uno de ok , rs , !! o // ). La máquina nunca debe enviar una línea sin dicho prefijo.


Excepciones :

1. El firmware Marlin 1.0.0 Gen6 no sigue la regla de dos caracteres. ‘rs’ es en realidad ‘Reenviar’ y ‘!!’ es ‘Error’ Líneas de ejemplo:

  • Error: el número de línea no es la línea actual + 1. Última línea: 7
  • Reenviar: 8
  • Escribir en el archivo: print.gco
  • Terminado de guardar el archivo.
  • Archivo abierto: print.gco Tamaño: 22992
  • Archivo seleccionado

¿Cuándo en el código base se produjo este cambio y qué otros firmwares se ven afectados?

2. El firmware Duet-dc42 responde a algunos comandos con una cadena de respuesta en formato JSON, terminada por una nueva línea. Esto permite que las revisiones de firmware posteriores incluyan información adicional sin molestar a los clientes (p. Ej., Paneles de control con pantalla táctil) que no lo esperan, y que las respuestas se describan por sí mismas para que el cliente no se confunda si las respuestas se retrasan o pierden. Los comandos afectados son:

  • M105 S2
  • M105 S3
  • M20 S2
  • M36

Instalando Octoprint en Linux


OctoPrint es un sofware creado por Gina Häußge y es 100% opensource  con un  interfaz amigable que hace de servidor  de impresion 3D  permitiendo controlar en la practica cualquier impresora 3D a distancia.

Gracias a este sw  podríamos dejar nuestra impresora imprimiendo durante horas mientras la controlamos desde cualquier parte del mundo ( se puede empezar, parar y pausar impresiones en tiempo real) o la monitorizamos gracias a que podemos conectarle una webcam y hacer streaming de las impresiones e incluso timelapses.

Otras utilidad  sin duda  interesante es subir o visualizar nuestros GCODES e incluso generarlos !las posibildades son  casi infinitas!.

Este sw esta  en constante desarrollo y mantiene una gran comunidad en Github que comparte e innova en sus nuevas implementaciones de acorde a las necesidade de cada usuario,

Sin duda la forma más sencilla de instalar OctoPrint es usando una  Raspberry   o a orangePi como vimos en este port,  R  pero también es  posible instalarlo en cualquier ordenador  con windows   y   como vamos a ver con Linux

Las instrucciones de configuración genéricas se reducen a Instalación de Python incluyendo pip y virtualenv,  pero tenga en cuenta:

      • Si bien OctoPrint es compatible con Python 3.7+ a partir de la versión 1.4.0, muchos de los complementos disponibles siguen siendo solo validos para Python 2.
      • Si desea hacer uso de complementos del repositorio de complementos, por ahora aún debe instalar OctoPrint en Python 2.7. Tenga en cuenta que la migración a Python 3 en una fecha posterior se realiza fácilmente.

En resumen estos son los pasos :

      • Crear un entorno virtual en algún lugar:
virtualenv OctoPrint
      • Instalación de OctoPrint en ese entorno virtual:
OctoPrint / bin / pip install OctoPrint
      • Luego, OctoPrint se puede iniciar a través de ./OctoPrint/bin/octoprint serve o con una ruta absoluta / ruta / a / OctoPrint / bin / octoprint serve
      • Las instrucciones de configuración más específicas para los entornos de tiempo de ejecución más comunes se pueden encontrar a continuación.

 

Configuración básica

Para el paquete básico, necesitará Python 2.7 (debe instalarse de manera predeterminada) y pip.

Las dependencias de OctoPrint serán instaladas por pip:

cd ~
sudo apt update
sudo apt install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential
mkdir OctoPrint && cd OctoPrint
virtualenv venv
source venv/bin/activate
pip install pip --upgrade
pip install octoprint

Si esto instala una versión anterior de OctoPrint, pip probablemente todavía tenga algo en caché. En ese caso, agregue –no-cache-dir al comando de instalación, p.

pip install --no-cache-dir octoprint

Para hacer esto permanente, limpie el caché de pip:

rm -r ~ / .cache / pip

Es posible que deba agregar el usuario pi al grupo de marcado y tty para que el usuario pueda acceder a los puertos seriales:

sudo usermod -a -G tty usuario
sudo usermod -a -G dialout usuario

Entonces debería poder iniciar el servidor OctoPrint:

~ / OctoPrint / venv / bin / octoprint serve

Lo cual  responderá  algo como esto:

octoprint serve
2020-04-21 16:30:41,253 - octoprint.startup - INFO - ******************************************************************************
2020-04-21 16:30:41,254 - octoprint.startup - INFO - Starting OctoPrint 1.4.0
2020-04-21 16:30:41,254 - octoprint.startup - INFO - ******************************************************************************
2020-04-21 16:30:41,275 - octoprint.plugin.core - INFO - Loading plugins from /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins, /home/soloelectronicos/.octoprint/plugins and installed plugin packages...
2020-04-21 16:30:41,799 - octoprint.plugin.core - INFO - Plugin Pi Support Plugin did not pass check, not loading.
2020-04-21 16:30:41,869 - octoprint.plugins.octoprint.plugins.discovery - INFO - pybonjour is not installed, Zeroconf Discovery won't be available
2020-04-21 16:30:41,877 - octoprint.plugin.core - INFO - Found 14 plugin(s) providing 14 mixin implementations, 25 hook handlers
2020-04-21 16:30:41,911 - octoprint.server.heartbeat - INFO - Starting server heartbeat, 900.0s interval
2020-04-21 16:30:41,941 - octoprint.server - INFO - Intermediary server started
2020-04-21 16:30:41,941 - octoprint.plugin.core - INFO - Loading plugins from /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins, /home/soloelectronicos/.octoprint/plugins and installed plugin packages...
2020-04-21 16:30:41,950 - octoprint.plugin.core - INFO - Plugin Pi Support Plugin did not pass check, not loading.
2020-04-21 16:30:41,988 - octoprint.plugin.core - INFO - Found 14 plugin(s) providing 14 mixin implementations, 25 hook handlers
2020-04-21 16:30:41,991 - octoprint.printer.profile - ERROR - Profile _default does not exist, creating _default again and setting it as default
2020-04-21 16:30:42,019 - octoprint.filemanager.storage - INFO - Initializing the file metadata for /home/soloelectronicos/.octoprint/uploads...
2020-04-21 16:30:42,019 - octoprint.filemanager.storage - INFO - ... file metadata for /home/soloelectronicos/.octoprint/uploads initialized successfully.
2020-04-21 16:30:42,022 - octoprint.server - INFO - Added new permission from plugin action_command_prompt: PLUGIN_ACTION_COMMAND_PROMPT_INTERACT (needs: u"Need(method='role', value=u'plugin_action_command_prompt_interact')")
2020-04-21 16:30:42,022 - octoprint.server - INFO - Added new permission from plugin announcements: PLUGIN_ANNOUNCEMENTS_READ (needs: u"Need(method='role', value=u'plugin_announcements_read')")
2020-04-21 16:30:42,022 - octoprint.server - INFO - Added new permission from plugin announcements: PLUGIN_ANNOUNCEMENTS_MANAGE (needs: u"Need(method='role', value=u'plugin_announcements_manage'), Need(method='role', value=u'plugin_announcements_read')")
2020-04-21 16:30:42,023 - octoprint.server - INFO - Added new permission from plugin appkeys: PLUGIN_APPKEYS_ADMIN (needs: u"Need(method='role', value=u'plugin_appkeys_admin')")
2020-04-21 16:30:42,023 - octoprint.server - INFO - Added new permission from plugin backup: PLUGIN_BACKUP_ACCESS (needs: u"Need(method='role', value=u'plugin_backup_access')")
2020-04-21 16:30:42,024 - octoprint.server - INFO - Added new permission from plugin logging: PLUGIN_LOGGING_MANAGE (needs: u"Need(method='role', value=u'plugin_logging_manage')")
2020-04-21 16:30:42,024 - octoprint.server - INFO - Added new permission from plugin pluginmanager: PLUGIN_PLUGINMANAGER_MANAGE (needs: u"Need(method='role', value=u'plugin_pluginmanager_manage')")
2020-04-21 16:30:42,025 - octoprint.server - INFO - Added new permission from plugin pluginmanager: PLUGIN_PLUGINMANAGER_INSTALL (needs: u"Need(method='role', value=u'plugin_pluginmanager_install'), Need(method='role', value=u'plugin_pluginmanager_manage')")
2020-04-21 16:30:42,025 - octoprint.server - INFO - Added new permission from plugin printer_safety_check: PLUGIN_PRINTER_SAFETY_CHECK_DISPLAY (needs: u"Need(method='role', value=u'plugin_printer_safety_check_display')")
2020-04-21 16:30:42,026 - octoprint.server - INFO - Added new permission from plugin softwareupdate: PLUGIN_SOFTWAREUPDATE_CHECK (needs: u"Need(method='role', value=u'plugin_softwareupdate_check')")
2020-04-21 16:30:42,027 - octoprint.server - INFO - Added new permission from plugin softwareupdate: PLUGIN_SOFTWAREUPDATE_UPDATE (needs: u"Need(method='role', value=u'plugin_softwareupdate_update')")
2020-04-21 16:30:42,351 - octoprint.util.pip - INFO - Using "/home/soloelectronicos/OctoPrint/venv/bin/python2 -m pip" as command to invoke pip
2020-04-21 16:30:42,618 - octoprint.util.pip - INFO - Version of pip is 20.0.2
2020-04-21 16:30:42,618 - octoprint.util.pip - INFO - pip installs to /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages (writable -> yes), --user flag needed -> no, virtual env -> yes
2020-04-21 16:30:42,619 - octoprint.util.pip - INFO - ==> pip ok -> yes
2020-04-21 16:30:42,621 - octoprint.plugin.core - INFO - Initialized 14 plugin implementation(s)
2020-04-21 16:30:42,643 - octoprint.plugin.core - INFO - 14 plugin(s) registered with the system:
|  Action Command Prompt Support (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/action_command_prompt
|  Announcement Plugin (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/announcements
|  Anonymous Usage Tracking (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/tracking
|  Application Keys Plugin (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/appkeys
|  Backup & Restore (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/backup
|  Core Wizard (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/corewizard
|  Discovery (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/discovery
|  Error Tracking (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/errortracking
|  Logging (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/logging
|  Login UI (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/loginui
|  Plugin Manager (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/pluginmanager
|  Printer Safety Check (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/printer_safety_check
|  Software Update (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/softwareupdate
|  Virtual Printer (bundled) = /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/octoprint/plugins/virtual_printer
Prefix legend: ! = disabled, # = blacklisted, * = incompatible
2020-04-21 16:30:42,687 - octoprint.environment - INFO - Detected environment is Python 2.7.17 under Linux (linux2). Details:
|  hardware:
|      cores: 2
|      freq: 2201.0
|      ram: 2081136640
|  os:
|      id: linux
|      platform: linux2
|  python:
|      pip: 20.0.2
|      version: 2.7.17
|      virtualenv: /home/soloelectronicos/OctoPrint/venv
2020-04-21 16:30:42,694 - octoprint.server - INFO - Reset webasset folder /home/soloelectronicos/.octoprint/generated/webassets...
2020-04-21 16:30:42,695 - octoprint.server - INFO - Reset webasset folder /home/soloelectronicos/.octoprint/generated/.webassets-cache...
2020-04-21 16:30:42,956 - octoprint.server - INFO - Shutting down intermediary server...
2020-04-21 16:30:43,444 - octoprint.server - INFO - Intermediary server shut down
2020-04-21 16:30:43,448 - octoprint.events - INFO - Processing startup event, this is our first event
2020-04-21 16:30:43,450 - octoprint.events - INFO - Adding 0 events to queue that were held back before startup event
2020-04-21 16:30:43,452 - octoprint.filemanager - INFO - Adding backlog items from all storage types to analysis queue...
2020-04-21 16:30:43,456 - octoprint.server.util.watchdog - INFO - Running initial scan on watched folder...
2020-04-21 16:30:43,456 - octoprint.filemanager - INFO - Added 0 items from storage type "local" to analysis queue
2020-04-21 16:30:43,459 - octoprint.server.util.watchdog - INFO - ... initial scan done.
2020-04-21 16:30:43,465 - octoprint.server - INFO - Listening on http://0.0.0.0:5000 and http://[::]:5000
2020-04-21 16:30:43,465 - octoprint.plugins.discovery - INFO - Registered OctoPrint instance on ubuntusoloelectronicos for SSDP
2020-04-21 16:30:43,762 - octoprint.util.pip - INFO - Using "/home/soloelectronicos/OctoPrint/venv/bin/python2 -m pip" as command to invoke pip
2020-04-21 16:30:43,763 - octoprint.util.pip - INFO - pip installs to /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages (writable -> yes), --user flag needed -> no, virtual env -> yes
2020-04-21 16:30:43,763 - octoprint.util.pip - INFO - ==> pip ok -> yes
2020-04-21 16:30:43,800 - octoprint.plugins.announcements - INFO - Loaded channel _important from https://octoprint.org/feeds/important.xml in 0.31s
2020-04-21 16:30:43,866 - octoprint.plugins.pluginmanager - INFO - Loaded plugin repository data from https://plugins.octoprint.org/plugins.json
2020-04-21 16:30:44,163 - octoprint.plugins.announcements - INFO - Loaded channel _releases from https://octoprint.org/feeds/releases.xml in 0.3s
2020-04-21 16:30:44,583 - octoprint.util.pip - INFO - Using "/home/soloelectronicos/OctoPrint/venv/bin/python2 -m pip" as command to invoke pip
2020-04-21 16:30:44,627 - octoprint.plugins.pluginmanager - INFO - Loaded plugin notices data from https://plugins.octoprint.org/notices.json
2020-04-21 16:30:44,846 - octoprint.plugins.announcements - INFO - Loaded channel _blog from https://octoprint.org/feeds/octoblog.xml in 0.28s
2020-04-21 16:30:45,653 - octoprint.util.pip - INFO - pip installs to /home/soloelectronicos/OctoPrint/venv/lib/python2.7/site-packages/ (writable -> yes), --user flag needed -> no, virtual env -> yes
2020-04-21 16:30:45,653 - octoprint.util.pip - INFO - ==> pip ok -> yes
2020-04-21 16:30:45,660 - octoprint.plugins.softwareupdate - INFO - Saved version cache to disk
2020-04-21 16:30:46,286 - octoprint.plugins.announcements - INFO - Loaded channel _plugins from https://plugins.octoprint.org/feed.xml in 1.4s
2020-04-21 16:30:46,624 - octoprint.plugins.announcements - INFO - Loaded channel _octopi from https://octoprint.org/feeds/octopi.xml in 0.29s
2020-04-21 16:45:41,912 - octoprint.server.heartbeat - INFO - Server heartbeat <3
2020-04-21 17:00:41,913 - octoprint.server.heartbeat - INFO - Server heartbeat <3
2020-04-21 17:15:41,915 - octoprint.server.heartbeat - INFO - Server heartbeat <3
2020-04-21 17:30:41,916 - octoprint.server.heartbeat - INFO - Server heartbeat <3
2020-04-21 17:45:41,918 - octoprint.server.heartbeat - INFO - Server heartbeat <3
2020-04-21 17:46:03,908 - octoprint.server.util.flask.PreemptiveCache - INFO - Adding entry for / and {'query_string': u'l10n=en', 'path': u'/', u'_count': 1, u'_timestamp': 1587483963.908261, 'base_url': u'http://127.0.0.1:5000/'}
2020-04-21 17:46:07,147 - octoprint.server.util.sockjs - INFO - New connection from client: 127.0.0.1
2020-04-21 17:46:08,325 - tornado.access - WARNING - 403 GET /api/printerprofiles/_default (127.0.0.1) 5.30ms

 

 

Log de ejecucion :


[email protected]:~$ sudo apt install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential
[sudo] contraseña para soloelectronicos:
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias
Leyendo la información de estado... Hecho
El paquete indicado a continuación se instaló de forma automática y ya no es necesario.
libllvm6.0
Utilice «sudo apt autoremove» para eliminarlo.
Se instalarán los siguientes paquetes adicionales:
dpkg-dev fakeroot git-man libalgorithm-diff-perl libalgorithm-diff-xs-perl
libalgorithm-merge-perl liberror-perl libfakeroot libpython-all-dev
libpython-dev libpython2.7-dev make python-all python-all-dev python-crypto
python-keyring python-keyrings.alt python-pip-whl python-secretstorage
python-wheel python-xdg python2.7-dev python3-virtualenv virtualenv
Paquetes sugeridos:
debian-keyring git-daemon-run | git-daemon-sysvinit git-doc git-el git-email
git-gui gitk gitweb git-cvs git-mediawiki git-svn libyaml-doc make-doc
python-crypto-doc libkf5wallet-bin gir1.2-gnomekeyring-1.0 python-fs
python-gdata python-keyczar python-secretstorage-doc python-setuptools-doc
Se instalarán los siguientes paquetes NUEVOS:
build-essential dpkg-dev fakeroot git git-man libalgorithm-diff-perl
libalgorithm-diff-xs-perl libalgorithm-merge-perl liberror-perl libfakeroot
libpython-all-dev libpython-dev libpython2.7-dev libyaml-dev make python-all
python-all-dev python-crypto python-dev python-keyring python-keyrings.alt
python-pip python-pip-whl python-secretstorage python-setuptools
python-virtualenv python-wheel python-xdg python2.7-dev python3-virtualenv
virtualenv
0 actualizados, 31 nuevos se instalarán, 0 para eliminar y 8 no actualizados.
Se necesita descargar 36,9 MB de archivos.
Se utilizarán 85,4 MB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n] S
Des:1 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 make amd64 4.1-9.1ubuntu1 [154 kB]
Des:2 http://es.archive.ubuntu.com/ubuntu bionic-updates/main amd64 dpkg-dev all 1.19.0.5ubuntu2.3 [607 kB]
Des:3 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 build-essential amd64 12.4ubuntu1 [4.758 B]
Des:4 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 libfakeroot amd64 1.22-2ubuntu1 [25,9 kB]
Des:5 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 fakeroot amd64 1.22-2ubuntu1 [62,3 kB]
Des:6 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 liberror-perl all 0.17025-1 [22,8 kB]
Des:7 http://es.archive.ubuntu.com/ubuntu bionic-updates/main amd64 git-man all 1:2.17.1-1ubuntu0.7 [804 kB]
Des:8 http://es.archive.ubuntu.com/ubuntu bionic-updates/main amd64 git amd64 1:2.17.1-1ubuntu0.7 [3.915 kB]
Des:9 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 libalgorithm-diff-perl all 1.19.03-1 [47,6 kB]
Des:10 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 libalgorithm-diff-xs-perl amd64 0.04-5 [11,1 kB]
Des:11 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 libalgorithm-merge-perl all 0.08-3 [12,0 kB]
Des:12 http://es.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libpython2.7-dev amd64 2.7.17-1~18.04 [28,3 MB]
Des:13 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 libpython-dev amd64 2.7.15~rc1-1 [7.684 B]
Des:14 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 libpython-all-dev amd64 2.7.15~rc1-1 [1.092 B]
Des:15 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 python-all amd64 2.7.15~rc1-1 [1.076 B]
Des:16 http://es.archive.ubuntu.com/ubuntu bionic-updates/main amd64 python2.7-dev amd64 2.7.17-1~18.04 [277 kB]
Des:17 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 python-dev amd64 2.7.15~rc1-1 [1.256 B]
Des:18 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 python-all-dev amd64 2.7.15~rc1-1 [1.100 B]
Des:19 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 python-crypto amd64 2.6.1-8ubuntu2 [244 kB]
Des:20 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 python-secretstorage all 2.3.1-2 [11,8 kB]
Des:21 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 python-keyring all 10.6.0-1 [30,6 kB]
Des:22 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 python-keyrings.alt all 3.0-1 [16,7 kB]
Des:23 http://es.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 python-pip-whl all 9.0.1-2.3~ubuntu1.18.04.1 [1.653 kB]
Des:24 http://es.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 python-pip all 9.0.1-2.3~ubuntu1.18.04.1 [151 kB]
Des:25 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 python-setuptools all 39.0.1-2 [329 kB]
Des:26 http://es.archive.ubuntu.com/ubuntu bionic/universe amd64 python-virtualenv all 15.1.0+ds-1.1 [46,8 kB]
Des:27 http://es.archive.ubuntu.com/ubuntu bionic/universe amd64 python-wheel all 0.30.0-0.2 [36,4 kB]
Des:28 http://es.archive.ubuntu.com/ubuntu bionic/universe amd64 python-xdg all 0.25-4ubuntu1 [31,3 kB]
Des:29 http://es.archive.ubuntu.com/ubuntu bionic/universe amd64 python3-virtualenv all 15.1.0+ds-1.1 [43,4 kB]
Des:30 http://es.archive.ubuntu.com/ubuntu bionic/universe amd64 virtualenv all 15.1.0+ds-1.1 [4.476 B]
Des:31 http://es.archive.ubuntu.com/ubuntu bionic/main amd64 libyaml-dev amd64 0.1.7-2ubuntu3 [55,7 kB]
Descargados 36,9 MB en 6s (5.898 kB/s)
Extrayendo plantillas para los paquetes: 100%
Seleccionando el paquete make previamente no seleccionado.
(Leyendo la base de datos ... 163591 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar .../00-make_4.1-9.1ubuntu1_amd64.deb ...
Desempaquetando make (4.1-9.1ubuntu1) ...
Seleccionando el paquete dpkg-dev previamente no seleccionado.
Preparando para desempaquetar .../01-dpkg-dev_1.19.0.5ubuntu2.3_all.deb ...
Desempaquetando dpkg-dev (1.19.0.5ubuntu2.3) ...
Seleccionando el paquete build-essential previamente no seleccionado.
Preparando para desempaquetar .../02-build-essential_12.4ubuntu1_amd64.deb ...
Desempaquetando build-essential (12.4ubuntu1) ...
Seleccionando el paquete libfakeroot:amd64 previamente no seleccionado.
Preparando para desempaquetar .../03-libfakeroot_1.22-2ubuntu1_amd64.deb ...
Desempaquetando libfakeroot:amd64 (1.22-2ubuntu1) ...
Seleccionando el paquete fakeroot previamente no seleccionado.
Preparando para desempaquetar .../04-fakeroot_1.22-2ubuntu1_amd64.deb ...
Desempaquetando fakeroot (1.22-2ubuntu1) ...
Seleccionando el paquete liberror-perl previamente no seleccionado.
Preparando para desempaquetar .../05-liberror-perl_0.17025-1_all.deb ...
Desempaquetando liberror-perl (0.17025-1) ...
Seleccionando el paquete git-man previamente no seleccionado.
Preparando para desempaquetar .../06-git-man_1%3a2.17.1-1ubuntu0.7_all.deb ...
Desempaquetando git-man (1:2.17.1-1ubuntu0.7) ...
Seleccionando el paquete git previamente no seleccionado.
Preparando para desempaquetar .../07-git_1%3a2.17.1-1ubuntu0.7_amd64.deb ...
Desempaquetando git (1:2.17.1-1ubuntu0.7) ...
Seleccionando el paquete libalgorithm-diff-perl previamente no seleccionado.
Preparando para desempaquetar .../08-libalgorithm-diff-perl_1.19.03-1_all.deb ...
Desempaquetando libalgorithm-diff-perl (1.19.03-1) ...
Seleccionando el paquete libalgorithm-diff-xs-perl previamente no seleccionado.
Preparando para desempaquetar .../09-libalgorithm-diff-xs-perl_0.04-5_amd64.deb ...
Desempaquetando libalgorithm-diff-xs-perl (0.04-5) ...
Seleccionando el paquete libalgorithm-merge-perl previamente no seleccionado.
Preparando para desempaquetar .../10-libalgorithm-merge-perl_0.08-3_all.deb ...
Desempaquetando libalgorithm-merge-perl (0.08-3) ...
Seleccionando el paquete libpython2.7-dev:amd64 previamente no seleccionado.
Preparando para desempaquetar .../11-libpython2.7-dev_2.7.17-1~18.04_amd64.deb ...
Desempaquetando libpython2.7-dev:amd64 (2.7.17-1~18.04) ...
Seleccionando el paquete libpython-dev:amd64 previamente no seleccionado.
Preparando para desempaquetar .../12-libpython-dev_2.7.15~rc1-1_amd64.deb ...
Desempaquetando libpython-dev:amd64 (2.7.15~rc1-1) ...
Seleccionando el paquete libpython-all-dev:amd64 previamente no seleccionado.
Preparando para desempaquetar .../13-libpython-all-dev_2.7.15~rc1-1_amd64.deb ...
Desempaquetando libpython-all-dev:amd64 (2.7.15~rc1-1) ...
Seleccionando el paquete python-all previamente no seleccionado.
Preparando para desempaquetar .../14-python-all_2.7.15~rc1-1_amd64.deb ...
Desempaquetando python-all (2.7.15~rc1-1) ...
Seleccionando el paquete python2.7-dev previamente no seleccionado.
Preparando para desempaquetar .../15-python2.7-dev_2.7.17-1~18.04_amd64.deb ...
Desempaquetando python2.7-dev (2.7.17-1~18.04) ...
Seleccionando el paquete python-dev previamente no seleccionado.
Preparando para desempaquetar .../16-python-dev_2.7.15~rc1-1_amd64.deb ...
Desempaquetando python-dev (2.7.15~rc1-1) ...
Seleccionando el paquete python-all-dev previamente no seleccionado.
Preparando para desempaquetar .../17-python-all-dev_2.7.15~rc1-1_amd64.deb ...
Desempaquetando python-all-dev (2.7.15~rc1-1) ...
Seleccionando el paquete python-crypto previamente no seleccionado.
Preparando para desempaquetar .../18-python-crypto_2.6.1-8ubuntu2_amd64.deb ...
Desempaquetando python-crypto (2.6.1-8ubuntu2) ...
Seleccionando el paquete python-secretstorage previamente no seleccionado.
Preparando para desempaquetar .../19-python-secretstorage_2.3.1-2_all.deb ...
Desempaquetando python-secretstorage (2.3.1-2) ...
Seleccionando el paquete python-keyring previamente no seleccionado.
Preparando para desempaquetar .../20-python-keyring_10.6.0-1_all.deb ...
Desempaquetando python-keyring (10.6.0-1) ...
Seleccionando el paquete python-keyrings.alt previamente no seleccionado.
Preparando para desempaquetar .../21-python-keyrings.alt_3.0-1_all.deb ...
Desempaquetando python-keyrings.alt (3.0-1) ...
Seleccionando el paquete python-pip-whl previamente no seleccionado.
Preparando para desempaquetar .../22-python-pip-whl_9.0.1-2.3~ubuntu1.18.04.1_all.deb ...
Desempaquetando python-pip-whl (9.0.1-2.3~ubuntu1.18.04.1) ...
Seleccionando el paquete python-pip previamente no seleccionado.
Preparando para desempaquetar .../23-python-pip_9.0.1-2.3~ubuntu1.18.04.1_all.deb ...
Desempaquetando python-pip (9.0.1-2.3~ubuntu1.18.04.1) ...
Seleccionando el paquete python-setuptools previamente no seleccionado.
Preparando para desempaquetar .../24-python-setuptools_39.0.1-2_all.deb ...
Desempaquetando python-setuptools (39.0.1-2) ...
Seleccionando el paquete python-virtualenv previamente no seleccionado.
Preparando para desempaquetar .../25-python-virtualenv_15.1.0+ds-1.1_all.deb ...
Desempaquetando python-virtualenv (15.1.0+ds-1.1) ...
Seleccionando el paquete python-wheel previamente no seleccionado.
Preparando para desempaquetar .../26-python-wheel_0.30.0-0.2_all.deb ...
Desempaquetando python-wheel (0.30.0-0.2) ...
Seleccionando el paquete python-xdg previamente no seleccionado.
Preparando para desempaquetar .../27-python-xdg_0.25-4ubuntu1_all.deb ...
Desempaquetando python-xdg (0.25-4ubuntu1) ...
Seleccionando el paquete python3-virtualenv previamente no seleccionado.
Preparando para desempaquetar .../28-python3-virtualenv_15.1.0+ds-1.1_all.deb ...
Desempaquetando python3-virtualenv (15.1.0+ds-1.1) ...
Seleccionando el paquete virtualenv previamente no seleccionado.
Preparando para desempaquetar .../29-virtualenv_15.1.0+ds-1.1_all.deb ...
Desempaquetando virtualenv (15.1.0+ds-1.1) ...
Seleccionando el paquete libyaml-dev:amd64 previamente no seleccionado.
Preparando para desempaquetar .../30-libyaml-dev_0.1.7-2ubuntu3_amd64.deb ...
Desempaquetando libyaml-dev:amd64 (0.1.7-2ubuntu3) ...
Configurando python-secretstorage (2.3.1-2) ...
Configurando python-pip-whl (9.0.1-2.3~ubuntu1.18.04.1) ...
Configurando python-setuptools (39.0.1-2) ...
Configurando git-man (1:2.17.1-1ubuntu0.7) ...
Configurando make (4.1-9.1ubuntu1) ...
Configurando python-crypto (2.6.1-8ubuntu2) ...
Configurando python-keyring (10.6.0-1) ...
Configurando liberror-perl (0.17025-1) ...
Configurando python-wheel (0.30.0-0.2) ...
Configurando libyaml-dev:amd64 (0.1.7-2ubuntu3) ...
Configurando python-keyrings.alt (3.0-1) ...
Configurando dpkg-dev (1.19.0.5ubuntu2.3) ...
Configurando python3-virtualenv (15.1.0+ds-1.1) ...
Configurando libfakeroot:amd64 (1.22-2ubuntu1) ...
Configurando python-virtualenv (15.1.0+ds-1.1) ...
Configurando libalgorithm-diff-perl (1.19.03-1) ...
Configurando libpython2.7-dev:amd64 (2.7.17-1~18.04) ...
Configurando python-pip (9.0.1-2.3~ubuntu1.18.04.1) ...
Configurando virtualenv (15.1.0+ds-1.1) ...
Configurando python2.7-dev (2.7.17-1~18.04) ...
Configurando python-all (2.7.15~rc1-1) ...
Configurando git (1:2.17.1-1ubuntu0.7) ...
Configurando python-xdg (0.25-4ubuntu1) ...
Configurando libpython-dev:amd64 (2.7.15~rc1-1) ...
Configurando build-essential (12.4ubuntu1) ...
Configurando python-dev (2.7.15~rc1-1) ...
Configurando libpython-all-dev:amd64 (2.7.15~rc1-1) ...
Configurando fakeroot (1.22-2ubuntu1) ...
update-alternatives: utilizando /usr/bin/fakeroot-sysv para proveer /usr/bin/fakeroot (fakeroot) en modo automático
Configurando libalgorithm-merge-perl (0.08-3) ...
Configurando libalgorithm-diff-xs-perl (0.04-5) ...
Configurando python-all-dev (2.7.15~rc1-1) ...
Procesando disparadores para libc-bin (2.27-3ubuntu1) ...
Procesando disparadores para man-db (2.8.3-2ubuntu0.1) ...
[email protected]:~$ mkdir OctoPrint && cd OctoPrint
[email protected]:~/OctoPrint$ virtualenv venv
Running virtualenv with interpreter /usr/bin/python2
New python executable in /home/soloelectronicos/OctoPrint/venv/bin/python2
Also creating executable in /home/soloelectronicos/OctoPrint/venv/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
[email protected]:~/OctoPrint$ source venv/bin/activate
(venv) [email protected]:~/OctoPrint$ pip install pip --upgrade
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
(venv) [email protected]:~/OctoPrint$ pip install octoprint
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Collecting octoprint
Downloading OctoPrint-1.4.0-py2.py3-none-any.whl (3.3 MB)
|████████████████████████████████| 3.3 MB 1.6 MB/s
Collecting websocket-client<0.57,>=0.56
Downloading websocket_client-0.56.0-py2.py3-none-any.whl (200 kB)
|████████████████████████████████| 200 kB 5.8 MB/s
Collecting pylru<1.3,>=1.2
Downloading pylru-1.2.0.tar.gz (18 kB)
Collecting psutil<5.7,>=5.6.5
Downloading psutil-5.6.7.tar.gz (448 kB)
|████████████████████████████████| 448 kB 3.8 MB/s
Collecting sarge==0.1.5post0
Downloading sarge-0.1.5.post0.tar.gz (17 kB)
Collecting flask<0.13,>=0.12
Downloading Flask-0.12.5-py2.py3-none-any.whl (81 kB)
|████████████████████████████████| 81 kB 1.6 MB/s
Collecting Flask-Babel<0.13,>=0.12
Downloading Flask-Babel-0.12.2.tar.gz (44 kB)
|████████████████████████████████| 44 kB 511 kB/s
Collecting werkzeug<0.17,>=0.16
Downloading Werkzeug-0.16.1-py2.py3-none-any.whl (327 kB)
|████████████████████████████████| 327 kB 5.2 MB/s
Collecting tornado==4.5.3
Downloading tornado-4.5.3.tar.gz (484 kB)
|████████████████████████████████| 484 kB 5.3 MB/s
Collecting frozendict<1.3,>=1.2
Downloading frozendict-1.2.tar.gz (2.6 kB)
Collecting wrapt<1.12,>=1.11.2
Downloading wrapt-1.11.2.tar.gz (27 kB)
Collecting monotonic<1.6,>=1.5; python_version < "3"
Downloading monotonic-1.5-py2.py3-none-any.whl (5.3 kB)
Collecting PyYAML<6,>=5.1
Downloading PyYAML-5.3.1.tar.gz (269 kB)
|████████████████████████████████| 269 kB 5.2 MB/s
Collecting netifaces<0.11,>=0.10.9
Downloading netifaces-0.10.9-cp27-cp27mu-manylinux1_x86_64.whl (31 kB)
Collecting semantic-version<2.9,>=2.8
Downloading semantic_version-2.8.4-py2.py3-none-any.whl (15 kB)
Collecting scandir<1.11,>=1.10; python_version < "3"
Downloading scandir-1.10.0.tar.gz (33 kB)
Collecting chainmap<1.1,>=1.0.3; python_version < "3"
Downloading chainmap-1.0.3.tar.gz (6.3 kB)
Collecting Click<8,>=7
Downloading click-7.1.1-py2.py3-none-any.whl (82 kB)
|████████████████████████████████| 82 kB 275 kB/s
Collecting awesome-slugify<1.7,>=1.6.5
Downloading awesome-slugify-1.6.5.tar.gz (8.4 kB)
Collecting pkginfo<1.6,>=1.5.0.1
Downloading pkginfo-1.5.0.1-py2.py3-none-any.whl (25 kB)
Collecting Flask-Login<0.5,>=0.4.1
Downloading Flask-Login-0.4.1.tar.gz (14 kB)
Collecting Jinja2<2.9,>=2.8.1
Downloading Jinja2-2.8.1-py2.py3-none-any.whl (264 kB)
|████████████████████████████████| 264 kB 9.1 MB/s
Collecting markdown<3.2,>=3.1
Downloading Markdown-3.1.1-py2.py3-none-any.whl (87 kB)
|████████████████████████████████| 87 kB 1.3 MB/s
Collecting cachelib<0.2,>=0.1
Downloading cachelib-0.1.tar.gz (9.8 kB)
Collecting requests<3,>=2.22.0
Downloading requests-2.23.0-py2.py3-none-any.whl (58 kB)
|████████████████████████████████| 58 kB 1.4 MB/s
Collecting Flask-Assets<0.13,>=0.12
Downloading Flask-Assets-0.12.tar.gz (22 kB)
Collecting watchdog<0.10,>=0.9.0
Downloading watchdog-0.9.0.tar.gz (85 kB)
|████████████████████████████████| 85 kB 909 kB/s
Collecting netaddr<0.8,>=0.7.19
Downloading netaddr-0.7.19-py2.py3-none-any.whl (1.6 MB)
|████████████████████████████████| 1.6 MB 5.9 MB/s
Collecting feedparser<5.3,>=5.2.1
Downloading feedparser-5.2.1.tar.bz2 (192 kB)
|████████████████████████████████| 192 kB 6.7 MB/s
Collecting futures<3.4,>=3.3; python_version < "3"
Downloading futures-3.3.0-py2-none-any.whl (16 kB)
Collecting future<0.19,>=0.18.2
Downloading future-0.18.2.tar.gz (829 kB)
|████████████████████████████████| 829 kB 4.9 MB/s
Collecting typing<4,>=3.7.4.1; python_version < "3"
Downloading typing-3.7.4.1-py2-none-any.whl (26 kB)
Collecting rsa<5,>=4.0
Downloading rsa-4.0-py2.py3-none-any.whl (38 kB)
Collecting sentry-sdk==0.13.2
Downloading sentry_sdk-0.13.2-py2.py3-none-any.whl (91 kB)
|████████████████████████████████| 91 kB 2.0 MB/s
Collecting regex!=2018.11.6
Downloading regex-2020.4.4.tar.gz (695 kB)
|████████████████████████████████| 695 kB 4.4 MB/s
Collecting filetype<2,>=1.0.5
Downloading filetype-1.0.6-py2.py3-none-any.whl (15 kB)
Collecting pyserial<3.5,>=3.4
Downloading pyserial-3.4-py2.py3-none-any.whl (193 kB)
|████████████████████████████████| 193 kB 4.3 MB/s
Collecting emoji<0.6,>=0.5.4
Downloading emoji-0.5.4.tar.gz (43 kB)
|████████████████████████████████| 43 kB 96 kB/s
Collecting blinker<1.5,>=1.4
Downloading blinker-1.4.tar.gz (111 kB)
|████████████████████████████████| 111 kB 6.2 MB/s
Collecting six
Downloading six-1.14.0-py2.py3-none-any.whl (10 kB)
Collecting itsdangerous>=0.21
Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
Collecting Babel>=2.3
Downloading Babel-2.8.0-py2.py3-none-any.whl (8.6 MB)
|████████████████████████████████| 8.6 MB 45 kB/s
Collecting singledispatch
Downloading singledispatch-3.4.0.3-py2.py3-none-any.whl (12 kB)
Collecting certifi
Downloading certifi-2020.4.5.1-py2.py3-none-any.whl (157 kB)
|████████████████████████████████| 157 kB 4.6 MB/s
Collecting backports_abc>=0.4
Downloading backports_abc-0.5-py2.py3-none-any.whl (5.2 kB)
Collecting Unidecode<0.05,>=0.04.14
Downloading Unidecode-0.04.21-py2.py3-none-any.whl (228 kB)
|████████████████████████████████| 228 kB 6.4 MB/s
Collecting MarkupSafe
Downloading MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl (24 kB)
Requirement already satisfied: setuptools>=36 in ./venv/lib/python2.7/site-packages (from markdown<3.2,>=3.1->octoprint) (44.1.0)
Collecting idna<3,>=2.5
Downloading idna-2.9-py2.py3-none-any.whl (58 kB)
|████████████████████████████████| 58 kB 1.5 MB/s
Collecting chardet<4,>=3.0.2
Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
|████████████████████████████████| 133 kB 5.0 MB/s
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1
Downloading urllib3-1.25.9-py2.py3-none-any.whl (126 kB)
|████████████████████████████████| 126 kB 28 kB/s
Collecting webassets>=0.11.1
Downloading webassets-2.0.tar.gz (288 kB)
|████████████████████████████████| 288 kB 4.9 MB/s
Collecting argh>=0.24.1
Downloading argh-0.26.2-py2.py3-none-any.whl (30 kB)
Collecting pathtools>=0.1.1
Downloading pathtools-0.1.2.tar.gz (11 kB)
Collecting pyasn1>=0.1.3
Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
|████████████████████████████████| 77 kB 361 kB/s
Collecting pytz>=2015.7
Downloading pytz-2019.3-py2.py3-none-any.whl (509 kB)
|████████████████████████████████| 509 kB 7.8 MB/s
Building wheels for collected packages: pylru, psutil, sarge, Flask-Babel, tornado, frozendict, wrapt, PyYAML, scandir, chainmap, awesome-slugify, Flask-Login, cachelib, Flask-Assets, watchdog, feedparser, future, regex, emoji, blinker, webassets, pathtools
Building wheel for pylru (setup.py) ... done
Created wheel for pylru: filename=pylru-1.2.0-py2-none-any.whl size=15691 sha256=675dd90404356bf5ed34ec3e564e0123e4bbc29ddcf0631c09a82a9957be7844
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/ad/dc/4f/254e963083f1120664b393883428784ed55be2d494f3e3f720
Building wheel for psutil (setup.py) ... done
Created wheel for psutil: filename=psutil-5.6.7-cp27-cp27mu-linux_x86_64.whl size=258804 sha256=3af6bf302df94d32bcfb8a925cccce28875b6d63d2640eed8f9abe20b5f2a271
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/b6/8c/7a/f28c6f4fa509c6a274590af7eef26e5a206ace8753c59a4257
Building wheel for sarge (setup.py) ... done
Created wheel for sarge: filename=sarge-0.1.5.post0-py2-none-any.whl size=18869 sha256=f23c027afdd626f12a5d7d0529ccd01f3ca9a226e274aafe7c4c03554311b6a2
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/aa/ac/c4/dcefe7565f76a83c484e85a2ba49e3a294eebaddc39d4ce35e
Building wheel for Flask-Babel (setup.py) ... done
Created wheel for Flask-Babel: filename=Flask_Babel-0.12.2-py2-none-any.whl size=9263 sha256=83b1bcfb83dd4b9b318f42f30ee00714874ce2048194a34baff1485003446932
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/ac/10/c9/c58c29cda855cf63d2e4d47c01b619515b36f73b8199ef009e
Building wheel for tornado (setup.py) ... done
Created wheel for tornado: filename=tornado-4.5.3-cp27-cp27mu-linux_x86_64.whl size=431491 sha256=650c2f68942b6bb1cf7094a05077432c656f6c0a8db5390fc7e91192db185ebd
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/6b/95/34/e25e3530e2ed9ed153aec63e467140ac4aa392fcac03691276
Building wheel for frozendict (setup.py) ... done
Created wheel for frozendict: filename=frozendict-1.2-py2-none-any.whl size=3147 sha256=7c9b482a62531cbdee122a5a8a994b0030b8b9aafc3809441ad0c06bbf6ed3ce
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/be/5d/07/a6bd784a07cfa099fa10004afb695654e5a92027092d234b71
Building wheel for wrapt (setup.py) ... done
Created wheel for wrapt: filename=wrapt-1.11.2-cp27-cp27mu-linux_x86_64.whl size=49269 sha256=666d153987e49f9fcadf505f66f5dca3bb0873c44b73baf9bd4ed3d507189ba9
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/aa/0a/cb/e31e525e074359f542ff2240747f3d4cc1dad9c895bb6df70c
Building wheel for PyYAML (setup.py) ... done
Created wheel for PyYAML: filename=PyYAML-5.3.1-cp27-cp27mu-linux_x86_64.whl size=194714 sha256=9e3b68b67abb78274f7a2ad7a8b05b021911e1e93977612e30f9a98c3f764297
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/d1/d5/a0/3c27cdc8b0209c5fc1385afeee936cf8a71e13d885388b4be2
Building wheel for scandir (setup.py) ... done
Created wheel for scandir: filename=scandir-1.10.0-cp27-cp27mu-linux_x86_64.whl size=33234 sha256=4476c72af7bdef553fc3ee2e8c819d0bf2a13d1418c022e8d5049c4ef74c2452
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/58/2c/26/52406f7d1f19bcc47a6fbd1037a5f293492f5cf1d58c539edb
Building wheel for chainmap (setup.py) ... done
Created wheel for chainmap: filename=chainmap-1.0.3-py2-none-any.whl size=4962 sha256=8bcf080b081b2cf2dc20ea7a5954701ce484968654700ed90a98fbf341c6904e
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/b1/0b/42/1e93b86bd3487fd8a4c6455aea79e7f4b7bbc229b24802d336
Building wheel for awesome-slugify (setup.py) ... done
Created wheel for awesome-slugify: filename=awesome_slugify-1.6.5-py2-none-any.whl size=8351 sha256=b4cff01fec24ff6d29ce6eb4bcd3aa30085842740e1a4b88cbc51042755feda9
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/97/b6/b0/9a83c3d0bf0fb904a13fc4cff6aa539cf3bcf21f2965a1c241
Building wheel for Flask-Login (setup.py) ... done
Created wheel for Flask-Login: filename=Flask_Login-0.4.1-py2.py3-none-any.whl size=15933 sha256=56b0fbb535255b68ae789a98f82aa569745fc68adbf3e00574c182994da751c4
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/72/fb/8c/14220bd0fa946a657173c0775d81c23b371ed3ba7dc7b0964e
Building wheel for cachelib (setup.py) ... done
Created wheel for cachelib: filename=cachelib-0.1-py2-none-any.whl size=13017 sha256=324b56ec74d28af9a78f7526b5f8c45b453a15d16cb97cbd77bca8ad19357e46
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/33/a6/f6/c9b0f8cdc86d0ef35777789797afc893cce477a39500ee28d2
Building wheel for Flask-Assets (setup.py) ... done
Created wheel for Flask-Assets: filename=Flask_Assets-0.12-py2-none-any.whl size=8472 sha256=f5f9af6a76d59df6560584f4b271609ae3fd6eafdcf3d0e6d7fdd4d764e43764
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/e2/bd/05/5d056fac0a9041b7d18a79f86fb93f20caf7334dd51eba2af6
Building wheel for watchdog (setup.py) ... done
Created wheel for watchdog: filename=watchdog-0.9.0-py2-none-any.whl size=73651 sha256=47edff5f90cf70785cff3a2d1689285dafee245b5dd613193c2511b4f9e8e56e
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/29/d7/fb/9194ada05f6dfcaea7da16150cd523f783ad918b35da6ee066
Building wheel for feedparser (setup.py) ... done
Created wheel for feedparser: filename=feedparser-5.2.1-py2-none-any.whl size=44995 sha256=63b177c5781d1eaa5ffe9be07e6b61162b747bc15fce48d6ec0392a0d15daec6
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/d4/3c/a1/fd7bcf389a776ce0be95e1e3176421b92dd24d0b78a58908a1
Building wheel for future (setup.py) ... done
Created wheel for future: filename=future-0.18.2-py2-none-any.whl size=502566 sha256=e24550dc4db23f5d47175e58e24a01be299d9981359804646ec70da01f12f6b4
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/5f/11/0c/aad680baf5ef4fbcbab992c9f03e1130357e0c173a4fdabfff
Building wheel for regex (setup.py) ... done
Created wheel for regex: filename=regex-2020.4.4-cp27-cp27mu-linux_x86_64.whl size=344932 sha256=53171cf495b86f57fcd40646a73b75c61dada76ee3d0f46df694576325e1e366
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/9d/6c/47/0e5edf34d09bdab91b48f150ca86fdb0b0f26666a8f7df8ad4
Building wheel for emoji (setup.py) ... done
Created wheel for emoji: filename=emoji-0.5.4-py2-none-any.whl size=42174 sha256=cc29db088a91d6de2e21ebce25792d471a2970f523f1e60a2ab9b6e572fe8a3f
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/01/fb/20/2f71ca373e9334ab3bc6edeac956519d94ec3dcc9fad7c3eb5
Building wheel for blinker (setup.py) ... done
Created wheel for blinker: filename=blinker-1.4-py2-none-any.whl size=13451 sha256=b4ae6cbf1d76ad6f48d8a8e13a7c7da0f948976f356a899d619a262aafeae6dc
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/7b/1f/a0/7ce496c69b9be7cef75645749e256d5ef2dc9d08336f92248b
Building wheel for webassets (setup.py) ... done
Created wheel for webassets: filename=webassets-2.0-py2-none-any.whl size=142871 sha256=ea4a2248dbda0be345a6caef74971b54a65c58ae1cd05654d3ac6e509f739740
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/e2/df/2b/c142c0570f34a8e56187c83045b006e56d5918869ff94a56f6
Building wheel for pathtools (setup.py) ... done
Created wheel for pathtools: filename=pathtools-0.1.2-py2-none-any.whl size=8784 sha256=ac6a73ac9a18654cc20f286ada97c2f2910bc6b7ed85aecef000c2d0e17ebd95
Stored in directory: /home/soloelectronicos/.cache/pip/wheels/da/24/4e/5b716376944d90d1406666897dbd020764405d5242afb5b236
Successfully built pylru psutil sarge Flask-Babel tornado frozendict wrapt PyYAML scandir chainmap awesome-slugify Flask-Login cachelib Flask-Assets watchdog feedparser future regex emoji blinker webassets pathtools
Installing collected packages: six, websocket-client, pylru, psutil, sarge, werkzeug, Click, itsdangerous, MarkupSafe, Jinja2, flask, pytz, Babel, Flask-Babel, singledispatch, certifi, backports-abc, tornado, frozendict, wrapt, monotonic, PyYAML, netifaces, semantic-version, scandir, chainmap, regex, Unidecode, awesome-slugify, pkginfo, Flask-Login, markdown, cachelib, idna, chardet, urllib3, requests, webassets, Flask-Assets, argh, pathtools, watchdog, netaddr, feedparser, futures, future, typing, pyasn1, rsa, sentry-sdk, filetype, pyserial, emoji, blinker, octoprint
Successfully installed Babel-2.8.0 Click-7.1.1 Flask-Assets-0.12 Flask-Babel-0.12.2 Flask-Login-0.4.1 Jinja2-2.8.1 MarkupSafe-1.1.1 PyYAML-5.3.1 Unidecode-0.4.21 argh-0.26.2 awesome-slugify-1.6.5 backports-abc-0.5 blinker-1.4 cachelib-0.1 certifi-2020.4.5.1 chainmap-1.0.3 chardet-3.0.4 emoji-0.5.4 feedparser-5.2.1 filetype-1.0.6 flask-0.12.5 frozendict-1.2 future-0.18.2 futures-3.3.0 idna-2.9 itsdangerous-1.1.0 markdown-3.1.1 monotonic-1.5 netaddr-0.7.19 netifaces-0.10.9 octoprint-1.4.0 pathtools-0.1.2 pkginfo-1.5.0.1 psutil-5.6.7 pyasn1-0.4.8 pylru-1.2.0 pyserial-3.4 pytz-2019.3 regex-2020.4.4 requests-2.23.0 rsa-4.0 sarge-0.1.5.post0 scandir-1.10.0 semantic-version-2.8.4 sentry-sdk-0.13.2 singledispatch-3.4.0.3 six-1.14.0 tornado-4.5.3 typing-3.7.4.1 urllib3-1.25.9 watchdog-0.9.0 webassets-2.0 websocket-client-0.56.0 werkzeug-0.16.1 wrapt-1.11.2

Actualización

OctoPrint debería poder  actualizarse automáticamente y también permitirle cambiar a otros canales de lanzamiento de forma inmediata.

Sin embargo, si por alguna razón desea o necesita realizar algo de esto manualmente, ejecute los siguientes comandos para instalar <versión> de OctoPrint:

source ~/OctoPrint/venv/bin/activate

pip install octoprint==<version>

p.ej.

fuente ~ / OctoPrint / venv / bin / enable
pip install octoprint == 1.3.12rc1

Admitir reinicio / apagado a través del menú del sistema de OctoPrint

En Configuración> Comandos, configure los siguientes comandos:

Reinicio de  OctoPrint:

sudo service octoprint restart

Reinicio  del sistema:

 sudo shutdown -r now

Apagado del sistema:

sudo shutdown -h now

 

Arranque automático

Para  que Octoprint   arranque automático al iniciar el sistema ,descargue los archivos de script de inicio del repositorio de OctoPrint, muévalos a sus respectivas carpetas y haga que el script de inicio sea ejecutable:

wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.init && sudo mv octoprint.init /etc/init.d/octoprint

wget https://github.com/foosel/OctoPrint/raw/master/scripts/octoprint.default && sudo mv octoprint.default / etc / default / octoprint

sudo chmod + x /etc/init.d/octoprint

Ajuste las rutas a su binario octoprint en / etc / default / octoprint. Si lo configura en un virtualenv como se describe anteriormente, asegúrese de que su / etc / default / octoprint se modifique así:

DAEMON = / home / pi / OctoPrint / venv / bin / octoprint

¡Observe también el # eliminado al comienzo de la línea, descomentándolo y haciéndolo efectivo!

Luego, agregue el script al inicio automático utilizando los valores predeterminados de sudo update-rc.d octoprint.

Esto también le permitirá iniciar / detener / reiniciar el demonio OctoPrint a través de

sudo service octoprint {start|stop|restart}

 

Puerto 80

Si desea tener una URL más agradable o simplemente necesita que OctoPrint se ejecute en el puerto 80 (puerto predeterminado de http) debido a algunas restricciones de red, se recomienda usar HAProxy 358 como proxy inverso en lugar de configurar OctoPrint para que se ejecute en el puerto 80.

Esto tiene lo siguiente ventajas:

    • OctoPrint no necesita ejecutarse con privilegios de root, que necesitaría para poder vincularse al puerto 80 gracias a las restricciones de puertos privilegiados de Linux
    • También puede hacer que mjpg-streamer sea accesible en el puerto 80
    • Puede agregar autenticación a OctoPrint
    • Dependiendo de la versión de HAProxy, también puede usar SSL para acceder a OctoPrint

La configuración es la siguiente:

 sudo apt install haproxy

Estoy usando la siguiente configuración en /etc/haproxy/haproxy.cfg, para más ejemplos eche un vistazo aquí 864:

option httplog
option dontlognull
retries 3
option redispatch
option http-server-close
option forwardfor
maxconn 2000
timeout connect 5s
timeout client 15min
timeout server 15min

frontend public
bind :::80 v4v6
use_backend webcam if { path_beg /webcam/ }
default_backend octoprint

backend octoprint
reqrep ^([^\ :]*)\ /(.*) \1\ /\2
option forwardfor
server octoprint1 127.0.0.1:5000

backend webcam
reqrep ^([^\ :]*)\ /webcam/(.*) \1\ /\2
server webcam1 127.0.0.1:8080

 

Esto hará que OctoPrint sea accesible en http: // <IP > / y hará que mjpg-streamer sea accesible en http: // <IP > / webcam /.

También deberá modificar / etc / default / haproxy y habilitar HAProxy estableciendo ENABLED en 1. Después de eso, puede iniciar HAProxy emitiendo el siguiente comando

sudo service haproxy start

 

Señalar su navegador a http: // <la IP > debería saludarlo con la interfaz de usuario de OctoPrint. Ahora abra la configuración y cambie a la pestaña de la cámara web o, alternativamente, abra ~ / .octoprint / config.yaml.  Establezca la URL de transmisión de la cámara web desde http: // <IP >: 8080 /? Action = stream a / webcam /? Action = stream (deje la instantánea en http://127.0.0.1:8080/?action=snapshot! ) y vuelva a cargar la página.

Si todo funciona, puede agregar las siguientes líneas a ~ / .octoprint / config.yaml (solo créelo si aún no existe) para que el servidor se vincule solo a la interfaz de lopback

server:

host: 127.0.0.1


Reinicie el servidor. OctoPrint aún debería estar disponible en el puerto 80, incluida la alimentación de la cámara web (si está habilitada)

 

 

Soporte de webcam

Si también desea soporte para cámara web y timelapse, deberá descargar y compilar MJPG-Streamer:

cd ~
sudo apt install subversion libjpeg62-turbo-dev imagemagick ffmpeg libv4l-dev cmake
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
export LD_LIBRARY_PATH=.
make

 

Los paquetes requeridos dependen de la versión subyacente de Debian! Lo anterior es lo que debería funcionar en las imágenes actuales

Con suerte, esto debería ejecutarse sin ningún error de compilación. Entonces debería poder iniciar el servidor de la cámara web usando:

./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so"

 

Esto debería dar el siguiente resultado:

MJPG Streamer Version: svn rev:
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
[...]
o: www-folder-path...: disabled
o: HTTP TCP port.....: 8080
o: username:password.: disabled
o: commands..........: enabled

 

Para algunas cámaras web (incluida la PS3 Eye), deberá forzar el modo YUV mediante el siguiente comando de inicio:

./mjpg_streamer -i "./input_uvc.so -y" -o "./output_http.so"

 

Tenga en cuenta que el modo YUV ejercerá tensión adicional en la CPU de su PC , lo que reducirá su rendimiento, posiblemente hasta el punto de causar problemas de impresión. Si su cámara requiere el parámetro -y para funcionar, considere reemplazarlo por uno que no lo haga.

 

Ahora apunte en su navegador a

http: // : 8080 /? action = stream,

, por lo debería ver una imagen en movimiento a 5 fps.  (Si recibe un mensaje de error sobre los archivos o directorios faltantes, debería ayudar al complemento de salida con -o «./output_http.so -w ./www»).

Abra el cuadro de diálogo de configuración de OctoPrint y en Webcam & Timelapse configuró lo siguiente:

    • Stream URL: /webcam/?action=stream
    • Snapshot URL: http://127.0.0.1:8080/?action=snapshot
    • Path to FFMPEG: /usr/bin/ffmpeg

Reinicie el servidor OctoPrint, borre el caché en su navegador y vuelva a cargar la página OctoPrint. Ahora debería ver la transmisión desde la cámara web en la pestaña «Control» y una pestaña «Timelapse» con opciones.

Si desea poder iniciar y detener mjpeg-streamer desde OctoPrint, coloque lo siguiente en / home /XXXX / scripts / webcam:

#!/bin/bash
# Start / stop streamer daemon

case "$1" in
start)
/home/pi/scripts/webcamDaemon >/dev/null 2>&1 &
echo "$0: started"
;;
stop)
pkill -x webcamDaemon
pkill -x mjpg_streamer
echo "$0: stopped"
;;
*)
echo "Usage: $0 {start|stop}" >&2
;;
esac

Ponga esto en /home/XXXX/scripts/webcamDaemon:

#!/bin/bash

MJPGSTREAMER_HOME=/home/pi/mjpg-streamer/mjpg-streamer-experimental
MJPGSTREAMER_INPUT_USB="input_uvc.so"
MJPGSTREAMER_INPUT_RASPICAM="input_raspicam.so"

# init configuration
camera="auto"
camera_usb_options="-r 640x480 -f 10"
camera_raspi_options="-fps 10"

if [ -e "/boot/octopi.txt" ]; then
    source "/boot/octopi.txt"
fi

# runs MJPG Streamer, using the provided input plugin + configuration
function runMjpgStreamer {
    input=$1
    pushd $MJPGSTREAMER_HOME
    echo Running ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
    LD_LIBRARY_PATH=. ./mjpg_streamer -o "output_http.so -w ./www" -i "$input"
    popd
}

# starts up the RasPiCam
function startRaspi {
    logger "Starting Raspberry Pi camera"
    runMjpgStreamer "$MJPGSTREAMER_INPUT_RASPICAM $camera_raspi_options"
}

# starts up the USB webcam
function startUsb {
    logger "Starting USB webcam"
    runMjpgStreamer "$MJPGSTREAMER_INPUT_USB $camera_usb_options"
}

# we need this to prevent the later calls to vcgencmd from blocking
# I have no idea why, but that's how it is...
vcgencmd version

# echo configuration
echo camera: $camera
echo usb options: $camera_usb_options
echo raspi options: $camera_raspi_options

# keep mjpg streamer running if some camera is attached
while true; do
    if [ -e "/dev/video0" ] && { [ "$camera" = "auto" ] || [ "$camera" = "usb" ] ; }; then
        startUsb
    elif [ "`vcgencmd get_camera`" = "supported=1 detected=1" ] && { [ "$camera" = "auto" ] || [ "$camera" = "raspi" ] ; }; then
        startRaspi
    fi

    sleep 120
done

Asegúrese de que ambos archivos sean ejecutables:

chmod + x / home / XXX / scripts / webcam
chmod + x / home / XXXX / scripts / webcamDaemon

Si desea diferentes opciones de cámara, colóquelas en /boot/octopi.txt o modifique el script en consecuencia.

Si desea el inicio automático de la cámara web, debe agregar la siguiente línea a /etc/rc.local (solo asegúrese de colocarla sobre la línea que dice la salida 0).

/ inicio / pi / scripts / webcam start

Si desea iniciar y detener el servidor de la cámara web a través del menú del sistema de OctoPrint, agregue lo siguiente a config.yaml:

 

system:
actions:
- action: streamon
command: /home/pi/scripts/webcam start
confirm: false
name: Start video stream
- action: streamoff
command: sudo /home/pi/scripts/webcam stop
confirm: false
name: Stop video stream

 

 

 

Mas información  aqui

 

Como arreglar atascos en su impresora 3d


En este post vamos  a ver   lo que tarde o temprano suele suceder a la  hora de imprimir en 3d  :el hecho de deje de salir filamento  ( o salga con dificultad ), lo cual es indicio de  un problema en el sistema de extrusión de una impresora 3D, es decir  una anomalia  en el alguna  de las partes de la impresora que impulsan, conducen, funden y depositan el filamento en la impresora pues  son precisamente todas las piezas citadas las  que influyen en que una impresora extruya de manera fiable y consistente.

Yéndonos  un poco  mas en el origen del problema ,el sistema de extrusión tiene 2 componentes principales, lo cuales  generan cierta confusión a pesar  de ser dos elementos muy distintos .

Resumidamente   estas son las grandes  diferencias  entre extrusor y hotend:

    • El extrusor propiamente dicho, también llamado feeder, drive es el conjunto del motor paso a paso  y mecanismo de retracción ( normalmente formado por rueda dentada,  rodamiento para apretar el filamento contra la rueda, etc.)  el cual  empuja el filamento hacia el exterior.Este componente especialmente cuando la  extrusión es directa   (, más fácil de cambiar el filamento, tiene más fuerza, menos cosas que pueden fallar…) como puede imaginarse, excepto desgaste físico por ejemplo en los dientes de la rueda dentada  no es un elemento que suela dar muchos problemas,
    • El fusor o hotend es el componente de la impresora donde se funde el material  que  expulsa por la punta para depositarlo sobre la  cama , el cual  suele tener partes como el nozzle o punta, el disipador y  el bloque calentador.   Como puede imaginarse esta es la parta mas propensa a dar problemas , los cuales vamos a ver en un instante

Ademas o debemos saber   cuando  hablamos del sistema de extrusión en su conjunto,  que este puede ser  tipo bowden (si el extrusor y el hotend están separados y conectados por un tubo, generalmente de teflón) o directo (si el extrusor y el hotend están integrados ambos en el cabezal).

 

Como es fácil de adivinar ,el sistema  mas usado generalmente usado por su mayor simplicidad ( y por tanto menos propenso a dar problemas ) es el sistema de extrusión directa.

 

 

PARTES DEL FUSOR o  HOTEND

Normalmente   el fusor o hotend es un elemento muy simple , pero no por ello debemos ignorar que esta compuesto  de 4 partes claramente definidas:

      • Boquilla o nozzle: Generalmente es de 0,4[mm] y es la que determina el diámetro del filamento fundido que creará las capas y cómo de altas pueden ser estas.Como es de entender, esta  pieza esta sujeta a un desgaste , lo cual obliga  a  su limpieza  periódica que puede  condicionar incluso a su reemplazo cuando se obstruye totalmente . Se puede cambiar esta boquilla por una con un orificio de salida de diámetro  superior pero debemos saber que  si  es de más grosor se creará antes  la pieza, pero menos precisión tendrá.
      • Bloque calentador: Es lo que se caliente del hotend gracias a que en  él se inserta la resistencia de cartucho normalmente de  unos 40W/12V      para aplicar calor al conjunto. Ademas no podemos olvidar que se inserta en el bloque un   termistor para controlar la temperatura de fusión del plástico.
      • Barrera térmica o barrel: Este elemento crea una barrera en el hotend que impide que el calor del bloque calentador se disipe rápidamente hacia arriba, pudiendo derretir el plástico antes de lo necesario. Suele ser entero metálico o contener un tubo de teflón para guiar el filamento.
      • Disipador: Es la parte que va anclada al extrusor y suele ser de aluminio. Su gran superficie y forma aleteada( o no )  permite disipar el calor del hotend de forma conveniente. Suele ir junto con un ventilador de refrigeración.

 

 

Si nos centramos en el hotend directo,   hay diferentes tipos:

-Fusor HotEnd «all metal» ,es decir  un fusor que no tiene ninguna parte de plástico, por lo  se puede  imprimir a mayores temperaturas pudiendo  fundir filamentos de todo tipo de materiales, si bien al trabajar con temperaturas mas altas  es MUY RECOMENDABLE  el tener un ventilador para enfriar la parte alta del HotEnd, ya que si se calienta demasiado, el plástico se va a fundir muy arriba y se va a atascar el HotEnd. El E3D V6 es  el hotend más famoso del mercado, el fusor clásico que mejor fama tiene en el mundo de la impresión 3D

Fusores de teflón (PTFE). Son los que llevan la mayoría de impresoras, conteniendo  un tubito de teflón en la parte interna del hotend, que llega hasta la punta y se calienta. El teflón es un consumible, porque al estar sometido a temperatura tanto tiempo se va desgastando. Este tipo de fusor  es el mas común pero se debe recordar que al contener  partes de plástico ya están limitados a unos 25o.

Fusor de PTFE de 4.1 hasta la boquilla:  es una mezcla de ambos sistemas ,  mejorando en algunos aspectos al fusor anterior

Atascos

Cuando empezamos en la impresión 3D el hotend se atasca 2 o 3 veces mínimo, y hay que aprender a desatascar o más importante, a montarlo bien para que no vuelva a pasar.Para limpiarlo, lo primero que debemos  es aprender a  desmontarlo,para intentar liberar el atasco  y de este modo que nuestra impresora vuelva a extruir filamento.

Atascos en el nozzle

Una primer tipo de obstrucción suele ser la propia boquilla,la cual podemos limpiar  con una aguja de acupuntura del calibre de la punta del nozzle .

Si es un plástico especialmente duro o simplemente no se libera la obstrucción subiendo la temperatura  conectando  manualmente el calefactor (bien desde el menú de la propia impresora o bien desde el propio  sw de extrusión )  y presionando con el filamento hacia abajo  , conviene desmontar el  bloque completo de extrusión , desmontando el bloque motor con el extrusor ( suelen llevar un conector en motor paso a paso )  y luego sacando el bloque del barrel  con el calefactor , el radiador  y la boquilla para trabajar mejor teniendo mucho cuidado de no romper los cables de la resistencia  y los del termistor.

 

Una vez desmontado el hotend , dejaremos  la resistencia de cartucho insertada en el barrel  y subiremos nuevamente  la temperatura del hotend un 70% de la temperatura de fusión del plástico que se haya atascado manualmente ,bien desde el menú de la propia impresora o bien desde el propio  sw de extrusión , para ablandarlo y quitarlo mejor.

Una vez  conectada  la resistencia   CON MUCHO CUIDADO ,    por el lado interior  del bloque calentador le iremos  dando poco a poco con la aguja  para intentar   quitar el plástico pegado usando si es posible  guantes y protección para no quemarse.

En caso de no conseguir quitar la obstrucción ,lo mas sensato es simplemente reemplazar el nozzle obstruido por otro del mismo calibre pues su precio  es muy bajo.

Obstrucciones en el barrel

Otro tipo de obstrucciones  muy habitual es es el interior del barrel ,para  lo cual en primer lugar necesitaremos quitar la boquilla con una llave fija.

Una vez quitada la  boquilla conectaremos  manualmente el calefactor bien desde el menú de la propia impresora o bien desde el propio  sw de extrusión , para ablandarlo y quitarlo mejor.

Con una herramienta del calibre 0.4 ( suelen ir incluida  con las impresoras ) o, en su defecto una llave Allen ,  intentaremos  empujar   por ambos extremos para intentar liberar restos de material.

En casos muy extremos, cuando hay una gran obstrucción y  no reacciona  al calor ,podemos seguir enroscando el bloque del calefactor  hacia la parte superior para intentar así eliminar el atasco si es en la parte media o superior.

Si  conseguimos liberarlo debería pasar por completo la herramienta por todo el barrel

Si el atasco  esta en la parte superior   y no reacciona ante la solución anterior  desde el lado del extrusor ( el lado de mas arriba ) podemos intentar liberar el atasco con un soldador de punta fina,   por esta parte pues al ser la parte mas alejada del calefactor ,es mas difícil que  se derrita la  obstrucción por esa parte.

 

Aqui  podemos ver el origen de la obstrucción donde se aprecia claramente  el material claramente carbonizado y que obstruía  el paso del filamento por el barrel

 

Ahora cómo montar bien el Hotend

¿Ya lo tiene limpio no? Pues debemos tener cuidado y montarlo  bien de una vez:

  1. Meta el nozzle o boquilla a tope contra el bloque calentador y gire media vuelta para el lado contrario( es decir desenroscando un poquito).
  2. Meta el barrel o barrera térmica a tope con el nozzle dentro del bloque calentador. No hace falta que apriete mucho y solo con las manos.
  3. Una todo al disipador y suba la temperatura al máximo
  4. Con un par de alicates o llaves inglesas para no quemarte apriete el bloque calentador y el nozzle (gírelo en sentido contrario con cuidado , solo un poco de fuerza, pues sino se lo puede cargar).
  5. Deje enfriar su hotend, gracias a las dilataciones térmicas del u extrusor ya no se va a atascar.
  6. Coloque  todo el bloque del hotend   fijando con los tornillos correspondientes al cabezal de la impresora
  7. Añada el motor y el bloque del extrusor sin olvidar conectar los cables del motor paso a paso.
  8. ! !!A   funcionar!!!!!

Ejecutar cura en un ordenador obsoleto


Cura     es  uno de los  famosos  programas  para impresión 3d  desarrollado por Ultimaker .Este clásico software   de corte  prepara  su modelo para la impresión 3D tanto  para los que se inician el el mundo de la impresión 3d como para los  usuarios  avanzados, siendo por tanto  una de las mejores opciones  a la hora de seleccionar un programa de laminado e impresión en 3d   hasta tal punto que supera el sw propietario de otros fabricantes  como por ejemplo el del  Geetech  ( Easyprint) entre otros.

En efecto ,para los principiantes en impresión  de objetos 3D , este programa hace que sea fácil obtener resultados aceptables,  dada la gran complejidad  de los procesos de impresión 3d y ,asimismo  para los usuarios más expertos también les permite mejorar sus  impresiones, pues hay más de 200 ajustes  en el modo avanzado  que podrán adaptarse a las necesidades de cada modelo, los   cuales sin duda ayudaran  a mejorar la calidad de impresión en 3d del objeto que se desea imprimir en 3d.

La fama de este programa   no es en  vano  pues porque ademas de ser gratuito ,   es un programa “Open Source ” lo que significa  que tras este  sw hay  toda una comunidad  para intentar mejorarlo o corregir deficiencias o funcionalidades en este.

Dado que Cura es un excelente sw de impresión 3d , lo suyo es que le intentemos  dedicar un pc en exclusiva conectado   a nuestra  impresora 3d,  sobre todo si contamos con algún equipo  obsoleto que ya no usemos. Ahora bien , el problema  viene cuando intentamos instalar el sw de Cura  en  un  ordenador antiguo con Windows  desde este enlace https://ultimaker.com/es/software/ultimaker-cura

 

Bien,  en el mejor de los casos quizá  pueda  instalarse  con el enlace anterior pero  si el ordenador  tiene unos años   y cuenta con windows   quizás no  pueda instalarse con dicho instalador  nativo    fundamentalmente por el soporte de requisitos  gráficos ( opengl) que no este actualizado para su tarjeta grafica porque el fabricante haya decidido dejar de dar soporte.

Incluso   si cuenta con Linux    en muchas  ocasiones   desde la propia tienda de sw de Lubuntu   tampoco  se podrá instalar  Cura fácilmente,  pero  no se preocupe pues hay una solución sencilla: instalar una versión de Linux de 64 bits   y luego instalar manualmente el sw de Cura  para después personalizar la instalación , lo cual vamos a ver  a continuación , suponiendo que nuestro ordenador cuente con al menos con un núcleo de 64 bits.

 

 

 

Instalación de Ubuntu 64 bits

Ubuntu es un sistema operativo libre y gratuito,perteneciente a la familia Linux y patrocinado por la compañía Canonical. Cada seis meses está disponible una nueva versión, que se identifica por su fecha de lanzamiento: así, “Ubuntu 18.04” hace referencia a la versión del año 2018 publicada en abrile (mes 4).

Cada dos años la actualización presenta la característica de ser LTS, lo que significa que tendrá un soporte técnico de al menos cinco años.

Para  instalar Ubuntu de 64 bits  en primer lugar habrá que descargar la imagen de Linux  18.04  , instalar esta en nuestro equipo    y sobre este ,ya  podremos después  instalar  el programa Cura.

 

Para   descargar esta versión de 64 bits  ( siempre que  el procesador del ordenador  al menos tenga dos nucleos de 64bits )   nos iremos a    https://ubuntu.com/download/desktop  y haciendo clic  abrirá una ventana en la que escogeremos la opción de guardar el archivo.

Éste  fichero tiene la extensión “.iso” con  un tamaño de alrededor de mas de 1GB, por lo que puede tardar un rato en descargarse, dependiendo de la velocidad de nuestra conexión a Internet.

Una vez descargada la imagen ISO en nuestro ordenador hay que grabar esta  en un dvd     autoarrancable , misión que se puede  hacer con la propia   herramientas nativa  del    propio SO como es la  propia grabadora de DVD incluida en W10.

El primer paso es introducir un DVD grabable en la grabadora del PC, lo cual hará que salte una ventana de aviso:pulse Cancelar.

A continuación, haremos clic con el botón derecho del ratón en el archivo ISO para que se abra el menú contextual y en él elijiremos Grabar imagen de disco.

La grabadora de imágenes de Windows  solo tiene una única opción de si queremos comprobar el disco después de grabar o no,la cual  tomará más tiempo pero le asegurará que el disco se ha grabado correctamente. Para  grabar  la imagen pulsaremos Grabar para que empiece el proceso y no necesitemos hacer ya nada más salvo esperar a que termine la grabación. No es recomendable que realice tareas que usen muchos recursos mientras se graba, pues podría hacer que la grabación se maologre dejando inservible el dvd.

También  es posible grabar  la imagen ISO de  Ubuntu  en una unidad usb  autoarrancable, utilizando para ello alguna de las posibilidades que nos ofrezca nuestro actual sistema operativo:

      • Para grabar en entornos Microsoft Windows se puede usar, entre otros, un programa como “Windows USB/DVD Download Tool”, que se puede obtener en el sitio web http://wudt.codeplex.com/ o también en http://descargar.cnet.com/Windows-USB-DVD-Download-Tool/3000-18513_4-10972600.html
      • Para crear la memoria USB en equipos con Linux hay que localizar la aplicación de grabación instalada en el sistema  ( en Ubuntu es nativa  ) o  como alternativa usar otros paquetes disponibles en el Centro de Software: k3b, gnomebaker, bonfire, imagewriter, usb-creator-gtk,unetbootin,…

En todo caso una vez tengamos el DVD o USB ya grabado , lo introduciremos en el PC  y modificaremos desde la  BIOS la opcion de arranque desde USB o DVD según proceda

Una vez arrancada la maquina nos aparecerá un menú que permitirá probar el SO sin instalarlo en el sistema

Suponiendo que después de haber probado Ubuntu nos hemos decidido a instalarlo en nuestro disco duro interno, en sustitución de nuestro anterior sistema operativo, la primera precaución debe ser hacer una copia de seguridad de todos los documentos actuales que deseemos conservar (textos,fotos, música, vídeos, presentaciones,…) aunque obviamente, este paso no resulta necesario si vamos a ejecutar la instalación en un disco duro nuevo o recién formateado.

Después de haber puesto a salvo nuestros documentos, comenzaremos el proceso de instalación una vez  lleguemos a la pantalla inicial de Ubuntu. A partir de aquí disponemos de dos formas de iniciar la instalación:(a) usar las flechas de desplazamiento para seleccionar la opción “InstallUbuntu” y pulsar “Enter” (lógicamente, si antes usamos la tecla “F2” para cambiar a nuestro idioma, el mensaje sería “Instalar Ubuntu”) y seguiremos el asistente  con las preguntas de distribución de teclado , zona horaria  o usuario , claves  y opciones de inicio   hasta finalizar por completo momento en el cual nos pedira que reiniciemos   para  hacer efectivos los cambios

Instalación de Cura

Una vez tengamos Ubuntu de 64 bits instalado,podríamos descargar el software de Cura   desde su página oficial pero también podremos instalar la última versión de este software en Ubuntu 16.04 desde el repositorio de turno.

Antes de proceder a la instalación  ya que Cura depende de python 3.x.  tenemos qeu a satisfacer las dependencias en primer lugar para que todo vaya correctamente

1
sudo apt-get install python3 python3-dev python3-sip

A continuación, es el momento de agregar el repositorio que nos proporcionará el paquete para la instalación.

1
sudo add-apt-repository ppa:thopiekar/cura

Para terminar, solo nos queda actualizar los paquetes nuestra lista e instalar cura.

1
sudo apt-get update && sudo apt-get install cura

Después de esto ya tendremos que ser capaces de ejecutar Cura. Bien sea con el comando “cura” desde la terminal o buscando el lanzador del programa en el Dash de nuestro sistema operativo.

 

Personalización de Cura

Cura al  haberlo creado un fabricante como ultimaker no dispone de todos los modelos  de impresoras  3d del mercado , asi qeu si disponemos del perfil de esta  o nos lo  facilita el fabricante , lo ideal es copiar este perfil  en nuestro viejo pc

Si nos vamos al fabricante Geetech, el nos permite descargar un fichero  comprimido con algunos de los contenidos del directorio resources :

        • Definitions
        • Extruders
        • Meshes

Lo interesante es copiar por ejemplo con el gstor de archivos  estos recursos al directorio correspondiente del Cura de nuestro equipo ,por lo que en primer lugar lo copiaremos a nuestro home ( en nuestro ejemplo /home/usuario/Descargas/ )  , descomprimiermos  despues su contenido ( deberia llevar al menos esas tres carpertas mencionadas)y finalmente copiaremos este contenido a las carpeta del Cura

Para copiar los recursos  al directorio de instalacion   por tema de permisos no lo vamos a poder copiar directamente desde el gestor de archivos  por lo que lo haremos desde una consola de terminal

Para copiar   estos tres contenidos seguiremos lso siguintes pasos

En primer podemos copiar el contenido de la carpeta extruders

1
cd /home/usuario/Descargas/resources/extruders/
2
ls
3
sudo cp -f  *.*  /usr/share/cura/resources/extruders/

Despues  podemos copiar la carpeta definitions

1
cd /home/usuario/Descargas/resources/definitions/
2
ls
3
sudo cp -f *.* /usr/share/cura/resources/definitions/

Y finalmente lo mismo con la carpeta meshes

1
cd /home/usuario/Descargas/resources/meshes/
2
ls
3
sudo cp -f *.* /usr/share/cura/resources/meshes/

Una vez concluido este proceso si reiniciamos Cura deberíamos poder acceder  a dicho perfil    lo cual sin duda nos permitira ahorrar mucho tiempo a la hora configurar este estupendo programa