ПроектОпубликовано 8 декабря 2025 · обновлено 9 октября 2026

Как считать обороты компьютерного кулера с помощью Arduino

У трёхпроводного вентилятора есть тахометрический выход: два импульса на оборот. Подключаем его к входу с прерыванием и считаем обороты за секунду.

Уровень
Начинающим
Понадобится
Мультиметр
Время сборки: часСложность: простаяДеталей: 5Питание: 5 В от Arduino или вентилятор со своим питанием
Содержание

Обороты компьютерного вентилятора считают по его тахометрическому выходу: по спецификации Intel на 4-проводные вентиляторы это выход с открытым коллектором или стоком, который даёт два импульса на оборот. Выход подключают ко входу Arduino с прерыванием и считают импульсы за секунду: обороты в минуту равны числу импульсов, умноженному на 60 и делённому на 2.

Главное при подключении — определить провода по номерам контактов разъёма, а не по цвету: цвета у разных производителей отличаются. И прежде чем подключать тахо-провод к плате, измерьте на нём напряжение.

Ниже — как устроен тахо-выход, подключение, проверка напряжения, скетч, точность счёта и ошибки.

Как это устроено

Компьютерный вентилятор с разъёмом рядом с платой Arduino

Вентилятор с трёхпроводным подключением имеет питание, массу и тахометр: по этому проводу компьютер узнаёт, с какой скоростью вращается крыльчатка.

Выход тахометра замыкается на массу, когда крыльчатка проходит определённое положение. Это выход с открытым коллектором или стоком: сам по себе он напряжения не выдаёт, ему нужна подтяжка. Без питания вентилятора ничего работать не будет.

По спецификации Intel на 4-проводные вентиляторы тахометр даёт два импульса на оборот, а подтяжку к 12 В (максимум 12,6 В) ставит материнская плата. Первые три контакта четырёхпроводного разъёма — масса, питание 12 В и тахометр — соответствуют трёхпроводному вентилятору.

Число импульсов на оборот у большинства вентиляторов два, но встречаются и другие: смотрите даташит своего.

Подключение

Определяйте провода по номерам контактов разъёма. Цвета в спецификации Intel — чёрный (масса), жёлтый (12 В), зелёный (тахометр), синий (управление PWM у четырёхпроводных).

У вентиляторов других производителей цвета могут отличаться, например часто встречаются красный, чёрный и жёлтый. Поэтому цвет не гарантия: ориентируйтесь на разъём и маркировку.

Контакт разъёма Назначение Куда
1 Масса (GND) GND, общий с Arduino
2 Питание вентилятора +5 В или +12 В (по паспорту вентилятора)
3 Тахометр (Sense) D2 (вход прерывания), в скетче включена внутренняя подтяжка

Проверьте напряжение на тахо-проводе

Щупы мультиметра в контактах разъёма с проводами

Выход с открытым коллектором по спецификации Intel подтягивается на материнской плате, поэтому сам вентилятор напряжения на нём не создаёт. Но у некоторых вентиляторов подтяжка может быть внутри.

Прежде чем подключать тахо-провод к Arduino, проверьте это.

  1. Подайте питание на вентилятор.Тахо-провод никуда не подключайте.
  2. Измерьте напряжение.Мультиметром между тахо-проводом и массой.
  3. Оцените результат.Около нуля или «плавающие» значения означают, что подтяжки нет. Если напряжение больше 5 В, внутри есть подтяжка к 12 В.
  4. Выберите схему.При подтяжке к 12 В на вход платы ставят делитель, который считает калькулятор делителя напряжения, а не подключают напрямую.

Если подтяжки внутри нет, подключайте к D2 напрямую, как в скетче: вход Arduino подтягивает линию к 5 В.

Скетч

Скетч использует штатные функции Arduino IDE 2, библиотеки не нужны.

const uint8_t PIN_TACH = 2;              // прерывание 0 на Uno
const uint8_t PULSES_PER_REV = 2;        // у этого кулера два импульса на оборот

volatile unsigned long pulses = 0;

void onPulse() {
  pulses++;
}

void setup() {
  Serial.begin(9600);
  pinMode(PIN_TACH, INPUT_PULLUP);
  attachInterrupt(digitalPinToInterrupt(PIN_TACH), onPulse, FALLING);
}

void loop() {
  noInterrupts();
  pulses = 0;
  interrupts();

  delay(1000);                            // считаем импульсы за одну секунду

  noInterrupts();
  unsigned long count = pulses;
  interrupts();

  unsigned long rpm = count * 60UL / PULSES_PER_REV;
  Serial.print(rpm);
  Serial.println(" об/мин");
}

Точность и частота импульсов

Осциллограф с импульсными кривыми на тёмном экране

Частота на входе равна оборотам в секунду, умноженным на 2. Например, 1200 об/мин — это 20 об/с, то есть 40 импульсов в секунду.

Окно счёта в одну секунду даёт разрешение: один импульс соответствует 60 / 2 = 30 об/мин. Чтобы получить точнее, увеличьте окно: при двух секундах шаг 15 об/мин.

Подтяжка входа внутренним резистором по даташиту ATmega328P составляет от 20 до 50 кОм. Для медленных сигналов этого достаточно.

Типовые ошибки

  • Не соединён общий провод.Импульсов нет.
  • Вход без подтяжки.На тахо-проводе нет уровня «1», счёт бессмыслен.
  • Не тот коэффициент импульсов на оборот.Обороты вдвое больше или меньше настоящих.
  • Двухпроводной вентилятор.Тахометра у него нет.
  • Провода определены по цвету.Питание и тахометр можно перепутать; ориентируйтесь на разъём.
  • 12 В на тахо-проводе.Если внутри вентилятора есть подтяжка к 12 В, напрямую к Arduino его подключать нельзя.

Где пригодится сегодня

Контроль вентилятора в самодельном блоке питания, регулятор оборотов с ШИМ, проверка старых кулеров. Тот же подход работает с любым датчиком, выдающим импульсы: от датчика Холла до оптопары.

Если у вентилятора четыре контакта, управляющий вход PWM по спецификации Intel работает на частоте 25 кГц (допустимо 21–28 кГц) и подтягивается внутри вентилятора до 5,25 В максимум.

Что в итоге

Проверенный способ измерить обороты без дополнительных деталей. Не годится, если у вентилятора нет тахометра, — тогда нужен внешний датчик.

Выбор платформы — в статье «ESP32 или Arduino Uno». Ещё проекты на Arduino: часы на DS3231 и резистивная клавиатура.

Частые вопросы

Сколько импульсов на оборот у компьютерного вентилятора?

По спецификации Intel для 4-проводных вентиляторов — два. Для других вентиляторов число может быть иным: смотрите даташит.

Если коэффициент неверный, обороты получатся вдвое больше или меньше настоящих.

Можно ли подключить тахо-провод 12-вольтового вентилятора к Arduino?

Можно, если подтяжки к 12 В внутри вентилятора нет: тогда провод подтягивается входом Arduino к 5 В.

Сначала измерьте напряжение на тахо-проводе при работающем вентиляторе. Если оно выше 5 В, ставьте делитель или оптрон.

Как определить, какой провод тахометр?

По номеру контакта разъёма: по спецификации Intel контакт 3 — Sense. Цвета у разных производителей различаются, поэтому цвет не гарантия.

В спецификации Intel тахометр зелёный, а жёлтый — питание 12 В, тогда как у некоторых вентиляторов жёлтый провод — тахометр. Такая путаница опасна: если сомневаетесь, найдите маркировку вентилятора и его даташит.

У вентилятора два провода, можно ли считать обороты?

Нет, тахометра у такого вентилятора нет. Нужен внешний датчик: оптопара или датчик Холла.

Двухпроводные вентиляторы часто встречаются в старой технике. В российских магазинах радиодеталей продаются готовые датчики Холла.

Почему показания скачут?

Окно счёта в 1 секунду даёт шаг 30 об/мин, а помехи на длинных проводах добавляют ложные импульсы. Увеличьте окно или укоротите провода.

Для регулятора оборотов этого обычно достаточно. Проверьте соединение массы.

Полезно при расчёте

Что понадобится

ОбозначениеНоминалТипКол-во
—Arduino Unoили совместимая плата1
—Компьютерный вентилятор с тремя проводами1
—Провода3
Тегиarduinokuler
Редакция СхемОкАвторМатериалы готовит редакция сайта, формулы и номиналы сверяются с даташитами производителей, расчёты — с калькуляторами сайта.99 материалов

Похожие материалы