4-контактный ШИМ-контроль вентилятора, 25 кГц, с Arduino Uno
Компоненты и расходные материалы
| Осевой вентилятор, 12 В постоянного тока | | × | 1 | |
| | × | 1 | |
| | × | 1 | |
| | × | 1 | |
Приложения и онлайн-сервисы
Об этом проекте
Мне было интересно узнать об этом проекте и о том, как управлять своими 4-контактными вентиляторами PWM. У меня было 5 лежащих, и я подумал, что мои тоже могут попробовать. Значения частоты можно регулировать от 125 Гц до 8 МГц, а также можно изменять рабочий цикл. В схеме используется режим 10 PWM с коррекцией фазы на таймере 1 OCR1A (вывод 9) и ICR1 (вывод 10). Чтобы понять это, потребовалась некоторая отладка, и у меня есть портативный осциллограф. Это значительно упрощает просмотр частот и рабочих циклов, при этом не требуется никаких предположений. Вот ссылка:Осциллограф.
Я настоятельно рекомендую вам поискать техническое описание вашего вентилятора, так как контрольный штифт в моем случае был желтым (который обычно называется тахометрическим проводом). Не забудьте также найти приемлемый частотный диапазон (ИЛИ " ЦЕНТРАЛЬНАЯ ЧАСТОТА ") для выбранного вентилятора. Возможно, вам придется изменить кодовую частоту, чтобы она соответствовала вашим потребностям. Наконец, вам понадобится хороший блок питания (мой - это преобразованный блок питания ATX из старого ПК).
ПРИМЕЧАНИЕ. Я попытался использовать другой таймер и управлять двумя вентиляторами независимо. Не работает. Причина этого в том, что разрешение второго таймера ниже (16 бит против 8 бит). Это означает, что шаги в регулировке частоты и коэффициента заполнения зашумлены, а формы сигналов все больше и больше деформируются. Это также не так просто при вводе значений.
Код
Код Arduino
Загрузите этот файл и запустите его в среде Arduino IDE. const byte OC1A_PIN =9; const byte OC1B_PIN =10; const word PWM_FREQ_HZ =25000; // Отрегулируйте это значение, чтобы настроить частоту (Частота в Гц!) (Установить в настоящее время на 25 кГц) const word TCNT1_TOP =16000000 / (2 * PWM_FREQ_HZ); void setup () {pinMode (OC1A_PIN, OUTPUT); // Очистить регистры управления и счетчика Timer1 TCCR1A =0; TCCR1B =0; TCNT1 =0; // Установка конфигурации Таймера1 // COM1A (1:0) =0b10 (Выход A очищает возрастание / устанавливает падение) // COM1B (1:0) =0b00 (Нормальный режим работы выхода B) // WGM (13:10) =0b1010 (Фаза правильная ШИМ) // ICNC1 =0b0 (подавитель шума захвата входа отключен) // ICES1 =0b0 (выбор фронта захвата входа отключен) // CS (12:10) =0b001 (выбор входного сигнала =clock / 1) TCCR1A | =(1 <
Схема