Nota

¡Hola, bienvenido 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 de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy mismo.

3.1.7 Monitor de Sobrecalentamiento (MCP3008)

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

Puede que quieras hacer un dispositivo de monitoreo de sobrecalentamiento aplicable a diversas situaciones, por ejemplo, en una fábrica si queremos que haya una alarma y el apagado automático de la máquina cuando haya un circuito sobrecalentado. En este proyecto utilizaremos un termistor, un joystick, un zumbador (buzzer), un LED y un LCD para hacer un dispositivo inteligente de monitoreo de temperatura con un umbral ajustable.

Componentes requeridos

En este proyecto necesitamos los siguientes componentes.

../_images/list2_Overheat_Monitor.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los siguientes enlaces.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

LED

COMPRAR

Módulo Joystick

-

MCP3008

-

Transistor

COMPRAR

I2C LCD1602

COMPRAR

Termistor

COMPRAR

Zumbador

-

Diagrama esquemático

Nombre

T-Board

wiringPi

BCM

SPICE0

Pin 24

10

8

SPIMOSI

Pin 19

12

10

SPIMISO

Pin 21

13

9

SPISCLK

Pin 23

14

11

GPIO22

Pin 15

3

22

GPIO23

Pin 16

4

23

GPIO24

Pin 18

5

24

SDA1

Pin 3

SCL1

Pin 5

../_images/Schematic_three_one8.png

Procedimientos experimentales

Paso 1: Construye el circuito.

../_images/july24_3.1.8_overheat_monitor_mcp3008.png

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

cd ~/raphael-kit/c/3.1.7-2/

Paso 3: Compila el código.

gcc 3.1.7_OverheatMonitor.c -lm -lwiringPi

Paso 4: Ejecuta el archivo compilado.

sudo ./a.out

Al ejecutar el código, la temperatura actual y el umbral de alta temperatura 40 se muestran en el I2C LCD1602. Si la temperatura actual es mayor que el umbral, el zumbador y el LED se activarán para advertirte.

El Joystick se utiliza para ajustar el umbral de alta temperatura. Moviendo el Joystick en la dirección del eje X y eje Y se puede ajustar (aumentar o disminuir) el umbral actual. Presionando el Joystick nuevamente se restablece el umbral al valor inicial.

Nota

  • Si hay un error wiringPi.h: No such file or directory, consulta Instalar y verificar WiringPi.

  • Si aparece el error Unable to open I2C device: No such file or directory, consulta Configuración de I²C para habilitar I2C y verificar el cableado.

  • Si el código y el cableado están correctos, pero el LCD aún no muestra contenido, ajusta el potenciómetro en la parte posterior para aumentar el contraste.

Explicación del código

int read_ADC(int channel) { ... }

Lee un valor analógico de 10 bits del canal MCP3008 (CH0–CH7) usando SPI y devuelve un valor entre 0 y 1023.

int get_joystick_value() { ... }

Lee los valores analógicos del joystick desde CH1 y CH2. Devuelve un entero que indica la dirección del movimiento basado en umbrales.

void upper_tem_setting() { ... }

Permite al usuario ajustar el umbral de temperatura superior utilizando el joystick. Evita cambios repetidos si la dirección se mantiene.

double temperature() { ... }

Lee el valor analógico desde CH0 conectado al termistor. Utiliza la ecuación de Steinhart–Hart para calcular la temperatura en grados Celsius.

void monitoring_temp() { ... }

Lee continuamente la temperatura actual y la muestra junto con el umbral. Si la temperatura excede el umbral, el zumbador y el LED se activan.

void setup_all() { ... }

Inicializa el LCD, SPI y los pines GPIO para el botón del joystick, el zumbador y el LED. También configura la resistencia pull-up para el botón del joystick.

int main(void) { ... }

El bucle principal alterna entre dos modos:

  1. Monitoreo de temperatura.

  2. Ajuste del límite superior usando el joystick.

El modo cambia cuando se suelta el botón del joystick (disparo por flanco ascendente).