Заголовок сообщения: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Чт июл 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 Гц, тем будет больше хромать точность измерения. Но, думаю, Вам этого будет достаточно.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения