.. note::
¡Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi & Arduino & ESP32 en Facebook! Profundiza en Raspberry Pi, Arduino y ESP32 con otros entusiastas.
**¿Por qué unirse?**
- **Soporte Experto**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprender y Compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Previsualizaciones Exclusivas**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones y Sorteos Festivos**: Participa en sorteos y promociones navideñas.
👉 ¿Listo para explorar y crear con nosotros? ¡Haz clic en [|link_sf_facebook|] y únete hoy!
.. _2.2.2_py:
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 la fotorresistencia 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 hacer una alarma de calor.
Componentes Necesarios
------------------------------
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 desde los enlaces a continuación.
.. list-table::
:widths: 30 20
:header-rows: 1
* - INTRODUCCIÓN DE COMPONENTES
- 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:** Construye el circuito.
.. image:: ../img/image202.png
**Paso 2:** Ve a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/raphael-kit/python/
**Paso 3:** Ejecuta el archivo ejecutable.
.. raw:: html
.. code-block::
sudo python3 2.2.2_Thermistor.py
Cuando el código se ejecuta, el termistor detecta la temperatura ambiente,
que se imprimirá en la pantalla una vez que termine el cálculo del programa.
**Código**
.. note::
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``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
.. raw:: html
.. code-block:: python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
import ADC0834
import time
import math
def init():
ADC0834.setup()
def loop():
while True:
analogVal = ADC0834.getResult()
Vr = 5 * float(analogVal) / 255
Rt = 10000 * Vr / (5 - Vr)
temp = 1/(((math.log(Rt / 10000)) / 3950) + (1 / (273.15+25)))
Cel = temp - 273.15
Fah = Cel * 1.8 + 32
print ('Celsius: %.2f °C Fahrenheit: %.2f ℉' % (Cel, Fah))
time.sleep(0.2)
if __name__ == '__main__':
init()
try:
loop()
except KeyboardInterrupt:
ADC0834.destroy()
**Explicación del Código**
.. code-block:: python
import math
Esta es una biblioteca numérica que declara un conjunto de funciones para calcular
operaciones matemáticas comunes y transformaciones.
.. code-block:: python
analogVal = ADC0834.getResult()
Esta función se usa para leer el valor del termistor.
.. code-block:: python
Vr = 5 * float(analogVal) / 255
Rt = 10000 * Vr / (5 - Vr)
temp = 1/(((math.log(Rt / 10000)) / 3950) + (1 / (273.15+25)))
Cel = temp - 273.15
Fah = Cel * 1.8 + 32
print ('Celsius: %.2f °C Fahrenheit: %.2f ℉' % (Cel, Fah))
Estos cálculos convierten los valores del termistor en grados centígrados y grados Fahrenheit.
.. code-block:: python
Vr = 5 * float(analogVal) / 255
Rt = 10000 * Vr / (5 - Vr)
Estas dos líneas de código calculan la distribución de voltaje
con el valor leído analógico para obtener Rt (resistencia del termistor).
.. code-block:: python
temp = 1/(((math.log(Rt / 10000)) / 3950) + (1 / (273.15+25)))
Este código se refiere a enchufar Rt en la fórmula
**T\ K\ =1/(ln(R\ T/R\ N)/B+1/T\ N)** para obtener la temperatura en Kelvin.
.. code-block:: python
temp = temp - 273.15
Convierte la temperatura en Kelvin a grados centígrados.
.. code-block:: python
Fah = Cel * 1.8 + 32
Convierte los grados centígrados a grados Fahrenheit.
.. code-block:: python
print ('Celsius: %.2f °C Fahrenheit: %.2f ℉' % (Cel, Fah))
Imprime los grados centígrados, los grados Fahrenheit y sus unidades en la pantalla.
Foto del Fenómeno
----------------------
.. image:: ../img/image203.jpeg