Tabla de contenido:

Indicador de temperatura de la CPU de Raspberry Pi: 11 pasos (con imágenes)
Indicador de temperatura de la CPU de Raspberry Pi: 11 pasos (con imágenes)

Video: Indicador de temperatura de la CPU de Raspberry Pi: 11 pasos (con imágenes)

Video: Indicador de temperatura de la CPU de Raspberry Pi: 11 pasos (con imágenes)
Video: 11) Raspberry PI 4 y Python3 desde Cero - Reproducción MP3 y Control de Temperatura 2024, Mes de julio
Anonim
Indicador de temperatura de la CPU de Raspberry Pi
Indicador de temperatura de la CPU de Raspberry Pi

Anteriormente, había introducido un circuito indicador de estado operativo simple raspberry pi (en adelante, RPI).

Esta vez, explicaré un circuito indicador más útil para que el RPI se ejecute sin cabeza (sin monitor).

El circuito anterior muestra la temperatura de la CPU en 4 niveles diferentes, tales como:

- LED verde encendido cuando la temperatura de la CPU está dentro de 30 ~ 39 grados

- El LED amarillo indica que la temperatura aumenta en un rango de 40 a 45 grados

- El tercer LED rojo muestra que la CPU se calienta un poco al alcanzar los 46 ~ 49 grados

- Otro LED rojo parpadeará cuando la temperatura supere los 50 grados

Los rangos de temperatura de la CPU anteriores son mi concepto de diseño personal (se pueden configurar otros rangos de temperatura cambiando las condiciones de prueba del programa Python que controla este circuito).

Al usar este circuito, no necesariamente está ejecutando el comando “vcgencmd measure_temp” con frecuencia en el terminal de la consola.

Este circuito informará la temperatura actual de la CPU de manera continua y conveniente.

Paso 1: preparación de esquemas

Preparando esquemas
Preparando esquemas

Aunque puede controlar 4 LED directamente utilizando solo códigos de Python, la lógica de control del programa cargará el RPI y, como resultado, la temperatura de la CPU aumentará más porque debe ejecutar un código de Python un poco complejo de forma continua.

Por lo tanto, estoy minimizando la complejidad del código Python de la manera más simple posible y descargando la lógica de control de LED al circuito de hardware externo.

El circuito indicador de temperatura de la CPU (en adelante INICATOR) consta de las siguientes partes principales.

- Dos optoacopladores están conectados a los pines RPI GPIO para obtener datos de nivel de temperatura como 00-> BAJO, 01-> Medio, 10-> Alto, 11-> Necesita enfriamiento.

- 74LS139 (o 74HC139, decodificador y demultiplexor 2 a 4) salidas de control (Y0, Y1, Y2, Y3) según las entradas (A, B)

- Cuando la temperatura está dentro de los 30 ~ 39 grados, el código Python envía 00 a los pines GPIO. Por lo tanto, 74LS139 obtiene los datos de entrada 00 (A-> 0, B-> 0)

- Cuando se ingresa 00, la salida Y0 pasa a ser BAJA. (Consulte la tabla de verdad de 74LS139)

- Cuando la salida Y0 se vuelve BAJA, activa el transistor 2N3906 PNP y, como resultado, el LED verde se enciende

- Del mismo modo, Y1 (01 -> temperatura media de la CPU) encenderá el LED amarillo y así sucesivamente

- Cuando Y3 se vuelve BAJO, DB140 activa el circuito de parpadeo del LED NE555 (este es un parpadeo de LED común basado en IC 555) que es la carga del transistor BD140 PNP

El componente más importante de este circuito es 74LS139 que decodifica la entrada de 2 dígitos en 4 salidas individuales diferentes como se muestra en la tabla de verdad a continuación.

Entrada | Producción

G (Activar) | B | A | Y0 | Y1 | Y2 | Y3 |

H | X | X | H | H | H | H |

L | L | L | L | H | H | H |

L | L | H | H | L | H | H |

L | H | L | H | H | L | H |

L | H | H | H | H | H | L |

A medida que la salida 74LS139 se vuelve BAJA, el transistor tipo PNP puede simplificar el circuito general ya que el transistor PNP se enciende cuando el terminal base se vuelve BAJO. (Mostraré la versión de NPN al final de esta historia)

Como el potenciómetro de 100K está incluido en el circuito de luz intermitente LED NE555, el tiempo de ENCENDIDO / APAGADO del LED rojo se puede ajustar libremente según las necesidades.

Paso 2: hacer un dibujo de PCB

Hacer dibujos de PCB
Hacer dibujos de PCB

Como se explica el esquema de funcionamiento del INDICADOR, comencemos a hacer el circuito.

Antes de soldar algo en una placa universal, es útil preparar el dibujo de la PCB que se muestra arriba para minimizar cualquier error.

El dibujo se realiza usando power-point para ubicar cada parte en la placa universal y hacer patrones de cableado entre las partes con cables.

Como las imágenes de los pines de IC y transistores están ubicadas junto con el patrón de cableado de la PCB, la soldadura se puede realizar usando este dibujo.

Paso 3: soldadura

Soldadura
Soldadura

Aunque el dibujo original de la placa de circuito impreso no está hecho con cables individuales para conectar componentes en la placa de circuito impreso, estoy soldando de manera algo diferente.

Al usar un solo conductor de cables (no alambre de estaño), estoy tratando de reducir el tamaño de PCB universal que contiene el circuito INDICADOR.

Pero como puede ver en el lado de soldadura de la PCB, estoy usando alambre de estaño también de acuerdo con los patrones representados en el dibujo de la PCB.

Cuando cada componente está conectado de acuerdo con el diseño original del dibujo de PCB, la placa PCB completada con soldadura, incluido el circuito INDICADOR, funcionará correctamente.

Paso 4: preparación de la prueba

Preparación de la prueba
Preparación de la prueba

Antes de la conexión RPI, el circuito terminado requiere prueba.

Como pueden existir errores de soldadura, el proveedor de energía de CC se utiliza para prevenir daños cuando se producen cortocircuitos o cableado incorrecto.

Para probar el INDICADOR, se conectan dos cables de alimentación adicionales al conector de alimentación de 5 V del circuito.

Paso 5: Prueba (la temperatura de la CPU es de nivel medio)

Prueba (la temperatura de la CPU es de nivel medio)
Prueba (la temperatura de la CPU es de nivel medio)

Cuando no se aplica una entrada de 5 V, entonces 74LS139 decodifica la entrada y activa la salida Y0 como BAJA (LED verde encendido).

Pero 5V aplicados a la entrada A, salida Y1 de 74LS139 activando (BAJA).

Por lo tanto, el LED amarillo se enciende como se muestra en la imagen de arriba.

Paso 6: Prueba (la CPU necesita nivel de enfriamiento)

Prueba (CPU necesita nivel de enfriamiento)
Prueba (CPU necesita nivel de enfriamiento)

Cuando 5V aplicaron ambas entradas (A y B) del 74LS139, el cuarto LED rojo parpadeará.

La velocidad de parpadeo se puede cambiar ajustando 100K VR como se muestra en la imagen de arriba.

Una vez finalizada la prueba, se pueden quitar dos cables hembra Molex de 3 clavijas.

Paso 7: Suministro de energía al circuito INDICADOR

Fuente de alimentación al circuito del INDICADOR
Fuente de alimentación al circuito del INDICADOR

Para alimentar el circuito INDICADOR, estoy usando un cargador de teléfono de mano común que emite 5 V y un adaptador USB tipo B como se muestra en la imagen de arriba.

Para evitar problemas con el RPI al conectar un GPIO de 3,3 V y un circuito INDICADOR con alimentación de 5 V, la interfaz de señal y la fuente de alimentación están totalmente aisladas entre sí.

Paso 8: cableado RPI

Cableado RPI
Cableado RPI

Para interconectar el circuito INDICADOR con RPI, se deben dedicar dos pines GPIO junto con dos pines de tierra.

No hay ningún requisito específico para elegir pines GPIO.

Puede utilizar cualquier pines GPIO para conectar el INDICADOR.

Pero los pines cableados deben designarse como entradas a 74LS139 (por ejemplo, A, B) en el programa Python.

Paso 9: Programa Python

Programa de Python
Programa de Python

A medida que se completa el circuito, se requiere hacer un programa de Python para usar la función INDICADOR.

Consulte el diagrama de flujo anterior para obtener más detalles sobre la lógica del programa.

# - * - codificación: utf-8 - * -

importar subproceso, señal, sys

importar tiempo, re

importar RPi. GPIO como g

A = 12

B = 16

g.setmode (g. BCM)

g.configuración (A, g. OUT)

g.configuración (B, g. OUT)

##

def manejador_de_señal (sig, marco):

print ('¡Presionaste Ctrl + C!')

g. salida (A, falso)

g. salida (B, falso)

f.close ()

sys.exit (0)

signal.signal (signal. SIGINT, signal_handler)

##

mientras que es cierto:

f = open ('/ home / pi / Mi_proyecto / CPU_temperature_log.txt', 'a +')

temp_str = subprocess.check_output ('/ opt / vc / bin / vcgencmd measure_temp', shell = True)

temp_str = temp_str.decode (codificación = 'UTF-8', errores = 'estricto')

CPU_temp = re.findall ("\ d + \. / D +", temp_str)

# extrayendo la temperatura actual de la CPU

current_temp = float (CPU_temp [0])

si current_temp> 30 y current_temp <40:

# temperatura baja A = 0, B = 0

g. salida (A, falso)

g. salida (B, falso)

hora de dormir (5)

elif current_temp> = 40 y current_temp <45:

# temperatura del medio A = 0, B = 1

g. salida (A, falso)

g. salida (B, verdadero)

hora de dormir (5)

elif current_temp> = 45 y current_temp <50:

# temperatura alta A = 1, B = 0

g. salida (A, verdadero)

g. salida (B, falso)

hora de dormir (5)

elif current_temp> = 50:

# Se requiere enfriamiento de CPU alto A = 1, B = 1

g. salida (A, verdadero)

g. salida (B, verdadero)

hora de dormir (5)

tiempo_actual = tiempo.tiempo ()

formated_time = time.strftime ("% H:% M:% S", time.gmtime (current_time))

f.write (str (formated_time) + '\ t' + str (current_temp) + '\ n')

f.close ()

La función principal del programa Python es la siguiente.

- Primero configurando GPIO 12, 16 como puerto de salida

- Definición del controlador de interrupciones Ctrl + C para cerrar el archivo de registro y apagar GPIO 12, 16

- Cuando ingrese al bucle infinito, abra el archivo de registro como modo de anexión

- Lea la temperatura de la CPU ejecutando el comando "/ opt / vc / bin / vcgencmd measure_temp"

- Cuando la temperatura está en el rango de 30 ~ 39, entonces la salida 00 para encender el LED verde

- Cuando la temperatura está en el rango de 40 ~ 44, entonces la salida 01 para encender el LED amarillo

- Cuando la temperatura está en el rango de 45 ~ 49, entonces la salida 10 para encender el LED rojo

- Cuando la temperatura es superior a 50, la salida 11 para que el LED rojo parpadee

- Escriba la marca de tiempo y los datos de temperatura en el archivo de registro

Paso 10: Operación del INDICADOR

INDICADOR Operación
INDICADOR Operación

Cuando todo está bien, puede ver que cada LED se enciende o parpadea según la temperatura de la CPU.

No es necesario que ingrese el comando de shell para verificar la temperatura actual.

Después de recopilar datos en el archivo de registro y convertir los datos de texto en un gráfico utilizando Excel, el resultado se muestra en la imagen de arriba.

Cuando se aplican cargas elevadas (ejecutando dos navegadores Midori y reproduciendo videos de Youtube), la temperatura de la CPU aumenta hasta 57.9C.

Paso 11: Fabricación alternativa (usando transistor NPN) y mayor desarrollo

Fabricación alternativa (utilizando transistor NPN) y desarrollo posterior
Fabricación alternativa (utilizando transistor NPN) y desarrollo posterior

Este es un ejemplo de proyecto INDICATOR anterior que utiliza transistores NPN (2N3904 y BD139).

Como puede ver, es necesario un IC más (74HC04, inversores cuádruples) para impulsar el transistor NPN, ya que se debe aplicar un voltaje de nivel ALTO a la base de NPN para encender el transistor.

Como resumen, el uso del transistor NPN agrega una complejidad innecesaria para hacer el circuito INDICADOR.

Para un mayor desarrollo de este proyecto, agregaré un ventilador de enfriamiento como se muestra en la imagen de arriba para hacer que el circuito INDICATOR sea más útil.

Recomendado: