Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Saya baru-baru ini meningkatkan kartu grafis saya. Model GPU baru memiliki TDP lebih tinggi daripada CPU saya dan GPU lama, jadi saya juga ingin memasang kipas casing tambahan. Sayangnya, MOBO saya hanya memiliki 3 konektor kipas dengan kontrol kecepatan, dan mereka hanya dapat dihubungkan ke suhu CPU atau chipset. Saya memutuskan untuk memperbaiki ini, dengan merancang pengontrol kipas PC saya sendiri yang membaca kecepatan RPM dari kipas yang sudah terpasang (baik yang terhubung ke MOBO dan didorong oleh suhu CPU dan yang mendinginkan GPU) dan memiliki dua saluran keluaran. Saluran A menggunakan kecepatan kipas terkait suhu CPU & GPU untuk menggerakkan kipas keluaran 3-pin dengan kecepatan variabel. Channel B hanya merasakan kecepatan kipas GPU dan sirkuit keluarannya menggunakan transistor tambahan yang memungkinkan untuk mencapai kecepatan kipas yang lebih rendah yang digerakkan olehnya (ini bekerja dengan baik dengan kartu grafis semi-pasif).
Membaca kecepatan kipas lain menurut saya lebih mudah dan lebih murah daripada memasang probe suhu tambahan tepat di sebelah prosesor yang tercakup dalam heatsink (pada dasarnya membutuhkan menghubungkan kabel tachometer kipas langsung ke pin mikrokontroler).
Beberapa metode untuk mengontrol kecepatan kipas dijelaskan di sini. Saya memutuskan untuk menggunakan PWM frekuensi rendah, tetapi dengan sedikit modifikasi pada metode yang dijelaskan dalam artikel. Pertama, setiap saluran memiliki 6 dioda yang dihubungkan secara seri, yang dapat digunakan untuk mengurangi tegangan yang memberi daya pada kipas sebesar 4-5V. Dalam pengaturan ini, level tegangan PWM adalah ~8V – 12V dan 0V - ~8V (tidak tersedia di Saluran A), bukan 0V – 12V. Ini sangat mengurangi kebisingan yang dihasilkan kipas. Trik lain yang saya gunakan untuk membuat kipas yang dikontrol dengan mode ini lebih senyap dijelaskan di sini. Trik ini membutuhkan pemasangan sirkuit RC antara output mikrokontroler dan gerbang MOSFET yang saya gunakan untuk mengganti level tegangan kipas. Hal ini mengurangi laju perubahan tegangan dari sinyal yang mengontrol MOSFET, yang pada gilirannya membuat sentakan sudut kipas selama perubahan level tegangan kurang menonjol, memotong getaran dan lonjakan tegangan.
Perlengkapan
Bagian dan bahan:
- ATtiny13 atau ATtiny13A dalam kasus 8-PDIP
- Soket DIP 8 Pin
- 3x transistor IRF530
- Dioda 12x 1N4007 (dioda 1A lainnya dengan penurunan tegangan sekitar 0,7V seharusnya berfungsi)
- 220uF/25V kapasitor elektrolit radial
- Kapasitor elektrolit radial 10uF / 16V
- 5x 100nF kapasitor cakram keramik
- 10k 0.25W resistor
- 4x 22k 0.25W resistor
- 2x 1k 0.25W resistor
- Tombol sakelar taktil 6x6mm
- 2x 2 pin 2.54mm tajuk pin pria lurus
- Konektor kipas laki-laki 4x 3-pin (Molex 2510), sebagai alternatif, Anda dapat menggunakan header pin biasa jika Anda mau (saya melakukannya), tetapi Anda harus ekstra hati-hati saat menghubungkan kipas, dan konektor perempuan dari kipas tersebut akan terpasang kurang aman
- Konektor Molex 4-pin, housing wanita/pin male (konektor daya AMP MATE-N-LOK 1-480424-0), saya menggunakan salah satu yang merupakan bagian dari adaptor Molex male to 2x SATA female yang dibundel dengan beberapa MOBO lama
- 2x kabel jumper dengan konektor perempuan 2.54mm (atau rumah konektor + pin + kabel), mereka akan disolder ke kabel tachometer kipas input (atau langsung ke konektornya di PCB)
- prefboard (50mm x 70mm, min 18 x 24 lubang array), sebagai alternatif, Anda dapat mengetsa sendiri papan berlapis tembaga dan mengebor lubang
- beberapa potong kawat
- pita isolasi
- pita aluminium foil (jika Anda akan memasang konektor ke pelat belakang GPU, lihat Langkah 5)
- kertas
Peralatan:
- pemotong diagonal
- Tang
- obeng pipih
- kegunaan pisau
- multimeter
- stasiun solder
- pateri
- Programmer AVR (programmer mandiri seperti USBasp atau Anda dapat menggunakan ArduinoISP
- papan tempat memotong roti dan kabel jumper yang akan digunakan untuk memprogram mikrokontroler di luar PCB (atau alat lain yang dapat mencapai tujuan ini)
Langkah 1: Penafian
Konstruksi perangkat ini memerlukan penggunaan alat yang cukup berbahaya dan dapat menyebabkan kerusakan atau kerusakan pada properti. Beberapa langkah yang diperlukan dapat membatalkan garansi perangkat keras Anda atau bahkan merusaknya jika dilakukan dengan tidak benar. Anda membuat dan menggunakan perangkat yang dijelaskan dengan risiko Anda sendiri
Langkah 2: Cara Kerja Kontrol Kipas
Saluran A menggunakan dua input. Masing-masing input Saluran A memiliki level yang terkait dengannya, sebut saja level tersebut A0 dan A1. Secara default, kedua level tersebut adalah 0. Kedua input memiliki nilai RPM ambang batas yang terkait dengannya (3 ambang batas per input). Ketika ambang pertama tercapai, A0 atau A1 meningkat menjadi 1, ketika kedua meningkat menjadi 2, dan ambang ketiga menetapkan salah satu level input menjadi 3. Kemudian A0 dan A1 digabungkan (cukup ditambahkan bersama dan dicegah untuk mencapai nilai yang lebih tinggi dari 3), membuat keluaran utama Saluran A nomor level dalam kisaran 0-3. Angka ini digunakan untuk mengontrol kecepatan kipas keluaran, 0 berarti mereka ditenagai oleh 7-8V (siklus tugas 0%). Tingkat output yang lebih tinggi berarti bahwa kipas diberi daya dari 12V penuh selama 33%, 66% atau 100% dari siklus 100ms atau 33ms (tergantung pada frekuensi yang dipilih).
Saluran B hanya memiliki satu input (B1, secara fisik dibagi dengan Saluran A [PB1 pin]). Ada enam kemungkinan level B1 (1-6), level default adalah 1. Ada lima nilai ambang batas, yang mampu meningkatkan B1. B1 digunakan sebagai output utama Channel B level. Ketika 1, 7-8V memberi daya pada kipas keluaran selama 33% waktu siklus dalam satu siklus, di siklus lainnya selama 66%, selama sisa waktu daya terputus. Level 2 berarti 66% dari setiap siklus adalah 7-8V, istirahat 0V. Level 3 berarti 7-8V diterapkan secara konstan. Level 4-6 berarti kipas diberi daya dari 12V penuh selama 33%, 66% atau 100% dari siklus, untuk sisa waktu tegangan adalah 7-8V.
Frekuensi kontrol PWM ini secara default adalah 10Hz. Ini dapat ditingkatkan menjadi 30Hz dengan menutup pin jumper J7.
Ketika ambang batas yang lebih tinggi tercapai, level A0, A1 dan B1 meningkat secara instan. Namun, ketika RPM turun, level ditahan selama 200 md dan hanya dapat berkurang 1 per 200 md. Ini untuk mencegah perubahan cepat pada level tersebut ketika RPM kipas input sangat dekat dengan ambang batas.
Langkah 3: Menyolder Komponen Elektronik
Solder semua komponen elektronik ke prefboard (kecuali Attiny13, nanti akan dimasukkan ke dalam soket). Gunakan kabel tembaga (yang diameter 0,5 mm dari kabel UTP harus sempurna) untuk membuat sambungan listrik antar komponen. Jika Anda kesulitan mendorong kabel besar yang keluar dari konektor Molex(AMP MATE-N-LOK), Anda dapat mengebor lubang yang lebih besar untuknya. Jika Anda tidak ingin menggunakan bor, Anda selalu dapat memutar sekrup beberapa kali di dalam lubang prefboard kecil. Pastikan kabel tidak menyebabkan korsleting.
Jika Anda lebih suka membuat PCB sendiri, saya juga menyediakan file.svg (dimensi papan 53.34x63.50mm) dan.pdf (ukuran halaman A4, di dalam arsip.zip). Papan berlapis tembaga satu sisi sudah cukup, karena hanya ada satu sambungan di sisi depan (dapat dibuat dengan kawat), jadi file untuk sisi depan disediakan utama sehingga koneksi ini dapat diidentifikasi.
Saya sangat menyarankan Anda menutupi bagian belakang PCB dengan beberapa bahan isolasi yang akan mencegah korsleting yang tidak disengaja. Saya menggunakan beberapa lapis kertas biasa yang diikat ke tepi PCB dengan beberapa strip isolasi.
Langkah 4: Pemrograman Mikrokontroler ATtiny
Program yang berjalan pada MCU memiliki beberapa ambang batas kecepatan RPM kipas input. Ambang batas tersebut terletak di awal file fan_controller.c. Baris yang berisi ambang pertama, yang bertanggung jawab untuk sedikit meningkatkan level output Saluran A sebagai respons terhadap kipas input_0 yang melebihi 450 RPM, terlihat seperti ini:
#define A0_SPEED_0 3 // 450 RPM
Jika Anda ingin mengubah nilai ambang RPM, maka Anda perlu mengganti nomor 3 dengan yang lain. Menaikkan angka ini sebanyak 1 akan mengubah ambang batas sebesar 150 RPM.
Hal lain yang mungkin ingin Anda ubah adalah penurunan delay level output. Penundaan ini mencegah perubahan cepat tingkat output ketika RPM kipas input sangat dekat dengan ambang batas. Ada 3 baris yang mengontrol ini (karena Saluran A menggunakan 2 input dan Saluran B menggunakan 1) dan yang pertama terlihat seperti ini:
if(channel_A0_lower_rpm_cycles > 2) {
Peningkatan nomor 2 akan meningkatkan penundaan ini. Penundaan dihitung dalam siklus 100 ms.
Untuk mengkompilasi kode sumber dan kemudian chip program, Anda memerlukan beberapa perangkat lunak. Pada distribusi Linux berbasis Debian dapat diinstal dengan menjalankan perintah berikut:
sudo apt-get install avr-libc gcc-avr avrdude
Jika Anda menggunakan Windows, Anda dapat mencoba menginstal WinAVR suite, yang juga berisi perangkat lunak yang diperlukan.
Untuk mengkompilasi kode sumber, Anda perlu menjalankan ini:
avr-gcc -mmcu=attiny13 -Os -Wall fan_controller.c -o fan_controller.out -lm
Untuk membuat file.hex Anda perlu menyalin baris ini ke terminal:
avr-objcopy -O ihex -R.eeprom fan_controller.out fan_controller.hex
Perintah ini memungkinkan untuk memeriksa berapa banyak memori yang akan digunakan program (teks adalah Flash, data adalah variabel yang akan disimpan di Flash dan kemudian disalin ke RAM, dan bss adalah variabel yang diinisialisasi dengan nilai 0 dalam RAM):
fan_controller.out ukuran avr
Ketika file.hex Anda sudah siap, Anda perlu memasukkan ATtiny13 ke breadboard dan menghubungkannya ke programmer dengan kabel jumper. Yang terbaik adalah memutuskan daya dari programmer saat Anda menghubungkannya ke MCU. Pertahankan bit sekering default (H:FF, L:6A). Jika programmer Anda adalah USBasp, perintah ini akan memprogram memori flash MCU:
avrdude -c usbasp -p t13 -B 8 -U flash:w:fan_controller.hex
-B 8 mengubah kecepatan transmisi antara programmer dan MCU (bitclock). Anda mungkin perlu mengubahnya ke nilai yang lebih tinggi jika Anda memiliki masalah dengan koneksi ke mikrokontroler.
Saat MCU kami siap, masukkan ke dalam soket DIP 8. Untuk melepas MCU dari breadboard biasanya saya cungkil dengan obeng pipih.
Langkah 5: Menghubungkan Kipas ke Perangkat
Sebagai kipas Input 0 (yang terhubung ke PB0) saya memilih salah satu kipas casing yang dicolokkan ke MOBO, yang kecepatannya bervariasi dengan suhu CPU. Saya melepas insulasi dari bagian kabel tachometer kipas dan menyolder salah satu ujung kabel jumper ke sana. Ujung lainnya (dengan konektor perempuan 2.54mm terpasang padanya) akan dihubungkan ke pengontrol kipas. Jika kabel jumper terlalu pendek, perpanjang dengan menyolder kabel lain di antara kabel yang disebutkan sebelumnya. Kemudian tutup semua konduktor yang terbuka dengan pita isolasi.
Input 1 membaca kecepatan kipas GPU (dalam kasus saya sebenarnya ada 3 di antaranya, tetapi hanya ada satu konektor kipas pada PCB kartu grafis). Saya menyolder kabel jumper Input 1 langsung ke salah satu ujung konektor kipas GPU mini 4-pin yang terletak di PCB. Karena timah ini terletak di antara PCB dan pelat belakang, saya mengisolasi pelat belakang dengan selembar kertas terlebih dahulu (terutama karena bahan pelat belakang cukup mudah disolder) dan kemudian dengan kuat memasang konektor perempuan kabel ke sisi lain pelat belakang dengan menggunakan pita aluminium foil. Kemudian kipas GPU dapat dihubungkan ke pin PB1 dengan menggunakan kabel jumper lain (diperpanjang). Jika Anda tidak ingin menyolder apa pun pada PCB kartu grafis Anda, Anda dapat memasang kabel jumper ke kabel kipas atau membuat adaptor yang akan ditempatkan di antara kipas dan konektor pada PCB, keputusan ada di tangan Anda.
Kipas mentransmisikan kecepatan arusnya melalui kabel tachometer dengan cara menghubungkan kabel ini ke ground melalui saluran terbuka/kolektor dua kali per putaran (rotor kipas biasanya memiliki 4 kutub [NSNS] yang dideteksi oleh sensor Hall, output kipas menjadi rendah saat pada jenis tiang terdeteksi). Di sisi lain, kawat ini biasanya ditarik ke level tegangan 3.3V. Jika Anda tidak yakin apakah Anda mendapatkan kabel yang tepat, Anda dapat menggunakan osiloskop atau membuat salah satu sirkuit deteksi yang digambar pada gambar terakhir pada langkah ini. Pertama dari mereka memungkinkan Anda untuk memeriksa tegangan maksimum yang muncul di lokasi yang diukur, yang kedua untuk memeriksa apakah pulsa frekuensi rendah muncul di sana.
3.3V harus dibaca oleh pin input ATtiny sebagai status TINGGI, tetapi jika Anda memiliki masalah dengan ini, Anda dapat mencoba mengurangi tegangan yang memberi daya pada MCU (ini juga akan meningkatkan resistansi MOSFET!). Saya tidak punya masalah, namun, saya memutuskan bahwa saya harus memasukkan pemikiran ini di sini.
Ketika kipas masukan sudah siap, Anda dapat menempatkan pengontrol kipas di dalam casing PC Anda, di tempat yang Anda pilih. Saya memasangnya ke sisi dua ruang drive 5,25” saya yang kosong, dengan mendorongnya di antara bagian logam rongga, menempatkan beberapa kertas di belakangnya dan menguncinya di tempatnya dengan menggunakan dasi ritsleting yang didorong melalui salah satu lubang besar di prefboard dan beberapa lubang lainnya di teluk 5,25 . Pastikan tidak ada bagian logam dari casing PC yang dapat menyentuh salah satu konduktor yang terbuka pada pengontrol kipas.
Sekarang Anda dapat menghubungkan kipas keluaran 3-pin ke pengontrol. Kipas keluaran yang terhubung ke Saluran A akan ditautkan ke kipas CPU dan GPU, dan tegangan minimum yang akan memberi daya sekitar 7-8V. Kipas yang dicolokkan ke konektor keluaran B Saluran hanya akan digerakkan oleh kipas pendingin GPU dan voltasenya mungkin turun ke 0V (namun hanya untuk 66 md setiap siklus 100 md detik pada tingkat penggerak keluaran terendah). Kipas tidak boleh menarik lebih dari 1A per saluran keluaran.
Langkah 6: Perubahan Lain yang Saya Buat pada PC Saya
Saluran A menggerakkan dua kipas yang terletak di bagian atas kasing saya. Mereka adalah model yang sama dan mereka ditenagai oleh tegangan yang sama, yang membuat mereka berputar pada kecepatan yang sangat mirip. Beberapa ketukan yang dapat didengar (pola interferensi antara dua suara dengan frekuensi yang sedikit berbeda) muncul sebagai akibatnya. Untuk mengatasinya saya memasang 2 dioda (satu biasa dan satu Schottky) secara seri dengan salah satu kipas. Ini mengurangi voltase dan kecepatan kipas, membuat ketukan hilang.
Perubahan lain yang berkaitan dengan salah satu kipas yang saya buat adalah pemasangan kipas dinding bawah kertas dinding yang terletak lebih ke depan. Tujuannya adalah untuk mencegah kipas ini menyedot udara yang belum melewati salah satu heatsink. Saya juga mencoba membuat dinding kertas lain yang mencegah udara buangan GPU tersedot ke pendingin CPU. Mereka benar-benar mengurangi suhu CPU, tetapi dengan biaya GPU yang lebih panas, jadi pada akhirnya saya menghapusnya.
Modifikasi tidak biasa lainnya yang saya lakukan adalah menghilangkan filter debu di knalpot kedua kipas atas (sebagian besar waktu udara didorong keluar dari casing, dan ketika PC saya mati, laci yang terletak sedikit di atas casing PC melindunginya. dari debu). Saya juga memasang kipas 92mm di depan dua ruang drive 5,25” yang kosong (pengendali kipas terletak tepat di belakangnya). Kipas ini tidak dipegang oleh sekrup apa pun, hanya pas di antara kipas 120mm di bawahnya dan drive optik di atasnya (permukaan keduanya ditutupi dengan pita insulasi untuk meredam getaran).