Arduino ile 4 Pin PWM Fanı anakart fan soketi üzerinen kontrol etme

Xeverness

Hectopat
Katılım
27 Ocak 2019
Mesajlar
48
Sunucudan çıkma bir fanı kendi masaüstü bilgisayarımda deneme amaçlı kullanmak istiyorum fakat hem soket farklı hem de 36W gibi bir bilgisayar fanı için çılgın bir güç değerine sahip. Bu sebepten ötürü fanı anakart üzerindeki girişe bağlamayı göze almak istemiyorum. Daha önceden de Arduino ile çalıştım eksikte olsa biraz elektronik bilgim var ve bu iş için kesinlikle yeterli değil. Niyetim bir Arduino nano kullanarak bu fanın devrini bilgisayarda ki fan soketi üzerinden kontrol etmek. Diğer bir deyişle anakartın fan soketine 36W yükleme yapmadan kontrol etmek. 4 pin fan PWM üzerinden daha önce kontrol etmeyi denemedim. İnternette örnek videolara baktım fakat bilgisayar üzerinden kontrol ayrı bir konu normal kontrol için kodlarda anlamadığım kısımlar mevcut. Kodlar bir sıcaklık sensörüne bağlı fan hızını otomatik olarak ayarlayan bir sisteme ait. Sıcaklı kodlarını ayırmak çok güç değil. İncelediğim video linki:

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

Sorular:
1-) Videoda yer alan 4 pin fanın sarı renkli kablosu tam olarak ne işe yarıyor anlamadım? Arduino'da ki 2. pin ile interrupt kodu çalışıyor ve bu pin 5V'a bir direnç ile bağlı. Kodun çalışması için bu pin üzerinden bir sinyal alması lazım ama PWM'de hangi kablodan ne sinyal geçiyor bilmiyorum.
2-) While döngüsü içerisine millis fonksiyonu içeren bir kod yazılmış. Yukarısında da START_TIME değişkenine her seferinde eşitlenecek şekilde bir kod yazmış. Burada while döngüsünün mantığı nedir? Burada eşitleme yaptıktan sonra her seferinde 1000'den küçük olacağı aşikar değil midir?

1602170442406.png


3-) RPM hesabı yaparken neden count değişkenini 60'la çarpıp 2'ye böldü?
Bunlardan ayrı olarak kontrol etmek için önerebileceğiniz farklı ve daha kolay yöntemler var ise onları da değerlendirmek isterim.

1602170697936.png


Bendeki fana ait görsel. 5 Pin görünüyor fakat en sağdaki iki uçta aynı ve siyah renk olunca 4 pin olarak değerlendirdim.
 

Dosya Ekleri

  • 1602158141279.png
    1602158141279.png
    9,1 KB · Görüntüleme: 54
( 1 )-> 4 kablolu fanlarda ki
Kırmızı kablo ( + ) artı besleme.
Siyah kablo ( - ) eksi besleme.
Sarı kablo fanın her dönüşünde darbe üretir fan hızını okumamızı sağlar, PWM sinyal çıkışı da
denebilir.
Mavi kablo fanın hızını kontrol etmeye yarayan PWM sinyal girişidir.

( 2 )-> Kodlara bütün halde bakmayı dene!!! Zaten video içerisinde açıklamış. Setup kısmında interrupt
yani "kesme" ayarlamış. Fanın her dönüşünde sarı uçlu kablodan çıkan sinyalin yükselen
anında "counter" fonksiyonunu çalıştırıyor, o da count değişkenini arttırıyor. "while" döngüsü
içerisinde ki "millis()" milisaniye cinsinden zamanı verir. Bunu arduino çalışmaya aşladığı
andan itibaren sayan kronometre gibi düşünebilirsin. Bu döngü eşitliği 1000'e eşit ya da büyük
olana kadar döngü içerisinde hiçbir şey yapmadan durmasını sağlar. Yani 1000 ms (1sn)
beklemiş olur.

( 3 )-> "count" değeri her bir saniyede (1000ms) kontrol edilir. RPM= Rotate Per Minute, dakikadaki
dönüş sayısı demek olduğu için hesaplarken 60 ile çarpılır. ( 1 dakika = 60 saniye )
 
( 1 )-> 4 kablolu fanlarda ki
Kırmızı kablo ( + ) artı besleme.
Siyah kablo ( - ) eksi besleme.
Sarı kablo fanın her dönüşünde darbe üretir fan hızını okumamızı sağlar, PWM sinyal çıkışı da
denebilir.
Mavi kablo fanın hızını kontrol etmeye yarayan PWM sinyal girişidir.

( 2 )-> Kodlara bütün halde bakmayı dene!!! Zaten video içerisinde açıklamış. Setup kısmında interrupt
yani "kesme" ayarlamış. Fanın her dönüşünde sarı uçlu kablodan çıkan sinyalin yükselen
anında "counter" fonksiyonunu çalıştırıyor, o da count değişkenini arttırıyor. "while" döngüsü
içerisinde ki "millis()" milisaniye cinsinden zamanı verir. Bunu arduino çalışmaya aşladığı
andan itibaren sayan kronometre gibi düşünebilirsin. Bu döngü eşitliği 1000'e eşit ya da büyük
olana kadar döngü içerisinde hiçbir şey yapmadan durmasını sağlar. Yani 1000 ms (1sn)
beklemiş olur.

( 3 )-> "count" değeri her bir saniyede (1000ms) kontrol edilir. RPM= Rotate Per Minute, dakikadaki
dönüş sayısı demek olduğu için hesaplarken 60 ile çarpılır. ( 1 dakika = 60 saniye )
Teşekkürler 😊
 

Yeni konular

Geri
Yukarı