PROYECTOS
EVENTOS
talleres
NOTICIAS
PERSONAS

Secadora de biomateriales

1. Motivación

Uno de los mayores problemas ambientales de nuestra década es la generación incontrolada de residuos, que acaban acumulándose como fase final de una cadena de producción y consumo que no tiene fácil solución. Es por esto que en el Fablab se nos planteó el desafío de ayudar con esta problemática mediante un dispositivo secador de biomateriales, con el fin de poder reutilizar estos materiales que hasta el momento eran desechos y darles valor, a la vez que se le da otra perspectiva a la cadena de producción que los generan y con esto podemos pensar en nuevos usos innovadores para estos materiales.

La máquina secadora de biomateriales es parte de un kit Open Hardware de Biofabricación Digital, compuesto por 6 máquinas. De lograrlo, estaríamos creando el primer kit de esta naturaleza en el mundo.

Biofabricar es un gran cambio de paradigma para la producción y el consumo. Significa enmarcar la producción dentro de una economía más circular y sustentable, generando materiales y productos basados en materia orgánica y biodegradable. Se trata de diseñar considerando los ciclos de vida completos. En nuestro caso, utilizamos desechos del laboratorio y de la Facultad, domiciliarios e industriales.
El kit, además de productivo y funcional, será una herramienta educativa. Es por esto que en esta página tomaremos los aspectos más importantes de su diseño y construcción para que cualquiera pueda crear su Biosecadora.

Diseño 1

2. Problemática y oportunidades: 

Según se nos planteó y en base a una primera iteración realizada en el FabLab U.Chile de una maquina secadora, pudimos obtener bastantes insights y recomendaciones iniciales muy importantes a tomar en cuenta para que los resultados de este proyecto fuesen lo más acorde a lo que se buscaba. Es por eso que nos preocupamos de los siguientes puntos en base a la operación de la maquina secadora:

  1. Que sea lo más simple posible: Es necesario que maquina sea fácil de operar, mantener y almacenar. Que su uso sea intuitivo y que ponerla en marcha no tome más de un par de minutos de configuración.
  2. Que sea replicable: Este es un punto no menor al momento de diseñar la maquina secadora ya que la variedad de componentes disponibles para su fabricación presenta una complejidad no menor al momento de construir, operar y mantener la máquina.
  3. Segura: Es de suma importancia para nuestro equipo que la maquina sea segura, tanto para el operador, como para la red eléctrica del lugar en específico donde se está operando. Trabajar con electricidad y resistencias eléctricas es un tema no menor que se debe evaluar bien antes de poner en marcha, ya que malos cálculos o malos diseños podrían generar que la maquina pueda generar un incendio o un corto circuito en la red de energía a la que está conectada.
  4. Adaptable: La maquina debe ser lo más adaptable posible, con adaptabilidad nos referimos a adaptabilidad de su construcción a los materiales disponibles y a la adaptabilidad del uso según el tipo de material que se quiere secar.

3. Atributos de la solución.

En base a los puntos anteriormente mencionados, el grupo llegó a las siguientes conclusiones:

  • Con respecto al primer punto “Operación”:

Para la operación de la maquina se realizará un control automático, en el cual el operador ingresará los siguientes datos:

Tiempo de secado: Tiempo automático en que la maquina empieza a operar y se apaga completamente.

Material: Opción que regulará los ciclos de ventilación de la secadora, si no se ingresan datos, el microcontrolador tomará las mediciones iniciales de humedad y en base a eso elegirá algún plan que le permita terminar el ciclo de secado lo antes posible.

Temperatura: Si se conoce el comportamiento de un material en específico, se recomienda introducir las temperaturas mínimas y máximas, particularmente importante la temperatura máxima que el material puede soportar, con el fin de no dañar el material en el proceso de secado o evitar que se fracture debido a la dilatación del mismo.

Después de seleccionados estos parámetros, la maquina comenzará su ciclo de secado hasta apagarse automáticamente cuando se cumplan los estándares de humedad o si el tiempo de secado excede el límite.

  • Con respecto al segundo punto “Replicación”:

Para que la maquina sea completamente replicable, se han elegido materiales y componentes lo más genéricos y fáciles de conseguir, esto con el fin de que la maquina pueda ser construida en distintos escenarios.

Para la estructura de la caja, se eligió madera como principal componente, esto debido a su bajo costo, fácil manipulación y versatilidad.

Para la electrónica de la maquina se decidido utilizar un microcontrolador del tipo Arduino, en conjunto con un LCDShield con botonera y un controlador PWM de 8 salidas genérico para este tipo de trabajos. La parte de sensorización de la maquina también incluye, sensores de temperatura, humedad, efecto hall, transformadores de 12 y 5 Volt, conectores, interruptores, cables, un fusible y su portafusibles y Dimmers de corriente.

Para la ventilación se utilizarán ventiladores de computador convencionales de 120mm y 12 Volts de operación, los cuales pueden ser encontrados en cualquier tienda de computación o electrónica.

Para el elemento calefactor fueron varias las opciones a considerar, resistencias de tipo cerámicas, de Alambre de Nicrom(como las que usan los secadores de pelo), TermoPads de calefacción de impresoras 3D, etc. En nuestro caso la solución fue utilizar resistencias ceramicas de radiación infrarroja. La elección de estas resistencias fue la simplicidad de su uso y montaje, en conjunto con la seguridad que entregan.

  • Sobre el tercer punto “Seguridad”:

El equipo de trabajo fue enfático en relación al apartado de seguridad, al ser la secadora una maquina autónoma que opera por largos periodos, posee una potencia eléctrica considerable y trabaja con temperaturas elevadas, se llegó a las siguientes conclusiones en base al diseño y operación de la máquina, que deberían asegurar imprevistos en su operación normal.

  • Se agregó un fusible de protección de altas corrientes. Como la maquina maneja alrededor de entre 200 y 700 Watts de potencia, se pudo definir que manejará en su potencia máxima aproximadamente 3.1 Amperes, por lo que un fusible ceramico de rápida acción de 3.5 amperes, debería bastar para proteger a la maquina de un cortocircuito inesperado en su operacion y al usuario de un shock eléctrico mortal.
  • Se agregó un apagado automatico en el código de control si la maquina sobrepasa los 280 grados de temperatura en la resistencia, para evitar que la estructura de madera llegue a los 300 grados y pueda combustionarse debido a esto.
  • Se agregó un sensor de efecto hall magnético entre la puerta de la secadora y la estructura, para que la maquina dejara de funcionar automáticamente, si es que la puerta de la maquina se encontase abierta, esto para evitar que el calor escape, y que el sistema de control de la maquina elevara la potencia de las resistencias sin control.
  • En base al último punto “Adaptabilidad”:

El diseño de la secadora fue lo más simple y modular posible, de manera que cuando alguien quisiera replicar la máquina, esta pudiese adaptarse al usuario según sus restricciones u objetivos.

Se trabajó en un sistema de bandejas adaptables, que puede modificarse según el material y el tamaño que se desee secar dentro de la máquina. [aún en construcción]

 

Prototipado:

En este apartado se describirán brevemente los procesos de prototipado y construcción de la maquina según fueron realizados por el equipo de trabajo.

Después de analizar las soluciones de mercado, se procedió a esquematizar el primer prototipo de trabajo, el cual consta de una caja de madera con forma de refrigerador, que en su base posee entradas de aire y un elemento calefactor, el cual calienta el aire que posteriormente es enviado por el sistema de ventilación de forma uniforme al interior de la secadora mediante una placa perforada, para así asegurar un flujo y temperatura en toda la máquina, y que termina saliendo por la parte superior de la maquina expulsando el vapor de agua contenido en el aire tibio y así lentamente quitándole la humedad al sistema.

Esquema simple de funcionamiento
Esquema simple de funcionamiento

  1. Construcción del Chasis.

Para la construcción del chasis el equipo tomo en cuenta las consideraciones anteriores y construyó el chasis de madera con ayuda de la maquina CNC

*** inserte construcción aquí****

  1. Electrónica:

Para la construcción de la electrónica el esquema principal debería tener esta forma relativamente, las conexiones de la siguiente imagen no representan la realidad del proyecto, pero si dan un esquema básico de como funciona la parte de electrónica.

***Agreguen diagrama de funciones de Arduino acá, les recomiendo usar STARTUML (Googleenlo)***

Esquema Simple de componentes
Esquema de referencia de componentes electronicos
  1. Código:

El programa del código puede definirse desde dos partes, la parte usuario(dentro del setup de Arduino) y la parte de operación (dentro del void loop).

Para la parte del usuario(en verde claro) se llama a la función de configuración, la cual setea los parámetros anteriormente mencionados para el funcionamiento de la maquina en conjunto con todos los parámetros necesarios para el posterior funcionamiento de está. La parte de operación(en zul) controla la maquina según el siguiente esquema.

flujo del programa

 

 

 

  • Adicionalmente una primera iteración del codigo posee la siguiente estructura:

//Librerías Necesarias para el sensor de humedad y temperatura
//Deben instalarse "Adafruit DHT sensor library" y "Adafruit Unified Sensor"
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <LiquidCrystal.h> 
#include <Servo.h>

//_______________________________________________________________________________
//Definicion de pines Digitales:
#define tempHumSenpin1 2 
#define tempHumSenpin2 3 

//_______________________________________________________________________________
//Definicion de pines Analogos:


 
//_______________________________________________________________________________
//Inicializacion de sensores, pantalla, botones, etc.
#define DHTTYPE DHT22   // DHT 22  (AM2302)
DHT dht1 = DHT(tempHumSenpin1, DHTTYPE); // Initialize DHT sensor for normal 16mhz Arduino:
DHT dht2 = DHT(tempHumSenpin1, DHTTYPE); 
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
Servo servoDimmer1;//crea los objetos servos
Servo servoDimmer2;

//definicion de variables
//botones
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5
int read_LCD_buttons();  // para leer los botones

//Valores de operacion
int goalTemp = 25; //temperatura de operacion segun la config inicial DEFAULT:25°C
int tiempoFunc = 1 ;

int paso1 = 0;
int paso2 = 0;
int ok = 0;

//sensores
int intervaloSensores = 2000;
int millisSensor1; //sensor 1
float hSensor1;
float tSensor1;
int millisSensor2; //sensor 2
float hSensor2;
float tSensor2;

//servos
int posDimmer1= 0;
int posDimmer2= 0;
int millisDimmer1; 
int millisDimmer2; 
int intervaloDimmers;

//______________________________________________________________________________
void setup() {
  unsigned long currentMillis = millis(); //Contado de tiempo del arduino
  // Inicializar a un baud rate de 9600:
  Serial.begin(9600);
  //inicializar los servos
  servoDimmer1.attach(5); //Salidas pwm disponibles 3,5,6.
  servoDimmer2.attach(6); //NO CAMBIAR valores
  
  //iniciar sensor de temperatura y humedad:
  dht1.begin();
  dht2.begin();
  
  //inciar display
  lcd.begin(16, 2);// Inicializar el LCD [posicion fila, posicion columna]
  lcd.setCursor(0,0);
  lcd.print("   BioHeat800   ");// PONER UN MENSAJE EN EL ESPACIO 0,0 DEL DISPLAY
  lcd.setCursor(0,1);
  lcd.print("bienvenido...   ");// PONER UN MENSAJE EN EL ESPACIO 0,0 DEL DISPLAY
  delay(3000);
  
  //tirar el programa de config
  configuracionInicial;
  
}

//___________________________________LOOP_____________________________________

void loop() {

fan1 ;  
fan2 ;
fan3 ;
leerSensor1 ;
leerSensor2 ;
dimmer1 ; 
dimmer2 ;

//Prints en SERIAL MONITOR
//  Serial.print("Humidity: ");
//  Serial.print(h);
//  Serial.print(" % ");
//  Serial.print("Temperature: ");
//  Serial.print(t);
//  Serial.print(" \xC2\xB0");
//  Serial.print("C | ");
//  Serial.print(f);
//  Serial.print(" \xC2\xB0");
//  Serial.print("F ");
//  Serial.print("Heat index: ");
//  Serial.print(hic);
//  Serial.print(" \xC2\xB0");
//  Serial.print("C | ");
//  Serial.print(hif);
//  Serial.print(" \xC2\xB0");
//  Serial.println("F");

//____________________________________FANS______________________________________

void fan1(){
  return;
  }
void fan2(){
  return;
  }
void fan3(){
  return;
  }
//_______________________________MOVER DIMMERS__________________________________
void dimmer1(){
  unsigned long currentMillis = millis();
   if(currentMillis - millisDimmer1 > intervaloDimmers) {
     millisDimmer1 = currentMillis; 
     servoDimmer1.write(posDimmer1);
       if(tSensor2<goalTemp & posDimmer1<180){ //acá se controla el maximo del servo 1
        posDimmer1 = posDimmer1+5;
        servoDimmer1.write(posDimmer1);
       }
       else if(tSensor2>goalTemp){
        posDimmer1 = posDimmer1-5;
        servoDimmer1.write(posDimmer1);
        }
   }
}
void dimmer2(){                 // *** NOTA, EL SERVO 2 SOLO SE MUEVE SI EL SERVO 1 YA ESTÁ A TOPE**
  unsigned long currentMillis = millis();
   if(currentMillis - millisDimmer2 > intervaloDimmers){
     millisDimmer2 = currentMillis; 
     servoDimmer2.write(posDimmer2);
     
       if(tSensor2<goalTemp & posDimmer1== 180 & posDimmer2<180){ //acá se controla el maximo del servo 2, 
        posDimmer2 = posDimmer2 + 5;
        servoDimmer2.write(posDimmer2);
       }
       else if(tSensor2>goalTemp){
        posDimmer2 = posDimmer2 - 5;
        servoDimmer2.write(posDimmer2);
        }
   }
}

//_______________________________LEER SENSORES__________________________________
void leerSensor1(){
  unsigned long currentMillis = millis();
   if(currentMillis - millisSensor1 > intervaloSensores) {
     millisSensor1 = currentMillis;  
      // Reading temperature or humidity takes about 250 milliseconds!
      hSensor1 = dht1.readHumidity();
      // Read temperature as Celsius
      tSensor1 = dht1.readTemperature();
      // Check if any reads failed and exit early (to try again).
      if (isnan(hSensor1) || isnan(tSensor1)) {
        Serial.println("Failed to read from DHT sensor 1!");
        return;
          }
   }
}
void leerSensor2(){
  unsigned long currentMillis = millis();
   if(currentMillis - millisSensor2 > intervaloSensores) {
     millisSensor2 = currentMillis;  
      // Reading temperature or humidity takes about 250 milliseconds!
      hSensor2 = dht2.readHumidity();
      // Read temperature as Celsius
      tSensor2 = dht2.readTemperature();
      // Check if any reads failed and exit early (to try again).
      if (isnan(hSensor2) || isnan(tSensor2)) {
        Serial.println("Failed to read from DHT sensor 2!");
        return;
          }
   }
}

//____________________________________BOTONES_________________________________
//Funcion que lee botones del shield  
int read_LCD_buttons()  { 
  adc_key_in = analogRead(0);      // Leemos A0
    // Mis botones dan:  0, 145, 329,507,743  //ESTA PARTE TENEMOS QUE CALCULARLA EXPERIMENTALMENTE ANTES DE CUALQUIER COSA ( HACER UN ANALOG READ DEL PING A0 PARA VER QUE VALOR DA CADA BOTON)
    // Y ahora los comparamos con un margen comodo
    if (adc_key_in > 900) return btnNONE;     // Ningun boton pulsado 
    if (adc_key_in < 50)   return btnRIGHT; 
    if (adc_key_in < 250)  return btnUP;
    if (adc_key_in < 450)  return btnDOWN;
    if (adc_key_in < 650)  return btnLEFT;
    if (adc_key_in < 850)  return btnSELECT; 

    return btnNONE;  // Por si todo falla
}

//_______________________CONFIGURACION_INICIAL_________________________________
//Funcion que setea el ciclo, temperatura objetivo, tiempo de operacion (usa botones)
void configuracionInicial(){
  while (paso1 = 0) { //setea la temperatura de la secadora
  lcd.setCursor(0,0);
  lcd.print("set goal temp");// PONER UN MENSAJE EN EL ESPACIO 0,0 DEL DISPLAY
  lcd.setCursor(0,1);
  lcd.print(goalTemp);// valor inicial de la temperatura
  lcd.print("C");
      if (read_LCD_buttons()== btnUP){       //subir temperatura
         goalTemp++;
          }
      else if (read_LCD_buttons()== btnDOWN){ //bajar temperatura
        goalTemp--;
          }
      else if(read_LCD_buttons()== btnSELECT){//terminar paso 1
        paso1 = 1;
          }
      else{
        return;
          }
    }
  
  while (paso2 = 0) { //setea el tiempo de funcionamiento de la maquina
  lcd.setCursor(0,0);
  lcd.print("set tiempo func");// PONER UN MENSAJE EN EL ESPACIO 0,0 DEL DISPLAY
  lcd.setCursor(0,1);
  lcd.print(tiempoFunc);// valor inicial de la temperatura
  lcd.print("hrs");
    if (read_LCD_buttons()== btnUP){       //subir temperatura
       tiempoFunc++;
        }
    else if (read_LCD_buttons()== btnDOWN){ //bajar temperatura
    tiempoFunc= tiempoFunc-1;
        }
    else if(read_LCD_buttons()== btnSELECT){//terminar paso 1
     paso2 = 1;
        }
    else{
      return;
      }
    }
  
  if (paso1==1 & paso2==1){
  lcd.setCursor(0,0);
  lcd.print("Comenzando...");// PONER UN MENSAJE EN EL ESPACIO 0,0 DEL DISPLAY
  ok = 1;
  lcd.setCursor(0,1);
  lcd.print("."); // hace puntitos que avanzan a la derecha en el display "para darle el toque"
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  lcd.print(".");
  delay(200);
  }
      else{
      return;
      }

}
//______________________________________________________________________________
//_____________________________________FIN______________________________________
//______________________________________________________________________________

 

Bandejas Funcionales:

***Inserte acá el trabajo funcional de las bandejas**

  1. Proyecciones

En base al trabajo anteriormente realizado, se puede concluir que el funcionamiento y prototipado de la maquina tiene un buen futuro, pero sin lugar a dudas se necesita un par de iteraciones más en cuanto al diseño funcional de la maquina para poder otorgar un mejor alcance a los biomateriales que se quieren secar, en particular con la parte de construcción de bandejas y tamaño de la maquina en general.

 

CONTEXTO
TÍTULO
Secadora de biomateriales
TIPO DE PROYECTO
CATEGORÍAS
INDUSTRIA
FECHA DE CONSTRUCCIÓN
8 de Agosto de 2019
CONSTRUCCIÓN