A Raspberry Pi folyamatosan futó szervernél, Home Assistant központnál, OctoPrint gépnél vagy zárt házba épített adatgyűjtőnél a ventilátor hangja és a processzor hőmérséklete egyaránt számít. A szoftveres ventilátor-szabályozás Raspberry Pi 3B+ / 4B modelleken lehetővé teszi, hogy a hűtés csak akkor induljon el, amikor valóban szükséges. Így a rendszer üresjáratban csendes marad, terhelés alatt pedig nem a hővédelemre kell bízni a teljesítmény visszafogását.
A cél nem az, hogy a ventilátor állandóan forogjon, hanem hogy a hőmérséklethez, a ház kialakításához és a Pi tényleges terheléséhez igazodjon. Egy rosszul megválasztott kapcsolási pont ugyanúgy problémás lehet, mint a hűtés hiánya: vagy felesleges zajt kapunk, vagy túl későn reagál a rendszer.
Mikor van szükség szoftver vezérelt hűtésre?
A Raspberry Pi 3B+ és különösen a Raspberry Pi 4 Model B hőtermelése erősen függ a feladattól. Egy egyszerű, rövid ideig futó GPIO-projekt általában nem indokol ventilátort. Más a helyzet, ha a Pi hosszú ideig fut magas CPU-terheléssel, több konténert kezel, kameraképet dolgoz fel, USB-s SSD-ről szolgál ki adatokat, vagy nyáron rosszul szellőző helyre kerül.
A Raspberry Pi 4 Model B processzora magas hőmérsékleten automatikusan visszaveheti az órajelét. Ez védi a hardvert, de egy média- vagy szerverfeladatnál teljesítményingadozást okozhat. Egy jó hűtőborda sok esetben elegendő, zárt házban viszont a felmelegedett levegőt is el kell vezetni. Itt ad gyakorlati előnyt a hőmérséklet alapján kapcsoló ventilátor.
A Pi 3B+ esetében is hasznos lehet ez a megoldás, de nem minden projektnél kötelező. A döntést ne csak egy rövid terheléses mérésre alapozza. Érdemes azt vizsgálni, hogyan viselkedik az eszköz a végleges házban, a tervezett táppal, csatlakoztatott perifériákkal és többórás valós használat mellett.
Hardver: a GPIO nem ventilátortáp
A legtöbb hiba abból adódik, hogy a ventilátort közvetlenül egy GPIO-lábra kötik. Ezt nem szabad megtenni. A Raspberry Pi GPIO-k 3,3 V-os jelszintekkel működnek, és csak kis áram leadására alkalmasak. Egy 5 V-os ventilátor indításkor rövid ideig különösen nagy áramot kérhet, ami instabil működést vagy akár GPIO-sérülést okozhat.
A helyes felépítésben a ventilátor az 5 V-os tápról működik, a GPIO pedig csak egy kapcsolóelemet vezérel. Ehhez használható tranzisztoros kapcsolómodul vagy logikai szintű N-csatornás MOSFET. Motoros terhelésnél a visszaáram ellen védődióda is szükséges, ha a kiválasztott modul ezt nem tartalmazza.
Egy egyszerű kétvezetékes 5 V-os ventilátorhoz a következő elemek kellenek:
- Raspberry Pi-kompatibilis ház vagy megfelelő méretű 5 V-os ventilátor
- hűtőborda a processzorra, ha tartós terhelés várható
- tranzisztoros vagy MOSFET-es kapcsolómodul
- megfelelő keresztmetszetű vezetékek és közös földelés
A közös földelés nem opcionális: a Pi GND pontját és a kapcsolómodul földjét össze kell kötni, különben a GPIO vezérlőjele nem lesz értelmezhető.
Két-, három- és négyvezetékes ventilátorok
A kétvezetékes ventilátor a legegyszerűbb: tápot kap vagy nem kap tápot. Ilyenkor a szoftveres vezérlés jellemzően ki-be kapcsolást jelent. Ezzel már jelentősen csökkenthető a zaj, de a ventilátor indulása és leállása hallható lehet.
A háromvezetékes változatnál a harmadik vezeték rendszerint fordulatszám-visszajelzésre szolgál. Ez akkor hasznos, ha ellenőrizni szeretné, hogy a ventilátor tényleg forog-e, de a ki-be vezérlés alapelvét nem változtatja meg.
A négyvezetékes PC-ventilátor külön PWM vezérlőbemenetet használ. Ez kifinomult fordulatszám-szabályozást tesz lehetővé, de a szabványos vezérlés általában nagyjából 25 kHz-es, nyitott kollektoros jelet vár. Egy Raspberry Pi GPIO-lábat közvetlenül erre sem célszerű kötni. Ilyen projekthez megfelelő illesztőáramkör és pontosabb tervezés kell.
Egyszerű, megbízható megoldás: gpio-fan overlay
Ha egy ventilátort csak hőmérséklet alapján szeretne kapcsolni, a Raspberry Pi OS beépített gpio-fan eszközfa-overlaye a legpraktikusabb választás. Ez már rendszerindításkor elérhető, nem igényel folyamatosan futó Python-programot, és egy hibásan leálló felhasználói szolgáltatás sem kapcsolja ki a hűtési logikát.
Raspberry Pi OS Bookworm rendszeren nyissa meg a következő fájlt:
/boot/firmware/config.txt
Régebbi rendszereken az elérési út jellemzően ez:
/boot/config.txt
A fájl végéhez például ezt a sort lehet felvenni:
dtoverlay=gpio-fan,gpiopin=14,temp=55000
Ebben a példában a GPIO14 vezérli a kapcsolómodult, a ventilátor pedig 55 °C-nál kapcsol be. A hőmérséklet millifokban szerepel, ezért az 55000 érték 55 °C-ot jelent. A GPIO14 a 40 tűs csatlakozón a fizikai 8-as láb, de mindig a GPIO-számozást és ne a fizikai lábszámot használja a konfigurációban.
A módosítás után indítsa újra a Raspberry Pi-t. A processzorhőmérséklet ellenőrzésére használható ez a parancs:
vcgencmd measure_temp
Az overlay akkor ideális, ha a cél egy meghatározott hőmérséklet felett automatikusan induló ventilátor. Nem kell hozzá külön csomag, Python-környezet vagy systemd szolgáltatás. Az egyszerűség itt üzembiztonsági előny.
Szoftveres ventilátor-szabályozás Raspberry Pi 3B+ / 4B rendszeren hiszterézissel
Egyetlen kapcsolási hőmérsékletnél előfordulhat, hogy a ventilátor folyamatosan ki-be kapcsol, amikor a CPU hőmérséklete épp a határérték körül ingadozik. Ennek elkerülésére hiszterézist érdemes használni. Például a ventilátor induljon 58 °C-nál, de csak 48 °C alatt álljon le.
Ehhez egy rövid Python-program jó választás lehet, főleg akkor, ha további feltételeket is szeretne kezelni. Ilyen lehet a napszak, egy külső hőmérő adata, a processzorterhelés vagy a ventilátor fordulatszám-visszajelzése.
Az alábbi példa egy GPIO14-re kötött, aktív magas kapcsolómodult feltételez:
from gpiozero import OutputDevice
from time import sleep
fan = OutputDevice(14, active_high=True, initial_value=False)
fan_on = False
while True:
with open('/sys/class/thermal/thermal_zone0/temp') as file:
temperature = int(file.read()) / 1000
if temperature >= 58 and not fan_on:
fan.on()
fan_on = True
elif temperature <= 48 and fan_on:
fan.off()
fan_on = False
sleep(5)
A program öt másodpercenként olvassa ki a hőmérsékletet. Ez ventilátorvezérléshez általában elegendő, és nem terheli feleslegesen a rendszert. Ha a használt relé- vagy tranzisztormodul aktív alacsony logikával működik, az active_high=True paramétert False értékre kell állítani.
A Pythonos megoldást systemd szolgáltatásként célszerű futtatni, hogy újraindítás után automatikusan elinduljon. A Restart=always beállítás különösen hasznos: ha a program hibával leáll, a rendszer újraindítja. Kritikus, felügyelet nélküli alkalmazásnál viszont a kerneloldali gpio-fan overlay általában jobb alap, mert kevesebb futó komponensre épül.
Hőmérsékleti határok: nincs univerzális érték
Az 55-60 °C közötti bekapcsolási pont jó kiindulás sok Raspberry Pi 4B projektnél, de nem kötelező szabály. Egy nagy alumíniumházas, jól szellőző készüléknél a 65 °C is megfelelő lehet. Egy forró gépházban futó, folyamatosan terhelt eszköznél viszont indokolt lehet az 50-55 °C körüli korábbi indítás.
A túl alacsony kapcsolási küszöb azt eredményezi, hogy a ventilátor szinte állandóan működik. A túl magas érték mellett a Pi gyakrabban érheti el azt a tartományt, ahol már visszaveszi a teljesítményt. A jó beállítást mérés alapján lehet megtalálni: figyelje a hőmérsékletet üresjáratban, tipikus terhelés alatt és hosszabb, rosszabb szellőzésű üzemben is.
A tápellátásra is figyeljen. Egy gyenge vagy bizonytalan 5 V-os tápegység USB-s háttértárral és ventilátorral együtt feszültségesést okozhat. Ilyenkor nem a ventilátorvezérlés a valódi probléma, hanem a nem megfelelő táp. Stabil Raspberry Pi-projekthez a teljes rendszer fogyasztását kell tervezni, nem csak a panelét.
A megfelelő ház, hűtőborda, ventilátor és kapcsolómodul együtt ad használható eredményt. Ha a Raspberry Pi feladata tartós, a hűtését is tartós üzemre méretezze: a csendes rendszer akkor jó, ha közben a teljesítménye és az üzembiztonsága is kiszámítható marad.