Ventilátorvezérlő Arduinoból

Szerettem volna a számítógépházam ventilátorait a CPU és GPU hőmérsékletek függvényében dinamikusan vezérelni. – írta: Diocles, 3 éve

Amikor négy éve belevágtam ebbe a projektbe, még nem nagyon voltak olyan alaplapok, amivel ezt meg lehetett csinálni, meg a pénzt is sajnáltam rá.

Most 2021-ben vettem egy középkategóriás Intel alaplapot, és, hát ezzel megint nem lehet ezt megcsinálni.

De nem baj, mert építettem egy saját ventilátorvezérlőt egy Arduino Nanoból, amivel négy ventilátort függetlenül, CPU és GPU hőmérsékleti görbék alapján vezérelhetek.

Ezt a csináld magad vezérlőt fogom most itt bemutatni, melynek minden részlete open-source, és ha kedvetek van, egy óra alatt ti is összerakhatjátok.

A prototípus megépítése

Az egyszerűség kedvéért csak PWM-es ventilátorokat használok, ezért az Arduinóhoz nem is kell semmi egyéb, csak minden portot össze kell kötni a ventilátorok megfelelő pinjeivel. Az alábbi kapcsolási rajz mutatja, mit hova kell dugni.

Az első próbához, vagy egy kis játékhoz össze is lehet dugdosni az egészet egy breadboardon.

Az Arduinóra az alábbi címen található programkódot kell feltölteni.

https://github.com/bebump/coolth/blob/master/arduino_nano/fan_controller.ino

A ventilátorok sebességét három összetevő határozza meg:

1. A PWM-es ventilátorok, ha nem kapnak vezérlőjelet, 100%-on forognak. Ha áram nélkül marad az Arduino, akkor ez fog történni.
2. Az Arduino programja rendelkezik egy perzisztens, az Arduino fedélzeti memóriájában eltárolt beállítással. Amikor a PC-n futó program, ami a hőmérsékleteket is figyeli, nem küld üzeneteket az Arduinónak, ezen a fokozaton mennek majd a ventilátorok.
3. A PC-re telepítünk majd egy programot, amellyel kézzel, vagy hőmérsékleti görbék szerint dinamikusan vezérelhetjük a ventilátorokat.

A 2-es ponthoz tartozó, állandó, vagy biztonsági értékeket az Arduinónak küldött sorosporti üzenettel állíthatjuk be. Ehhez használhatjuk az Arduino fejlesztőkörnyezetben található Serial monitor menüpontot. Az alábbi elküldött üzenet minden ventilátort 50%-os fokozatra állít. Ez az érték az Arduino memóriájában tárolódik, és innentől kezdve ki- és bekapcsolás után is visszaállítja ezt az értéket.

c 2 128 128 128 128

Ahol az utolsó négy szám a négy ventilátort vezérlő érték a 0-255 tartományban. A 128-as érték tehát kb. 50%-nak felel meg.

A PC-s szoftvert is telepíthetjük, amelyet az alábbi címen találunk meg.

https://github.com/bebump/coolth/releases

A programban tekerhetjük kézzel a potmétereket, vagy hőmérsékleti görbéket is megadhatunk. A potméterek közepén a ventilátorok mért fordulatszámát láthatjuk, alatta pedig a fokozatot, vagyis kitöltési tényezőt.

A tartósabb megoldás

Már öt éve ezt a megoldást használom a ventilátorok vezérlésére, és minden probléma nélkül, nagyon megbízhatóan működik.

Nemrégiben megelégeltem azonban a vezetékes, forrasztgatott, tákolt tűzveszély-érzetet, ezért NYÁK-ot és 3D nyomtatott készülékházat terveztem hozzá.

Így már kicsit igényesebb csomagolást is adhatunk a vezérlőnknek.

A nyák legyártásához szükséges Gerber fájlok is elérhetők.

https://github.com/bebump/coolth/tree/master/arduino_nano/gerber

Ezeket a fájlokat elküldve egy NYÁK gyártó cégnek, akár Magyarországon is előállíthatjuk azt olyan 5000 Ft-ért egy-két héten belül. Kínában is gyártathatunk, ennél olcsóbban, ekkor azonban számíthatunk az egyhónapos postázásra.

Ha megvan a NYÁK, szükségünk lesz még a következő alkatrészekre.

* 4 db Molex 47053-1000 csatlakozóra
* 1 db 5.08 mm-es NYÁK sorkapocsra
* 4 db 4 pines PWM fan hosszabbító vezetékre
* 1 db SATA vagy Molex tápcsatlakozó hosszabbítóra
* 1 db micro USB - alaplapi USB header csatlakozóra

A készülékházhoz az alábbi két fájlt kell kinyomtatni.

https://github.com/bebump/coolth/tree/master/arduino_nano/enclosure

Jöjjön pár kép az összeszerelés egyes stádiumairól!

Amit lehetett volna jobban csinálni

A NYÁK-ot és a készülékházat érdemes volna újratervezni. Először a NYÁK-kal kezdtem, és egyáltalán nem voltam tekintettel arra, hogy miként fog az elkészült vezérlő kinézni, hogy lehet bedobozolni és a vezetékeket bekötni.

Az egész doboz szükségtelenül nagy, az USB csatlakozó a doboz belsejében van, ahelyett, hogy épp a ház széléhez érne, a tápcsatlakozó aszimmetrikusan lábatlankodik a ventilátorcsatlakozók között.

Az egész olyan benyomást kelt, mint egy alaktalan polip.

Amit igazán sajnálok, hogy nagyon alapos keresés után sem találtam 90 fokban elforgatott Molex 47053-1000-es csatlakozókat. Úgy tűnik, ez nem szabványos alkatrész, hanem ki-ki saját maga gyártja saját céljaira.

Ha újracsinálnám, most az egészet laposabbra, az USB és ventilátor csatlakozókat közvetlenül a doboz szélére kivezetve tervezném meg.

Előzmények