Arduino ile 3 veya 4 bacaklı fan kontrolü
  • Merhabalar,

    Elimde hem 3 bacaklı hemde 4 bacaklı sunucu fanları var. 3 Bacaklıların genelde besleme bacakları dışında kalan bacağının (sarı) RPM sensöründen geldiğini öğrendim. Eğer 4 bacaklı ise biri RPM diğeri ise PWM hız kontrolü için yazıyor. Sabahtan beri pek çok şekilde google araması yaptım ama aradığımı bir türlü bulamadım. Ben fanın hızını Arduino üzerinden kontrol etmek istiyorum, bunun için arada bir MOSFET transistör (IRF510 gibi) vb bir şeyin olması ve voltajı düşürüp yükseltmem mi gerekiyor yoksa fan üzerinden doğru bacağı bulup bunu doğrudan arduinoya bağlayıp PWM - pulse ile mi hızını kontrol edeceğim ? Yoksa her ikisi birlikte mi olacak? Doğru yol konusunda yardımınızı rica ediyorum, eğer elinde varsa örnek bir kod da paylaşabilirseniz sevinirim.

  • Kullandığım kod bu şekilde. Terminalde Sıcaklığa bağlı olarak fan hızı artıyor gözüküyor ama sadece görsel olabilir, ne yaptığımı bilmediğim için çok mudahele edemiyorum.. #include <DS3231.h> int fan = 11; // the pin where fan is int led = 8; // led pin int temp; int tempMin = 30; // the temperature to start the fan int tempMax = 70; // the maximum temperature when fan is at 100% int fanSpeed; int fanSerial; DS3231 rtc(SDA, SCL); void setup() { Serial.begin(9600); pinMode(fan, OUTPUT); pinMode(led, OUTPUT); rtc.begin(); } void loop() { temp = readTemp(); // get the temperature if(temp < tempMin) { // if temp is lower than minimum temp fanSpeed = 0; // fan is not spinning digitalWrite(fan, LOW); } if((temp >= tempMin) && (temp <= tempMax)) { // if temperature is higher than minimum temp fanSpeed = map(temp, tempMin, tempMax, 32, 255); // the actual speed of fan fanSerial = map(temp, tempMin, tempMax, 0, 100); // speed of fan to display on Serial analogWrite(fan, fanSpeed); // spin the fan at the fanSpeed speed } if(temp > tempMax) { // if temp is higher than tempMax digitalWrite(led, HIGH); // turn on led } else { // else turn of led digitalWrite(led, LOW); } Serial.print("TEMP: "); Serial.print(temp); // display the temperature Serial.print("C "); Serial.print("FANS: "); Serial.print(fanSerial); // display the fan speed Serial.println("%"); delay(200); } int readTemp() { // get the temperature and convert it to celsius temp = rtc.getTemp(); return temp ; }
  • biraz daha araştırma yaptım, BD139 u şu şemadaki gibi bağladım
    http://www.roroid.ro/wp-content/uploads/2014/01/brickDC.jpg

    şimdi hızını kontrol edebiliyorum ama voltajı kısarak yaptığım için yavaşladığında ince elektrionik bir ses geliyor fandan. bu doğru yol değil sanırım

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.