Четырёх-проводные вентиляторы для радиаторов охлаждения (CPU FAN) управляются ШИМ сигналом с материнской платы компьютера. Мы будем управлять этим вентилятором с помощью Arduino.

У четырёх-проводных вентиляторов два провода - это питание 12 вольт, 1 провод вывод сигнала с датчика скорости вращения и 1 провод ШИМ управление скоростью вращения. ШИМ - это широтно-импульсный модулированный сигнал, импульсный сигнал у которого частота импульсов не меняется, а меняется только ширина импульсов (скважность).

Рис. 1. Вентилятор для радиатора охлаждения процессора.

На разъёме вентилятора, изображённого на рис. 1 первая ножка слева, та где припаян чёрный провод. Цоколёвку разъёма вентилятора можно видеть на следующем рисунке.

Рис. 2. Схема подключения CPU-fan к Arduino.

int pwmPin = 3;

void setup() {
}

void loop() {
  for (int speedValue = 0 ; speedValue <= 255; speedValue += 5) {
    analogWrite(pwmPin, speedValue);
    delay(100);
  }
  delay(2000);
  for (int speedValue = 255 ; speedValue >= 0; speedValue -= 5) {
    analogWrite(pwmPin, speedValue);
    delay(100);
  }
  delay(2000);
}

Скетч 1. Программа для Arduino NANO или UNO плавно изменяющая скорость вращения CPU вентилятора. ШИМ 490 Гц.

Рис. 3. Осциллограмма ШИМ сигнала, управляющего скоростью вращения вентилятора.

Обратите внимание,  на рис. 3, частота ШИМ сигнала, генерируемого функцией analogWrite(), равна 490 Гц. Если у Вас есть желание получить ШИМ сигнал с частотой 25 кГц, используйте следующий скетч.

int pwmPin = 3;

void setup() {
  // ШИМ УПРАВЛЕНИЕ НА ЧАСТОТЕ 25 кГц
  TCCR2A = 0;
  TCCR2B = 0;
  TIMSK2 = 0;
  TIFR2 = 0;
  TCCR2A |= (1 << COM2B1) | (1 << WGM21) | (1 << WGM20);
  TCCR2B |= (1 << WGM22) | (1 << CS21);
  OCR2A = 79;
  OCR2B = 0;
}

void loop() {
  for (int speedValue = 0 ; speedValue <= 80; speedValue += 2) {
    analogWrite(pwmPin, speedValue);
    delay(100);
  }
  delay(2000);
  for (int speedValue = 80 ; speedValue >= 0; speedValue -= 2) {
    analogWrite(pwmPin, speedValue);
    delay(100);
  }
  delay(2000);
}

Скетч 2. Программа для Arduino NANO или UNO плавно изменяющая скорость вращения CPU вентилятора. ШИМ 25 кГц.

Рис. 4. Осциллограмма ШИМ сигнала с частотой 25 кГц, управляющего скоростью вращения вентилятора.