Nota

¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más en el mundo de 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 nuevos.

  • Promociones y Sorteos Festivos: Participa en sorteos y promociones 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 su kit, identifique si tiene ADC0834 o MCP3008 y continúe con la sección correspondiente.

Introducción

Al igual que una fotorresistencia puede detectar la luz, un termistor es un dispositivo electrónico sensible a la temperatura que puede usarse para funciones de control de temperatura, como hacer una alarma de calor.

Componentes Necesarios

En este proyecto, necesitamos los siguientes componentes.

../_images/2.2.2_thermistor_list.png

Definitivamente es conveniente comprar un kit completo, aquí está el enlace:

Nombre

COMPONENTES EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

Termistor

COMPRAR

ADC0834

-

Diagrama Esquemático

../_images/2.2.2_thermistor_schematic_1.png ../_images/2.2.2_thermistor_schematic_2.png

Procedimientos Experimentales

Paso 1: Construir el circuito.

../_images/2.2.2_thermistor_circuit.png

Paso 2: Ir a la carpeta del código.

cd ~/raphael-kit/python-pi5

Paso 3: Ejecutar el archivo ejecutable.

sudo python3 2.2.2_Thermistor_zero.py

Con el código en ejecución, el termistor detecta la temperatura ambiente, que se imprimirá en la pantalla una vez que finalice el cálculo del programa.

Advertencia

Si recibe el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulte Si «gpiozero» no funciona.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como raphael-kit/python-pi5. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import ADC0834
import time
import math

# Inicializar el módulo ADC0834
ADC0834.setup()

# Ejecutar el proceso en un bloque try-except
try:
    while True:
        # Leer el valor analógico del sensor
        analogVal = ADC0834.getResult()

        # Convertir el valor analógico a voltaje
        Vr = 5 * float(analogVal) / 255

        # Calcular la resistencia del termistor
        Rt = 10000 * Vr / (5 - Vr)

        # Calcular la temperatura en Kelvin
        temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25)))

        # Convertir Kelvin a Celsius
        Cel = temp - 273.15

        # Convertir Celsius a Fahrenheit
        Fah = Cel * 1.8 + 32

        # Imprimir la temperatura en Celsius y Fahrenheit
        print('Celsius: %.2f C  Fahrenheit: %.2f F' % (Cel, Fah))

        # Esperar 0.2 segundos antes de la siguiente lectura
        time.sleep(0.2)

# Manejar KeyboardInterrupt para una terminación adecuada
except KeyboardInterrupt:
    # Limpiar recursos de ADC0834
    ADC0834.destroy()

Explicación del Código

  1. Esta sección importa la biblioteca ADC0834 para la conversión de analógico a digital, la biblioteca time para implementar retardos y la biblioteca math para realizar operaciones matemáticas.

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    import ADC0834
    import time
    import math
    
  2. Inicializa el módulo ADC0834 para habilitar la lectura de valores analógicos.

    # Inicializar el módulo ADC0834
    ADC0834.setup()
    
  3. Implementa un bucle infinito para la lectura continua de datos. El bucle lee el valor analógico de un termistor, convierte este valor a voltaje, calcula la resistencia del termistor y luego traduce esta resistencia en mediciones de temperatura en Kelvin, Celsius y Fahrenheit. También muestra las lecturas de temperatura en Celsius y Fahrenheit, haciendo una pausa de 0.2 segundos entre cada lectura.

    # Ejecutar el proceso en un bloque try-except
    try:
        while True:
            # Leer el valor analógico del sensor
            analogVal = ADC0834.getResult()
    
            # Convertir el valor analógico a voltaje
            Vr = 5 * float(analogVal) / 255
    
            # Calcular la resistencia del termistor
            Rt = 10000 * Vr / (5 - Vr)
    
            # Calcular la temperatura en Kelvin
            temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25)))
    
            # Convertir Kelvin a Celsius
            Cel = temp - 273.15
    
            # Convertir Celsius a Fahrenheit
            Fah = Cel * 1.8 + 32
    
            # Imprimir la temperatura en Celsius y Fahrenheit
            print('Celsius: %.2f C  Fahrenheit: %.2f F' % (Cel, Fah))
    
            # Esperar 0.2 segundos antes de la siguiente lectura
            time.sleep(0.2)
    
  4. Captura una excepción KeyboardInterrupt para terminar el programa de manera adecuada e incluye instrucciones de limpieza para los recursos de ADC0834 al finalizar.

    # Manejar KeyboardInterrupt para una terminación adecuada
    except KeyboardInterrupt:
        # Limpiar recursos de ADC0834
        ADC0834.destroy()