Plancha Calentadora Multiusos

Introducción

El objetivo principal de nuestra práctica era construir una plancha para poder calentar comida.

Además, durante la realización de la misma nos dimos cuenta de que también podría usarse para precalentar circuitos y llevarlos hasta el punto de soldadura. Pensamos que esta opción también podría resultar interesante ya que, si pensamos en un plan de negocio, una plancha para cocinar cuesta 29€ y solo en materiales presupuestados para esta práctica se supera ese precio, mientras que una estación de calentado de PCB suele costar unos 80€.

Desarrollo

Pasos Dados

Una vez decidido lo que queríamos hacer nos pusimos manos a la obra.

Cuando llegaron todas las piezas y con una plancha y una madera que nos regalaron para hacer la práctica, quedamos varios días en el laboratorio de física de la universidad para poder realizar el proyecto.

Comenzamos colocando los materiales de manera que en base a los cables con los que
contábamos ninguno quedara ni demasiado corto ni demasiado largo. Al unir todo con los cables temíamos que al haber separados varios cables de la alimentación de la plancha nos pegara un calambrazo o algo prendiera en llamas, así que actuamos con prudencia para evitar cualquier error. Una vez conectado y comprobado todo vimos que no había ningún problema.

Hicimos un código para comprobar que cada parte de la práctica funcionaba por separado y cuando
vimos que todo iba a la perfección unificamos todo el código.

Montamos la práctica definitivamente sobre la madera y probamos el código unificado, todo
funcionaba a la perfección. Lo último fue modificar el código para que quedara mucho más legible y
limpio.

Materiales

MaterialPrecio
Placa Arduino Uno0€ (clase)
Cables10,99€
Relé SSR-40DA10,99€
Sensor Tº Termopar Tipo K8,99€
Codificador5,79€
Leds0€ (clase)
Plancha0€ (reutilizada)
Madera0€ (reutilizada)
Ventilador0€ (reutilizado)
Interruptor0€ (reutilizado)
Total36,76€

Código

//librerias para manejar encoder y sensor de temperatura
#include "max6675.h"
#include "Encoder.h"

// variable para rele
int SSR = 5;

// variables sensor de temperatura
int ktcSO = 8;
int ktcCS = 9;
int ktcCLK = 10;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);

//variables relacionadas con el encoder y modo reflow
int pinEnt = 4;  
bool E = false;
bool pulsado = false;
bool terminado = true;

long antiguaPosicion  = 0;
int tempObjetivo = 0;

#define ENCODER_OPTIMIZE_INTERRUPTS
Encoder encoder(2, 3);

// leds para indicar temperatura
int led1 = 11;
int led2 = 12;
// led para indicar activación del modo reflow
int led3 = 6;

float temperatura;

unsigned long time;
unsigned long transcurrido;

void setup() {
  Serial.begin(9600);
  pinMode(SSR, OUTPUT);       //rele apagado inicialmente
  digitalWrite(SSR, LOW);
  pinMode(led1, OUTPUT);       //led apagado inicialmente
  digitalWrite(led1, LOW);
  pinMode(led2, OUTPUT);       //led apagado inicialmente
  digitalWrite(led2, LOW);
  pinMode(led3, OUTPUT);       //led apagado inicialmente
  digitalWrite(led3, LOW);

  // declaramos pin encoder pulsador
  pinMode(pinEnt, INPUT); 
  encoder.write(antiguaPosicion);
  
  delay(500);
}

void loop() {
  
    time = millis();
    long nuevaPosicion = encoder.read();
  
    // controlar si el usuario quiere modificar la temperatura con el encoder
    if (nuevaPosicion != antiguaPosicion) {
      if(nuevaPosicion < 0){
        nuevaPosicion = 0;
        encoder.write(0);
      }
      antiguaPosicion = nuevaPosicion;
      tempObjetivo = nuevaPosicion;
    }
  
   // control del modo reflow
   if(E == false){
      if(digitalRead(pinEnt) == LOW){
        E = true;
        if(pulsado){
          pulsado = false;
          terminado = true;
        }else{
          pulsado = true;
          terminado=false;
        }
      }
   }
  
    if(E == true){
      if(digitalRead(pinEnt) == HIGH){
        Serial.println("Presionado");
        E = false;
        
      }
    }

  //////////////////////////////////////////////////////////////////
 
    delay(200);
    temperatura = ktc.readCelsius();

    // modo normal (regular temperatura)
    if(temperatura < tempObjetivo && !pulsado){ 
      if(temperatura < tempObjetivo){
        analogWrite(SSR,20);
      } else{
        digitalWrite(SSR, LOW);
      }
    }
    // modo reflow 
    else if(pulsado){
         if(temperatura > 180){ // apagar
          digitalWrite(SSR, LOW); 
          terminado = true;
          pulsado = false;
        } else if(temperatura <= 138 && temperatura > 110){ // estabilización
          analogWrite(SSR, 6);
        }else if(temperatura < 90){ // precalentamiento
          digitalWrite(SSR,HIGH);
        }else if(temperatura > 138 && temperatura < 180){ // calentamiento
          digitalWrite(SSR,HIGH);
        }
    } 
    else{
       digitalWrite(SSR, LOW);
    }

    // mostrar la T cada 0,5s por pantalla
    if(time-transcurrido>500){
      transcurrido = time;
      Serial.print("Temperatura actual = "); 
      Serial.print(temperatura);
      Serial.print("             Temperatura objetivo "); 
      if(!pulsado){
        Serial.println(tempObjetivo);
      }else{
        Serial.println(220);
      }
     }

     // encender led verde si T inferior a 40º
     if(temperatura < 40){
        analogWrite(led1, 150);
        analogWrite(led2, 0);
     }
     // encender led rojo si T superior a 40º
     else{
        analogWrite(led2, 150);
        analogWrite(led1, 0);
      }

     // encender el led verde 2 que indica que está modo reflow
     if(!terminado){
        digitalWrite(led3, HIGH);
      }else{
        digitalWrite(led3, LOW);
    }

}

Caso de uso: calentar / cocinar comida

Caso de uso: soldar

Video

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *