-Para Raspberry Pi 1 Model B rev.2:
Hola,
he montado un ventilador de 5v de 4 cables: GND, 5V, PWM y TACH.
El cable de Tach. lo ignoro. Parece ser que todo funciona correctamente conectando la entrada PWM del ventilador directamente a la salida PWM GPIO18 de la Raspberry Pi y con un sencillo programa, al cual le varío manualmente la velocidad para confirmar su funcionamiento.
No tengo ni idea de Python, así que este es el programa que he logrado hacer para confirmar que funciona:
Code: Select all
import RPi.GPIO as GPIO
import time #Para delays
GPIO.setmode(GPIO.BCM) #Escojo GPIO.BCM como modo de numeración.
GPIO.setup(18, GPIO.OUT) #Configuro GPIO18
pwm = GPIO.PWM(18, 1000) #Configuro la señal PWM a una frecuencia de 1KHz.
pwm.start(50) #Configuro el ciclo de trabajo al 50%
pwm.ChangeDutyCycle(25) #Configuro la velocidad del ventilador en %
time.sleep(500) #Delay
pwm.stop() #Apagar señal PWM
GPIO.cleanup() #GARBAGE COLLECTING
Code: Select all
import commands
def get_cpu_temp():
tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
cpu_temp = tempFile.read()
tempFile.close()
return float(cpu_temp)/1000
#Mostrar temperatura en grados Fahrenheit
#return float(1.8*cpu_temp)+32
def get_gpu_temp():
gpu_temp = commands.getoutput( '/opt/vc/bin/vcgencmd measure_temp' ).replace( 'temp=', '' ).replace( "'C", '' )
return float(gpu_temp)
#Mostrar temperatura en grados Fahrenheit
# return float(1.8* gpu_temp)+32
def main():
print "Temperatura CPU: ", round(get_cpu_temp())
print "Temperatura GPU: ", round(get_gpu_temp())
if __name__ == '__main__':
main()Code: Select all
import RPi.GPIO as GPIO
import time
import commands
GPIO.setmode(GPIO.BCM)
GPIO.setup(18, GPIO.OUT)
pwm = GPIO.PWM(18, 1000)
a = 1 #variable solo para hacer un bucle infinito con while
def get_cpu_temp(): #Lectura de temperatura
tempFile = open( "/sys/class/thermal/thermal_zone0/temp" )
cpu_temp = tempFile.read()
tempFile.close()
return float(cpu_temp)/1000
pwm.start(50)
while a == 1: #bucle infinito
time.sleep(60)
if get_cpu_temp() <= 40:
pwm.ChangeDutyCycle(30)
else:
if get_cpu_temp() <= 50:
pwm.ChangeDutyCycle(40)
else:
if get_cpu_temp() <= 60:
pwm.ChangeDutyCycle(55)
else:
if get_cpu_tmp() <= 70:
pwm.ChangeDutyCycle(75)
else:
if get_cpu_tmp() <= 80:
pwm.ChangeDutyCycle(85)
else:
if get_cpu_tmp() <= 90:
pwm.ChangeDutyCycle(100)
pwm.stop()
GPIO.cleanup()
Luego como podría hacer para que se ejecute al iniciar la Raspberry Pi? lo quiero usar con OSMC (KODI).
Paralelamente me parece interesante el control de la velocidad del ventilador por PID por si alguien me puede aclarar algo el tema, lo que he visto por ahí me ha liado mucho.
Gracias por la atención.
Saludos.
