Всем привет, нужно сделать управление вентилятором Noctua NF-A15 PWM (NF-A15 PWM) - 140mm с arduino UNO читал что из-за того что 16 МГц а вентиляторов 25-86 МГЦ на минимальные обороты выставить не получится, есть инструкция для чайников?
Датаshit который нашёл:
Может вы где-то не внимательно читали? Может 86Гц?А какие вам минимальные обороты надо?
а в аппаратных что тема делает?
Так ТС дохтур, сейчас всё на аппаратах лечат.)))
Ничего сложного. Частота 25кГц
• Target frequency: 25kHz, acceptable range 21kHz to 28kHz
• Maximum voltage for logic low: VIL=0,8V
• Absolute maximum current sourced: Imax=5mA (short circuit current)
• Absolute maximum voltage level: VMax=5,25V (open circuit voltage)
• Allowed duty-cycle range 0% to 100%
P.S. То есть , обычный analogWrite() с дефолтными настройками не подойдёт.
Почитайте на тему “ШИМ Ардуино” всё разжёвано.
Сигнальный пин ардуинки подключайте через резистор 1.5 -2кОм
Да, не совсем так. Всё же сложновато для начинающего будет.25КГц не так просто на ардуино НАНО/УНО сделать
Варианты:
- Взять ATtiny и нужный кварц( 12МГц подходит для 23.529КГц)
- Использовать библиотеку, хотя-бы того-же Гайвера
А чего там не простого? Вот, пожалуйста – ровно 25 кГц, на пине D9 (Uno/Nano и т.п. с 16МГц), управление от 0 до 320.
#include <bitmask.h>
//
// ШИМ на пине 9
// 25kHz
// Управление от 0 до 320
//
void initTimer1(void) {
DDRB |= bitMask(PB1);
TCCR1A = bitMask(COM1A1);
OCR1A = 0;
ICR1 = 320;
TCCR1B = bitMask(WGM13, CS10);
}
//
// Управление ШИМ на пине 9 от 0 до 320
// Если хочется 0-100, то это закомментировать и открыть функцию ниже
//
inline void setPWMDuty(const uint16_t duty) {
OCR1A = duty;
}
//
// Управление ШИМ на пине 9 от 0 до 100
// (вообще-то от 0 до 320)
//
// inline void setPWMDuty(const uint16_t duty) {
// OCR1A = (duty * 320u + 50u) / 100u;
// }
void setup(void) {
initTimer1();
setPWMDuty(80);
}
void loop(void) {}
Используется “библиотека” bitmask,
вот она
#ifndef BITMASK_H
#define BITMASK_H
inline constexpr uint8_t bitMask(const uint8_t m1) { return 1 << m1; }
inline constexpr uint8_t bitMask(const uint8_t m1, const uint8_t m2) { return bitMask(m1) | bitMask(m2); }
inline constexpr uint8_t bitMask(const uint8_t m1, const uint8_t m2, const uint8_t m3) { return bitMask(m2, m3) | bitMask(m1); }
inline constexpr uint8_t bitMask(const uint8_t m1, const uint8_t m2, const uint8_t m3, const uint8_t m4) { return bitMask(m2, m3, m4) | bitMask(m1); }
inline constexpr uint8_t bitMask(const uint8_t m1, const uint8_t m2, const uint8_t m3, const uint8_t m4, const uint8_t m5) { return bitMask(m2, m3, m4, m5) | bitMask(m1); }
inline constexpr uint8_t bitMask(const uint8_t m1, const uint8_t m2, const uint8_t m3, const uint8_t m4, const uint8_t m5, const uint8_t m6) { return bitMask(m2, m3, m4, m5, m6) | bitMask(m1); }
inline constexpr uint8_t bitMask(const uint8_t m1, const uint8_t m2, const uint8_t m3, const uint8_t m4, const uint8_t m5, const uint8_t m6, const uint8_t m7) { return bitMask(m2, m3, m4, m5, m6, m7) | bitMask(m1); }
inline constexpr uint8_t bitMask(const uint8_t m1, const uint8_t m2, const uint8_t m3, const uint8_t m4, const uint8_t m5, const uint8_t m6, const uint8_t m7, const uint8_t m8) { return bitMask(m2, m3, m4, m5, m6, m7, m8) | bitMask(m1); }
#endif // BITMASK_H
@НАШ_СЛОН , пользуйтесь на здоровье.
я потом подумал, что может у него уже есть ардуина и надо на ней, хотя на таймере (555) и проще и точней (чистый ламповый звук аднака)
Не думаю, что точнее. RC-цепочка против кварца … ну, не думаю.
С некоторых пор, я начал очень аккуратно пользрваться данным выражением, и исключительно только очень близким родственникам могу это сказать. Слова материальны (вы как бы отдаёте своё здоровье). Пожалуйста - обычно достаточно.
ну почему, КСО группы Г и многооборотный резистор из константана, ну как там обычно в приборах делали, хотя разрешение в 320 ему будет за глаза, но, там жеж программировать не надо, хотя всё выложено на блюдечке, а вот если ему надо что-то автоматизировать и этот ШИМ будет задействован, тогда вступает работу его величество микроконтроллер, хотя на жёсткой логике тоже можно сделать (делали же до микроконтроллеров), но проще - программно
Эта фраза имеет и другую трактовку (“на” в смысле “для улучшения”, т.е. “на здоровье” == “чтоб быть здоровым”). Я трактую её именно так.
Ну, вот, началось
пусть ставит какие есть, всё одно точности там за глаза
PS может для этого вентилятора линейное приращение длительности совсем не катит, кто ж знает, кто ж знает
Спасибо, попробую отпишу
Кстати, в книге Шелестова я видел вот такую схему с кварцем. В натуре я её не собирал, но в протеусе работать отказалась