|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||||||||||||||||
Сбоит частотомер29.02.2016, 23:27. Показов 2002. Ответов 18
Метки нет (Все метки)
Доброго времени суток! Проблема: считаю период входного прямоугольного импульса с помощью захвата на stm32f100, затем пересчитываю в частоту. Рабочие частоты 1-100 Гц.
Инициализация:
Проблема: при регулировании на частотах 500 < f < 1000 об / мин, могут возникать резкие падения периода до 0 и соответственно скачок расчетной частоты, которая в дальнейшем выбешивает регулятор. На частотах выше 1000 об/мин данного эффекта не наблюдается. Эффект наблюдал в STMStudio, просмотрев так же зависимость capture_1 и capture_2 увидел( что и логично) что в определенный момент времени они принимают одинаковые значения, и их разность дает 0. Не могу сообразить как от этого избавиться? Связано ли это с переполнением регистра счетчика? Заранее спасибо!
0
|
||||||||||||||||
| 29.02.2016, 23:27 | |
|
Ответы с готовыми решениями:
18
Частотомер частотомер на at89c51 Еще один частотомер |
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||||||
| 01.03.2016, 07:02 | |||||||
|
цифровые частотометры бывают двух типов
прямой это когда за определенный период подсчитывается количество импульсов (переходов) и обратный это когда замеряется время импульса(перехода) здесь используется второй способ ) это в идеалев реале давай считать счетчик у таймера 16 разрядный т.е 0-65535, значит замерить можно до 0.65535 сек, (0,00001*65535) примерно 1,5 Гц далее переполнение,что уже не тянет на 1 Гц ![]() далее как бы я сделал? во первых увеличил бы предделитель во вторых использовал бы внешние прерывания по первому фронту запускаем таймер, по второму останавливаем(можно не останавливать а считать значение и перезапустить) , считываем значения заносим во внешнюю переменную и где то в главном цикле расчет могу, если понадобится, чуть по позже скинуть кусок проги цифрового димера, где я рассчитывал длину полупериода осветительной сети но там не точный расчет а относительный, на таймере реализован одновибратор, который за одно и рассчитывал период
0
|
|||||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 01.03.2016, 08:30 | |
|
... вдобавок к комментарию ValeryS, я бы добавил еще возможно, "дребезг контакта", или нечеткие фронты исходного сигнала. В итоге прерывание срабатывает дважды за один период, еще в момент прерывания. В итоге получается period равный нулю... Ну, и при расчете проверять же надо - при делении на ноль проц перейдет в exception. Ограничьте результат расчета какими-нибудь вменяемыми результатами, чтобы не было озвученных проблем с регулятором.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 01.03.2016, 11:21 [ТС] | |
|
Voland_, сигнал пропущен через компаратор, смотрю по осциллографу - меандр четкий. ValeryS, частота по факту колеблется в диапазоне 9-100 Гц. capture_1, 2 - unsigned 16 bit. 10000000 - для вычисления частоты в об/мин. 100.000 Гц *60 / period
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|||||||||||
| 01.03.2016, 11:47 | |||||||||||
|
ок. тогда вопросы с переполнением.
1) Проверьте, что capture1, capture2 у вас объявлены как:
3) Непонятно зачем вы делаете в прерывании деление алгоритма на две ветки. Флаг "n" вообще не нужен. Просто в каждом шаге сравнивайте значение счетчика с предыдущим, вычисляйте период и сохраняйте снова значения счетчика в буфер:
PS: что будет если вы остановите мотор, и импульсы перестанут приходить?
0
|
|||||||||||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|||||
| 01.03.2016, 12:04 [ТС] | |||||
|
Voland_,
0
|
|||||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 01.03.2016, 12:44 | |
|
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
||
| 01.03.2016, 13:30 [ТС] | ||
|
0
|
||
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 01.03.2016, 13:49 | |
|
Я вам намекаю более проблемный случай - мотор работал (шли прерывания), а потом внезапно остановился. При этом расчетная частота осталась на прежнем уровне. Ваш прибор считает нормально, пытается регулировать, но мотор стоит. То же самое будет например, просто при обрыве датчика вращения, который делает вам импульсы.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 01.03.2016, 14:22 [ТС] | |
|
Voland_, да задумывался над этой проблемой, но не решил( каким способом можно этого избежать?
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 01.03.2016, 15:08 | |
|
нужен таймаут этого счетчика, либо таймаут с помощью другого счетчика.
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 01.03.2016, 15:10 [ТС] | |
|
Voland_, у меня есть вспомогательный счетчик который генерирует мелкое прерывание раз в 1 мс, в нем только декремент переменных по которым опрашиваются кнопки и период регулирования
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 02.03.2016, 17:42 [ТС] | |
|
Voland_, таймаут это, что- то вроде: по какому то событию включается счетчик, досчитав определенное время, он снова проверяет, и если условие все еще выполняется то он отключает систему?
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|
| 02.03.2016, 18:38 | |
|
_SayHelli, вот смотри как просто сделать проверку если использовать не захват таймера
а внешние прерывания пришло прерывание считали значение, обнулили таймер пришло прерывания считали значение, обнулили таймер если прерывание не пришло, обрыв датчика, остановился мотор то счетчик досчитывает до переполнения, генерит свое прерывание, а там уже выставляется флаг "ахтунг" недостаток что первое значение будет мусором
0
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 02.03.2016, 19:25 [ТС] | |
|
ValeryS, у меня плата сделана уже и вход импульсов на первый канал TIM3. Он же имеет функцию внешнего прерывания? А я понял, у стм же любую ногу можно настроить на внешнее прерывание
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||
| 02.03.2016, 20:00 | |||
только один из них
0
|
|||
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 11.03.2016, 15:22 [ТС] | |
|
Проблема оказалась чисто аппаратная поставил фильтрующий конденсатор побольше и все заработало стабильно, видим высокочастотная помеха мешалась
0
|
|
|
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
| 11.03.2016, 16:40 | |
Сообщение было отмечено _SayHello как решение
Решение
2
|
|
|
874 / 535 / 175
Регистрация: 30.07.2015
Сообщений: 1,739
|
|
| 11.03.2016, 16:47 [ТС] | |
|
Voland_, да вы были абсолютно правы, спасибо вам) Дело в том, что в тестовом варианте не присутствовали щетки для токосъема с вала( вал - электрод) и расстояние от оптодатчика было малым. При установке щеток пришлось метку поднять выше, и оптодатчик перестал ее "видеть", поменял резистор с 220 Ом на 100, чтобы ток диода был побольше, добавил мощности так сказать, и из за этого он стал "видеть" некие маленькие косяки метки (хотя по осциллографу их не было видно, и частоту осциллограф считал исправно, поэтому я и грешил на программу, возможно у прибора встроенный ФНЧ есть) . Поставил конденсатор на 22 нФ, больше побоялся сначала ставить, на больших частотах думал будет заваливать фронт. И этого конденсатора видимо хватало на частотах 1000-6000 об/мин, а на меньших он был маловат. Поставил 47 нФ, все пошло как по маслу, на 6000 об/мин косит фронты, но незначительно, компаратор выпрямляет как надо )
0
|
|
| 11.03.2016, 16:47 | |
|
Помогаю со студенческими работами здесь
19
Частотомер на MSP430f2131 c HD44780 Частотомер на базе микропроцессора AT89S8252 3хразряндный семисегментник, работающий как частотомер А делал ли кто-нибудь частотомер на MSP430? частотомер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git
main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели
8ATzM_2aurI
|
|
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2.
Задача: запретить редактирование документа, если он открыт у другого пользователя.
/ / . . .
|
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои.
А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
kYBz3eJf3jQ
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|