Unidad de temperatura y cronómetro con Arduino

Temperatura de arduino terminada y temporizador
Unidad de temperatura y temporizador

Hice esta unidad de temperatura y temporizador de arduino para ayudar a escaldar los pollos antes de desplumarlos. Incorpora un sensor a prueba de agua para monitorear la temperatura del agua y una cuenta regresiva para el tiempo de inmersión. Tanto la temperatura como la cuenta atrás se muestran en la pantalla de 4 dígitos.


Componentes requeridos

  • Arduino Uno (o genérico)
  • DS18D20 sensor de temperatura a prueba de agua con un cable de 1m
  • TM1637 4 digit 7 segment display
  • Caja impresa en 3D - Ver en Thingiverse
  • 4.7kΩ resistor
Primera etapa

La caja impresa en 3D

Remezclando el diseño

Basé mi diseño en una caja de Arduino Uno impresa en 3d disponible Aquí, que modifiqué en SketchUp.

La adición de un recorte para la pantalla de 4 dígitos, un agujero para el cable del sensor y el aumento de la altura de la cubierta para permitir más espacio. Aquí está el diseño final de Thingiverse

3d Impresión Arduino Uno Caja
3d Imprimiendo la caja
Segunda etapa

Cableándolo

El cableado de la temperatura y el temporizador de Arduino está terminado
El cableado de la temperatura y el temporizador de Arduino está terminado

Las conexiones

Utilizando cables de conexión dupont acortados, la energía y la tierra para el sensor de temperatura y la pantalla se soldaron a un solo cable de suministro, y la línea de datos para el sensor se soldó a la fuente de alimentación a través de la resistencia. Los cables CLK y DIO fueron acortados. Todas las conexiones fueron envueltas en plástico retráctil para evitar cualquier cortocircuito. Finalmente soldé un pin corto a cada cable para conectarlo a la UNO y uní la pantalla con mi pistola de pegamento caliente.

Fritzing diagram of circuit
Fritzing diagram of circuit

Utilicé un tablero genérico Sunfounder Arduino Uno que tenía de un proyecto anterior.

Los otros artículos, aparte de los que se compraron en Amazon.


Sunfounder genérico Arduino Uno
Sunfounder genérico Arduino Uno

Conexiones con Arduino Uno

  • Power to 5v Pin
  • Ground to ground Pin
  • Data wire to Pin 2
  • Display CLK to Pin 6
  • Display DIO to Pin 5
Tercera Etapa

Subir el código

La temperatura y el temporizador de Arduino casi han terminado
Listo para montar
La temperatura y el temporizador de Arduino están en funcionamiento
La temperatura y el temporizador de Arduino están en funcionamiento

Configurar la UNO

Copia el boceto de Arduino abajo y usando el IDE de Arduino sube al Uno.


Se necesitarán tres bibliotecas adicionales

  • OneWire
  • DallasTemperature
  • TM1637

Estos pueden ser fácilmente instalados usando las librerías de gestión en el IDE de Arduino


#include <OneWire.h>
#include <DallasTemperature.h>
#include "TM1637.h"
#define CLK 6 //Pins for TM1637       
#define DIO 5 //Pins for TM1637
TM1637 tm1637(CLK,DIO);

// Data wire is plugged into Digital Pin 2
#define ONE_WIRE_BUS 2

// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature. 
DallasTemperature DS18B20(&oneWire);
char temperatureCString[7];
char temperatureFString[7];

// Set timer duration
int second = 30;

void setup() {

  Serial.begin(115200);
  DS18B20.begin();
  tm1637.init();
  tm1637.set(BRIGHTEST); 
  // BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
  delay(500);
}

void getTemperature() {
  float tempC;
  float tempF;
  do {
    DS18B20.requestTemperatures(); 
    tempC = DS18B20.getTempCByIndex(0);
    dtostrf(tempC, 2, 0, temperatureCString);
    tempF = DS18B20.getTempFByIndex(0);
    dtostrf(tempF, 3, 2, temperatureFString);
    Serial.println(temperatureCString);
    delay(100);
  } while (tempC == 85.0 || tempC == (-127.0));
}

void loop() {
  getTemperature();
  int result = atoi(temperatureCString);
  int num1 = (result / 10) % 10;
  int num2 = result % 10;
  int num3 = second % 10;
  int num4 = (second / 10) % 10;
  tm1637.display(0,num1);
  tm1637.display(1,num2);
  tm1637.display(2,num4);
  tm1637.display(3,num3);
  tm1637.point(POINT_ON);
  if (second > 0) {
    second--;
  }else
  second = 30;
  Serial.println("Temperature has been sent");
  delay(200);
  }

Este corto pedazo de código imprime la temperatura a los primeros 2 dígitos de la pantalla y un temporizador de cuenta atrás de 30 segundos a los últimos 2 dígitos.

He descubierto que 30 segundos es más o menos lo adecuado para hacer el trabajo, pero se puede ajustar fácilmente hasta un minuto cambiando la segunda variable.

Esta cajita es de gran ayuda cuando estamos matando pollos.

Mantener el agua a la temperatura perfecta nunca ha sido tan fácil y un temporizador preciso (en lugar de contar en nuestras cabezas) es genial!