martes, 27 de noviembre de 2018

Creality Ender 3: puesta en marcha de nuestra primera impresora 3D

Acabamos de adquirir nuestra primera impresora 3D. Nos hemos decantado por la Comgrow Creality Ender 3, de la que hemos oído hablar muy bien en distintos foros especializados. Nos ha salido a un precio muy competitivo para lo que estamos acostumbrados a ver, aunque no tanto si lo comparamos con el que se oferta en numerosas páginas chinas, en las podemos encontrarla hasta un 25% más barata.

Proceso de ensamblado.

Nada más recibir el paquete, prodecimos raudos y veloces a su apertura para comprobar que todo estaba correcto. El paquete venía perfectamente organizado con los plásticos y espumas protectoras correspondientes, totalmente asegurado y con todas las piezas correctamente etiquetadas con su nombre o número. Se incluía un A3 a doble cara con todas las instrucciones de montaje, así como todas las herramientas necesarias para realizar el ensamblaje, algo que se agradece bastante. Aunque inicialmente teníamos un poco de miedo, pues nos habían comentado que este tipo de montajes eran complicados, en cuanto nos pusimos manos a la obra nos dimos cuenta de que esta tarea era tan sencilla como la de montar un mueble de Ikea o realizar una construcción con bloques de LEGO. Simplemente hay que ir paso a paso, fijándose bien en cada pieza, tornillo, correa,... e ir realizando el ensamblaje tal y como se indica en la hoja de instrucciones.
Fragmento del manual de instrucciones para el montaje de la impresora 3D.
 
Recreación del montaje de la impresora 3D Comgrow Creality Ender 3.
(Video proporcionado en la microSD incluida en el paquete)

Instalación y calibrado.

Una vez montada la impresora, estábamos ansiosos por probarla. Los pasos lógicos que pasan por la cabeza son los de leer el manual, instalar el software de control, realizar un complejo proceso de calibrado, estudiar el funcionamiento del software de diseño... La Creality Ender 3 incluye una pequeña tarjeta microSD y un adaptador USB para utilizarla a modo de pendrive. En esta tarjeta se pueden encontrar drivers, programas, manuales, documentos con preguntas frecuentes,... así como un pequeño manual de funcionamiento básico y un modelo 3D de ejemplo listo para ser impreso. En el manual se indica que la impresora puede funcionar de forma autónoma, sin necesidad de usar el ordenador, leyendo modelos 3D directamente desde cualquier tarjeta microSD a través de un puerto destinado a tal fin. Así que nos planteamos comenzar a imprimir el modelo de prueba sin realizar ningún tipo de instalación ni conexión al PC.
Encendimos la impresora y el display de la misma nos dio la bienvenida. Rápidamente comenzamos a navegar por las distintas opciones y nos hicimos una idea del funcionamiento general: opciones de movimiento del "cabezal de impresión" o "nozzle", opciones de ajustes de temperatura y opciones de impresión desde la microSD, con posibilidad de pausa. En menos de 5 minutos nos habíamos familiarizado con todas las opciones. Comentar que existen algunas diferencias de organización entre los menús que muestra la máquina y los que aparecen en el manual, seguramente como consecuencia de alguna actualización del firmware posterior a la impresión de las instrucciones. Sin embargo estas diferencias son mínimas y no suponen ningún problema para el uso de la máquina.
Preparados mentalmente para imprimir, metimos el filamento por el tubito habilitado para tal fin (siguiendo las indicaciones básicas del manual) y seleccionamos en el menú de la impresora la opción de imprimir desde la microSD ("print from SD"). El "nozzle" empezó a moverse y comenzó a salir un filamento solido que se retorcía sobre si mismo sin crear ninguna forma. Comenzaban a surgir los primeros problemas:
  • Primer problema: selección de temperatura del cabezal.
    Nos dimos cuenta que entre los distintos elementos incluidos en la caja de la impresora había una pequeña tablita con los distintos materiales soportados por la impresora y las temperaturas a las que deben ser fundidos. Por defecto la impresora arranca a 200ºC, pero estabamos intentando imprimir con ABS HD que se fundía entre 240 y 260ºC. Corregimos la temperatura en el menú correspondiente y reintentamos la impresión.
    Relación de distintos materiales del filamento usado por la impresora 3D y las distintas temperaturas de trabajo a las que debe configurarse la misma.
  • Segundo problema: distancia de la base ("bed").
    En el segundo intento de impresión notamos como el filamento ya salía ligeramente fundido y pegajoso, pero seguía retorciéndose sobre sí mismo y cuando alcanzaba la base llegaba sólido. La base estaba demasiado alejada del cabezal ("nozzle"), a solo un par de milímetros o menos. Habíamos pasado por alto que ésta tenía que estar a una distancia mínima, algo que indicaba claramente en las instrucciones, pero de lo que no nos habíamos percatado. Así que procedimos calibrar la distancia "a ojo", apretando las cuatro rueditas situadas debajo de la base, subiéndola hasta que "casi rozaba con el nozzle".
    Detalle de una de las ruedas de calibrado de la base ("bed") de la impresora 3D.
    Detalle de las dos ruedas frontales de calibrado de la base de la impresora 3D.
  • A la tercera va la vencida.
    Después del calibrado manual, reintentamos nuevamente la impresión. Esta vez comenzó a pegarse el filamento sobre la base, formando un patrón perfectamente definido. Los minutos pasaban lentamente, pero poco a poco la impresión iba tomando forma.
    Primeros momentos de la impresión del modelo proporcionado para pruebas en el kit de instalación de la impresora 3D.

Impresión de la figura de prueba.

Una vez comenzó la impresión de la figura de prueba, la cual inicialmente pensamos que era una rana, todo fue perfectamente, aunque algo lento para nuestra impaciencia. Comenzamos la impresión a las 11a.m. y nos teníamos que marchar a las 13:30h, con lo que la impresora disponía de escasas dos horas y media para acabar el trabajo. Desafortunadamente pecamos de demasiado optimistas. A la hora de marcharnos, se había completado escasamente un 30% de la figura. Eso si, la calidad nos pareció bastante buena. Accedimos a los controles de la máquina y le indicamos que realizase una pausa. A continuación procedimos a apagarla.
Estado de la impresión tras una hora y cuarto de trabajo.
Era viernes y no volveríamos al laboratorio hasta pasado el fin de semana. Sabíamos que la impresora disponía de la posibilidad de reanudar el trabajo en el punto que se realizó la pausa, pero no sabíamos si tras un largo fin de semana la máquina continuaría su trabajo con la misma calidad que lo empezó. Así que tras el fin de semana, a primera hora de la mañana volvimos a conectar el interruptor de encendido, y en el display se nos preguntó si queríamos continuar con la impresión. Obviamente contestamos que sí.
Display de la Creality Ender 3 preguntando si queremos reanudar la impresión.
El trabajo continuó durante cuatro largas horas más sin aparentes problemas. Si que notamos como surgieron algunas pequeñas grietas, principalmente en el punto inicial donde se reanudó la impresión.
Alumnos trabajando en el laboratorio mientras la impresora 3D hace su trabajo.
Pese a las pequeñas imperfecciones presentadas por el perrito (nos dimos cuenta que era un perrito y no una rana cuando observamos que se estaba imprimiendo una pequeña cola en la parte trasera), creemos que el resultado obtenido es bastante aceptable. Habrá que probar distintos materiales y jugar con distintos valores de temperatura hasta conseguir controlar perfectamente el trabajo de esta fantástica máquina de crear objetos.
Producto final. un bonito perrito, obtenido tras la impresión 3D.
Con este perrito ya tenemos una nueva mascota para el laboratorio de tecnología del Norba Caesarina de Cáceres.

martes, 23 de octubre de 2018

NORBA LANDER 1: desplazamiento por ruedas con tracción independiente

Para estudiar el uso de motores convencionales, el curso pasado, con los alumnos de 4º de ESO Juan Barco Gil y Adaya Ruiz Mayoral, comenzamos a desarrollar un vehículo con ruedas cuyo movimiento era controlado electrónicamente mediante interruptores. Hoy lo incluimos dentro del proyecto NorbaSKY como el "NorbaLander 1" de primera generación, que sentará las bases de futuros diseños de otros vehículos. A diferencia de los servomotores, que permiten realizar giros discretos de ángulos concretos, los motores DC con escobilla convencionales se limitan a dar vueltas continuamente. Acompañados de sistemas de reducción de revoluciones, podemos disminuir la velocidad de giro y aumentar la potencia del vehículo, algo imprescindible si queremos usarlos para el desplazamiento del sistema con un pequeño voltaje. La principal ventaja de estos motores es su sencillez, y por tanto también su precio. En contra tenemos su elevado consumo si los comparamos con otro tipo de motores, su calentamiento si se utilizan demasiado tiempo y las corrientes inducidas que pueden generar (recordemos que un motor es también un generador cuando el movimiento se crea de forma externa y se transmite al rotor). Y es precisamente la existencia de posibles corrientes inducidas lo que puede provocar que nuestro circuito quede frito si no aislamos el motor correctamente con optoacopladores o integrados que realicen la función de estos. Puedes probar a montar el siguiente circuito (en una placa real, no en simulador) y a continuación girar el eje del motor a un lado y a otro. Comprobarás el efecto de la corriente inducida. Está guay, ¿no?
Motor conectado a led, capaz de encenderlo mediante corriente inducida.
En particular, este vehículo dispone de dos ruedas motrices controladas por dos motores independientes, una tercera rueda doble articulada no motriz y es capaz de avanzar recto, girar a la izquierda o a la derecha y detenerse, acciones que son controladas mediante interruptores. Para aislar a los motores del resto de la circuitería se usa el integrado L293D que permite controlar dos motores independientes de una forma sencilla, suministrándoles voltajes entre 4,5V a 36V, y pudiendo controlar electrónicamente la velocidad de giro.
Integrado L293D para el control de dos motores.
En el desarrollo del mismo se han empleado casi tres meses, incluyendo el estudio inicial del controlador, conceptos básicos de programación, uso de interruptores, leds, y un largo etcétera de componentes hasta llegar a un diseño cuyo esquema hardware, realizado usando Tinkercad, se muestra a continuación:
Circuito para controlar dos motores DC mediante interruptores y placa Arduino.
Este diseño funciona perfectamente, pero tiene una serie de problemas. El primero es que la potencia suministrada a los motores es mínima (se toma de la propia placa arduino) y el segundo es que los interruptores de control se encuentran en la misma placa de pruebas o "protoboard" que el resto de los componentes electrónicos, que deberían ir en el chasis del vehículo, con lo que para controlarlo habría que acceder a ellos cuando este estuviera en marcha, algo impracticable. Es por ello por lo que para la implementación final se ha utilizado un esquema hardware ligeramente distinto, con batería externa de 9V para alimentar a los motores e interruptores ubicados en una segunda placa de pruebas que actúa como mando a distancia:
Circuito de control de dos motores DC mediante interruptores ubicados en mando a distancia.
Por su parte, el programa de control implementado para la gestión de este circuito es el siguiente:

#define botonIzq 5
#define botonSS  6
#define botonDer 7
#define motorIzqAvanza 11
#define motorIzqAtras  12
#define motorDerAvanza 9
#define motorDerAtras  10

int StarStop=0; //Posibles valores: 0 (apagado) y 1 (en marcha)
void MueveRobot(int direccion, int StarStop);


void setup(){

  for(int cont=9;cont<=12;cont++){pinMode(cont,OUTPUT);}
  for(int cont=5;cont<=7;cont++){pinMode(cont,INPUT);}
  MueveRobot(0,0);
  }

void loop(){

   int Direccion; //Posibles valores: -1 (izq), 0 (recto), 1 (der)
   
   Direccion=0; //Por defecto recto, salvo botón dirección pulsado
   if(digitalRead(botonIzq)){Direccion= -1;}
   if(digitalRead(botonDer)){Direccion=  1;}
   if(digitalRead(botonSS)){
      StarStop=!StarStop;
      while(digitalRead(botonSS)){} //Espera a levantar botón
      }
   MueveRobot(Direccion,StarStop);
   }

void MueveRobot(int direccion,int StarStop){

   digitalWrite(motorIzqAvanza,StarStop&&(direccion >  -1));
   digitalWrite(motorIzqAtras, StarStop&&(direccion == -1));
   digitalWrite(motorDerAvanza,StarStop&&(direccion <  1));
   digitalWrite(motorDerAtras, StarStop&&(direccion == 1));
   }  

Alumnos con versión alfa de Norba Lander 1.

Versión beta de Norba Lander 1.
La primera versión de este prototipo, junto a una memoria asociada al mismo, se envió durante el curso 2017-18 a la "Segunda edición del Certamen de Ciencias" que organiza conjuntamente la Fundación Caja de Extremadura, el Ateneo de Cáceres y MENSA España, obteniendo un tercer premio.




lunes, 22 de octubre de 2018

NORBA JOINT 1: nuestro primer brazo robot

Durante el curso pasado, los alumnos de 4º de ESO Guillermo Rebollo González y Miguel Escudero Rodríguez comenzaron el desarrollo del brazo robot de primera generación que incluimos hoy dentro del proyecto NorbaSKY para el estudio de sistemas con movimiento articulado mediante servomotores controlados por Arduino. Es muy importante conocer cómo funcionan los servomotores, ya que estos pueden ser utilizados en todo tipo de proyectos. Pueden formar parte de aviones, usándose para mover alerones, flags, timones... También pueden mover la dirección de cualquier tipo de vehículo, abrir compuertas, expulsar paracaídas,...
En particular, este brazo dispone de tres articulaciones (codo, muñeca y pinza) controlados cada uno mediante un motor independiente manejados bien por un par de interruptores o bien por una resistencia variable. En el desarrollo del mismo se han empleado más de dos meses, incluyendo el estudio inicial del controlador, conceptos básicos de programación, uso de interruptores, leds, y un largo etcétera de componentes hasta llegar a un diseño cuyo esquema hardware, realizado usando Tinkercad, se muestra a continuación:
Circuito de control de los tres servomotores del brazo robot.
Para la interacción entre los distintos componentes, se ha utilizado el siguiente código de control.

#include <Servo.h>
//Patillas control servos
#define PinSERVO1 6
#define PinSERVO2 5
#define PinSERVO3 3 
//Interruptores de control 
#define BotonSube1 13
#define BotonBaja1 7
#define BotonSube2 12
#define BotonBaja2 8
#define BotonANALOG3 0 
 //Angulos máximos y minimos de cada servo
#define MAX1 150
#define MIN1 0
#define MAX2 135
#define MIN2 45
#define MAX3 40
#define MIN3 0 
Servo Servo1, Servo2, Servo3; //3 objetos servo, uno por motor
int angulo1=MIN1, angulo2=MIN2, angulo3=MIN3; 
void setup() {
  Servo1.attach(PinSERVO1);  // Asocia patilla S1 a motor Servo1
  Servo2.attach(PinSERVO2);  // Asocia patilla S2 a motor Servo2
  Servo3.attach(PinSERVO3);  // Asocia patilla S3 a motor Servo3
  pinMode(BotonSube1,INPUT);
  pinMode(BotonBaja1,INPUT);
  pinMode(BotonSube2,INPUT);
  pinMode(BotonBaja2,INPUT);
  pinMode(BotonANALOG3,INPUT);
} 
void loop() {
  if (digitalRead(BotonSube1)&&(angulo1<MAX1)){angulo1++; delay(20);}
  if (digitalRead(BotonSube2)&&(angulo2<MAX2)){angulo2++; delay(20);}
  if (digitalRead(BotonBaja1)&&(angulo1>MIN1)){angulo1--; delay(20);}
  if (digitalRead(BotonBaja2)&&(angulo2>MIN2)){angulo2--; delay(20);} 
  //El valor leído en BotonANALOG3 (de 0 a 1023) lo transforma
  //proporcionalmente en grados (de MIN3 a MAX3).
  angulo3=map(analogRead(BotonANALOG3),0,1023,MIN3,MAX3);
  Servo1.write(angulo1); 
  Servo2.write(angulo2); 
  Servo3.write(angulo3); 
}

Versión alfa del brazo robot Norba Joint 1.
La primera versión de este prototipo, junto a una memoria asociada al mismo, se envió durante el curso 2017-18 a la "Segunda edición del Certamen de Ciencias" que organiza conjuntamente la Fundación Caja de Extremadura, el Ateneo de Cáceres y MENSA España, obteniendo un segundo premio.
Presentación de Norba Joint 1 en Certamen de Ciencias de Cáceres.
Como anécdota, comentar que durante los últimos momentos del desarrollo de este proyecto, previos a la presentación del mismo en el concurso, surgieron numerosos problemas de última hora, entre ellos el fallo del potenciómetro o resistencia variable que controlaba el movimiento del "codo" del brazo articulado.
No daba tiempo a adquirir un nuevo potenciómetro y hubo que improvisar la modificación del software para realizar dicho movimiento mediante una combinación de pulsaciones simultáneas de los interruptores existentes. Esta situación expresa claramente el potencial del uso de un microcontrolador programable para realizar este tipo de proyectos, permitiendo que con un mismo hardware (incluso defectuoso) puedan realizarse actualizaciones y correcciones de funcionamiento de una forma sencilla y económica.
Recientemente Miguel Escudero ha tenido que marcharse de Cáceres a un instituto de Madrid. Le invitamos a que nos siga desde allí por esta vía y que continúe realizando proyectos de este tipo con sus nuevos compañeros. Aquí tiene un espacio para mostrarlos al mundo y compartir conocimiento.

martes, 9 de octubre de 2018

Iniciación a Arduino

Se denomina Arduino a un conjunto de microcontroladores de bajo coste -Nano, Mega, UNO, Ardupilot,... mostrados a continuación en imágenes-, que pueden ser utilizados para construir cualquier tipo de proyectos de electrónica, mecánica, domótica o robótica, entre otros, de una forma relativamente sencilla. Se trata de un hardware libre, que se puede programar mediante software también libre. Esto quiere decir que cualquier empresa puede crear placas arduino siguiendo una serie de especificaciones, sin tener que pagar nada a nadie en concepto de derechos de autor o copyrights, pudiendo reducir los costes tanto como pueda. Además, es posible ampliarla de una forma sencilla mediante sensores de todo tipo o dispositivos diseñados para tal fin. Por su parte, la programación de este tipo de placas se realiza con un software gratuito accesible también por cualquiera que desee usarlo. Estas características convierten a Arduino en la plataforma ideal para ser utilizada por estudiantes, sin que estos tengan que desembolsar una cantidad elevada de dinero.

Resultado de imagen de arduino nano  Resultado de imagen de arduino mega  
Resultado de imagen de arduino uno  Resultado de imagen de arducopter  

Es importante aprender el funcionamiento de este tipo de microcontroladores ya que los usaremos muy frecuentemente en la creación de los pequeños proyectos de NorbaSky. Podríamos implementar éstos mediante diseños cableados estándar, pero estaríamos limitando enormemente su futura ampliación, modificación o rectificación. Una de las ventajas de utilizar Arduino es que podemos adaptar el mismo hardware a distintas necesidades con simples modificaciones del software, algo sumamente útil desde mi punto de vista. Observe por ejemplo el siguiente circuito:

Circuito con tres leds y dos interruptores, controlado por Arduino.
Se trata de un dispositivo que dispone de tres leds y dos interruptores. ¿Qué es lo que hace? La respuesta es cualquier cosa que queramos que se pueda realizar con tres leds y controlar con dos interruptores. Por ejemplo:
  1. Encender el led izquierdo, luego el central y después el derecho, a intervalos de un segundo, de forma indefinida (ignorando el uso de botones).
  2. Encender el led izquierdo cuando se pulsa el interruptor izquierdo, el led derecho cuando se pulse el interruptor derecho, o bien el led central cuando no se pulse ningún interruptor.
  3. Encender los tres leds de forma intermitente a intervalos de 1 segundo si se pulsa el primer interruptor. En caso contrario, si se pulsa el segundo, los leds permanecerán encendidos y si no se dejarán apagados.
  4. Encender los leds uno a uno de derecha a izquierda o de izquierda a derecha, en intervalos de un segundo, en función del botón que se pulse.
  5. Contar en binario de forma ascendente o descendente en función del botón que se pulse.
Puedes descargar en este enlace el software que permite realizar estas operaciones, así como la propuesta de otras tareas distintas con el mismo hardware.

Actualización del 19/03/2019

Puedes encontrar distintas prácticas sobre creación de hardware y programación con Arduino en la entrada sobre el I Congreso de Innovación y Tecnología Educativa de Extremadura, en donde montamos un taller para que el público aprendiera a usar esta plataforma de creación de hardware mediante sencillos y didácticos ejemplos.

miércoles, 3 de octubre de 2018

Cómo surgió el proyecto

La idea del proyecto surge como una iniciativa propuesta a una serie de profesores y alumnos del IES Norba Caesarina por miembros del Ateneo de Cáceres, tras haber obtenido tres premios en un certamen de carácter científico organizado por ellos mismos. Dicha propuesta consistiría en lanzar una sonda al espacio (a una altitud de 30 Km) mediante un globo de helio, la cual recogiese información de todo tipo durante el trayecto. El reto quedó en el aire, debido entre otros factores a su gran complejidad. Sin embargo, se trataba de una idea muy interesante y atractiva.
Proyectos desafiantes de este tipo ofrecen una fuerte motivación para realizar un trabajo innovador, disparando la imaginación y consiguiendo que los desarrolladores se esfuercen al máximo para lograr el objetivo final. Además, la importancia en sí de proyectos como este no es tanto la consecución del objetivo final (llevar la sonda al espacio, que esta recoja datos y posteriormente recuperar la misma), sino la de desarrollar tecnología y conocimiento a través de proyectos de menor envergadura teniendo el objetivo final como catalizador de los mismos. Así mismo queremos que en el proyecto se integren distintas áreas de tal manera que se llegue a un mayor número de profesores y alumnos, se estudie el proyecto desde distintas perspectivas y al final exista una comunicación entre los distintos grupos. También posibilita el que esté abierto a distintas capacidades o motivaciones de profesores y alumnos.