Думаю использовать Mega 168 или 328, у меня их больше всего, да и опыт на аврах больше.
Многоканальный тахометр для вентиляторов (нужен совет)
[uquote="veso74",url="/forum/viewtopic.php?p=4729183#p4729183"]Зафиксируйте хотя бы тип используемого микроконтроллера.[/uquote]
Думаю использовать Mega 168 или 328, у меня их больше всего, да и опыт на аврах больше.
Думаю использовать Mega 168 или 328, у меня их больше всего, да и опыт на аврах больше.
ИзвЕните от слова - веник, ИзвИните от слова - вина.
- Реклама
- Сообщения: 1731
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="Аlex",url="/forum/viewtopic.php?p=4729112#p4729112"]8 входов у МК. Таймер на 100 us, это будут тики. Ловим фронты на входах (был один уровень, стал другим) в обработчике этого таймера. И считаем "тики", для каждого входа, от фронта до фронта - это будут периоды. Как потом перевести из периода в частоту, объяснять, думаю, не нужно.
Любой МК потянет такой алгоритм по скорости.
Чем ближе будет частота к 100 Гц, тем будет больше хромать точность измерения. Но, думаю, Вам этого будет достаточно.[/uquote]Да, так пойдёт. Но дополню:
Я бы мерял не просто "от фронта до фронта", а согласно периоду индикации: до последнего фронта сигнала в каждом периоде индикации. И с подсчётом фронтов внутри периода индикации. А потом - делим измеренный интервал времени на количество фронтов за период индикации и выводим. При таком способе точность не будет ухудшаться с ростом частоты сигналов. Будет усреднение по множеству периодов сигнала.
Любой МК потянет такой алгоритм по скорости.
Чем ближе будет частота к 100 Гц, тем будет больше хромать точность измерения. Но, думаю, Вам этого будет достаточно.[/uquote]Да, так пойдёт. Но дополню:
Я бы мерял не просто "от фронта до фронта", а согласно периоду индикации: до последнего фронта сигнала в каждом периоде индикации. И с подсчётом фронтов внутри периода индикации. А потом - делим измеренный интервал времени на количество фронтов за период индикации и выводим. При таком способе точность не будет ухудшаться с ростом частоты сигналов. Будет усреднение по множеству периодов сигнала.
Я вот думаю все-таки задействовать аппаратный щ0ччик и в его прерывании делать предварительную обработку и переключать мультиплексор. Конечно можно будет выкроить целый порт под это, но это не очень будет удобно, т.к. еще нужно 2 ШИМа вывести, датчики температуры, UART вместо дисплея.
Всем спасибо за советы, если что-то годное получится - результат запощу. Пока буду экпериментировать.
Всем спасибо за советы, если что-то годное получится - результат запощу. Пока буду экпериментировать.
ИзвЕните от слова - веник, ИзвИните от слова - вина.
- Сообщения: 1731
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="abc",url="/forum/viewtopic.php?p=4729168#p4729168"]да, согласен, но прямо в первом сообщении ТС было про "подкроватный сервер".
И поставить туда ветродуи с 10000rpm могут не только лишь все.[/uquote]В такую жару как сейчас - самое то!
Добавлено after 54 seconds:
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729225#p4729225"]Думаю использовать Mega 168 или 328, у меня их больше всего, да и опыт на аврах больше.[/uquote]И зря! При нынешних-то ценах на ARM-ы... Вот и освоили бы их на такой простой задаче.
Добавлено after 5 minutes 31 second:
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729228#p4729228"]и переключать мультиплексор.[/uquote]Вижу у автора настойчивое желание потратить некий мультиплексор.
И поставить туда ветродуи с 10000rpm могут не только лишь все.[/uquote]В такую жару как сейчас - самое то!
Добавлено after 54 seconds:
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729225#p4729225"]Думаю использовать Mega 168 или 328, у меня их больше всего, да и опыт на аврах больше.[/uquote]И зря! При нынешних-то ценах на ARM-ы... Вот и освоили бы их на такой простой задаче.
Добавлено after 5 minutes 31 second:
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729228#p4729228"]и переключать мультиплексор.[/uquote]Вижу у автора настойчивое желание потратить некий мультиплексор.
а можнож на аппаратных счетчиках сделать, зачем ваще mcu 
еще хороший вариант взять завалявшуюся fpga , загнать в нее опенсорсный стековый процессор
https://github.com/IamMaxim/OurCPU
и уже на нем писануть алгоритм. можно прямо на языке forth
еще хороший вариант взять завалявшуюся fpga , загнать в нее опенсорсный стековый процессор
https://github.com/IamMaxim/OurCPU
и уже на нем писануть алгоритм. можно прямо на языке forth
- Реклама
- Сообщения: 1731
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="AlexS4",url="/forum/viewtopic.php?p=4729232#p4729232"]еще хороший вариант взять завалявшуюся fpga , загнать в нее опенсорсный стековый процессор
https://github.com/IamMaxim/OurCPU
и уже на нем писануть алгоритм. можно прямо на языке forth
[/uquote]Всё хорошо, осталось дело за малым - чтобы fpga завалялась. 
PS: Окучивать подкроватные пропеллеры при помощи FPGA - это сильно!
https://github.com/IamMaxim/OurCPU
и уже на нем писануть алгоритм. можно прямо на языке forth
PS: Окучивать подкроватные пропеллеры при помощи FPGA - это сильно!
хорошо.Мокренькая кисонька писал(а):Думаю использовать Mega 168 или 328
у них можно назначить прерывание на любой вывод.
т.е. количество датчиков ограничено только количеством выводом самого МК.
но тут другая проблема - прерывания непредсказуемые ))
поэтому например в радиоуправлении мы опрашивали датчики с высокой частотой (в прерывании таймера 0).
а потом передавали по радио... на комп... и т.д.
может показаться что опрашивать датчики с высокой частотой это пустая трата ресурсов... но в нашем случае это оправдано.
зато у нас высокая стабильность (таймер работает от кварца)... высокая точность... и т.д.
и главное что мы знаем точно когда сработает таймер. и значит можем рассчитать все тайминги.
2 ШИМа вывести, UART - не проблема.
датчики температуры - у нас была проблема... на время опроса датчика температуры желательно отключать все прерывания.
иначе будут ошибки.
а остальном всё замечательно работает))
Спойлер
Это какой-то позор оверинжиниринг.Что заставило для трех устройств с I2C использовать две ардуины ?
ЗЫ
Понял, спасибо, вопрос снят
Последний раз редактировалось abc Сб июл 05, 2025 13:33:30, всего редактировалось 1 раз.
>(*.*)<
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Котище огромно, ушасто, пушисто, глазасто, зубасто, колючелапо и мявай. (c)
Спойлер
это экспериментальная схема.потом всё переделали.
Интересно, а что, так "смертельно необходимо" знать обороты вентилятора с точностью до одного оборота в минуту (или в секунду)?
2 импульса на оборот, при частоте вращения 1500 оборотов в минуту- это 50 оборотов в секунду, или 15 оборотов за 0,3 секунды. Программируете измерительный интервал не 1 секунду, а 0,3 секунды, и имеете на выходе число и "х100 оборотов в минуту"
2 импульса на оборот, при частоте вращения 1500 оборотов в минуту- это 50 оборотов в секунду, или 15 оборотов за 0,3 секунды. Программируете измерительный интервал не 1 секунду, а 0,3 секунды, и имеете на выходе число и "х100 оборотов в минуту"
[uquote="АлександрЛ",url="/forum/viewtopic.php?p=4729292#p4729292"]...2 импульса на оборот, при частоте вращения 1500 оборотов в минуту- это 50 оборотов в секунду, или 15 оборотов за 0,3 секунды. Программируете измерительный интервал не 1 секунду, а 0,3 секунды, и имеете на выходе число и "х100 оборотов в минуту"[/uquote]Не совсем так. 1500/60=25/[сек]*0,3=(100)*7,5[об/мин]???
Если измерительный интервал взять длительностью 0,6 секунды, получается более правильно 1500/60=25/[сек]*0,6=(100)*15[об/мин]
Если измерительный интервал взять длительностью 0,6 секунды, получается более правильно 1500/60=25/[сек]*0,6=(100)*15[об/мин]
Управление мультиплексором потребует 4 лапы контроллера. Можно подключиться к входу захвата таймера Т1 через встроенный аналоговый мультиплексорМокренькая кисонька писал(а):Я вот думаю все-таки задействовать аппаратный щ0ччик и в его прерывании делать предварительную обработку и переключать мультиплексор. Конечно можно будет выкроить целый порт под это, но это не очень будет удобно, т.к. еще нужно 2 ШИМа вывести, датчики температуры, UART вместо дисплея...
Спойлер
https://radiokot.ru/forum/download/file.php?mode=view&id=419447&sid=4996caad8af767aed4ee064cd97f9612- Вложения
-
- Встроенный мульплексор m48...m328.PNG
- (43.61 КБ) 125 скачиваний
Где-то в начале ветки написано, что, таходатчик вентилятора выдаёт ДВА импульса на оборот.akl писал(а):Не совсем так. 1500/60=25/[сек]*0,3=(100)*7,5[об/мин]???
[uquote="akl",url="/forum/viewtopic.php?p=4729301#p4729301"]Управление мультиплексором потребует 4 лапы контроллера.[/uquote]
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729008#p4729008"]Размышляю над 8-и канальным тахометром[/uquote]
Управление 8-и канальным мультиплексором потребует 3 лапы контроллера.
[uquote="akl",url="/forum/viewtopic.php?p=4729301#p4729301"]Можно подключиться к входу захвата таймера Т1 через встроенный аналоговый мультиплексор[/uquote]
Можно... но зачем ? ))
-не у всех МК есть 8-и канальным мультиплексор.
-если использовать 8-и канальным мультиплексор то мы потеряем АЦП. который нам ещё пригодится))
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729008#p4729008"]Размышляю над 8-и канальным тахометром[/uquote]
Управление 8-и канальным мультиплексором потребует 3 лапы контроллера.
[uquote="akl",url="/forum/viewtopic.php?p=4729301#p4729301"]Можно подключиться к входу захвата таймера Т1 через встроенный аналоговый мультиплексор[/uquote]
Можно... но зачем ? ))
-не у всех МК есть 8-и канальным мультиплексор.
-если использовать 8-и канальным мультиплексор то мы потеряем АЦП. который нам ещё пригодится))
Я такой "тахометр" делал на ESP32 + графический дисплей.
Все пины сигналов заводил на аналоговый ключ (74HC4051). Логика максимально тупая.
Сигналы с пинов вентиляторов идут через схему защиты, компараторы (8) на аналоговый ключ. Контроллер выбирает желаемый канал, и уходит в сон на 0,2 секунды. Это максимальное время опроса канала.
Сам сигнал после компараторов и аналогового ключа заводится на пин с прерыванием, который считает импульсы. Если получено 20 импульсов - будет основной поток. После этого переключаемся на следующий канал и продолжаем.
Я не очень заморачивался с причёсыванием кода, но оно работает в пределах 50об/мин ... 9999 об/мин (я оставил 4 разряда под скорость, да и где такие кулеры встречаются?).
Тайминги получаются из внутреннего счётчика времени. На малых оборотах показания плавают, но высокие измеряются более-менее достоверно.
Все пины сигналов заводил на аналоговый ключ (74HC4051). Логика максимально тупая.
Сигналы с пинов вентиляторов идут через схему защиты, компараторы (8) на аналоговый ключ. Контроллер выбирает желаемый канал, и уходит в сон на 0,2 секунды. Это максимальное время опроса канала.
Сам сигнал после компараторов и аналогового ключа заводится на пин с прерыванием, который считает импульсы. Если получено 20 импульсов - будет основной поток. После этого переключаемся на следующий канал и продолжаем.
Я не очень заморачивался с причёсыванием кода, но оно работает в пределах 50об/мин ... 9999 об/мин (я оставил 4 разряда под скорость, да и где такие кулеры встречаются?).
Тайминги получаются из внутреннего счётчика времени. На малых оборотах показания плавают, но высокие измеряются более-менее достоверно.
там же речь о очень низких скоростях, нет никакого разумного смысла дополнять gpio порты какимито аппаратными коммутаторами. для защиты gpio там нужны резисторы последовательно входам ~1..10k и все!
это на любой mcu из конца прошлого тысячалетия сделать без доп компанентов. а на esp32 это будет еще и с BT интерфейсом
а все попытки довесить подобное железом чтоб все стало "понятно" - исключительно от отсутствия опыта программирования (сложнее чем демо-скетчи готовые чуть допиливать под себя). ... и с таким подходом этого опыта никогда и не появится

это на любой mcu из конца прошлого тысячалетия сделать без доп компанентов. а на esp32 это будет еще и с BT интерфейсом
а все попытки довесить подобное железом чтоб все стало "понятно" - исключительно от отсутствия опыта программирования (сложнее чем демо-скетчи готовые чуть допиливать под себя). ... и с таким подходом этого опыта никогда и не появится
- Сообщения: 1731
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="AlexS4",url="/forum/viewtopic.php?p=4731981#p4731981"]там же речь о очень низких скоростях, нет никакого разумного смысла дополнять gpio порты какимито аппаратными коммутаторами. это на любой mcu из конца прошлого тысячалетия сделать без доп компанентов. а на esp32 это будет еще и с BT интерфейсом
[/uquote]Ой-ли? Уверены?
На electronix-е один человечек жаловался, что енти самые "народные" ESP32 при работе с эфиром периодически запрещают прерывания на несколько мсек! И никто так и не поведал - как победить сей блуд с прерываниями.
Может вы поведаете?
На electronix-е один человечек жаловался, что енти самые "народные" ESP32 при работе с эфиром периодически запрещают прерывания на несколько мсек! И никто так и не поведал - как победить сей блуд с прерываниями.
Может вы поведаете?
тоже читал про это. сам esp не использовал, кроме как отдельный bt/wifi-uart мост в паре некритичных к задержкам мест
но для задачи с вентиляторами - это все пофиг. ну будет периодически возникать ошибка по частотам, ее либо откидывать можно будет по признаку одновременного существенного отклонения по всем каналам, либо сделать контрольный канал чтоб детектировать эту ошибку. а скорее всего подозреваю ее можно будет просто игнорировать
но для задачи с вентиляторами - это все пофиг. ну будет периодически возникать ошибка по частотам, ее либо откидывать можно будет по признаку одновременного существенного отклонения по всем каналам, либо сделать контрольный канал чтоб детектировать эту ошибку. а скорее всего подозреваю ее можно будет просто игнорировать
- Сообщения: 1731
- Зарегистрирован: Вт авг 15, 2017 10:51:13
[uquote="AlexS4",url="/forum/viewtopic.php?p=4731992#p4731992"]тоже читал про это. сам esp не использовал, кроме как отдельный bt/wifi-uart мост в паре некритичных к задержкам мест
но для задачи с вентиляторами - это все пофиг.[/uquote]Не факт. Эта задержка нигде в документации не документирована. А значит - может быть любой. И если у того человечка она была "несколько мсек", то в другом режиме работы и в другом окружении может быть другой. Или картина может резко измениться с выходом новой версии прошивки BT-стека.
Кроме того - предположим, что она будет также == "несколько мсек", но повторяться через каждые 100 мсек. И пропеллер вращается с такой же частотой. Что в этом случае увидим? Падающего Карлсона!
Так как пропеллер остановился!
Возможно конечно, что хоть прерывания и запрещаются, но не теряются. И срабатывают после конца запрета. Тогда даже при частых запретах в пару мсек проблем быть не должно. Но это всё - вилами по воде. Китайскими вилами из китайского железа.
Вобщем - ESP32 с чёрным ящиком BT-стека для такой задачи - это хождение по минному полю, покрытому слоем грабель. Али его знает - может будет работать, может - нет. А может - иногда будет, иногда - нет.
[uquote="AlexS4",url="/forum/viewtopic.php?p=4731992#p4731992"]ну будет периодически возникать ошибка по частотам, ее либо откидывать можно будет по признаку одновременного существенного отклонения по всем каналам, либо сделать контрольный канал чтоб детектировать эту ошибку. а скорее всего подозреваю ее можно будет просто игнорировать
[/uquote]Т.е. - предлагаете сразу точить костыли?
Зачем? Лучше взять обычный нормальный МК. Без всяких кривых блюпупов. А ESP пусть лучше рядом постоит, коль сильно нужен.
но для задачи с вентиляторами - это все пофиг.[/uquote]Не факт. Эта задержка нигде в документации не документирована. А значит - может быть любой. И если у того человечка она была "несколько мсек", то в другом режиме работы и в другом окружении может быть другой. Или картина может резко измениться с выходом новой версии прошивки BT-стека.
Кроме того - предположим, что она будет также == "несколько мсек", но повторяться через каждые 100 мсек. И пропеллер вращается с такой же частотой. Что в этом случае увидим? Падающего Карлсона!
Возможно конечно, что хоть прерывания и запрещаются, но не теряются. И срабатывают после конца запрета. Тогда даже при частых запретах в пару мсек проблем быть не должно. Но это всё - вилами по воде. Китайскими вилами из китайского железа.
Вобщем - ESP32 с чёрным ящиком BT-стека для такой задачи - это хождение по минному полю, покрытому слоем грабель. Али его знает - может будет работать, может - нет. А может - иногда будет, иногда - нет.
[uquote="AlexS4",url="/forum/viewtopic.php?p=4731992#p4731992"]ну будет периодически возникать ошибка по частотам, ее либо откидывать можно будет по признаку одновременного существенного отклонения по всем каналам, либо сделать контрольный канал чтоб детектировать эту ошибку. а скорее всего подозреваю ее можно будет просто игнорировать
Зачем? Лучше взять обычный нормальный МК. Без всяких кривых блюпупов. А ESP пусть лучше рядом постоит, коль сильно нужен.
- Сообщения: 204
- Зарегистрирован: Сб июл 30, 2011 21:00:24
Наверно, лучше будет «лобовое» решение – на каждый вентилятор по таймеру. Использовать современный МК AVR, например, AVR64DA64, у него 8 таймеров плюс таймер RTC. МК, конечно, стоит подороже, но при единичной разработке это мелочь.
Можно посмотреть вариант: пара дешёвых ATtiny1616, там 4 таймера плюс таймер RTC. В дорогом ЧипДипе стоит 79 рублей, корпус, правда, не очень.
Плюсы: простые измерения с хорошим усреднением, хороший запас для других дел, например, измерение температуры во многих точках и т.д.
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729016#p4729016"]LM курил в молодости, RM ни разу.[/uquote]
Лучше бы «курили RM». У любителей LM, кто постарше, ситуация известная – тяжёлые болезни и кладбище.
Можно посмотреть вариант: пара дешёвых ATtiny1616, там 4 таймера плюс таймер RTC. В дорогом ЧипДипе стоит 79 рублей, корпус, правда, не очень.
Плюсы: простые измерения с хорошим усреднением, хороший запас для других дел, например, измерение температуры во многих точках и т.д.
[uquote="Мокренькая кисонька",url="/forum/viewtopic.php?p=4729016#p4729016"]LM курил в молодости, RM ни разу.[/uquote]
Лучше бы «курили RM». У любителей LM, кто постарше, ситуация известная – тяжёлые болезни и кладбище.


