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
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.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ARTÍCULOS EN ESTE KIT |
ENLACE |
|---|---|---|
Kit Raphael |
337 |
También puedes comprarlos por separado en los siguientes enlaces.
INTRODUCCIÓN DEL COMPONENTE |
ENLACE DE COMPRA |
|---|---|
- |
|
- |
|
- |
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 |
Procedimientos experimentales
Paso 1: Construye el circuito.
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:
Monitoreo de temperatura.
Ajuste del límite superior usando el joystick.
El modo cambia cuando se suelta el botón del joystick (disparo por flanco ascendente).