Форум РадиоКот 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% - это мож даже и приемлемо ![]() ...и можно оверсемплированием хорошенько уточнять ![]() Спойлерто что эффективно оверсемплить - это не шутка, там будет оочень регулярная ошибка в соседних семплах, а то чо это имеет смысл - это конечно шутка, проще разрешение счетчиков и время накопления данных увеличитьи частоты надо уточнить, 250Hz это 7500 rpm для 4х полюсного моторчика, если куллеры домашние-тихие-большие то скорее это двойной+ перезаклад ....а если 1U 25000rpm ![]() ![]() но в любом случае хватит разрешения в 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 ![]() |
Автор: | 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 и прочем подобном. звук от них как от самолета... ![]() и еще в зависимости от конструкции мотора (количества полюсов ротора) выход холлсенсора может давать x1 ,x2, x4 частоту. зы а я предложил самый простой алгоритм, с минимумом ветвлений (или вообще без них при наличии 2х таймеров), не требующий деления, его элементарно организовать на самом дохлом at89с2051 какомнить, при этом он обеспечивает параллельное вычисление по всем каналам. ![]() |
Автор: | 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 до появления многопроцессорных систем. ![]() (из крупных коммерческих проектов с софтовым распараллеливанием процессов можно почитать про unix (~1970) или ibm os/2 (1987) ) в данном случае я говорил о параллельности процессов накопления счетчиков периодов наблюдаемых входов. это вполне себе параллельность в реальном времени, реализованная чисто софтово. viewtopic.php?p=4729085#p4729085 просто здесь алгоритм распараллеливания вырожден до 1 цикла обхода с фиксированным набором инструкций. а часть распараллеливания реализовано на свойствах архитектуры, например 8 бит (входов) обрабатываются совершенно одновременно битовыми операциями над целым байтом ![]() |
Автор: | 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/ |