jetson-pwm-fan-control-10.ino

Placa base Xerxes Nano para módulos Jetson Orin Nano Super y Turing RK1 · Archivo : jetson-pwm-fan-control-10.ino · Lenguaje : Python · Uso : Contrôle dynamique du ventilateur connecté au connecteur PWM pour la gestion thermique active.

Controla la velocidad del ventilador mediante señal PWM según la temperatura de la CPU del módulo Jetson.

Utiliza el conector PWM dedicado en la Xerxes Nano. Instala 'Jetson.GPIO' o asegúrate de que 'RPi.GPIO' esté configurado para los números de pines de Jetson. El script lee la temperatura térmica del sistema y ajusta el ciclo de trabajo. Verifica la polaridad y el voltaje (3.3V o 5V) del conector del ventilador utilizado.

jetson-pwm-fan-control-10.ino

import RPi.GPIO as GPIO
import time
import subprocess
import re

# Configuration PWM
# Sur Jetson, les broches GPIO sont mappées différemment. 
# Supposons l'utilisation de la bibliothèque Jetson.GPIO ou RPi.GPIO compatible.
# Le connecteur PWM de la Xerxes Nano est généralement lié à un pin spécifique.

PWM_PIN = 18  # Ajuster selon le schéma Xerxes Nano pour le header PWM

def get_cpu_temp():
    # Lecture via thermal zone
    try:
        with open('/sys/class/thermal/thermal_zone0/temp', 'r') as f:
            temp = int(f.read()) / 1000.0
        return temp
    except:
        return 0.0

def set_fan_speed(pwm_pin, duty_cycle):
    try:
        GPIO.output(pwm_pin, duty_cycle)
    except Exception as e:
        print(f"Erreur PWM: {e}")

if __name__ == "__main__":
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(PWM_PIN, GPIO.OUT)
    pwm = GPIO.PWM(PWM_PIN, 20000) # 20kHz PWM
    pwm.start(0)
    
    try:
        while True:
            temp = get_cpu_temp()
            
            # Logique de contrôle simple
            if temp < 40.0:
                duty = 20  # 20%
            elif temp < 60.0:
                duty = 50  # 50%
            elif temp < 75.0:
                duty = 80  # 80%
            else:
                duty = 100 # 100%
                
            set_fan_speed(PWM_PIN, duty)
            print(f"Temp: {temp:.1f}C | Fan Duty: {duty}%")
            time.sleep(2)
            
    except KeyboardInterrupt:
        pass
    finally:
        pwm.stop()
        GPIO.cleanup()

← Volver a la ficha