Задать вопрос
@teleghost

Как лучше сделать многоканальный драйвер PWM (ШИМ) вентиляторов на базе STM32?

Приветствую вас, монстры-электронщики.

Детальное описание и полный перечень вопросов см. ниже, но основной вопрос задаю сразу: можно ли использовать один вход микроконтроллера STM32 и обычный 8-канальный мультиплексор типа CD4051B для тахометра (счётчика цифровых импульсов, идущих с частотой от 5Гц до 1000Гц)? Я желаю просто переключаться каждые 5-10 секунд между 8-ю сигналами вместо того, чтобы громоздить 8-канальный захват и подсчёт в самом микроконтроллере. Многоканальный ШИМ съедает довольно много периферии. Полагаю, лучше отделаться тремя-четырьмя ножками для управления мультиплексором (ну и входным измерительным таймером МК, конечно).

Постановка задачи
Построить 8-зонный контроллер охлаждения для мини-СХД, используя вентиляторы с ШИМ и обратной связью, например, Arctic Cooling F12 PWM CO (500-1500 об/мин). Если кто-то из уважаемых монстров не совсем в теме: эти вентиляторы управляются ШИМ (контакт №4), обратная связь (по фактическим оборотам) приходит импульсами (контакт №3, тахометр).

Более подробное описание
Используются термодатчики типа BMP180 (это I2C).
Добавляется SD-карточка для хранения потоковой телеметрии (это SPI) и часы реального времени для простановки меток (это ещё раз I2C). Ещё немного, и хоть в космос запускай (шутка).
Архитектура микроконтроллера - STM32F103 (что было под рукой).

Сделать 8-канальный ШИМ на STM32, как я понимаю, вообще не проблема (два таймера по четыре канала, несущая частота одинаковая). Но вот добавлять туда же 8-канальный тахометр как-то уже слишком жирно. Тем более, самое интересное при работе с STM32 начинается, когда изучаешь ERRATA SHEET, из которого выясняется, например, конфликт при работе I2C2 вместе с SPI2 и USART3 …
Попробовал найти I2C PWM-драйвер, но варианты для роботов типа PCA9685 имеют несущую частоту ШИМ порядка 1.6кГц, в то время как для вентиляторов рекомендовали уходить в область 20..100кГц во избежание ненужных акустических эффектов…

Вопросы
1) Можно ли использовать обычный 8-канальный мультиплексор типа CD4051B для подсчёта импульсов тахометра 5..1000Гц переключаясь по очереди, например, каждые 5 секунд? Может, взять другой мультиплексор?
2) Какая всё-таки частота ШИМ рекомендуется для гражданских вентиляторов? Кто-то говорит 20кГц, кто-то 100кГц, где истина?
3) Нужно ли подтягивать вверх выход тахометра в схеме с мультиплексором CD4051B? Если да, это ведь надо делать до мультиплексора, верно?
UPD
4) Я правильно понимаю, что у 4-проводных вентиляторов (в отличие от 3-проводных) возвратный сигнал "тахометра" никак не модулируется самим ШИМ-сигналом? Не хочется гоняться за своим собственным модуляционным хвостом, подобно собаке.

всем спасибо заранее
  • Вопрос задан
  • 2572 просмотра
Подписаться 3 Оценить Комментировать
Решения вопроса 1
Foolleren
@Foolleren
Компас есть, копать не люблю...
2) 25-35 кгц, можно было бы посмотреть с матплаты осциллографом, но мне лень, маленькая частотата шим - будет писк, большая - чуть больше потерь в транзисторе.
4) совершенно верно, можно избежать и в 3 пиновых с помощью доработки напильником.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@golf2109
таймеры в STM32 аппаратно приспособлены для решения задач подсчета входных импульсов и использовать для этих целей тахометр в режиме мультиплексирования входов - неоправданное усложнение задачи
Ответ написан
@itxs
Инженер-электронщик
1. Обойдемся без мультиплексоров, видел STM32 с 14 таймерами например.
2. Таймеры могут считать длительность сигнала на ноге. У некоторых таймеров по 4 канала, у некоторых по 2.
3. При одинаковом временном масштабе сигналов можно использовать по одному таймеру для подсчета сразу 4 (или 2) независимых сигналов.
4. На STM32F103RGT можно сделать хоть 24 независимых аппаратных ШИМа, не требующих прерываний, только что проверил в справочнике STM32CubeMX. С прерываниями - и того больше. Плюс ногодрыгом - и еще больше.
5. Возвратный сигнал тахометра не модулируется входным ШИМ сигналом, иначе зачем он нужен вообще.
6. Частота для ШИМа вентиляторов смотрится в документации на них, либо подбирается экспериментально, что не сложно и не занимает много времени.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы