Например TDA7294

Форум РадиоКот :: Просмотр темы - Многоканальный тахометр для вентиляторов (нужен совет)
Форум РадиоКот
https://radiokot.ru/forum/

Многоканальный тахометр для вентиляторов (нужен совет)
https://radiokot.ru/forum/viewtopic.php?f=61&t=198468
Страница 1 из 2

Автор:  Мокренькая кисонька [ Чт июл 03, 2025 14:51:11 ]
Заголовок сообщения:  Многоканальный тахометр для вентиляторов (нужен совет)

Здравствуйте коты и кошки!

Размышляю над 8-и канальным тахометром для подкроватного сервера. Конечно есть всякие специализированные м/с типа MAX31790, EMC230x, но добыть их сейчас нефуражные и по приемлемой цене не представляется возможным. Зато в "тумбочке" полно всяких разных pic'ов, avr, arduino.

Вот мне и подумалось такое:
Берем 74HC4051, 8-и канальный мультиплексор.
На МК задействуем специальный счетный вход таймера, обычно с помощью которого делают частотомеры.
Или аппаратное прерывание и в нем считаем, но первый вариант мне кажется более точным и правильным.

Соответственно вопрос алгоритмического характера, как все это реализовать, чтобы за приемлемое время (1-2 сек) измерять обороты у всех 8-и вентиляторов?

Пока что я сделал макет на Ардуино и с помощью Гайверовской библиотеки тахометр. Работает она на аппаратном прерывании.
Алгоритм такой:
Переключаю канал - замеряю.
Отключаю вход (ножка E) на 4051 на некоторое время (делаю паузу).
И так по циклу.

Время замера 2 сек на канал, при 1 секунде измерения. Работает, но получается 2 секунды на один вентилятор...

Автор:  jcxz [ Чт июл 03, 2025 15:04:12 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

Соответственно вопрос алгоритмического характера, как все это реализовать, чтобы за приемлемое время (1-2 сек) измерять обороты у всех 8-и вентиляторов?
Выкинуть внешние мультиплексоры. МК с 8+ доступными ногами - вагон. Взять такой. Для того, чтобы определиться с алгоритмом, нужно сперва определить макс. и мин. частоты измеряемых импульсов. Из них уже можно решать - достаточно только в прерываниях считать или нужно использовать таймеры. В любом случае: чтобы измерить частоту - достаточно поймать хотя-бы пару импульсов. Нет никакой надобности ждать несколько секунд. Достаточно пары импульсов.
Также нет никакой необходимости мерять последовательно - можно мерять всё 8 параллельно. Дешёвых ARM-ов - также вагон.
И выкинуть абдурину и всякие "либы". Курить RM.

После этого задача станет легко решаемой.

Автор:  Мокренькая кисонька [ Чт июл 03, 2025 15:20:49 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

Курить RM.

LM курил в молодости, RM ни разу.

Автор:  jcxz [ Чт июл 03, 2025 15:26:51 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

LM курил в молодости, RM ни разу.
RM == Reference manual.

Автор:  Krismi70 [ Чт июл 03, 2025 16:49:26 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

Мокренькая кисонька писал(а):
Зато в "тумбочке" полно всяких разных

jcxz писал(а):
Выкинуть внешние мультиплексоры

т.е. вполне по мк на вентилятор + мк для схемы или....)))
-----
раз есть входные импульсы, то и NE555 cгодится....

Автор:  jcxz [ Чт июл 03, 2025 17:12:19 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

т.е. вполне по мк на вентилятор + мк для схемы или....)))
Вангую, что один 20-ногий PY32F002AF15P за ~10 центов с алишки - успешно справится с такой непосильной задачей. Один на все 8 пропеллеров. И ещё и отобразить сумеет на каком-нить индикаторе.
Ну если конечно ТС не мегагерцы измерять собрался.

Автор:  AlexS4 [ Чт июл 03, 2025 19:43:08 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

там частоты 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.

Автор:  Аlex [ Чт июл 03, 2025 21:07:38 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

AlexS4 писал(а):
раз в 4mS (по таймеру) зачитываете байт порта
Это слишком медленно. Нужно раз в 10-20 быстрее зачитывать. А то и во все 100. Иначе на частотах, близких к 250 будете получать точность "+- трамвайная остановка".

Автор:  AlexS4 [ Чт июл 03, 2025 21:32:57 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

да, для нашего примера при 1mS и снятии с 200цикла для частоты 250Hz будет точность 12.5% - это мож даже и приемлемо :dont_know:
...и можно оверсемплированием хорошенько уточнять :))
Спойлерто что эффективно оверсемплить - это не шутка, там будет оочень регулярная ошибка в соседних семплах, а то чо это имеет смысл - это конечно шутка, проще разрешение счетчиков и время накопления данных увеличить

и частоты надо уточнить, 250Hz это 7500 rpm для 4х полюсного моторчика, если куллеры домашние-тихие-большие то скорее это двойной+ перезаклад ....а если 1U 25000rpm 8) то наоборот :dont_know:

но в любом случае хватит разрешения в 1 байт для практического применения c куллерами. тоесть прийдется только выбрать подходящий период единственного таймера.

Автор:  jcxz [ Чт июл 03, 2025 21:37:42 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

раз в 250 таких циклов (здесь - единственная условная операция в обработчике таймера 4mS) зачитываете эти счетчики в другой 8байт массив и сбрасываете исходные в 0.
завершаете прерывание.
Это не будет работать даже для меандров 250Гц. Не говоря уже о том, что у ТС сигналы могут быть совсем не меандрами.

До сих пор от ТС нет ничего ни о требуемой точности ни о диапазоне частот ни о скважности импульсов. Без этих данных - пустой разговор.

Автор:  AlexS4 [ Чт июл 03, 2025 22:03:16 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

jcxz писал(а):
Это не будет работать даже для меандров 250Гц. Не говоря уже о том, что у ТС сигналы могут быть совсем не меандрами.

да, Аlex, уже указал на эту ошибку
а с периодом семплирования 1mS это будет работать до скважности 4 @250Hz.
при том что у какойнить tiny2313 @20Mhz за 1mS можно выполнить 10..20k инструкций а для описанного алгоритма нужно на 2-3 порядка меньше. тоесть не проблема сделать таймер 100uS или даж 20uS :music:

Автор:  abc [ Чт июл 03, 2025 22:51:28 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

Камрады, сорри, конечно, но вы перед тем, как теории развивать, хоть один компьютерный вентилятор в руках держали ?
Там чистейший меандр, 50/50.
Обороты (в режиме "мы тебе не будем срать в уши, честно-честно") - до 1000. Минимальные, при которых они еще умеют вращаться - 400. Т.е. частота будет от 6,6(6) до 16, 6(6) Гц.

ЗЫ
Я бы сделал так :
Мерял бы не частоту, а период у всех восьми штук _последовательно_ во времени, но столько раз, чтобы это укладывалось в интервал 1-2 сек (повторюсь, не для одного, а для всех восьми штук).
Потом результаты усреднял и выводил на индикацию.
Всё.

Автор:  Мокренькая кисонька [ Чт июл 03, 2025 23:23:27 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

До сих пор от ТС нет ничего ни о требуемой точности ни о диапазоне частот ни о скважности импульсов. Без этих данных - пустой разговор.

Нужный диапазон от 0 до 3000 об, хотя 3000 это много, работают они в основном на 1000-1200
2 импульса на оборот у типичного компового вентилятора, скважность 2, т.е. обычный меандр.
Частота получается до 100Гц на канал.
Точность не важна, это показометр для мониторинга, но желательно, чтобы значения не дрыгались особо.

Автор:  Аlex [ Пт июл 04, 2025 00:04:22 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

Мокренькая кисонька писал(а):
Частота получается до 100Гц на канал.
Точность не важна
Тогда вообще не проблема.
8 входов у МК. Таймер на 100 us, это будут тики. Ловим фронты на входах (был один уровень, стал другим) в обработчике этого таймера. И считаем "тики", для каждого входа, от фронта до фронта - это будут периоды. Как потом перевести из периода в частоту, объяснять, думаю, не нужно.
Любой МК потянет такой алгоритм по скорости.
Чем ближе будет частота к 100 Гц, тем будет больше хромать точность измерения. Но, думаю, Вам этого будет достаточно.

Автор:  Starichok51 [ Пт июл 04, 2025 09:49:17 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

при 100 Гц период 10 мс. при таймере 100 мкс это 100 единиц счета. то есть "точность" 1/100 - 1%. должно хватить "за глаза".

Автор:  AlexS4 [ Пт июл 04, 2025 10:31:48 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

abc писал(а):
честно-честно") - до 1000. Минимальные, при которых они еще умеют вращаться - 400. Т.е. частота будет от 6,6(6) до 16, 6(6) Гц.

полноты ради надо добавить что существуют таки вентиляторы, которые раскручиваются до 10..20krpm. обычно это 40x40x67+mm , такие применяют в серверах, и всяких векторных процессорах: асиках c плоской 1U компановкой, видеокартах аля A100 и прочем подобном. звук от них как от самолета... 8) но такие бывают и применяются.

и еще в зависимости от конструкции мотора (количества полюсов ротора) выход холлсенсора может давать x1 ,x2, x4 частоту.

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

Автор:  Starichok51 [ Пт июл 04, 2025 11:00:20 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

AlexS4, а что, у at89с2051 8 ядер, чтобы делать параллельное вычисление по всем каналам?
и не шути так больше про параллельность в простейшем МК.

Автор:  abc [ Пт июл 04, 2025 11:51:54 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

полноты ради надо добавить что существуют таки вентиляторы, которые раскручиваются до 10..20krpm.
да, согласен, но прямо в первом сообщении ТС было про "подкроватный сервер".
И поставить туда ветродуи с 10000rpm могут не только лишь все.

Автор:  AlexS4 [ Пт июл 04, 2025 12:05:56 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

AlexS4, а что, у at89с2051 8 ядер, чтобы делать параллельное вычисление по всем каналам?
и не шути так больше про параллельность в простейшем МК.


Starichok51, осмысленная концепция параллельности процессов появилась лет за 30 до появления многоядерных процессоров и лет за 20 до появления многопроцессорных систем. :music: можем это обсудить в подходящей теме.
(из крупных коммерческих проектов с софтовым распараллеливанием процессов можно почитать про unix (~1970) или ibm os/2 (1987) )

в данном случае я говорил о параллельности процессов накопления счетчиков периодов наблюдаемых входов.
это вполне себе параллельность в реальном времени, реализованная чисто софтово.
viewtopic.php?p=4729085#p4729085
просто здесь алгоритм распараллеливания вырожден до 1 цикла обхода с фиксированным набором инструкций.
а часть распараллеливания реализовано на свойствах архитектуры, например 8 бит (входов) обрабатываются совершенно одновременно битовыми операциями над целым байтом :music:

Автор:  veso74 [ Пт июл 04, 2025 13:08:28 ]
Заголовок сообщения:  Re: Многоканальный тахометр для вентиляторов (нужен совет)

Зафиксируйте хотя бы тип используемого микроконтроллера.
В противном случае каждый будет предлагать варианты на МК из своей любимой темы :).

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

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/