Cum să controlezi ventilatorul Noctua din Raspberry Pi
Cum să controlezi un ventilator Noctua NF-A20 PWM din Raspberry Pi. De la oprit la viteze între 20%-100%

ventilator Noctua NF-A20 PWM

Îmi construiesc un homelab și am nevoie să controlez ventilatorul Noctua NF-A20 PWM chromax.black.swap 200x200mm folosind Raspberry Pi. Așa am reușit să fac asta.

Componente necesare:

Diagramă:

imagine diagramă

Să începem de la Pi:

1- Conectează un fir de la pin-ul GPIO 16, sau orice pin simplu, la rezistența de 1k, apoi conectează celălalt capăt la tranzistor pe pin-ul din mijloc.

2- Un fir de la pin-ul din dreapta al tranzistorului la orice pin Ground sau minus/negativ al Pi-ului. Fața tranzistorului este cea plată.

3- Un fir de la pin-ul din dreapta al tranzistorului la conectorul negativ/minus de 5V marcat “IN-” al sursei ridicătoare.

4- Un fir de la orice pin de 5V al Pi-ului (le găsești în parea de sus, dreapta) la conectorul pozitiv/plus de 5V marcat “IN+” al sursei ridicătoare.

5- Important: ajustează sursa la 12V sau mai puțin.
NU conecta ventilatorul acum pentru că îl poți arde instant dacă îl conectezi la o tensiune mai mare decat 12V.
    A- Ca să pornești sursa ridicătoare temporar conectează un fir de la un pin ground/minus/negativ al Pi-ului direct la teminalul marcat “IN-” al sursei SAU poți executa codul python din urmatoarea secțiune. Trebuie doar să execuți speed(fan, 100) / time.sleep(180).
    B- Conectează multimetru la conectorii marcați “OUT+” și “OUT-” apoi selectează măsurarea voltajului la multimetru (de obicei marcat cu “2V”).
    C- Pe sursă învârte șurubul mic și galben de pe componenta albastră până când multimetrul arată 12V sau puțin mai mic, ca să fim siguri ca nu se strică. Eu l-am lăsat pe al meu la 11.5V.

șurubel de ajustare tensiune sursă

    D- Când ești gata deconectează multimetrul și firul conectat la ground, sau oprește programul python.

Am găsit schema pin-urilor ventilatorului Noctua aici: https://faqs.noctua.at/en/support/solutions/articles/101000081757-what-pin-configuration-do-noctua-fans-use- schemă pin-uri noctua

5- Un fir de la conectorul marcat “OUT-” (12V negativ) al sursei la pin-ul 1 al conectorului noctua.

6- Un fir de la conectorul marcat “OUT+” (12V pozitiv) al sursei la pin-ul 2 al conectorului noctua.

5- Un fir de la pin-ul 4 al conectorului noctua la pin-ul GPIO 12 al Pi-ului. Acest pin are capabilitate PWM .

Codul python:

Am folosit următorul cod din acest tutorial publicat pe the-diy-life.com de Michael Klements ( cod sursă ), și l-am modificat ca să folosească tranzistorul ca să oprească ventilatorul pentru că ventilatorul nu poate scădea viteza până la 0 RPM. Viteza minimă de rotație este de 20% (350RPM).

 1#!/usr/bin/env python3
 2import RPi.GPIO as GPIO
 3import time
 4import signal
 5import sys
 6
 7# Ventilatorul Noctua PWM are nevoie de 25 kHz (kilo!), vezi pagina 6 de pe:
 8# https://noctua.at/pub/media/wysiwyg/Noctua_PWM_specifications_white_paper.pdf
 9PWM_FREQ = 25           # [Hz] frecvență PWM
10FAN_PIN = 12            # pin BCM pentru control ventilator PWM
11TRAN_PIN = 16           # NPN Transistor
12
13def speed(fan, percent):
14    print("set fan to", percent)
15    if (percent < 20):
16        GPIO.output(TRAN_PIN, False)
17        fan.ChangeDutyCycle(20)
18    else:
19        GPIO.output(TRAN_PIN, True)
20        fan.ChangeDutyCycle(percent)
21
22try:
23    signal.signal(signal.SIGTERM, lambda *args: sys.exit(0))
24    GPIO.setwarnings(True)
25    GPIO.setmode(GPIO.BCM)
26    GPIO.setup(TRAN_PIN, GPIO.OUT)
27    GPIO.setup(FAN_PIN, GPIO.OUT, initial=GPIO.LOW)
28    fan = GPIO.PWM(FAN_PIN, PWM_FREQ)
29
30    # facem cateva cicluri pentru testare
31    speed(fan, 100)
32    time.sleep(30)
33
34    speed(fan, 50)
35    time.sleep(30)
36
37    speed(fan, 0)
38    time.sleep(30)
39
40    speed(fan, 20)
41    time.sleep(30)
42
43    speed(fan, 70)
44    time.sleep(30)
45
46    speed(fan, 100)
47    time.sleep(30)
48
49except KeyboardInterrupt:
50    pass
51
52finally:
53    GPIO.cleanup()

Finalizat!


Ultima modificare la 2024-11-18

EN: How to control a Noctua PWM fan from Raspberry Pi