Nota

¡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 [Aquí] y únete hoy mismo.

2.2.2 Termistor

Nota

../_images/mcp3008_and_adc0834.jpg

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

../_images/list_2.2.2_thermistor.png

Diagrama del Circuito

../_images/image323.png ../_images/image324.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

../_images/image202.png

Paso 2: Dirígete a la carpeta del código.

cd ~/davinci-kit-for-raspberry-pi/nodejs/

Paso 3: Ejecuta el código.

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

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

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) => {...}).

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.

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).

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.

var cel = (temp - 273.15).toFixed(2);

Esta línea convierte la temperatura de Kelvin a Celsius con dos decimales.

var Fah = (cel * 1.8 + 32).toFixed(2);

Esta línea convierte Celsius a Fahrenheit con dos decimales.

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

../_images/image203.jpeg