Spisu treści:

Sterownik wentylatora napędzany procesorem CPU i GPU: 6 kroków (ze zdjęciami)
Sterownik wentylatora napędzany procesorem CPU i GPU: 6 kroków (ze zdjęciami)

Wideo: Sterownik wentylatora napędzany procesorem CPU i GPU: 6 kroków (ze zdjęciami)

Wideo: Sterownik wentylatora napędzany procesorem CPU i GPU: 6 kroków (ze zdjęciami)
Wideo: Poprawiam po kliencie Lenovo Y700 #LIVE62 2024, Listopad
Anonim
Sterownik wentylatora napędzany przez CPU i GPU
Sterownik wentylatora napędzany przez CPU i GPU

Niedawno zmodernizowałem swoją kartę graficzną. Nowy model GPU ma wyższy TDP niż mój CPU i stary GPU, więc chciałem również zainstalować dodatkowe wentylatory obudowy. Niestety, moje MOBO ma tylko 3 złącza wentylatorów z kontrolą prędkości i można je połączyć tylko z temperaturą procesora lub chipsetu. Postanowiłem temu zaradzić, projektując mój własny kontroler wentylatorów PC, który odczytuje prędkość obrotową już zainstalowanych wentylatorów (zarówno podłączonych do MOBO i sterowanych temperaturą procesora, jak i tych, które chłodzą GPU) i ma dwa kanały wyjściowe. Kanał A wykorzystuje prędkość wentylatorów powiązanych z temperaturą procesora i karty graficznej do napędzania 3-stykowych wentylatorów wyjściowych ze zmienną prędkością. Kanał B wyczuwa tylko prędkość wentylatorów GPU, a jego obwód wyjściowy wykorzystuje dodatkowy tranzystor, który pozwala na uzyskanie niższych prędkości napędzanych przez niego wentylatorów (działa dobrze z półpasywną kartą graficzną).

Odczytanie prędkości innych wentylatorów jest moim zdaniem łatwiejsze i tańsze niż instalowanie dodatkowych sond temperatury tuż przy procesorach zakrytych radiatorami (w zasadzie wymaga to podłączenia przewodu obrotomierza wentylatorów bezpośrednio do pinu mikrokontrolera).

Poniżej opisano niektóre metody kontrolowania prędkości wentylatorów. Postanowiłem użyć PWM o niskiej częstotliwości, ale z kilkoma modyfikacjami metody opisanej w artykule. Po pierwsze, każdy kanał ma 6 diod połączonych szeregowo, które można wykorzystać do obniżenia napięcia zasilającego wentylator o 4-5V. W tej konfiguracji poziomy napięcia PWM wynoszą ~8V – 12V i 0V – ~8V (niedostępne w kanale A) zamiast 0V – 12V. To znacznie zmniejsza hałas wytwarzany przez wentylator. Kolejna sztuczka, której użyłem, aby w ten sposób wyciszyć wentylator, jest opisana tutaj. Ta sztuczka wymaga zainstalowania układu RC pomiędzy wyjściem mikrokontrolera a bramką tranzystora MOSFET, którego użyłem do przełączania poziomów napięcia wentylatora. Zmniejsza to szybkość narastania sygnału sterującego tranzystorem MOSFET, co z kolei sprawia, że szarpnięcie kątowe wentylatora podczas zmiany poziomu napięcia jest mniej widoczne, co ogranicza wibracje i skoki napięcia.

Kieszonkowe dzieci

Części i materiały:

  • ATtiny13 lub ATtiny13A w obudowie 8-PDIP
  • 8-pinowe gniazdo DIP
  • Tranzystor 3x IRF530
  • 12x dioda 1N4007 (dowolna inna dioda 1A ze spadkiem napięcia około 0,7V powinna działać)
  • Kondensator elektrolityczny radialny 220uF/25V
  • Kondensator elektrolityczny promieniowy 10uF/16V
  • Ceramiczny kondensator dyskowy 5x 100nF
  • Rezystor 10k 0,25 W
  • 4x 22k rezystor 0,25 W
  • Rezystor 2x 1k 0,25 W
  • Przycisk przełącznika dotykowego 6x6mm
  • 2x 2-pinowa prosta męska listwa pinowa 2.54mm
  • 4x 3-pinowe męskie złącze wentylatorów (Molex 2510), alternatywnie możesz użyć zwykłych listew pinowych jeśli chcesz (tak zrobiłem), ale wtedy musisz być bardzo ostrożny przy podłączaniu wentylatorów, a złącza żeńskie tych wentylatorów będą przymocowane mniej bezpiecznie
  • 4-pinowe złącze Molex, obudowa żeńska/męskie piny (złącze zasilania AMP MATE-N-LOK 1-480424-0), użyłem jednego, który był częścią przejściówki Molex męski na 2x żeński SATA dołączony do jakiegoś starego MOBO
  • 2x kable połączeniowe ze złączami żeńskimi 2,54mm (lub obudowy złączy + piny + przewody), zostaną przylutowane do przewodów obrotomierza wentylatorów wejściowych (lub bezpośrednio do ich złączy na płytkach drukowanych)
  • prefboard (50mm x 70mm, min 18 x 24 otwory), alternatywnie można samodzielnie wytrawić miedzianą płytę i wywiercić otwory
  • kilka kawałków drutu
  • taśma izolacyjna
  • taśma z folii aluminiowej (jeśli zamierzasz przymocować złącze do tylnej płyty GPU, patrz krok 5)
  • papier

Narzędzia:

  • przecinak ukośny
  • szczypce
  • śrubokręt płaski
  • nóż uniwersalny
  • multimetr
  • stacja lutownicza
  • lutować
  • Programator AVR (samodzielny programator, taki jak USBasp lub możesz użyć ArduinoISP)
  • przewody do płytki stykowej i zworki, które będą używane do programowania mikrokontrolera poza płytką PCB (lub dowolnego innego narzędzia, które może osiągnąć ten cel)

Krok 1: Zastrzeżenie

Budowa tego urządzenia wymaga użycia umiarkowanie niebezpiecznych narzędzi i może spowodować szkody lub zniszczenie mienia. Niektóre z wymaganych kroków mogą spowodować unieważnienie gwarancji na sprzęt lub nawet jego uszkodzenie, jeśli zostaną niewłaściwie przeprowadzone. Opisane urządzenie budujesz i używasz na własne ryzyko

Krok 2: Jak działa kontrola wentylatora

Jak działa kontrola wentylatora
Jak działa kontrola wentylatora

Kanał A wykorzystuje dwa wejścia. Każde z tych wejść Kanału A ma przypisany poziom, nazwijmy te poziomy A0 i A1. Domyślnie oba te poziomy są równe 0. Oba wejścia mają przypisane wartości progowe RPM (3 progi na wejście). Po osiągnięciu pierwszego progu A0 lub A1 wzrasta do 1, gdy drugi wzrasta do 2, a trzeci próg ustawia jeden z poziomów wejściowych na 3. Później A0 i A1 są łączone (po prostu sumują się i uniemożliwiają osiągnięcie wyższej wartości niż 3), co powoduje, że główny kanał wyjściowy ma numer poziomu w zakresie 0-3. Ta liczba służy do sterowania prędkością wentylatorów wyjściowych, 0 oznacza, że są zasilane napięciem 7-8V (cykl pracy 0%). Wyższe poziomy wyjściowe oznaczają, że wentylator jest zasilany z pełnego 12V przez 33%, 66% lub 100% cyklu 100ms lub 33ms (w zależności od wybranej częstotliwości).

Kanał B ma tylko jedno wejście (B1, fizycznie jest współdzielone z kanałem A [pin PB1]). Istnieje sześć możliwych poziomów B1 (1-6), domyślny poziom to 1. Istnieje pięć wartości progowych, które są w stanie zwiększyć B1. B1 jest używany jako główny poziom wyjściowy kanału B. Gdy wynosi 1, 7-8V zasila wentylatory wyjściowe przez 33% czasu cyklu w jednym cyklu, w drugim przez 66%, przez resztę czasu zasilanie jest odłączone. Poziom 2 oznacza, że 66% każdego cyklu to 7-8V, reszta 0V. Poziom 3 oznacza, że stale podawane jest napięcie 7-8V. Poziomy 4-6 oznaczają, że wentylator zasilany jest z pełnego 12V przez 33%, 66% lub 100% cyklu, przez resztę czasu napięcie wynosi 7-8V.

Częstotliwość tego sterowania PWM domyślnie wynosi 10 Hz. Można ją zwiększyć do 30Hz, zamykając zworki J7.

Po osiągnięciu wyższego progu poziomy A0, A1 i B1 zwiększają się natychmiast. Kiedy jednak RPM spadają, poziom jest utrzymywany przez 200 ms i może spadać tylko o 1 na 200 ms. Ma to na celu zapobieganie gwałtownym zmianom tych poziomów, gdy obroty wentylatora wejściowego są bardzo bliskie wartości progowej.

Krok 3: lutowanie elementów elektronicznych

Lutowanie elementów elektronicznych
Lutowanie elementów elektronicznych
Lutowanie elementów elektronicznych
Lutowanie elementów elektronicznych
Lutowanie elementów elektronicznych
Lutowanie elementów elektronicznych

Przylutuj wszystkie elementy elektroniczne do prefboardu (oprócz Attiny13 będzie później wkładany do gniazda). Do wykonania połączeń elektrycznych między komponentami użyj przewodów miedzianych (dopasowane powinny być te o średnicy 0,5 mm z kabla UTP). Jeśli masz problem z wypchnięciem dużych przewodów wychodzących ze złącza Molex (AMP MATE-N-LOK), możesz wywiercić dla nich większe otwory. Jeśli nie chcesz używać wiertarki, zawsze możesz kilkakrotnie przekręcić śrubę w małych otworach w płycie pref. Upewnij się, że przewody nie powodują zwarć.

Jeśli wolisz wykonać własną płytkę drukowaną, udostępniam również pliki.svg (wymiary płytki to 53,34x63,50mm) oraz.pdf (rozmiar strony A4, wewnątrz archiwum.zip). Powinna wystarczyć płytka z jednostronną okładziną miedzianą, ponieważ z przodu jest tylko jedno połączenie (można je wykonać za pomocą drutu), więc pilniki na stronę przednią są dostarczane jako główne, aby to połączenie można było zidentyfikować.

Zdecydowanie zalecam pokrycie tylnej części PCB jakimś materiałem izolacyjnym, który zapobiegnie przypadkowym zwarciom. Użyłem kilku warstw zwykłego papieru, które są przytrzymywane do krawędzi płytki za pomocą kilku pasków taśmy izolacyjnej.

Krok 4: Programowanie mikrokontrolera ATtiny

Programowanie mikrokontrolera ATtiny
Programowanie mikrokontrolera ATtiny
Programowanie mikrokontrolera ATtiny
Programowanie mikrokontrolera ATtiny

Program działający na MCU ma zakodowane na stałe kilka progów prędkości obrotowej wentylatorów wejściowych. Progi te znajdują się na początku pliku fan_controller.c. Linia zawierająca pierwszy próg, który odpowiada za nieznaczne zwiększenie poziomu wyjściowego kanału A w odpowiedzi na przekroczenie 450 obr/min wentylatora input_0, wygląda tak:

#define A0_SPEED_0 3 // 450 obr/min

Jeśli chcesz zmienić wartość progu RPM, musisz zastąpić cyfrę 3 czymś innym. Zwiększenie tej liczby o 1 zmieni próg o 150 obr./min.

Inną rzeczą, którą możesz chcieć zmienić, jest zmniejszenie opóźnienia poziomu wyjściowego. Opóźnienie to zapobiega gwałtownym zmianom poziomu wyjściowego, gdy obroty wentylatora wejściowego są bardzo bliskie wartości progowej. Kontrolują to 3 linie (ponieważ kanał A wykorzystuje 2 wejścia, a kanał B wykorzystuje 1), a pierwsza z nich wygląda tak:

if(kanał_A0_niższe_cykle_obrotów>2) {

Zwiększenie liczby 2 zwiększy to opóźnienie. Opóźnienie liczone jest w cyklach 100ms.

Aby skompilować kod źródłowy, a następnie zaprogramować chip, będziesz potrzebował trochę oprogramowania. W dystrybucji Linuksa opartej na Debianie można go zainstalować, wykonując następujące polecenie:

sudo apt-get install avr-libc gcc-avr avrdude

Jeśli korzystasz z systemu Windows, możesz spróbować zainstalować pakiet WinAVR, który zawiera również wymagane oprogramowanie.

Aby skompilować kod źródłowy, musisz wykonać to:

avr-gcc -mmcu=attiny13 -Os -Ściana kontroler_wentylatora.c -o kontroler_wentylatora.out -lm

Aby utworzyć plik.hex, musisz skopiować tę linię do terminala:

avr-objcopy -O ihex -R.eeprom fan_controller.out fan_controller.hex

Polecenie to pozwala sprawdzić, ile pamięci będzie używał program (tekst to Flash, dane to zmienne, które zostaną zapisane we Flashu, a następnie skopiowane do pamięci RAM, a bss to zmienne inicjowane wartością 0 w pamięci RAM):

avr-size fan_controller.out

Gdy plik.hex jest gotowy, należy włożyć ATtiny13 do płytki stykowej i podłączyć go do programatora za pomocą zworek. Najlepiej odłączyć zasilanie od programatora podczas podłączania go do MCU. Zachowaj domyślne bezpieczniki (H:FF, L:6A). Jeśli twój programista to USBasp, to polecenie zaprogramuje pamięć flash MCU:

avrdude -c usbasp -p t13 -B 8 -U flash:w:fan_controller.hex

-B 8 zmienia prędkość transmisji między programatorem a MCU (zegar bitowy). Może zajść potrzeba zmiany jej na wyższą wartość, jeśli masz problemy z połączeniem z mikrokontrolerem.

Gdy MCU jesteśmy gotowi, włóż go do gniazda DIP 8. Aby wyjąć MCU z płytki stykowej, zwykle podważam ją płaskim śrubokrętem.

Krok 5: Podłączanie wentylatorów do urządzenia

Podłączanie wentylatorów do urządzenia
Podłączanie wentylatorów do urządzenia
Podłączanie wentylatorów do urządzenia
Podłączanie wentylatorów do urządzenia
Podłączanie wentylatorów do urządzenia
Podłączanie wentylatorów do urządzenia

Jako wentylator Input 0 (ten podłączony do PB0) wybrałem jeden z wentylatorów obudowy podłączony do MOBO, którego prędkość zmieniała się w zależności od temperatury procesora. Usunąłem izolację z części przewodu obrotomierza wentylatora i przylutowałem do niego jeden koniec kabla połączeniowego. Drugi koniec (z dołączonym złączem żeńskim 2,54 mm) zostanie podłączony do sterownika wentylatora. Jeśli kabel połączeniowy jest za krótki, przedłuż go, lutując inny kabel między wymienionymi wcześniej. Następnie zakryj wszystkie odsłonięte przewody taśmą izolacyjną.

Wejście 1 odczytuje prędkość wentylatorów GPU (w moim przypadku jest ich tak naprawdę 3, ale na płytce PCB karty graficznej jest tylko jedno złącze wentylatora). Przylutowałem kabel połączeniowy Input 1 bezpośrednio do jednego z wyprowadzeń 4-pinowego złącza wentylatora mini GPU znajdującego się na płytce drukowanej. Ponieważ wyprowadzenie to znajdowało się pomiędzy PCB a backplate, najpierw zaizolowałem backplate kawałkiem papieru (zwłaszcza, że materiał backplate był dość lutowniczy), a następnie mocno przymocowałem żeński konektor kabla z drugiej strony backplate za pomocą taśmy z folii aluminiowej. Następnie wentylator(y) GPU można podłączyć do pinu PB1 za pomocą innego (przedłużonego) kabla połączeniowego. Jeśli nie chcesz lutować niczego na płytce PCB karty graficznej, możesz podłączyć kabel połączeniowy do przewodów wentylatora lub zrobić adapter, który zostanie umieszczony między wentylatorami a złączem na płytce drukowanej, decyzja należy do Ciebie.

Wentylator przekazuje swoją aktualną prędkość przez przewód obrotomierza poprzez połączenie tego przewodu z ziemią przez otwarty spust/kolektor dwa razy na obrót (wirnik wentylatora zwykle ma 4 bieguny [NSNS], które są wykrywane przez czujnik Halla, moc wentylatora spada, gdy typu bieguna). Z drugiej strony przewód ten jest zwykle podciągnięty do poziomu napięcia 3,3V. Jeśli nie jesteś pewien, czy masz właściwy przewód, możesz użyć oscyloskopu lub zbudować jeden z obwodów detekcyjnych narysowanych na ostatnim rysunku w tym kroku. Pierwsza z nich pozwala na sprawdzenie maksymalnego napięcia, jakie pojawia się w mierzonym miejscu, druga na sprawdzenie, czy pojawiają się tam impulsy o niskiej częstotliwości.

3,3V powinno być odczytywane przez piny wejściowe ATtiny jako stan WYSOKI, ale jeśli masz z tym problemy, możesz spróbować zmniejszyć napięcie zasilające MCU (zwiększy to również rezystancję tranzystorów MOSFET!). Nie miałem żadnych problemów, niemniej jednak postanowiłem, że zamieszczę tę myśl tutaj.

Gdy wentylatory wejściowe są gotowe, możesz umieścić kontroler wentylatorów w obudowie komputera, w wybranym przez siebie miejscu. Zamontowałem go z boku dwóch moich pustych wnęk na napędy 5,25”, wsuwając go między metalowe części wnęki, umieszczając za nim trochę papieru i blokując go za pomocą opaski zaciskowej wepchniętej przez jeden z dużych otworów w prefboard i kilka innych otworów we wnęce 5.25”. Upewnij się, że żadne metalowe części obudowy komputera nie mogą dotykać odsłoniętych przewodów sterownika wentylatora.

Teraz możesz podłączyć 3-pinowe wentylatory wyjściowe do kontrolera. Wentylatory wyjściowe podłączone do Kanału A będą połączone zarówno z wentylatorami CPU, jak i GPU, a minimalne napięcie, które będzie je zasilało, wyniesie około 7-8V. Wentylatory podłączone do złączy wyjściowych kanału B będą napędzane tylko przez wentylator(y) chłodnicy GPU, a ich napięcie może spaść do 0 V (ale tylko przez 66 ms co drugi cykl 100 ms przy najniższym poziomie napędu wyjściowego). Wentylatory nie powinny pobierać więcej niż 1 A na kanał wyjściowy.

Krok 6: Inne zmiany wprowadzone na moim komputerze

Inne zmiany, które wprowadziłem na moim komputerze
Inne zmiany, które wprowadziłem na moim komputerze
Inne zmiany, które wprowadziłem na moim komputerze
Inne zmiany, które wprowadziłem na moim komputerze
Inne zmiany, które wprowadziłem na moim komputerze
Inne zmiany, które wprowadziłem na moim komputerze
Inne zmiany, które wprowadziłem na moim komputerze
Inne zmiany, które wprowadziłem na moim komputerze

Kanał A napędza dwa wentylatory znajdujące się na górze mojej obudowy. Są to ten sam model i zasilane są tym samym napięciem, co sprawia, że kręcą się z bardzo podobnymi prędkościami. W wyniku tego pojawiło się słyszalne dudnienie (wzorzec interferencji między dwoma dźwiękami o nieco różnych częstotliwościach). Aby temu zaradzić, zainstalowałem 2 diody (jedna zwykła i jedna Schottky'ego) szeregowo z jednym z wentylatorów. Zmniejszyło to napięcie i prędkość wentylatora, sprawiając, że rytm znika.

Kolejną zmianą, która jest związana z jednym z tych wentylatorów, które zrobiłem, jest zamontowanie papierowego ściennego wentylatora górnego umieszczonego bardziej z przodu. Jego celem jest zapobieganie zasysaniu przez wentylator powietrza, które nie przeszło jeszcze przez żaden z radiatorów. Próbowałem również wykonać inne papierowe ściany, które zapobiegały zasysaniu powietrza wylotowego GPU do chłodnicy procesora. Właściwie obniżyły temperaturę procesora, ale kosztem nagrzewania się GPU bardziej, więc w końcu je usunąłem.

Inną nietypową modyfikacją, którą wykonałem, jest usunięcie filtra przeciwpyłowego na wylocie tych dwóch górnych wentylatorów (przez większość czasu powietrze i tak jest wypychane z obudowy, a gdy mój komputer jest wyłączony, szuflada umieszczona nieco nad obudową komputera osłania go z kurzu). Zainstalowałem również wentylator 92mm przed dwiema pustymi zatokami na napędy 5,25” (sterownik wentylatora znajduje się tuż za nim). Ten wentylator nie jest przytrzymywany żadnymi śrubami, po prostu ładnie mieści się między wentylatorem 120mm poniżej a napędem optycznym powyżej (powierzchnie obu z nich są pokryte taśmą izolacyjną, aby zapewnić pewne tłumienie wibracji).

Zalecana: