Например TDA7294

Форум РадиоКот • Просмотр темы - STM32 - частотомер.
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт июн 17, 2025 17:55:51

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 144 ]    , , , , 5, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Чт ноя 29, 2012 22:02:06 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
SergeBS писал(а):
Не бери в голову.

Даже не думал... :))
Тем более, что частичную апробацию метода/решения/способа/идеи я только что провёл... всё работает!!! :))
Доводить всё это до логического конца, конечно же, желания нет... но может когда потом и пригодится...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Чт ноя 29, 2012 22:16:21 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1030
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
Так поделитесь, как сделали?

upd: для конкретики привожу свой алгоритм, реализованный в ПЛИС (логику интерполятора не рассматриваю):

1. Микроконтроллером программно формируется сигнал Gate.
2. По ближайшему фронту входной частоты Fin устанавливается сигнал FinGate, который разрешает работу счетчика FinCnt, считающего количество периодов входной частоты.
3. После установки сигнала FinGate по ближайшему фронту опорной частоты Fref устанавливается сигнал FrefGate, который разрешает работу счетчика FrefCnt, считающего количество периодов частоты заполнения.
4. Когда проходит время, приблизительно равное желаемому времени измерения, микроконтроллер снимает сигнал Gate.
5. По ближайшему фронту входной частоты Fin сбрасывается сигнал FinGate, который запрещает работу счетчика FinCnt.
6. После сброса сигнала FinGate по ближайшему фронту опорной частоты Fref сбрасывается сигнал FrefGate, котрый запрещает работу счетчика FrefCnt.
7. Микроконтроллер считывает содержимое счетчиков FinCnt и FrefCnt, на основе этих значений вычисляется входная частота Fin = Fref * FinCnt / FrefCnt.

Как это переложить на таймеры STM32? Использование двух внешних триггеров и двух логических элементов 2И позволяет это реализовать на любом микроконтроллере, имеющем у двух таймеров режим счета внешних событий. А как без логики?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 16:30:12 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 4
Леонид Иванович, что случилось??? :))
То "HHIMERA гонит, не разобравшись в вопросе", то "Все равно ничего не выйдет", то "Понятно. Получается, Вы тоже не знаете, как реализовать этот метод измерения частоты на STM32", а теперь, вдруг...
Леонид Иванович писал(а):
поделитесь, как сделали?

Где логика??? :))


Как это всё работает...
Цитата:
Для Reciprocal Counting понадобится PWM input mode, PWM mode/One-pulse mode (Gate) и Slave timer in Gated mode... никаких прерываний...


PWM input mode
Нужен для определения длительности периода входного импульса (у меня на STM32F0xx это TIM2), померяли и запомнили...

Переводим таймер в режим
PWM mode/One-pulse mode (Gate)
На основе предыдущего измерения заносим в TIM2->ARR значение, которое бы в итоге давало импульс ~1сек. ...

Slave timer in Gated mode (у меня были TIM3 и TIM15 соединённые цепочкой и управляемые TIM2)
Здесь и производим подсчёт ref импульсов...

Получаем...
Fin = Fref * FinCnt / FrefCnt.
Fref известна изначально...
FinCnt - значение, которое занесли в TIM2->ARR (с учётом CCR1)...
FrefCnt - извлекаем из TIM3->CNT и TIM15->CNT по остановке/перезапуску TIM2...
Вуаля!!! :))
Итого: один 32-бит таймер и два 16-бит таймера...

Есть ещё вариант... основывается на том, что TIM2->ARR изначально задать по максимуму, запустить таймер, а по истечению 1сек. скорректировать TIM2->ARR "на лету" для завершения Gate... считать значение и т. д. ...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 17:42:25 
Мучитель микросхем

Карма: 16
Рейтинг сообщений: 35
Зарегистрирован: Ср окт 15, 2008 09:33:03
Сообщений: 476
Откуда: Воронеж
Рейтинг сообщения: 0
Спасибо за разъяснения.


Вернуться наверх
 
В продаже новые LED-драйверы XLC компании MEAN WELL с диммингом нового поколения

Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 18:20:20 
Открыл глаза
Аватар пользователя

Карма: 4
Рейтинг сообщений: 14
Зарегистрирован: Пн апр 06, 2009 18:32:14
Сообщений: 63
Рейтинг сообщения: 0
Цитата:
PWM input mode
Нужен для определения длительности периода входного импульса (у меня на STM32F0xx это TIM2), померяли и запомнили...

Переводим таймер в режим
PWM mode/One-pulse mode (Gate)
На основе предыдущего измерения заносим в TIM2->ARR значение, которое бы в итоге давало импульс ~1сек. ...


в этом месте по подробнее

можно ли не измерять, а сформировать GATE импульс с заданным количеством периодов частоты Fref, равный длительности измерения?

возможно чтоб длительность измерения была пропорциональна целому числу измеряемых периодов?
кривовато получается


Последний раз редактировалось vsky Пт ноя 30, 2012 18:36:41, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 18:34:20 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 1
Вы не поняли... :))
В Reciprocal Counting Gate это N-ое количество периодов измеряемого сигнала... а не Fref...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 18:39:01 
Открыл глаза
Аватар пользователя

Карма: 4
Рейтинг сообщений: 14
Зарегистрирован: Пн апр 06, 2009 18:32:14
Сообщений: 63
Рейтинг сообщения: 0
HHIMERA писал(а):
Вы не поняли... :))
В Reciprocal Counting Gate это N-ое количество периодов измеряемого сигнала... а не Fref...


у ЛИ пара N и M (количество периодов измеряемой и количество периодов опроной частоты) получаются одновременно


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 18:48:09 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 1
У ЛИ не STM32... :)))
Вы в состоянии отличить... метод измерения от реализации метода измерения??? :))

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 18:53:47 
Открыл глаза
Аватар пользователя

Карма: 4
Рейтинг сообщений: 14
Зарегистрирован: Пн апр 06, 2009 18:32:14
Сообщений: 63
Рейтинг сообщения: 0
HHIMERA писал(а):
У ЛИ не STM32... :)))
Вы в состоянии отличить... метод измерения от реализации метода измерения??? :))


а есть ли возможность в STM32 получить два независимых 32битных (24битных) счётчика с общим GATE?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 18:59:00 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Да...
Только в случае Reciprocal Counting это ничего не даст...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 19:02:17 
Открыл глаза
Аватар пользователя

Карма: 4
Рейтинг сообщений: 14
Зарегистрирован: Пн апр 06, 2009 18:32:14
Сообщений: 63
Рейтинг сообщения: 0
HHIMERA писал(а):
Да...
Только это ничего не даст...

GATE делать с наружи JK триггером


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 19:08:08 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 1
Да можно всё что угодно... :))
Здесь был вопрос... возможности реализации Reciprocal Counting на STM32... без внешних цепей и довесов и на минимуме таймеров... :))
"Всё, что не запаивается - дописывается программно!" (С)

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 19:37:34 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 1
vsky писал(а):
кривовато получается

Угу... как же!!! :)))
И попутно получаем измерение длительности и периода на низких частотах... бесплатно... :))
"Всё в одном флаконе и за те же деньги!" (С)

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пт ноя 30, 2012 22:56:42 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1030
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
HHIMERA писал(а):
Нужен для определения длительности периода входного импульса (у меня на STM32F0xx это TIM2), померяли и запомнили...


Оригинально.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Сб дек 01, 2012 13:59:40 
Открыл глаза
Аватар пользователя

Карма: 4
Рейтинг сообщений: 14
Зарегистрирован: Пн апр 06, 2009 18:32:14
Сообщений: 63
Рейтинг сообщения: 0
HHIMERA писал(а):
Да можно всё что угодно... :))
Здесь был вопрос... возможности реализации Reciprocal Counting на STM32... без внешних цепей и довесов и на минимуме таймеров... :))
"Всё, что не запаивается - дописывается программно!" (С)


А если допустить возможность использования пары...тройки внешних логических вентилей?
про минимум таймеров речи не было... :))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Сб дек 01, 2012 14:28:05 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
А с этим не ко мне...
С этим к ЛИ... он неоднократный чемпион по "Mein Hertz'у"... :))
А я тут... типа... "разрушитель легенд"... :)))
"Нельзя сделать Reciprocal Counting на STM32, ничего не получится"... можно!!! :)))

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пн дек 03, 2012 15:54:57 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
vsky писал(а):
А если допустить возможность использования пары...тройки внешних логических вентилей?
про минимум таймеров речи не было... :))

Вот скажите... зачем что-то навешивать... привычка??? Или обязательно "должно быть много деталей"???
Это же STM32!!! "Это же бубле-гум!!!" (С)
Включите воображение...
"Всё гениальное - просто!"(С)
"Просто добавь воды!" (С)
Цитата:
Есть ещё вариант... основывается на том, что TIM2->ARR изначально задать по максимуму, запустить таймер, а по истечению 1сек. скорректировать TIM2->ARR "на лету" для завершения Gate... считать значение и т. д. ...

Слегка подумав... модифицируем его...

Воркароунд...

Вариант 1

PWM mode/One-pulse mode (Gate)
Заносим в TIM2->ARR значение по максимуму...

Slave timer in Gated mode (у меня были TIM3 и TIM15 соединённые цепочкой и управляемые TIM2)
Здесь и производим подсчёт ref импульсов...

Возьмём ещё один таймер (TIM1), настроим как One-pulse mode на 0,5сек. и привяжем его к TIM2...
Запускаем TIM2, по прерыванию TIM1 (через 0,5сек.) считываем значение TIM2->CNT, умножаем на 2 (один сдвиг влево)
и заносим в TIM2->ARR (на лету)...
По окончанию Gate считаем по формуле и выводим... Всё!!!

Итого: один 32-бит таймер и три 16-бит таймера... никаких дополнительных внешних элементов и соединений...



Вариант 2

PWM mode/One-pulse mode (Gate)
Заносим в TIM2->ARR значение по максимуму...

Slave timer in Gated mode (у меня были TIM3 и TIM15 соединённые цепочкой и управляемые TIM2)
Здесь и производим подсчёт ref импульсов...

Запускаем TIM2... Внимание!!! Просто делаем задержку на 0,5сек. (можно даже программную!!!)...
считываем значение TIM2->CNT, умножаем на 2 (один сдвиг влево) и заносим в TIM2->ARR (на лету)...
По окончанию Gate считаем по формуле и выводим... Всё!!!

Итого: один 32-бит таймер и два 16-бит таймера... никаких дополнительных внешних элементов и соединений...

Оба варианта проверены и работают чудесно!!!
:))

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пн дек 03, 2012 19:37:51 
Мучитель микросхем

Карма: 16
Рейтинг сообщений: 35
Зарегистрирован: Ср окт 15, 2008 09:33:03
Сообщений: 476
Откуда: Воронеж
Рейтинг сообщения: 0
Можно добавить обработку прерываний переполнения и тогда можно вообще оставить только 2 таймера. На том же втором таймере формировать 0.5 секунд. Ну и задержку в 1,5-2 секунды от начала я бы тоже отслеживал в прерывании второго таймера. Это на случай, если сигнал снимут в 0,75 секунд что бы хоть как то завершить текущее измерение, а не зависнуть навечно.
Нет все таки нужен и третий таймер. Например системный. Вдруг сигнала совсем не будет. Нужно отследить, что за секунду или чуть больше пришел хотя бы один фронт сигнала. Иначе опять зависание навечно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пн дек 03, 2012 20:02:36 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1030
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
Galizin писал(а):
Можно добавить обработку прерываний переполнения и тогда можно вообще оставить только 2 таймера.


Вот я тоже в этом направлении думаю. Теоретически, нужен всего лишь небольшой таймер (8 - 16 бит), чтобы сделать поток прерываний более редким. Как для Fin, так и для Fref. В описанной реализации мне не очень нравится формирование интервала измерения через число периодов Fin. Пытался сделать через Output Compare (в начале интервала настраиваем на set, в конце - на clear), но пока ничего не получается.

Galizin писал(а):
Это на случай, если сигнал снимут в 0,75 секунд что бы хоть как то завершить текущее измерение, а не зависнуть навечно. ... Вдруг сигнала совсем не будет. Нужно отследить, что за секунду или чуть больше пришел хотя бы один фронт сигнала. Иначе опять зависание навечно.


Да, специальные ситуации в частотомере - это отдельная тема. У себя делал так: ожидание в течение измерительного интервала фронта входного сигнала. Если не приходит - частота = 0. Если пришел, начинаем счет. Если интервал закончился, а следующего фронта всё нет, ждем еще один интервал. Если не приходит - частота = 0. Ожидание еще одного интервала нужно для того, чтобы гарантированно обеспечить на интервале 1 с измерение сигнала 1 Гц.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 - частотомер.
СообщениеДобавлено: Пн дек 03, 2012 20:23:17 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
Galizin писал(а):
Можно добавить обработку прерываний переполнения и тогда можно вообще оставить только 2 таймера.
..........
...........
Нет все таки нужен и третий таймер. Например системный. Вдруг сигнала совсем не будет. Нужно отследить, что за секунду или чуть больше пришел хотя бы один фронт сигнала. Иначе опять зависание навечно.

Всё это... "тонкости конечной реализации"...
"Или нет?" (С)

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 144 ]    , , , , 5, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y