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

    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<br /> 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!

Login with Facebook

Tagged

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