Como estamos a Julio y se vienen 'las calores', es hora de refrigerar la Raspberry pi 3. Esta es una Raspberry que adquirí de segunda mano y viene sin ningún tipo de refrigeración y eso no es muy recomendable. Como le voy a dar varios usos (maquina arcade, probar SO etc) puede ser que tenerla sin un disipador no sea lo mejor.
Ya he encargado unos cuantos disipadores en una web chinesca, pero espero que sea valida para estos pequeños accesorios.
También se me ocurrió ponerle un pequeño ventilador conectado a uno de los puertos GPIO de las Raspberry pi. Como los ventiladores son de 5V DC pero no tienen linea PWM, tenemos que crear un pequeño driver con un transistor que controle el PWM.
Primero tenemos que saber cuales son las temperaturas aproximadas que alcanza el procesador. Investigando un poco he encontrado esta tabla, más o menos representativa:
Temperaturas: | Sin disipador | Con disipador | Disipador activo |
Sin carga: | ~40ºC | ~30ºC | 25ºC - 30ºC |
Carga media: | 50ºC - 60ºC | 40ºC - 50ºC | 30ºC - 40ºC |
Carga intensiva: | 60ºC - 80ºC | 50ºC - 70ºC | 40ºC - 60ºC |
Tomando esta tabla como referencia crearemos unos perfiles y por último un perfil personalizado.
También se puede añadir un DHT11 para tener una referencia de la temperatura ambiente, pero eso para otro momento, Por el momento nos vamos a centrar en el PWM
Programaremos en Python y usaremos las librerías RPi.GPIO para el control de los pines GPIO. La librería time para hacer una pausa antes de mostrar los datos y subprocess para capturar la salida de 'vcgencmd' donde nos mostrará el dato de measure_temp.
Con estos datos y con el perfil que tengamos seleccionado aplicara una velocidad u otra al ventilador.
El programa completo se puede descargar desde Github
En este punto ya tenemos la parte de programación. Ahora le toca el turno a la electrónica.
Como queremos mover un ventilador, aunque pequeño, su carga es mucho más que los 15mA que puede entregar el pin de la Raspberry Pi. Para solucionar esto usaremos un transistor NPN como el BC548 una resistencia de 10Kohm y un diodo 1N4007.
Usaremos el siguiente diagrama:
Una vez tenemos todo conectado tenemos que habilitar los pines de la Raspberry Pi. Tenemos un diagrama de los pines si en el terminal usamos el comando 'pinout'
Este comando también nos dará información como el modelo, SoC, RAM, puertos USB y algunos parámetros más. Si necesitas más información sobre la placa podemos usar el comando 'raspinfo'
@reboot sleep 15; /usr/bin/python3 /home/ruta_del_archivo/pwm_fan_rpi3.py > /dev/null
- @reboot sleep 15; -> Iniciara el script cuando se reinicie la maquina y hayan pasado 15 segundos
- /usr/bin/python3 -> Ruta donde se encuentra Python3
- home/.../pwm_fan_rpi3.py -> ruta donde se encuentra el script de Python
- > /dev/null -> mandamos la salida del programa a null
@reboot sleep 15 && python3 /home/pi/Ruta_del_archivo/pwm_fan_rpi3.py > /home/Ruta_para_log/cron.log 2>&1
Por otro lado al cargar el programa me daba muchos errores de las librerías y la única solución que he encontrado es instalar las librerías con sudo. Haciendo esto todo ha funcionado perfectamente iniciando el ventilador al arrancar el sistema.
Y bueno hasta aquí la parte de programación y teoría. Montaremos los componentes y probaremos que tal va el programa.
No hay comentarios :
Publicar un comentario