pwm-fan-control.py

Carte porteuse Xerxes Pi 2026 pour modules Raspberry Pi CM4/CM5 · Fichier : pwm-fan-control.py · Langage : python · Usage : Contrôler dynamiquement la vitesse du ventilateur de refroidissement via le connecteur PWM dédié de la Xerxes Pi.

Asservissement thermique du ventilateur connecté au connecteur PWM de la carte pour un refroidissement actif.

Utilise la bibliothèque RPi.GPIO pour générer un signal PWM. Le GPIO 18 est un exemple ; consultez le schéma KiCad de la Xerxes Pi pour le brochage exact du connecteur de refroidissement. Ajustez les seuils de température selon votre boîtier.

pwm-fan-control.py

#!/usr/bin/env python3
import RPi.GPIO as GPIO
import time
import os

FAN_PIN = 18  # Vérifiez le schéma pour le GPIO PWM exact

GPIO.setmode(GPIO.BCM)
GPIO.setup(FAN_PIN, GPIO.OUT)
pwm = GPIO.PWM(FAN_PIN, 100)  # 100 Hz
pwm.start(0)

def get_cpu_temp():
    temp_file = "/sys/class/thermal/thermal_zone0/temp"
    if os.path.exists(temp_file):
        with open(temp_file, "r") as f:
            return float(f.read()) / 1000.0
    return 0.0

def set_fan_speed(duty_cycle):
    pwm.ChangeDutyCycle(duty_cycle)

try:
    while True:
        temp = get_cpu_temp()
        
        # Courbe de refroidissement simple
        if temp < 40:
            speed = 0
        elif temp < 50:
            speed = 25
        elif temp < 60:
            speed = 50
        elif temp < 70:
            speed = 75
        else:
            speed = 100
            
        set_fan_speed(speed)
        print(f"Temp: {temp:.1f}°C | Fan: {speed}%")
        time.sleep(2)
        
except KeyboardInterrupt:
    pwm.stop()
    GPIO.cleanup()
    print("\nVentilateur arrêté.")

← Retour à la fiche