8 входов у МК. Таймер на 100 us, это будут тики. Ловим фронты на входах (был один уровень, стал другим) в обработчике этого таймера. И считаем "тики", для каждого входа, от фронта до фронта - это будут периоды. Как потом перевести из периода в частоту, объяснять, думаю, не нужно. Любой МК потянет такой алгоритм по скорости. Чем ближе будет частота к 100 Гц, тем будет больше хромать точность измерения. Но, думаю, Вам этого будет достаточно.
Да, так пойдёт. Но дополню: Я бы мерял не просто "от фронта до фронта", а согласно периоду индикации: до последнего фронта сигнала в каждом периоде индикации. И с подсчётом фронтов внутри периода индикации. А потом - делим измеренный интервал времени на количество фронтов за период индикации и выводим. При таком способе точность не будет ухудшаться с ростом частоты сигналов. Будет усреднение по множеству периодов сигнала.
Заголовок сообщения: Re: Многоканальный тахометр для вентиляторов (нужен совет)
Добавлено: Пт июл 04, 2025 18:24:21
Открыл глаза
Карма: 3
Рейтинг сообщений: 0
Зарегистрирован: Вт сен 27, 2011 07:28:44 Сообщений: 59 Откуда: Москва
Рейтинг сообщения:0
Я вот думаю все-таки задействовать аппаратный щ0ччик и в его прерывании делать предварительную обработку и переключать мультиплексор. Конечно можно будет выкроить целый порт под это, но это не очень будет удобно, т.к. еще нужно 2 ШИМа вывести, датчики температуры, UART вместо дисплея.
Всем спасибо за советы, если что-то годное получится - результат запощу. Пока буду экпериментировать.
_________________ ИзвЕните от слова - веник, ИзвИните от слова - вина.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
а можнож на аппаратных счетчиках сделать, зачем ваще mcu
еще хороший вариант взять завалявшуюся fpga , загнать в нее опенсорсный стековый процессор https://github.com/IamMaxim/OurCPU и уже на нем писануть алгоритм. можно прямо на языке forth
еще хороший вариант взять завалявшуюся fpga , загнать в нее опенсорсный стековый процессор https://github.com/IamMaxim/OurCPU и уже на нем писануть алгоритм. можно прямо на языке forth
Всё хорошо, осталось дело за малым - чтобы fpga завалялась.
PS: Окучивать подкроватные пропеллеры при помощи FPGA - это сильно!
хорошо. у них можно назначить прерывание на любой вывод. т.е. количество датчиков ограничено только количеством выводом самого МК.
но тут другая проблема - прерывания непредсказуемые ))
поэтому например в радиоуправлении мы опрашивали датчики с высокой частотой (в прерывании таймера 0).
а потом передавали по радио... на комп... и т.д.
может показаться что опрашивать датчики с высокой частотой это пустая трата ресурсов... но в нашем случае это оправдано. зато у нас высокая стабильность (таймер работает от кварца)... высокая точность... и т.д.
и главное что мы знаем точно когда сработает таймер. и значит можем рассчитать все тайминги.
2 ШИМа вывести, UART - не проблема.
датчики температуры - у нас была проблема... на время опроса датчика температуры желательно отключать все прерывания. иначе будут ошибки.
Интересно, а что, так "смертельно необходимо" знать обороты вентилятора с точностью до одного оборота в минуту (или в секунду)? 2 импульса на оборот, при частоте вращения 1500 оборотов в минуту- это 50 оборотов в секунду, или 15 оборотов за 0,3 секунды. Программируете измерительный интервал не 1 секунду, а 0,3 секунды, и имеете на выходе число и "х100 оборотов в минуту"
...2 импульса на оборот, при частоте вращения 1500 оборотов в минуту- это 50 оборотов в секунду, или 15 оборотов за 0,3 секунды. Программируете измерительный интервал не 1 секунду, а 0,3 секунды, и имеете на выходе число и "х100 оборотов в минуту"
Не совсем так. 1500/60=25/[сек]*0,3=(100)*7,5[об/мин]??? Если измерительный интервал взять длительностью 0,6 секунды, получается более правильно 1500/60=25/[сек]*0,6=(100)*15[об/мин]
Мокренькая кисонька писал(а):
Я вот думаю все-таки задействовать аппаратный щ0ччик и в его прерывании делать предварительную обработку и переключать мультиплексор. Конечно можно будет выкроить целый порт под это, но это не очень будет удобно, т.к. еще нужно 2 ШИМа вывести, датчики температуры, UART вместо дисплея...
Управление мультиплексором потребует 4 лапы контроллера. Можно подключиться к входу захвата таймера Т1 через встроенный аналоговый мультиплексор Спойлерhttps://radiokot.ru/forum/download/file.php?mode=view&id=419447&sid=4996caad8af767aed4ee064cd97f9612
Можно подключиться к входу захвата таймера Т1 через встроенный аналоговый мультиплексор
Можно... но зачем ? )) -не у всех МК есть 8-и канальным мультиплексор. -если использовать 8-и канальным мультиплексор то мы потеряем АЦП. который нам ещё пригодится))
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения