Заголовок сообщения: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 03, 2025 14:51:11
Открыл глаза
Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Вт сен 27, 2011 07:28:44 Сообщений: 57 Откуда: Москва
Рейтинг сообщения:0
Здравствуйте коты и кошки!
Размышляю над 8-и канальным тахометром для подкроватного сервера. Конечно есть всякие специализированные м/с типа MAX31790, EMC230x, но добыть их сейчас нефуражные и по приемлемой цене не представляется возможным. Зато в "тумбочке" полно всяких разных pic'ов, avr, arduino.
Вот мне и подумалось такое: Берем 74HC4051, 8-и канальный мультиплексор. На МК задействуем специальный счетный вход таймера, обычно с помощью которого делают частотомеры. Или аппаратное прерывание и в нем считаем, но первый вариант мне кажется более точным и правильным.
Соответственно вопрос алгоритмического характера, как все это реализовать, чтобы за приемлемое время (1-2 сек) измерять обороты у всех 8-и вентиляторов?
Пока что я сделал макет на Ардуино и с помощью Гайверовской библиотеки тахометр. Работает она на аппаратном прерывании. Алгоритм такой: Переключаю канал - замеряю. Отключаю вход (ножка E) на 4051 на некоторое время (делаю паузу). И так по циклу.
Время замера 2 сек на канал, при 1 секунде измерения. Работает, но получается 2 секунды на один вентилятор...
_________________ ИзвЕните от слова - веник, ИзвИните от слова - вина.
Соответственно вопрос алгоритмического характера, как все это реализовать, чтобы за приемлемое время (1-2 сек) измерять обороты у всех 8-и вентиляторов?
Выкинуть внешние мультиплексоры. МК с 8+ доступными ногами - вагон. Взять такой. Для того, чтобы определиться с алгоритмом, нужно сперва определить макс. и мин. частоты измеряемых импульсов. Из них уже можно решать - достаточно только в прерываниях считать или нужно использовать таймеры. В любом случае: чтобы измерить частоту - достаточно поймать хотя-бы пару импульсов. Нет никакой надобности ждать несколько секунд. Достаточно пары импульсов. Также нет никакой необходимости мерять последовательно - можно мерять всё 8 параллельно. Дешёвых ARM-ов - также вагон. И выкинуть абдурину и всякие "либы". Курить RM.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
т.е. вполне по мк на вентилятор + мк для схемы или....)))
Вангую, что один 20-ногий PY32F002AF15P за ~10 центов с алишки - успешно справится с такой непосильной задачей. Один на все 8 пропеллеров. И ещё и отобразить сумеет на каком-нить индикаторе. Ну если конечно ТС не мегагерцы измерять собрался.
там частоты 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
Модератор
Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4563 Откуда: Планета Земля
Рейтинг сообщения:3 Медали: 1
AlexS4 писал(а):
раз в 4mS (по таймеру) зачитываете байт порта
Это слишком медленно. Нужно раз в 10-20 быстрее зачитывать. А то и во все 100. Иначе на частотах, близких к 250 будете получать точность "+- трамвайная остановка".
да, для нашего примера при 1mS и снятии с 200цикла для частоты 250Hz будет точность 12.5% - это мож даже и приемлемо ...и можно оверсемплированием хорошенько уточнять Спойлерто что эффективно оверсемплить - это не шутка, там будет оочень регулярная ошибка в соседних семплах, а то чо это имеет смысл - это конечно шутка, проще разрешение счетчиков и время накопления данных увеличить и частоты надо уточнить, 250Hz это 7500 rpm для 4х полюсного моторчика, если куллеры домашние-тихие-большие то скорее это двойной+ перезаклад ....а если 1U 25000rpm то наоборот
но в любом случае хватит разрешения в 1 байт для практического применения c куллерами. тоесть прийдется только выбрать подходящий период единственного таймера.
Последний раз редактировалось AlexS4 Чт июл 03, 2025 21:42:56, всего редактировалось 1 раз.
раз в 250 таких циклов (здесь - единственная условная операция в обработчике таймера 4mS) зачитываете эти счетчики в другой 8байт массив и сбрасываете исходные в 0. завершаете прерывание.
Это не будет работать даже для меандров 250Гц. Не говоря уже о том, что у ТС сигналы могут быть совсем не меандрами.
До сих пор от ТС нет ничего ни о требуемой точности ни о диапазоне частот ни о скважности импульсов. Без этих данных - пустой разговор.
Это не будет работать даже для меандров 250Гц. Не говоря уже о том, что у ТС сигналы могут быть совсем не меандрами.
да, Аlex, уже указал на эту ошибку а с периодом семплирования 1mS это будет работать до скважности 4 @250Hz. при том что у какойнить tiny2313 @20Mhz за 1mS можно выполнить 10..20k инструкций а для описанного алгоритма нужно на 2-3 порядка меньше. тоесть не проблема сделать таймер 100uS или даж 20uS
Камрады, сорри, конечно, но вы перед тем, как теории развивать, хоть один компьютерный вентилятор в руках держали ? Там чистейший меандр, 50/50. Обороты (в режиме "мы тебе не будем срать в уши, честно-честно") - до 1000. Минимальные, при которых они еще умеют вращаться - 400. Т.е. частота будет от 6,6(6) до 16, 6(6) Гц.
ЗЫ Я бы сделал так : Мерял бы не частоту, а период у всех восьми штук _последовательно_ во времени, но столько раз, чтобы это укладывалось в интервал 1-2 сек (повторюсь, не для одного, а для всех восьми штук). Потом результаты усреднял и выводил на индикацию. Всё.
До сих пор от ТС нет ничего ни о требуемой точности ни о диапазоне частот ни о скважности импульсов. Без этих данных - пустой разговор.
Нужный диапазон от 0 до 3000 об, хотя 3000 это много, работают они в основном на 1000-1200 2 импульса на оборот у типичного компового вентилятора, скважность 2, т.е. обычный меандр. Частота получается до 100Гц на канал. Точность не важна, это показометр для мониторинга, но желательно, чтобы значения не дрыгались особо.
_________________ ИзвЕните от слова - веник, ИзвИните от слова - вина.
Заголовок сообщения: Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 00:04:22
Модератор
Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4563 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Мокренькая кисонька писал(а):
Частота получается до 100Гц на канал. Точность не важна
Тогда вообще не проблема. 8 входов у МК. Таймер на 100 us, это будут тики. Ловим фронты на входах (был один уровень, стал другим) в обработчике этого таймера. И считаем "тики", для каждого входа, от фронта до фронта - это будут периоды. Как потом перевести из периода в частоту, объяснять, думаю, не нужно. Любой МК потянет такой алгоритм по скорости. Чем ближе будет частота к 100 Гц, тем будет больше хромать точность измерения. Но, думаю, Вам этого будет достаточно.
честно-честно") - до 1000. Минимальные, при которых они еще умеют вращаться - 400. Т.е. частота будет от 6,6(6) до 16, 6(6) Гц.
полноты ради надо добавить что существуют таки вентиляторы, которые раскручиваются до 10..20krpm. обычно это 40x40x67+mm , такие применяют в серверах, и всяких векторных процессорах: асиках c плоской 1U компановкой, видеокартах аля A100 и прочем подобном. звук от них как от самолета... но такие бывают и применяются.
и еще в зависимости от конструкции мотора (количества полюсов ротора) выход холлсенсора может давать x1 ,x2, x4 частоту.
зы а я предложил самый простой алгоритм, с минимумом ветвлений (или вообще без них при наличии 2х таймеров), не требующий деления, его элементарно организовать на самом дохлом at89с2051 какомнить, при этом он обеспечивает параллельное вычисление по всем каналам.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения