Ventilador automático para Raspberry Pi con un transistor
Tengo una Raspberry Pi 4 metida en una carcasa de plástico debajo de la tele, haciendo de consola retro.

Tengo una Raspberry Pi 4 metida en una carcasa de plástico debajo de la tele, haciendo de consola retro. Funcionaba bien con juegos de 8 y 16 bits, pero en cuanto cargaba algo de Nintendo 64 o de PSP, a los quince o veinte minutos el sonido empezaba a dar tirones y la imagen perdía fluidez. No era el emulador ni la tarjeta SD. Era el calor: la placa llegaba a 80 grados y el procesador bajaba su frecuencia para protegerse.
La solución obvia es un ventilador conectado a los pines de 5 voltios, girando siempre. Lo probé durante una semana y lo quité. Hace ruido incluso cuando la placa está en reposo, y un ventilador barato de 30 milímetros a máxima velocidad, en un salón silencioso, se oye más de lo que parece. Lo que sigue es el montaje que uso ahora: un transistor, una resistencia, un diodo y una línea en un archivo de configuración. El ventilador solo arranca cuando hace falta.
Primero, comprueba que el problema es el calor
Antes de soldar nada, conviene confirmar el diagnóstico. Raspberry Pi OS trae una herramienta que te dice la temperatura y si ha habido recortes de frecuencia. Abre una terminal y ejecuta:
vcgencmd measure_temp te devuelve la temperatura actual del chip.
vcgencmd get_throttled te devuelve un valor en hexadecimal. Si sale 0x0, la placa no ha tenido ningún problema desde el arranque. Cualquier otro valor significa que algo ha pasado, ya sea por temperatura o por falta de tensión, y vale la pena mirar la documentación oficial para saber qué bit está encendido.
Esto último es importante. En mi experiencia, más o menos una de cada tres placas que la gente cree que "se calienta" en realidad tiene una fuente de alimentación floja, y los síntomas se parecen mucho. Si el valor indica falta de tensión, un ventilador no te va a arreglar nada. Ya hablamos de esa trampa en el artículo sobre por qué un proyecto con Arduino falla sin razón aparente, y casi todo aplica igual a la Raspberry.
En una Pi 4, el recorte suave empieza hacia los 80 grados y el fuerte hacia los 85. Si tu placa ronda los 60 o 65 bajo carga, no necesitas ventilador. Un disipador pasivo de aluminio basta.
Por qué no conectar el ventilador directamente a un GPIO
Es la primera idea de casi todo el mundo, y es mala. Los pines GPIO trabajan a 3,3 voltios y están pensados para entregar corrientes muy pequeñas, del orden de unos pocos miliamperios. Un ventilador de 5 voltios típico consume entre 100 y 200 miliamperios. Si lo conectas directamente, en el mejor caso no gira y en el peor dañas el pin o el propio chip.
La solución es usar el GPIO solo como interruptor. El pin le dice a un transistor cuándo dejar pasar corriente, y la corriente del ventilador viene del pin de 5 voltios, que sí puede entregarla.
Lo que necesitas
- Un ventilador de 5 voltios, de 30 o 40 milímetros. Los de dos cables valen perfectamente.
- Un transistor NPN 2N2222. Aguanta unos 600 miliamperios de forma continua, muy por encima de lo que pide el ventilador. Un BC547 también funciona con ventiladores pequeños, pero su límite está en 100 miliamperios y prefiero algo de margen.
- Una resistencia de 1 kΩ para la base del transistor.
- Un diodo 1N4007 o 1N4148, que protege el transistor del pico de tensión que genera el motor al apagarse.
- Cables dupont hembra y un trozo de placa perforada si quieres que quede firme.
Yo saqué el transistor y el diodo de una fuente de ordenador muerta, y el ventilador de un router viejo. Si te interesa esa vía, tenemos una guía para recuperar componentes electrónicos de aparatos viejos con el desoldado paso a paso.
El montaje, paso a paso
Con la Raspberry apagada y desenchufada, siempre. Uso la numeración física de los pines, contando desde la esquina donde está la ranura de la tarjeta SD.
- Conecta el cable rojo (positivo) del ventilador al pin 4, que da 5 voltios.
- Conecta el cable negro (negativo) del ventilador al colector del 2N2222. Con la cara plana del transistor mirando hacia ti y las patas hacia abajo, en muchos modelos el orden es emisor, base y colector, de izquierda a derecha. Compruébalo en la hoja de datos del tuyo, porque hay versiones, como el P2N2222A, que lo invierten.
- Conecta el emisor a tierra, por ejemplo en el pin 6.
- Conecta la base, a través de la resistencia de 1 kΩ, al pin 8, que corresponde al GPIO 14.
- Coloca el diodo en paralelo con el ventilador, con la banda del diodo (cátodo) hacia el lado de los 5 voltios. Al revés provocarías un cortocircuito en cuanto el transistor conduzca.
Una advertencia sobre el GPIO 14. Es también la línea de transmisión del puerto serie. Si usas la consola serie para depurar, como hago yo a veces con mis montajes de consolas, elige otro pin, por ejemplo el GPIO 18 en el pin 12, y cámbialo también en la configuración.
La configuración: una sola línea
Aquí está lo que más me gusta de este montaje. No hace falta escribir ningún script ni dejar un programa corriendo en segundo plano. El firmware de la Raspberry trae un overlay llamado gpio-fan que se encarga de todo.
Abre el archivo de configuración. En Raspberry Pi OS Bookworm está en /boot/firmware/config.txt. En versiones anteriores estaba en /boot/config.txt. Añade al final:
dtoverlay=gpio-fan,gpiopin=14,temp=65000
La temperatura se expresa en milésimas de grado, así que 65000 son 65 grados. Guarda, reinicia, y listo. Si prefieres no tocar el archivo a mano, raspi-config tiene una opción de ventilador en el menú de rendimiento que escribe exactamente esa misma línea por ti.
En mis pruebas, el ventilador se apaga unos diez grados por debajo del umbral, lo que evita que esté encendiendo y apagando cada pocos segundos. Elegí 65 porque deja un colchón de 15 grados antes del recorte suave. Con 55, en verano, el ventilador estaba encendido casi todo el tiempo y volvía a tener el mismo ruido de antes.
Un ventilador que gira cuando no hace falta no es un sistema de refrigeración, es solo una fuente de ruido con un poco de aire de regalo.
Cómo saber si ha funcionado
Pon un emulador exigente o una prueba de carga durante veinte minutos y vuelve a ejecutar vcgencmd get_throttled. Si sigue saliendo 0x0, el montaje cumple. En mi carcasa, la temperatura bajo carga pasó de tocar los 82 grados a quedarse entre 63 y 68, y el ventilador se para solo en los menús.
Si el ventilador no arranca nunca, revisa primero la orientación del transistor, que es el error más común. Si gira siempre, incluso en frío, lo más probable es que hayas conectado colector y emisor al revés o que el negativo del ventilador vaya directo a tierra.
Una nota para quien tenga una Raspberry Pi 5: trae un conector dedicado para ventilador y el refrigerador activo oficial, así que este montaje no te hace falta. Está pensado para la Pi 3 y la Pi 4, que no tienen ese conector.
Para este fin de semana
Antes de comprar nada, ejecuta los dos comandos de vcgencmd después de una sesión larga de uso normal. Si get_throttled devuelve algo distinto de 0x0 y la temperatura pasa de 75 grados, busca un ventilador de 5 voltios en algún aparato que tengas para tirar y monta el circuito una tarde. Si el problema resulta ser de alimentación, cambia primero la fuente. Tienes más montajes de este estilo en la sección de proyectos.
More from the blog
Proyectos
Cuándo Vale la Pena Reparar Algo (y Cuándo No)
La pregunta que más me hacen después de un taller no es cómo imprimir una pieza en 3D, es cuándo realmente vale la pena hacerlo...
Proyectos
Escáner de Libros
Un escáner plano de oficina sirve para un libro de 200 páginas si tenés paciencia, una tarde libre y no te importa partirle el...
Juegos
Cómo Hacer un Control Arcade Casero con Arduino para tus Juegos
Un control arcade casero es uno de esos proyectos que combinan trabajo manual, electronica y videojuegos en algo que de verdad...