Control del ventilador RPi3 (RPM según temperatura)

¿Has creado algún proyecto genial con una Raspberry Pi? Este es tu lugar.
Avatar de Usuario
Dawn
Pi Master
Pi Master
Mensajes: 360
Registrado: 16 Dic 2016, 10:33
Agradecido: 0
Agradecimiento recibido: 0

fatfredycat escribió:Yo pongo a reproducir una peli y le añado a transmission algo para descargar...en el ultimo script ya cambia dinamicamente segun la temperatura de la raspi... pero estuve mirando y...por debajo de 50 % es tonteria tener el ventilador, pues no refrigera, o muy poco...yo ya te digo, le he hecho un if temp>50 fan=maxfan else fan=minfan que es el 50%
Compañero, para hacer un seguimiento en real de lo que pasa con el proceso fancontrol.sh, sustituye la linea del echo del código por ésto
NOW=$(date +"%m-%d-%y")" | "$(date +"%T")
echo "$NOW | temp: $temp'C | fan: $((fan * 100 / MAX_FAN))% | pause: $secs""s " >> fancontrol.log
Y tendrás un fantastico log en el que comprobar que tal va la refrigeración de tu maquinita :mrgreen:
Avatar de Usuario
fatfredycat
Pi Omega
Pi Omega
Mensajes: 91
Registrado: 04 Feb 2017, 09:50
Agradecido: 2 veces
Agradecimiento recibido: 2 veces

Dawn escribió:
fatfredycat escribió:Yo pongo a reproducir una peli y le añado a transmission algo para descargar...en el ultimo script ya cambia dinamicamente segun la temperatura de la raspi... pero estuve mirando y...por debajo de 50 % es tonteria tener el ventilador, pues no refrigera, o muy poco...yo ya te digo, le he hecho un if temp>50 fan=maxfan else fan=minfan que es el 50%
Compañero, para hacer un seguimiento en real de lo que pasa con el proceso fancontrol.sh, sustituye la linea del echo del código por ésto
NOW=$(date +"%m-%d-%y")" | "$(date +"%T")
echo "$NOW | temp: $temp'C | fan: $((fan * 100 / MAX_FAN))% | pause: $secs""s " >> fancontrol.log
Y tendrás un fantastico log en el que comprobar que tal va la refrigeración de tu maquinita :mrgreen:
:D
Avatar de Usuario
Dawn
Pi Master
Pi Master
Mensajes: 360
Registrado: 16 Dic 2016, 10:33
Agradecido: 0
Agradecimiento recibido: 0

He actualizado un poco el script. En esta versión la velocidad mínima del ventilador es del 25% por debajo de los 45º, punto a partir del cual se va incrementando la velocidad de forma progresiva hasta el 100% de rpm (recordemos que está a 5v) a los 65º. Si la temperatura sube más, el ventilador seguirá fijo en el 100% de rpm, y no bajará si la temperatura no baja de 65º.

Con esto tenemos que entre los 45º y los 65º el ventilador se acelera o se frena en función de la temperatura, estando al 50% de las revoluciones a 50º.

Además he añadido un literal en el script que nos indica que éste se ha iniciado.
#!/bin/bash
### BEGIN INIT INFO
# Provides: 		blabla
# Required-Start:	$syslog
# Required-Stop:	$syslog
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description: 	fancontrol via Hardware
# Description:
#
# Fancontrol via Hardware PWM for RaspberryPi
### END INIT INFO


# Limits
MIN_TEMP=35
MIN_TEMP_FAN=45
MAX_TEMP=65
MIN_FAN=256
MAX_FAN=1024

# Start log
NOW=$(date +"%m-%d-%y")" | "$(date +"%T")
echo "$NOW | START fancontrol LOG " >> fancontrol.log

# Run forever
while [ 1 ]; do

	# What's the CPU temp?
	temp=$(cat /sys/class/thermal/thermal_zone0/temp)
	temp=$((temp/1000))
	
	# Variable temperature control
	if [ $temp -gt $MIN_TEMP_FAN  ] && [ $temp -lt $MAX_TEMP ]; then
		fan=$(((temp - MIN_TEMP) * (MAX_FAN - MIN_FAN) / (MAX_TEMP - MIN_TEMP)))
		secs=1

	# Maximum fan RPM
	elif [ $temp -ge $MAX_TEMP ]; then
		fan=$MAX_FAN
		secs=5

	# Minimun fan RPM
	else
		fan=$MIN_FAN
		secs=15
	fi
	
	gpio -g mode 18 pwm
	gpio -g pwm 18 $fan

	# Show current state and pause for a while
	NOW=$(date +"%m-%d-%y")" | "$(date +"%T")
	echo "$NOW | temp: $temp'C | fan: $((fan * 100 / MAX_FAN))% | pause: $secs""s " >> fancontrol.log
	sleep $secs

done
exit 0
Principe_elda
Pi Alpha
Pi Alpha
Mensajes: 31
Registrado: 19 Dic 2016, 14:56
Agradecido: 0
Agradecimiento recibido: 0

Hola Dawn

tengo instalada la V4 de kamber, ¿puedo usar este script?¿en que ruta tendria que ponerlo?

Tengo hecha la modificación para que arranque en Kodi en lugar de directamente en AM.

Saludos
Avatar de Usuario
Dawn
Pi Master
Pi Master
Mensajes: 360
Registrado: 16 Dic 2016, 10:33
Agradecido: 0
Agradecimiento recibido: 0

Principe_elda escribió:Hola Dawn

tengo instalada la V4 de kamber, ¿puedo usar este script?¿en que ruta tendria que ponerlo?

Tengo hecha la modificación para que arranque en Kodi en lugar de directamente en AM.

Saludos
Pues yo uso la misma imagen y también con el inicio antes de Kodi. Este script me funciona perfectamente, así que podrás usarlo tu también.

Yo lo tengo en /home/pi/Scripts, aunque da un poco igual donde lo pongas siempre que en el cron le indiques la ruta correcta del script.

Ya contarás que tal!
Casillero
Pi Alpha
Pi Alpha
Mensajes: 24
Registrado: 26 Ene 2017, 13:13
Agradecido: 0
Agradecimiento recibido: 0

Excelente el tutorial! te felicito, voy a tratar de ponerlo a prueba en mi proyecto

mil gracias!
Principe_elda
Pi Alpha
Pi Alpha
Mensajes: 31
Registrado: 19 Dic 2016, 14:56
Agradecido: 0
Agradecimiento recibido: 0

Dawn escribió:
Principe_elda escribió:Hola Dawn

tengo instalada la V4 de kamber, ¿puedo usar este script?¿en que ruta tendria que ponerlo?

Tengo hecha la modificación para que arranque en Kodi en lugar de directamente en AM.

Saludos
Pues yo uso la misma imagen y también con el inicio antes de Kodi. Este script me funciona perfectamente, así que podrás usarlo tu también.

Yo lo tengo en /home/pi/Scripts, aunque da un poco igual donde lo pongas siempre que en el cron le indiques la ruta correcta del script.

Ya contarás que tal!
Para que se ejecute cada 10 minutos seria algo asi, no?
crontab -e
*/10 * * * */home/pi/Scripts/Fancontrol.sh
SyDManga
Pi Alpha
Pi Alpha
Mensajes: 23
Registrado: 31 Ene 2017, 17:55
Agradecido: 0
Agradecimiento recibido: 0

gran aporte
Avatar de Usuario
Dawn
Pi Master
Pi Master
Mensajes: 360
Registrado: 16 Dic 2016, 10:33
Agradecido: 0
Agradecimiento recibido: 0

Principe_elda escribió:
Dawn escribió:
Principe_elda escribió:Hola Dawn

tengo instalada la V4 de kamber, ¿puedo usar este script?¿en que ruta tendria que ponerlo?

Tengo hecha la modificación para que arranque en Kodi en lugar de directamente en AM.

Saludos
Pues yo uso la misma imagen y también con el inicio antes de Kodi. Este script me funciona perfectamente, así que podrás usarlo tu también.

Yo lo tengo en /home/pi/Scripts, aunque da un poco igual donde lo pongas siempre que en el cron le indiques la ruta correcta del script.

Ya contarás que tal!
Para que se ejecute cada 10 minutos seria algo asi, no?
crontab -e
*/10 * * * */home/pi/Scripts/Fancontrol.sh
Lo que deberias es modificar las pausas del codigo (sleep) a 600

Enviado desde mi SM-G935F mediante Tapatalk
Avatar de Usuario
fatfredycat
Pi Omega
Pi Omega
Mensajes: 91
Registrado: 04 Feb 2017, 09:50
Agradecido: 2 veces
Agradecimiento recibido: 2 veces

El script no deja de ejecutarse...lo unico que puedes es como dice @Dawn darle pausa de 600 pero...si esta al 25% no creo que refrigere suficiente...
Principe_elda
Pi Alpha
Pi Alpha
Mensajes: 31
Registrado: 19 Dic 2016, 14:56
Agradecido: 0
Agradecimiento recibido: 0

fatfredycat escribió:El script no deja de ejecutarse...lo unico que puedes es como dice @Dawn darle pausa de 600 pero...si esta al 25% no creo que refrigere suficiente...
Buenas

He tenido que comprarme otro soldador porque el viejo no lo encuentro por ningun lado, me he pillado uno muy normalito de amazon que viene con un maletin para tenerlo todo bien guardado y organizado.

Ya tengo todos los componentes, en cuanto llegue el soldador me pondre con ello.

Estoy bastante verde con esto de los scripts, si esta siempre en ejecución entonces ¿hay que añadir algo en cron? de ser así ¿que habria que añadir?

Muchas gracias por toda vuestra ayuda
Avatar de Usuario
Dawn
Pi Master
Pi Master
Mensajes: 360
Registrado: 16 Dic 2016, 10:33
Agradecido: 0
Agradecimiento recibido: 0

Principe_elda escribió:
fatfredycat escribió:El script no deja de ejecutarse...lo unico que puedes es como dice @Dawn darle pausa de 600 pero...si esta al 25% no creo que refrigere suficiente...
Buenas

He tenido que comprarme otro soldador porque el viejo no lo encuentro por ningun lado, me he pillado uno muy normalito de amazon que viene con un maletin para tenerlo todo bien guardado y organizado.

Ya tengo todos los componentes, en cuanto llegue el soldador me pondre con ello.

Estoy bastante verde con esto de los scripts, si esta siempre en ejecución entonces ¿hay que añadir algo en cron? de ser así ¿que habria que añadir?

Muchas gracias por toda vuestra ayuda

Correcto, hay que añadir al cron lo siguiente de la siguiente manera:
crontab -e
Y AÑADIMOS AL FINAL DEL ARCHIVO
@reboot /ruta/delscript/fancontrol.sh > /dev/null 2>&1
raenio
Pi Alpha
Pi Alpha
Mensajes: 20
Registrado: 19 Feb 2017, 14:47
Agradecido: 0
Agradecimiento recibido: 0

Muchas gracias, buen aporte, en cuanto pueda me pongo con esto!
Avatar de Usuario
fatfredycat
Pi Omega
Pi Omega
Mensajes: 91
Registrado: 04 Feb 2017, 09:50
Agradecido: 2 veces
Agradecimiento recibido: 2 veces

raenio escribió:Muchas gracias, buen aporte, en cuanto pueda me pongo con esto!
Ok :D si necesitas ya sabes!
yoshy
Pi Alpha
Pi Alpha
Mensajes: 20
Registrado: 17 Feb 2017, 17:32
Agradecido: 0
Agradecimiento recibido: 0

Pues muy bueno el tutorial, apuntado para cuando tenga tiempo libre. Gracias
joalma
Pi Alpha
Pi Alpha
Mensajes: 21
Registrado: 21 Feb 2017, 19:20
Agradecido: 0
Agradecimiento recibido: 0

gracias por el aporte, lo voy a probar ;)
pipefoz
Pi Alpha
Pi Alpha
Mensajes: 21
Registrado: 26 Feb 2017, 20:18
Agradecido: 0
Agradecimiento recibido: 0

Ya tengo un tuto que seguir para mi rpi, graicas!
Marlboro
Pi Newbie
Pi Newbie
Mensajes: 6
Registrado: 29 Ene 2017, 12:43
Agradecido: 0
Agradecimiento recibido: 0

Pillo sitio para hacerlo en unos días
Avatar de Usuario
tenshide
Pi Beta
Pi Beta
Mensajes: 116
Registrado: 01 Mar 2017, 22:30
Agradecido: 0
Agradecimiento recibido: 0

Dawn escribió:He actualizado un poco el script. En esta versión la velocidad mínima del ventilador es del 25% por debajo de los 45º, punto a partir del cual se va incrementando la velocidad de forma progresiva hasta el 100% de rpm (recordemos que está a 5v) a los 65º. Si la temperatura sube más, el ventilador seguirá fijo en el 100% de rpm, y no bajará si la temperatura no baja de 65º.

Con esto tenemos que entre los 45º y los 65º el ventilador se acelera o se frena en función de la temperatura, estando al 50% de las revoluciones a 50º.

Además he añadido un literal en el script que nos indica que éste se ha iniciado.
#!/bin/bash
### BEGIN INIT INFO
# Provides: 		blabla
# Required-Start:	$syslog
# Required-Stop:	$syslog
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description: 	fancontrol via Hardware
# Description:
#
# Fancontrol via Hardware PWM for RaspberryPi
### END INIT INFO


# Limits
MIN_TEMP=35
MIN_TEMP_FAN=45
MAX_TEMP=65
MIN_FAN=256
MAX_FAN=1024

# Start log
NOW=$(date +"%m-%d-%y")" | "$(date +"%T")
echo "$NOW | START fancontrol LOG " >> fancontrol.log

# Run forever
while [ 1 ]; do

	# What's the CPU temp?
	temp=$(cat /sys/class/thermal/thermal_zone0/temp)
	temp=$((temp/1000))
	
	# Variable temperature control
	if [ $temp -gt $MIN_TEMP_FAN  ] && [ $temp -lt $MAX_TEMP ]; then
		fan=$(((temp - MIN_TEMP) * (MAX_FAN - MIN_FAN) / (MAX_TEMP - MIN_TEMP)))
		secs=1

	# Maximum fan RPM
	elif [ $temp -ge $MAX_TEMP ]; then
		fan=$MAX_FAN
		secs=5

	# Minimun fan RPM
	else
		fan=$MIN_FAN
		secs=15
	fi
	
	gpio -g mode 18 pwm
	gpio -g pwm 18 $fan

	# Show current state and pause for a while
	NOW=$(date +"%m-%d-%y")" | "$(date +"%T")
	echo "$NOW | temp: $temp'C | fan: $((fan * 100 / MAX_FAN))% | pause: $secs""s " >> fancontrol.log
	sleep $secs

done
exit 0


Con este script, yo que tengo puesto el ventilador directo al espadin 4 (5v) y 6 (GND) directo, solo tendría que cambiar los parametros donde indica que GPIO uso no? soy un poco pez en esto disculpa..
Imagen
Avatar de Usuario
Dawn
Pi Master
Pi Master
Mensajes: 360
Registrado: 16 Dic 2016, 10:33
Agradecido: 0
Agradecimiento recibido: 0

tenshide escribió:
Dawn escribió:He actualizado un poco el script. En esta versión la velocidad mínima del ventilador es del 25% por debajo de los 45º, punto a partir del cual se va incrementando la velocidad de forma progresiva hasta el 100% de rpm (recordemos que está a 5v) a los 65º. Si la temperatura sube más, el ventilador seguirá fijo en el 100% de rpm, y no bajará si la temperatura no baja de 65º.

Con esto tenemos que entre los 45º y los 65º el ventilador se acelera o se frena en función de la temperatura, estando al 50% de las revoluciones a 50º.

Además he añadido un literal en el script que nos indica que éste se ha iniciado.
#!/bin/bash
### BEGIN INIT INFO
# Provides: 		blabla
# Required-Start:	$syslog
# Required-Stop:	$syslog
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description: 	fancontrol via Hardware
# Description:
#
# Fancontrol via Hardware PWM for RaspberryPi
### END INIT INFO


# Limits
MIN_TEMP=35
MIN_TEMP_FAN=45
MAX_TEMP=65
MIN_FAN=256
MAX_FAN=1024

# Start log
NOW=$(date +"%m-%d-%y")" | "$(date +"%T")
echo "$NOW | START fancontrol LOG " >> fancontrol.log

# Run forever
while [ 1 ]; do

	# What's the CPU temp?
	temp=$(cat /sys/class/thermal/thermal_zone0/temp)
	temp=$((temp/1000))
	
	# Variable temperature control
	if [ $temp -gt $MIN_TEMP_FAN  ] && [ $temp -lt $MAX_TEMP ]; then
		fan=$(((temp - MIN_TEMP) * (MAX_FAN - MIN_FAN) / (MAX_TEMP - MIN_TEMP)))
		secs=1

	# Maximum fan RPM
	elif [ $temp -ge $MAX_TEMP ]; then
		fan=$MAX_FAN
		secs=5

	# Minimun fan RPM
	else
		fan=$MIN_FAN
		secs=15
	fi
	
	gpio -g mode 18 pwm
	gpio -g pwm 18 $fan

	# Show current state and pause for a while
	NOW=$(date +"%m-%d-%y")" | "$(date +"%T")
	echo "$NOW | temp: $temp'C | fan: $((fan * 100 / MAX_FAN))% | pause: $secs""s " >> fancontrol.log
	sleep $secs

done
exit 0


Con este script, yo que tengo puesto el ventilador directo al espadin 4 (5v) y 6 (GND) directo, solo tendría que cambiar los parametros donde indica que GPIO uso no? soy un poco pez en esto disculpa..
Eso no te funcionará. Si quieres que se ajuste automáticamente la velocidad del ventilador tienes que seguir exactamente las instrucciones del primer post.
Responder