.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el fascinante mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
**¿Por qué unirte?**
- **Soporte Experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Avances Exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones Festivas y Sorteos**: Participa en sorteos y promociones especiales de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _2.2.2_thermistor_nodejs:
2.2.2 Termistor
================
.. note::
.. image:: ../img/mcp3008_and_adc0834.jpg
:width: 25%
:align: left
Dependiendo de la versión de tu kit, identifica si tienes **ADC0834** o **MCP3008** y procede con la sección correspondiente.
Introducción
---------------
Así como el fotoresistor puede detectar la luz, el termistor es un dispositivo
electrónico sensible a la temperatura que se utiliza para realizar funciones de
control térmico, como alarmas de calor.
Componentes
--------------
.. image:: ../img/list_2.2.2_thermistor.png
Diagrama del Circuito
-------------------------
.. image:: ../img/image323.png
.. image:: ../img/image324.png
Procedimientos Experimentales
---------------------------------
**Paso 1:** Construye el circuito.
.. image:: ../img/image202.png
**Paso 2:** Dirígete a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**Paso 3:** Ejecuta el código.
.. raw:: html
.. code-block::
sudo node thermistor.js
Una vez que el código se está ejecutando, el termistor detectará la temperatura
ambiental, que se imprimirá en la pantalla una vez finalizado el cálculo del programa.
**Código**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const ADC0834 = require('./adc0834.js').ADC0834;
exports.ADC0834 = ADC0834;
const adc = new ADC0834(17, 18, 27);
setInterval(() => {
adc.read(0).then((value) => {
var Vr = 5 * value / 255;
var Rt = 10000 * Vr / (5 - Vr);
var temp = 1 / ((Math.log(Rt/10000) / 3950)+(1 / (273.15 + 25)));
var cel = (temp - 273.15).toFixed(2);
var Fah = (cel * 1.8 + 32).toFixed(2);
console.log(`Celsius: ${cel} C Fahrenheit: ${Fah} F\n`);
}, (error)=>{
console.log("Error: " + error);
});
}, 1000);
**Explicación del Código**
.. code-block:: js
setInterval(() => {
adc.read(0).then((value) => {
var Vr = 5 * value / 255;
var Rt = 10000 * Vr / (5 - Vr);
var temp = 1 / ((Math.log(Rt/10000) / 3950)+(1 / (273.15 + 25)));
var cel = (temp - 273.15).toFixed(2);
var Fah = (cel * 1.8 + 32).toFixed(2);
console.log(`Celsius: ${cel} C Fahrenheit: ${Fah} F\n`);
}, (error)=>{
console.log("Error: " + error);
});
}, 1000);
Podemos leer el ``value`` del termistor mediante la instrucción ``adc.read(0).then((value) => {...})``.
.. code-block:: js
var Vr = 5 * value / 255;
var Rt = 10000 * Vr / (5 - Vr);
var temp = 1 / ((Math.log(Rt/10000) / 3950)+(1 / (273.15 + 25)));
var cel = (temp - 273.15).toFixed(2);
var Fah = (cel * 1.8 + 32).toFixed(2);
console.log(`Celsius: ${cel} C Fahrenheit: ${Fah} F\n`);
Estas operaciones convierten el valor del termistor en un valor de temperatura en grados Celsius.
.. code-block:: js
var Vr = 5 * value / 255;
var Rt = 10000 * Vr / (5 - Vr);
Estas dos líneas de código calculan la distribución de voltaje a partir de los valores leídos, obteniendo así Rt (resistencia del termistor).
.. code-block:: js
var temp = 1 / ((Math.log(Rt/10000) / 3950)+(1 / (273.15 + 25)));
Este código se refiere a sustituir Rt en la fórmula **TK=1/(ln(RT/RN)/B+1/TN)** para obtener la temperatura en Kelvin.
.. code-block:: js
var cel = (temp - 273.15).toFixed(2);
Esta línea convierte la temperatura de Kelvin a Celsius con dos decimales.
.. code-block:: js
var Fah = (cel * 1.8 + 32).toFixed(2);
Esta línea convierte Celsius a Fahrenheit con dos decimales.
.. code-block:: js
console.log(`Celsius: ${cel} C Fahrenheit: ${Fah} F\n`);
Imprime en la terminal los valores de Celsius, Fahrenheit y sus unidades.
Imagen del Fenómeno
-------------------------
.. image:: ../img/image203.jpeg