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
- Conexión de sensor de temperatura con Arduino UNO.
- Enviar programa a Arduino para obtener y mostrar la temperatura por el puerto serie.
- Artículos relacionados.
- Créditos.
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:
- Sensor de temperatura, en nuestro caso usaremos un Temperature sensor with steel head SEN118A2B:
- Resistencia de 10K:
- Cable para conectar sensor con resistencia y GND, en nuestro caso, usaremos un cable normal con las dos puntas "peladas":
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:
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:
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:
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:
Mostramos ahora todo el hardware conectado (Arduino
UNO, sensor temperatura, resistencia) y conectado al PC mediante el
cable USB:
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#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:
Ahora enviaremos el programa a la memoria Flash de Arduino para testearlo, para ello pulsaremos en el botón "Upload":
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":
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:
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:
En este otro artículo explicamos cómo escribir valores de temperatura y humedad en la memoria EEPROM:
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
- Primer proyecto hardware con Arduino, encender un LED.
- Obtener temperatura y humedad con Arduino.
- Tipos de memoria en el microcontrolador de Arduino, Flash, SRAM y EEPROM.
- Sensor de temperatura con Visual Studio y Delphi.
- AjpdSoft Sensor de Movimiento con WebCam - Código fuente Delphi.
- Realizar un alimentador eléctrico para un Asus EEE PC.
- Acceso a aplicaciones y al equipo con huella dactilar.
- Cómo enviar SMS desde un PC usando un módem GSM con Visual Basic .Net.
- Uno de nuestros miembros arreglando un portátil.
- AjpdSoft Puerto Paralelo Código Fuente Delphi.
- AjpdSoft Cálculo parámetros módulos fotovoltaicos.
- AjpdSoft Cálculo de los parámetros de radiación.
- Enviar y recibir faxes desde un equipo con Windows XP y un módem.
- Cómo conectar dos equipos en red por el puerto paralelo con Windows 98 y XP.
- Los pitidos (beep codes) del PC, su significado en caso de error de hardware.
- Cómo actualizar el firmware del teléfono móvil Nokia N96.
- Cómo actualizar el firmware de algunos dispositivos: routers, BIOS, etc.
- AjpdSoft Sensor de Movimiento con WebCam.
- Reparar equipo portátil averiado: al mover el monitor se apaga.
- Instalar impresoras en Active Directory, auditar impresoras.
- Mi primera aplicación Android con Eclipse en Linux, instalar Eclipse Ubuntu.
- Instalar Microsoft Windows 7 Ultimate virtualizado en VMware Server 2.0.1.
- Trucos, código fuente C++.
- Definición USB Enciclopedia AjpdSoft.
Créditos
Artículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft.
No hay comentarios:
Publicar un comentario