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
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
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
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?
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
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..
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.