Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki

Arduino: Obtener temperatura con sensor SEN118A2B de cabeza de acero y Arduino
Hardware


Explicamos cómo obtener la temperatura con un sensor SEN118A2B de cabeza de acero y con la placa Arduino UNO. Indicamos todos los requisitos hardware (Arduino, sensor, resistencia, ...) y el programa necesario para mostrar los grados Celsius (centígrados), Kelvin y Fahrenheit.



 

Requisitos para proyecto hardware con Arduino y sensor de temperatura SEN118A2B

Para realizar un proyecto hardware para obtener la temperatura usando Arduino UNO y un sensor Temperature sensor with steel head SEN118A2B necesitaremos los siguientes componentes:

  • Arduino UNO:

Requisitos para proyecto hardware con Arduino y sensor de temperatura SEN118A2B

  • Sensor de temperatura, en nuestro caso usaremos un Temperature sensor with steel head SEN118A2B:

Requisitos para proyecto hardware con Arduino y sensor de temperatura SEN118A2B

  • Resistencia de 10K:

Requisitos para proyecto hardware con Arduino y sensor de temperatura SEN118A2B

  • Cable para conectar sensor con resistencia y GND, en nuestro caso, usaremos un cable normal con las dos puntas "peladas":

Requisitos para proyecto hardware con Arduino y sensor de temperatura SEN118A2B

En el siguiente artículo explicamos cómo conectar Arduino a un PC, cómo compilar un programa y cómo enviarlo al Arduino. Explicamos también cómo instalar el IDE de desarrollo de Arduino:

Primer proyecto hardware con Arduino, encender un LED

 

 

Conexión de sensor de temperatura con Arduino UNO

Conectaremos el sensor de temperatura a la placa Arduino UNO, este sensor tiene dos hilos, uno de ellos irá directamente conectado al pin 5V de Ardunio (alimentación) y el otro irá conectado al pin analógico A0 y a una resistencia de 10K y la resistencia irá conectada a masa (al ping GND de Arduino). Mostramos el esquema a continuación:

Conexión de sensor de temperatura con Arduino UNO

Mostramos los dos hilos del sensor conectados al pin A0 y al 5V (es indiferente el hilo del sensor a conectar a cada pin). Como veremos en la imagen hemos conectado la resistencia de 10K directamente al mismo pin que el hilo del A0 analógico y el otro extremo de la resistencia conectado con un cable al GND del Arduino:

Conexión de sensor de temperatura con Arduino UNO

Lo ideal es usar una placa prototipo, así sería más cómoda la conexión, en nuestro caso no la hemos usado, por ello hemos conectado directamente la resistencia al mismo pin que el hilo del sensor A0.

En esta imagen mostramos los cables conectados desde otra posición, para que se aprecien mejor:

Conexión de sensor de temperatura con Arduino UNO

Mostramos ahora todo el hardware conectado (Arduino UNO, sensor temperatura, resistencia) y conectado al PC mediante el cable USB:

Conexión de sensor de temperatura con Arduino UNO

Obviamente esta conexión la hemos realizado para hacer pruebas y comprobar que el sensor funciona adecuadamente. Si vamos a comercializar el sistema hardware o queremos usarlo definitivamente debemos colocarlo en una caja adaptada para que quepa la placa y los sensores y soldarlos adecuadamente.

 

Enviar programa a Arduino para obtener y mostrar la temperatura por el puerto serie

Tras conectar el sensor a Arduino y conectar Arduino al PC, abriremos el IDE de desarrollo de Arduino y escribiremos el siguiente programa:

/*
 * Inputs ADC Value from Thermistor and outputs Temperature in Celsius
 *  requires: include 
 * Utilizes the Steinhart-Hart Thermistor Equation:
 *    Temperature in Kelvin = 1 / {A + B[ln(R)] + C[ln(R)]3}
 *    where A = 0.001129148, B = 0.000234125 and C = 8.76741E-08
 *
 * These coefficients seem to work fairly universally, which is a bit of a 
 * surprise. 
 *
 * Schematic:
 *   [Ground] -- [10k-pad-resistor] -- | -- [thermistor] --[Vcc (5v)]
 *                                     |
 *                                Analog Pin 0
 *
 * In case it isn't obvious (as it wasn't to me 
 * until I thought about it), the analog ports
 * measure the voltage between 0v -> Vcc which for 
 * an Arduino is a nominal 5v, but for (say) 
 * a JeeNode, is a nominal 3.3v.
 *
 * The resistance calculation uses the ratio of the 
 * two resistors, so the voltage
 * specified above is really only required for 
 * the debugging that is commented out below
 *
 * Resistance = (1024 * PadResistance/ADC) - PadResistor 
 */

#include <math.h>

#define ThermistorPIN 0  // Analog Pin 0

float vcc = 4.91;  // only used for display purposes, if used
                   // set to the measured Vcc.
float pad = 9850;  // balance/pad resistor value, set this to
                   // the measured resistance of your pad resistor
float thermr = 10000; // thermistor nominal resistance

float Thermistor(int RawADC) {
  long Resistance;  
  float Temp;  // Dual-Purpose variable to save space.

  Resistance=((1024 * pad / RawADC) - pad); 
  // Saving the Log(resistance) so not to calculate  it 4 times later
  Temp = log(Resistance); 
  Temp = 1 / (0.001129148 + (0.000234125 * Temp) + 
         (0.0000000876741 * Temp * Temp * Temp));
  Temp = Temp - 273.15;  // Convert Kelvin to Celsius                      

  return Temp;    // Devolver temperatura
}

void setup() {
  Serial.begin(9200);
}

void loop() {
  float temp;
  float celsius;
  
  // read ADC and  convert it to Celsius
  celsius = Thermistor(analogRead(ThermistorPIN)); 
  Serial.print("Celsius: "); 
  Serial.print(celsius,1);  // display Celsius

  temp = celsius + 273.15;  // converts to  Kelvin
  Serial.print(", Kelvin: "); 
  Serial.print(temp,1);   // display  Kelvin

  temp = (celsius * 9.0)/ 5.0 + 32.0;  // converts to  Fahrenheit
  Serial.print(", Fahrenheit: "); 
  Serial.print(temp,1);     // display  Fahrenheit
  Serial.println("");                                   
  delay(3000);              // Delay a bit... 
}

Tras escribir el programa, pulsaremos en el botón "Verify" para compilarlo y verificar que la sintaxis es correcta:

Enviar programa a Arduino para obtener y mostrar la temperatura por el puerto serie

Ahora enviaremos el programa a la memoria Flash de Arduino para testearlo, para ello pulsaremos en el botón "Upload":

Enviar programa a Arduino para obtener y mostrar la temperatura por el puerto serie

Si todo es correcto, el programa ya estará ejecutándose en Arduino UNO, se ejecutará cada tres segundos y enviará por el puerto serie los valores de temperatura obtenidos. Para ver los valores devueltos (pues así lo hemos programado) pulsaremos en el botón "Serial Monitor":

Enviar programa a Arduino para obtener y mostrar la temperatura por el puerto serie

Si hemos realizado correctamente la conexión del sensor de temperatura a Arduino y si lo hemos programado correctamente, nos devolverá los valores de temperatura actuales en grados Celsius (centígrados), Kelvin y Fahrenheit:

Enviar programa a Arduino para obtener y mostrar la temperatura por el puerto serie

Obviamente, este código nos sirve para verificar el correcto funcionamiento de nuestra placa Arduino y del sensor de temperatura. Para realizar alguna aplicación profesional y comercializarla deberemos, por ejemplo, guardar los valores de temperatura en la memoria EEPROM para, posteriormente, poder ser consultados. En el siguiente artículo explicamos cómo escribir en la memoria EEPROM de Arduino:

Escribir y leer en la memoria EEPROM de Arduino

En este otro artículo explicamos cómo escribir valores de temperatura y humedad en la memoria EEPROM:

Obtener temperatura y humedad con Arduino

Nuestro proyecto hardware para comercialización debería incluir opciones más profesionales, por ejemplo añadiendo un módulo GPRS para permitir a Arduino enviar los datos obtenidos vía web de forma automática, también para avisar por SMS en caso de que se produzcan determinados eventos, por ejemplo si la temperatura sube o baja de unos determinados valores.

 

Artículos relacionados

 

Créditos

Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft.

Artículo en inglés.


Anuncios


Enviado el Domingo, 16 octubre a las 10:58:22 por ajpdsoft
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A