Страница 1 из 2
Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 14:51:11
Мокренькая кисонька
Здравствуйте коты и кошки!
Размышляю над 8-и канальным тахометром для подкроватного сервера. Конечно есть всякие специализированные м/с типа MAX31790, EMC230x, но добыть их сейчас нефуражные и по приемлемой цене не представляется возможным. Зато в "тумбочке" полно всяких разных pic'ов, avr, arduino.
Вот мне и подумалось такое:
Берем 74HC4051, 8-и канальный мультиплексор.
На МК задействуем специальный счетный вход таймера, обычно с помощью которого делают частотомеры.
Или аппаратное прерывание и в нем считаем, но первый вариант мне кажется более точным и правильным.
Соответственно вопрос алгоритмического характера, как все это реализовать, чтобы за приемлемое время (1-2 сек) измерять обороты у всех 8-и вентиляторов?
Пока что я сделал макет на Ардуино и с помощью Гайверовской библиотеки
тахометр. Работает она на аппаратном прерывании.
Алгоритм такой:
Переключаю канал - замеряю.
Отключаю вход (ножка E) на 4051 на некоторое время (делаю паузу).
И так по циклу.
Время замера 2 сек на канал, при 1 секунде измерения. Работает, но получается 2 секунды на один вентилятор...
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 15:04:12
jcxz
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729008#p4729008"]Соответственно вопрос алгоритмического характера, как все это реализовать, чтобы за приемлемое время (1-2 сек) измерять обороты у всех 8-и вентиляторов?[/uquote]Выкинуть внешние мультиплексоры. МК с 8+ доступными ногами - вагон. Взять такой. Для того, чтобы определиться с алгоритмом, нужно сперва определить макс. и мин. частоты измеряемых импульсов. Из них уже можно решать - достаточно только в прерываниях считать или нужно использовать таймеры. В любом случае: чтобы измерить частоту - достаточно поймать хотя-бы пару импульсов. Нет никакой надобности ждать несколько секунд. Достаточно пары импульсов.
Также нет никакой необходимости мерять последовательно - можно мерять всё 8 параллельно. Дешёвых ARM-ов - также вагон.
И выкинуть абдурину и всякие "либы". Курить RM.
После этого задача станет легко решаемой.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 15:20:49
Мокренькая кисонька
[uquote="jcxz",url="/forum/viewtopic.php?p=4729011#p4729011"]Курить RM.[/uquote]
LM курил в молодости, RM ни разу.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 15:26:51
jcxz
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729016#p4729016"]LM курил в молодости, RM ни разу.[/uquote]RM == Reference manual.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 16:49:26
Krismi70
Мокренькая кисонька писал(а):Зато в "тумбочке" полно всяких разных
jcxz писал(а):Выкинуть внешние мультиплексоры
т.е. вполне по мк на вентилятор + мк для схемы или....)))
-----
раз есть входные импульсы, то и NE555 cгодится....
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 17:12:19
jcxz
[uquote="Krismi70",url="/forum/viewtopic.php?p=4729029#p4729029"]т.е. вполне по мк на вентилятор + мк для схемы или....)))[/uquote]Вангую, что один 20-ногий PY32F002AF15P за ~10 центов с алишки - успешно справится с такой непосильной задачей. Один на все 8 пропеллеров. И ещё и отобразить сумеет на каком-нить индикаторе.
Ну если конечно ТС не мегагерцы измерять собрался.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 19:43:08
AlexS4
там частоты 1-250Hz с большим запасом.
это на самом дохлом mcu делается элементарнейше
заводите 8 холлов на 8 bit 1 порта
раз в 4mS (по таймеру) зачитываете байт порта
и фиксируете биты перешедшие из 0 в 1 (сложив битовой операцией с сохраненным на прошлом цикле значением)
Cycle=Pcur &~Pprev; или NOT, AND
получившийся байт признаков начал периодов Cycle
циклом из 8 проходов
разбираете на биты ( Cycle <<1; или ROL ) и прибавляете соответсвующий бит к своему байту-счетчику (массив из 8 1байт-переменных) (это эквивалент условного инкремента счетчика периодов в случае зафиксированного начала периода по соответствующему входу)
раз в 250 таких циклов (здесь - единственная условная операция в обработчике таймера 4mS) зачитываете эти счетчики в другой 8байт массив и сбрасываете исходные в 0.
завершаете прерывание.
так получаете во 2м массиве текущее значение частоты на холлах в Hz, обновляющееся таймерным прерыванием каждую 1s.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 21:07:38
Аlex
AlexS4 писал(а):раз в 4mS (по таймеру) зачитываете байт порта
Это слишком медленно. Нужно раз в 10-20 быстрее зачитывать. А то и во все 100. Иначе на частотах, близких к 250 будете получать точность "+- трамвайная остановка".
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 21:32:57
AlexS4
да, для нашего примера при 1mS и снятии с 200цикла для частоты 250Hz будет точность 12.5% - это мож даже и приемлемо
...и можно оверсемплированием хорошенько уточнять
Спойлер
то что эффективно оверсемплить - это не шутка, там будет оочень регулярная ошибка в соседних семплах, а то чо это имеет смысл - это конечно шутка, проще разрешение счетчиков и время накопления данных увеличить
и частоты надо уточнить, 250Hz это 7500 rpm для 4х полюсного моторчика, если куллеры домашние-тихие-большие то скорее это двойной+ перезаклад ....а если 1U 25000rpm

то наоборот
но в любом случае хватит разрешения в 1 байт для практического применения c куллерами. тоесть прийдется только выбрать подходящий период единственного таймера.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 21:37:42
jcxz
[uquote="AlexS4",url="/forum/viewtopic.php?p=4729073#p4729073"]раз в 250 таких циклов (здесь - единственная условная операция в обработчике таймера 4mS) зачитываете эти счетчики в другой 8байт массив и сбрасываете исходные в 0.
завершаете прерывание.[/uquote]Это не будет работать даже для меандров 250Гц. Не говоря уже о том, что у ТС сигналы могут быть совсем не меандрами.
До сих пор от ТС нет ничего ни о требуемой точности ни о диапазоне частот ни о скважности импульсов. Без этих данных - пустой разговор.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 22:03:16
AlexS4
jcxz писал(а):Это не будет работать даже для меандров 250Гц. Не говоря уже о том, что у ТС сигналы могут быть совсем не меандрами.
да,
Аlex, уже указал на эту ошибку
а с периодом семплирования 1mS это будет работать до скважности 4 @250Hz.
при том что у какойнить tiny2313 @20Mhz за 1mS можно выполнить 10..20k инструкций а для описанного алгоритма нужно на 2-3 порядка меньше. тоесть не проблема сделать таймер 100uS или даж 20uS

Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 22:51:28
abc
Камрады, сорри, конечно, но вы перед тем, как теории развивать, хоть один компьютерный вентилятор в руках держали ?
Там чистейший меандр, 50/50.
Обороты (в режиме "мы тебе не будем срать в уши, честно-честно") - до 1000. Минимальные, при которых они еще умеют вращаться - 400. Т.е. частота будет от 6,6(6) до 16, 6(6) Гц.
ЗЫ
Я бы сделал так :
Мерял бы не частоту, а период у всех восьми штук _последовательно_ во времени, но столько раз, чтобы это укладывалось в интервал 1-2 сек (повторюсь, не для одного, а для всех восьми штук).
Потом результаты усреднял и выводил на индикацию.
Всё.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 23:23:27
Мокренькая кисонька
[uquote="jcxz",url="/forum/viewtopic.php?p=4729095#p4729095"]До сих пор от ТС нет ничего ни о требуемой точности ни о диапазоне частот ни о скважности импульсов. Без этих данных - пустой разговор.[/uquote]
Нужный диапазон от 0 до 3000 об, хотя 3000 это много, работают они в основном на 1000-1200
2 импульса на оборот у типичного компового вентилятора, скважность 2, т.е. обычный меандр.
Частота получается до 100Гц на канал.
Точность не важна, это показометр для мониторинга, но желательно, чтобы значения не дрыгались особо.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 00:04:22
Аlex
Мокренькая кисонька писал(а):Частота получается до 100Гц на канал.
Точность не важна
Тогда вообще не проблема.
8 входов у МК. Таймер на 100 us, это будут тики. Ловим фронты на входах (был один уровень, стал другим) в обработчике этого таймера. И считаем "тики", для каждого входа, от фронта до фронта - это будут периоды. Как потом перевести из периода в частоту, объяснять, думаю, не нужно.
Любой МК потянет такой алгоритм по скорости.
Чем ближе будет частота к 100 Гц, тем будет больше хромать точность измерения. Но, думаю, Вам этого будет достаточно.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 09:49:17
Starichok51
при 100 Гц период 10 мс. при таймере 100 мкс это 100 единиц счета. то есть "точность" 1/100 - 1%. должно хватить "за глаза".
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 10:31:48
AlexS4
abc писал(а):честно-честно") - до 1000. Минимальные, при которых они еще умеют вращаться - 400. Т.е. частота будет от 6,6(6) до 16, 6(6) Гц.
полноты ради надо добавить что существуют таки вентиляторы, которые раскручиваются до 10..20krpm. обычно это 40x40x67+mm , такие применяют в серверах, и всяких векторных процессорах: асиках c плоской 1U компановкой, видеокартах аля A100 и прочем подобном. звук от них как от самолета...

но такие бывают и применяются.
и еще в зависимости от конструкции мотора (количества полюсов ротора) выход холлсенсора может давать x1 ,x2, x4 частоту.
зы а я предложил самый простой алгоритм, с минимумом ветвлений (или вообще без них при наличии 2х таймеров), не требующий деления, его элементарно организовать на самом дохлом at89с2051 какомнить, при этом он обеспечивает параллельное вычисление по всем каналам.

Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 11:00:20
Starichok51
AlexS4, а что, у at89с2051 8 ядер, чтобы делать параллельное вычисление по всем каналам?
и не шути так больше про параллельность в простейшем МК.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 11:51:54
abc
[uquote="AlexS4",url="/forum/viewtopic.php?p=4729156#p4729156"]полноты ради надо добавить что существуют таки вентиляторы, которые раскручиваются до 10..20krpm.[/uquote]да, согласен, но прямо в первом сообщении ТС было про "подкроватный сервер".
И поставить туда ветродуи с 10000rpm могут не только лишь все.
Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 12:05:56
AlexS4
[uquote="Starichok51",url="/forum/viewtopic.php?p=4729165#p4729165"]
AlexS4, а что, у at89с2051 8 ядер, чтобы делать параллельное вычисление по всем каналам?
и не шути так больше про параллельность в простейшем МК.[/uquote]
Starichok51, осмысленная концепция параллельности процессов появилась лет за 30 до появления многоядерных процессоров и лет за 20 до появления многопроцессорных систем.

можем это обсудить в подходящей теме.
(из крупных коммерческих проектов с софтовым распараллеливанием процессов можно почитать про unix (~1970) или ibm os/2 (1987) )
в данном случае я говорил о параллельности процессов накопления счетчиков периодов наблюдаемых входов.
это вполне себе параллельность в реальном времени, реализованная чисто софтово.
https://radiokot.ru/forum/viewtopic.php ... 5#p4729085
просто здесь алгоритм распараллеливания вырожден до 1 цикла обхода с фиксированным набором инструкций.
а часть распараллеливания реализовано на свойствах архитектуры, например 8 бит (входов) обрабатываются совершенно одновременно битовыми операциями над целым байтом

Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 13:08:28
veso74
Зафиксируйте хотя бы тип используемого микроконтроллера.
В противном случае каждый будет предлагать варианты на МК из своей любимой темы

.
Как указано выше, предлагаю напр. недорогой модуль STM32F103C8T6. Есть много входов, будут ресурсах и для дисплея, и для коммуникации напр. по UART к другой системе/PC. А можете собирать измерения и по прерываниям, и по Timer Intut Capture direct mode. Ресурсов много. Код быстро пишется в STM32CubeIDE /хотя его не нравится, но для таких проектов идеален/. Несколько десятков кликов мышкой в конфигураторе и почти готово. (Даже потчи уверен, что чат-бот может написать код для этого, по крайней мере, для основных функций).