Impresora 3D: Trucos y Consejos

prototipar con impresora 3D

Hace unas semanas tuve la oportunidad de adquirir una impresora 3D en un remate de decomiso de Aduanas.

Impresora 3D en partes HESINE M-505La impresora 3D se encontraba desarmada, sin documentación alguna.

El paquete incluía dos rollos de plástico como insumo de impresión: Uno plástico PLA y el otro ABS.

Contando solamente con esos detalles, me llevó unas horas ubicar marca y modelo, comparando contra imágenes en Internet.

impresora 3D HESINE M-505 desarmadaResultó ser una impresora 3D HESINE M-505 de origen chino y bajo costo, pero buenas prestaciones.

Con un poco más de búsqueda, encontré finalmente algunos manuales online, que me ayudaron a concretar el armado, tarea que me llevó unas 8 – 10 horas.

Al finalizar el armado, conecté la fuente de 12v de la impresora 3D a la red eléctrica y con gran alivio observé que la pantalla LCD retroiluminada mostraba el proceso de inicialización y el estado de la impresora en forma correcta.

Controlador impresora 3DA continuación, conecté la impresora 3D a la computadora y me puse a investigar el software llamado “Repetier” que recomendaban en los diversos foros y sitios web para controlar estos aparatos.

Continuando con la buena racha, observé que todo funcionaba correctamente.

Luego de la impresión de diversos modelos 3D he aprendido algunos trucos y consejos que ahora quiero compartirles.

Antes de continuar, el comentario obligado: Parece mentira para alguien que ya tiene unos años encima, tener hoy la posibilidad de diseñar e imprimir un objeto 3D desde la comodidad de su propio taller o escritorio de trabajo.

La realidad de una impresora 3D: ¡Demora!

Lo primero que surge con el uso de una impresora 3D es su lentitud.

La extrusión de plástico a través de la boquilla de su cabezal de impresión es definitiva y literalmente un cuello de botella.

Esto se traduce en esperas de horas (2, 3, 4 horas) para hacer una impresión de una cajita o un objeto de 4 o 5 centímetros de altura.

El resultado de la impresora 3D no es profesional

El segundo comentario corresponde a la forma en que imprime: El cabezal va depositando el plástico bajo la forma de hilos (en mi caso, 0.4 mm es el diámetro del agujero extrusor):

Una capa arriba de la otra, que si bien tiene buena precisión, es inevitable observar sobre todo en las verticales los “estratos” en forma de líneas.

El resultado final no tiene el “look and feel” de una pieza de plástico profesional hecha por molde, sino más bien a algo “casero”.

Pero, también es cierto es que la pieza resultante se puede lijar e incluso pintar, como paliativo a este eventual problema.

Limitantes en el diseño de un objeto 3D para imprimir

objetos-impresora-3d-fusion-360A la hora de diseñar un modelo 3D “hay que pensar como cabeza de impresión 3D”:

Hay cosas que no se pueden hacer, directamente, y otras que ameritan concesiones y rediseños.

Ejemplo: Si debes generar una abertura, digamos un rectángulo de 4cm de lado x 3cm de alto, en una pared vertical de tu diseño, se complica:

Cuando el hilo de plástico deba cerrar ese espacio en la parte superior, el hilo de plástico simplemente irá de una punta a la otra, intentando unir el cierre. Como la distancia es grande, el hilo extruido, aún caliente y maleable, quedará colgado entre una punta y la otra, haciendo “comba” hacia abajo.

Luego de varias pasadas, el problema se autocorrige: Finalmente los hilos de plástico -que se van enfriando- van logrando sostener cada vez más a los de arriba, hasta que luego de 4 o 5 mm de “pared” superior sobre la abertura, queda finalmente recto el cierre.

Se desprende de esta situación que una herramienta muy útil a tener es un pequeño alicate para cortar rebarbas, combas, y defectos del diseño una vez terminada la impresión.

Aplicando un poco de trabajo es posible paliar y así resolver este tipo de problemas a la hora de diseñar el objeto 3D:

curva tipo boveda para facilitar cerrar el espacioLa parte superior de esa apertura rectangular puede ser terminada en “bóveda”: una leve curvatura con su punto más alto al medio de la apertura.

Esto redunda en trazos que quedan cerrando la parte superior de la apertura en forma gradual, escalonada, siendo mucho más amable la situación para que se autosoporte cada trazo sobre el trazo anterior.

El plástico se enfría y se contrae

Base objeto 3D pegada a la cama caliente impresora 3DOtro problema con la impresora 3D -y el motivo por el cual la “cama” o base donde se apoya el objeto impreso es caliente- es:

Por un lado, la base del modelo que estamos imprimiendo debe estar firmemente “pegada” a la “cama” de la impresora.

Si el objeto estuviera suelto, simplemente quedaría agarrado a la boquilla extrusora, yéndose de paseo con ella, mientras esta se mueve para imprimir. En un caso así, el resultado será una gran bola de hilo plástico, y un modelo arruinado.

Esto se resuelve agregando algún material a la superficie de la “cama” que asegure un agarre fuerte de la base del objeto que estamos imprimiendo.

  • Algunos colocan cinta de papel “para pintor”. Así vino originalmente preparada “cama” de mi kit de impresora 3D.
  • Otros -yo estoy haciendo eso ahora- aplican pegamento en barra sobre la superficie de la cama -me refiero a esos tubos de pegamento, similares a los lápices de labio en forma y funcionamiento- usualmente amarillos de marca UHU, o rojos de FABER CASTELL, que son los que se consiguen en mi región.
  • Y otros, colocan un rectángulo de plástico LPE (finito, tiene un grosor de 0.5mm) y argumentan que es la mejor solución para el agarre del modelo 3D a la cama de impresión.

Por otro lado, por más que la impresión 3D se inicie con la base del modelo bien pegado a la cama de la impresora, si el modelo demora mucho en imprimirse, el plástico va a enfriarse y contraerse, haciendo aún más fuerza sobre todo en la base, al punto de que puede terminar arqueando todo el modelo.

Conclusión sobre las impresoras 3D

En resúmen: El uso de la impresora 3D es “todo un arte” en sí.

Permite, por ejemplo, prototipar gabinetes para nuestros proyectos de electrónica, a sabiendas de que seguramente harás varias impresiones hasta llegar al gabinete que quieres.

Debes tener paciencia con la impresora 3D. En próximos artículos hablaremos de los distintos tipos de plástico, programas para diseño 3D, cuidado de la impresora 3D, armado de una impresora 3D, y más.

Válvula motorizada BACO CR02

Válvula-acero-inoxidable-baco-CR02

Les quería escribir sobre la válvula motorizada BACO CR02:

válvula-BACO-CR02-acero-inoxidable-ArduinoEsta válvula que adquirí en la tienda de amazon.com es de pase 3/4 de pulgáda y la sección de válvula está construída en acero inoxidable.

Es aplicable al control de paso de líquidos o incluso gases.

Es particularmente idónea para su utilización en circuitos de agua potable.

Como se puede apreciar, la forma de cierre o corte de esta válvula no es por solenoide, sino que tiene una llave mecanizada de paso del tipo “bolita”. Continuar leyendo “Válvula motorizada BACO CR02”

Micro fuente de poder para proyectos Arduino

Micro-Fuente-5v-Sanmim-separadores-nylon

Cuando diseñas un dispositivo IOT seguramente una consideración será la fuente de poder. En algunos casos un adaptador de corriente USB servirá.

Micro fuente AC 5VPero puedes estar desarrollando un proyecto de IOT que requiera algo con calidad industrial … Algo quizás  un pelín más serio que el viejo y abusado recurso de aprovechar algún transformador genérico de AC a 5V, quizás algún cargador de un viejo teléfono o algo asi.

A veces también ocurre que la instalación del dispositivo IOT en lugares de difícil acceso, estancos, o donde no hay un contexto visual o funcional para conectar un transformador convencional a la pared. Continuar leyendo “Micro fuente de poder para proyectos Arduino”

ESP8266 y RFM69 HCW transceptor digital

RFM69-HCW-y-SPARKFUN-Breakout

Me he propuesto conectar el microcontrolador ESP8266 con el transceptor de datos digital RFM69 HCW.

RFM69-HCW-y-SPARKFUN-BreakoutEl RFM69 es un radio digital de bajo costo y muy buenas prestaciones que opera en diversas frecuencias (los mios funcionan en los 915mhz) y cuenta con una extensa documentación y librerías para los proyectos Arduino en Internet.

El RFM69 admite encriptación de los paquetes de datos por hardware, lo que es para muchos -como yo- algo muy atractivo y necesario.

Además cada radio tiene una identificación única, pudiendo coexistir hasta 255 radios en una misma red, y hasta 255 redes en un mismo espacio. Todo esto gestionado por el hardware del RFM69 y sus librerías.

El RFM69 se conecta a tu Arduino vía el interfaz SPI. Además le debes soldar una antena -cualquier cable, observando el largo correcto para la frecuencia de radio que adquieres, funcionará.

En mi caso utilicé un cable de 78mm soldado al terminal “A” de Antenna.

En la red encontrarás suficiente documentación para integrar estos radios a los módulos “oficiales” de Arduino.  Sin embargo, no es tan fácil encontrar información con respecto a los ESP8266.

De ahí mi interés de aprovechar y contarles la historia, por si necesitan hacer lo mismo.

Continuar leyendo “ESP8266 y RFM69 HCW transceptor digital”

Enviar email con un Ethernet Shield W5100

Ethernet Shield W5100

El Ethernet Shield W5100 es compatible con los pines del Arduino UNO, Arduino Mega y algunos otros, siempre y cuando el módulo Arduino incluya el conector ICSP de 6 pines.

Ethernet Shield W5100El Ethernet Shield W5100 es accesible por el entorno de los 10 USD en todas las tiendas electrónicas:  Por ejemplo puedes encontrar infinidad de marcas y presentaciones del W5100 en amazon.com.

Como soy un tanto más rebuscado, para este pequeño proyecto Arduino voy a conectar el Ethernet Shield W5100 a un módulo WEMOS D1 R2 (basado en el ESP8266) compatible con la programación Arduino, que justamente carece del conector ICSP.

El conector ICSP expone en forma estandarizada la conectividad SPI entre el módulo Arduino y sus periféricos. Pero si el módulo compatible con Arduino que quieres utilizar carece de conector ICSP, entonces será simplemente cuestión de recablear correctamente tu proyecto para acceder al bus SPI.

Conectando el Ethernet Shield W5100 al Wemos D1 R2

El Ethernet Shield W5100 puede ser fácilmente conectado al módulo Wemos D1 R2 con 8 cables, de acuerdo a este pinout:

WEMOS   W5100
GND --- GND (pin 1 ICSP)
5V  --- 5V  (pin 3 ICSP)
3v3 --- 3v3
RST --- RST (pin 4 ICSP, abajo del GND)
SS  --- SS (pin 10)
MOSI--- MOSI (pin 2 ICSP, entre 5V y GND)
MISO--- MISO (pin 6 ICSP, abajo 5V)
CLK --- CLK (pin 5 ICSP, entre MISO y RST)

Queda claro entonces que en vez de montar el Ethernet W5100 sobre el WEMOS D1 R2, los ponemos uno al lado del otro y realizamos ese cableado.

Si estás utilizando un Arduino Mega, u otro, con conector ICSP, simplemente colocas el Shield Ethernet W5100 como lo harías normalmente con cualquier Shield.

En ese caso toma precaución que ninguna parte de metal (o soldaduras) del Ethernet Shield toquen alguna parte del circuito del módulo Arduino:

En mi caso, durante otro proyecto, cuando monté el Ethernet Shield al Arduino MEGA, el conector de ETHERNET facilmente podía hacer cortocircuito con una parte del MEGA, por lo que tuve que separarlos unos milímetros (igual hacían contacto para funcionar correctamente).

Enviar un correo con el Ethernet Shield W5100

Es posible enviar un correo con el Ethernet Shield W5100 y aquí debajo te dejo el código que yo utilicé con suceso.

#include <SPI.h>
#include <Ethernet.h>     //Ethernet Shield

EthernetClient client;

//Shield requiere un MACADDRESS UNICO
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; 

//Configura una IP, gateway y subnet para tu red local:
IPAddress ip(192, 168, 2, 19);  
IPAddress gateway(192, 168, 2, 1);
IPAddress subnet(255, 255, 255, 0);

//Reemplaza las xxx con la IP de tu servidor de correo
IPAddress servidormail(xxx, xxx, xxx, xxx);

void setup()
{
	Serial.begin(9600);
	delay(1000);
	Serial.println("INICIO SISTEMA");
	Ethernet.begin(mac, ip, gateway, gateway, subnet);
	delay(2000);
	Serial.println("Ethernet Inicializado");

        //Cambia las cuentas de correo de remitente y destino por las que quieras probar tu!
	byte resultado = mandaremail(servidormail, "Hola desde ARDUINO", "Rutina de correo funciona", "remitente@correo.com", "destino@correo.com");
	Serial.println("RESULTADO DE ENVIAR EMAIL: " + (String)resultado);
}

void loop()
{
	/* add main program code here */
}


byte mandaremail(IPAddress smtp, String titulo, String mensaje, String de, String para)
{
	byte thisByte = 0;
	byte respCode;
	Serial.println("Mandar correo iniciado");
	if (client.connect(smtp, 25)) //Me conecto o devuelvo error
	{
		Serial.println(F("connectado"));
	}
	else {
		Serial.println(F("No pudo conectarse"));
		return 0;
	}

	if (!eRcv()) return 1;

	// coloca una ip pública tuya
	client.println(F("helo 1.2.3.4"));
	if (!eRcv()) return 2;
	client.println("MAIL From: <" + de + ">");
	if (!eRcv()) return 3;
	client.println("RCPT To: " + para);
	if (!eRcv()) return 4;
	client.println(F("DATA"));
	if (!eRcv()) return 5;
	client.println("To: You <" + para + ">");
	// change to your address
	client.println("From: cuenta <" + de + ">");
	client.println("Subject: " + titulo + "\r\n");
	client.println(mensaje);
	client.println(F("."));
	if (!eRcv()) return 6;
	client.println(F("QUIT"));
	if (!eRcv()) return 7;
	client.stop();
	return 255; // Email enviado
}

byte eRcv()
{
	byte respCode;
	byte thisByte;
	int loopCount = 0;
	while (!client.available()) {
		delay(1);
		loopCount++;
		// Si no recibo nada en 10 segs, doy timeout
		if (loopCount > 10000) {
			client.stop();
			Serial.println(F("\r\nTimeout"));
			return 0;
		}
	}
	respCode = client.peek();
	while (client.available())
	{
		thisByte = client.read();
		Serial.write(thisByte);
	}
	if (respCode >= '4')
	{
		efail();
		return 0;
	}
	return 1;
}

void efail()
{
	byte thisByte = 0;
	int loopCount = 0;

	client.println(F("QUIT"));

	while (!client.available()) {
		delay(1);
		loopCount++;

		// Si no recibo nada en 10 segs, doy timeout
		if (loopCount > 10000) {
			client.stop();
			Serial.println(F("\r\nTimeout"));
			return;
		}
	}

	while (client.available())
	{
		thisByte = client.read();
		Serial.write(thisByte);
	}
	client.stop();
	Serial.println(F("desconectado"));
}

Este código ejecuta su magia durante el setup {} y  es un ejemplo, nada más, de una funcionalidad básica para enviar correos desde tu Arduino.

Igualmente considera que necesitarás un servidor de correos (protocolo SMTP, sin encriptar) convencional, que confíe en la IP desde donde le conversará tu Arduino.