.. note:: ¡Hola! Bienvenidos a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook. Sumérgete más en Raspberry Pi, Arduino y ESP32 con otros entusiastas. **¿Por qué unirse?** - **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. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones festivas y sorteos**: Participa en sorteos y promociones festivas. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _2.2.2_js: 2.2.2 Termistor ==================== .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left Dependiendo de la versión de su kit, identifique si tiene **ADC0834** o **MCP3008** y continúe con la sección correspondiente. Introducción ------------------ Al igual que el fotorresistor puede detectar la luz, el termistor es un dispositivo electrónico sensible a la temperatura que se puede utilizar para realizar funciones de control de temperatura, como la creación de una alarma de calor. Componentes Requeridos ---------------------------- En este proyecto, necesitamos los siguientes componentes. .. image:: ../img/list_2.2.2_thermistor.png Es definitivamente conveniente comprar un kit completo, aquí está el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - ARTÍCULOS EN ESTE KIT - ENLACE * - Kit Raphael - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los siguientes enlaces. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN AL COMPONENTE - ENLACE DE COMPRA * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_thermistor` - |link_thermistor_buy| * - :ref:`cpn_adc0834` - \- Diagrama Esquemático ---------------------------- .. image:: ../img/image323.png .. image:: ../img/image324.png Procedimientos Experimentales ------------------------------------- **Paso 1:** Montar el circuito. .. image:: ../img/image202.png **Paso 2:** Ir a la carpeta del código. .. raw:: html .. code-block:: cd ~/raphael-kit/nodejs/ **Paso 3:** Ejecutar el código. .. raw:: html .. code-block:: sudo node thermistor.js Con el código ejecutándose, el termistor detecta la temperatura ambiental que se imprimirá en la pantalla una vez que el programa termine el cálculo. **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 a través de la declaració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 a un valor de temperatura en Celsius. .. code-block:: js var Vr = 5 * value / 255; var Rt = 10000 * Vr / (5 - Vr); Estas dos líneas de código se utilizan para calcular la distribución de voltaje a partir de los valores leídos, resultando en 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); Este párrafo es para convertir la temperatura de Kelvin a Celsius con dos decimales. .. code-block:: js var Fah = (cel * 1.8 + 32).toFixed(2); Este párrafo convierte Celsius a Fahrenheit con dos decimales. .. code-block:: js console.log(`Celsius: ${cel} C Fahrenheit: ${Fah} F\n`); Imprime Celsius, Fahrenheit y sus unidades en la terminal. Foto del Fenómeno --------------------- .. image:: ../img/image203.jpeg