Как считать обороты компьютерного кулера с помощью Arduino
У трёхпроводного вентилятора есть тахометрический выход: два импульса на оборот. Подключаем его к входу с прерыванием и считаем обороты за секунду.
Содержание
Обороты компьютерного вентилятора считают по его тахометрическому выходу: по спецификации Intel на 4-проводные вентиляторы это выход с открытым коллектором или стоком, который даёт два импульса на оборот. Выход подключают ко входу Arduino с прерыванием и считают импульсы за секунду: обороты в минуту равны числу импульсов, умноженному на 60 и делённому на 2.
Главное при подключении — определить провода по номерам контактов разъёма, а не по цвету: цвета у разных производителей отличаются. И прежде чем подключать тахо-провод к плате, измерьте на нём напряжение.
Ниже — как устроен тахо-выход, подключение, проверка напряжения, скетч, точность счёта и ошибки.
Как это устроено

Вентилятор с трёхпроводным подключением имеет питание, массу и тахометр: по этому проводу компьютер узнаёт, с какой скоростью вращается крыльчатка.
Выход тахометра замыкается на массу, когда крыльчатка проходит определённое положение. Это выход с открытым коллектором или стоком: сам по себе он напряжения не выдаёт, ему нужна подтяжка. Без питания вентилятора ничего работать не будет.
По спецификации Intel на 4-проводные вентиляторы тахометр даёт два импульса на оборот, а подтяжку к 12 В (максимум 12,6 В) ставит материнская плата. Первые три контакта четырёхпроводного разъёма — масса, питание 12 В и тахометр — соответствуют трёхпроводному вентилятору.
Число импульсов на оборот у большинства вентиляторов два, но встречаются и другие: смотрите даташит своего.
Подключение
Определяйте провода по номерам контактов разъёма. Цвета в спецификации Intel — чёрный (масса), жёлтый (12 В), зелёный (тахометр), синий (управление PWM у четырёхпроводных).
У вентиляторов других производителей цвета могут отличаться, например часто встречаются красный, чёрный и жёлтый. Поэтому цвет не гарантия: ориентируйтесь на разъём и маркировку.
| Контакт разъёма | Назначение | Куда |
|---|---|---|
| 1 | Масса (GND) | GND, общий с Arduino |
| 2 | Питание вентилятора | +5 В или +12 В (по паспорту вентилятора) |
| 3 | Тахометр (Sense) | D2 (вход прерывания), в скетче включена внутренняя подтяжка |
Проверьте напряжение на тахо-проводе

Выход с открытым коллектором по спецификации Intel подтягивается на материнской плате, поэтому сам вентилятор напряжения на нём не создаёт. Но у некоторых вентиляторов подтяжка может быть внутри.
Прежде чем подключать тахо-провод к Arduino, проверьте это.
- Подайте питание на вентилятор.Тахо-провод никуда не подключайте.
- Измерьте напряжение.Мультиметром между тахо-проводом и массой.
- Оцените результат.Около нуля или «плавающие» значения означают, что подтяжки нет. Если напряжение больше 5 В, внутри есть подтяжка к 12 В.
- Выберите схему.При подтяжке к 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 |

















