Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/62: Рейтинг темы: голосов - 62, средняя оценка - 5.00
Omtom_1000
1

Помогите настроить таймер на измерение длительности импульса

06.09.2012, 11:40. Показов 12096. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
"тема по" HC-SR04 Ultrasonic Sensor Dystance Measuring Module. Хочу сделать на его основе бесконтактный датчик уровня воды в ёмкости. Помогите настроить таймер для измерения длительности импульса?
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2012, 11:40
Ответы с готовыми решениями:

Измерение длительности импульса на цифровых микросхемах
Ссылки,литература приветствуется.

Регулятор длительности импульса
Есть игрушечный пистолет, стреляющий лазерным лучом (как в указке). Использую для тренировок по...

Ограничитель длительности импульса
Может у кого имеются наработки ограничения длительности импульса с выхода МК на силовые ключи?...

Нормирование длительности импульса на АГ3
в схеме нужно нормировать длительность запускающего импульса + дополнительно запускающие импульсы...

14
0 / 0 / 0
Регистрация: 21.04.2010
Сообщений: 1,890
06.09.2012, 12:32 2
А в чем вопрос? Время задержки отклика знаешь, частоту таймера знаешь, вот и считай.
0
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 90
06.09.2012, 12:52 3
Цитата Сообщение от Omton_1000
Помогите настроить таймер
где?
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
06.09.2012, 13:00 4
очевидно ведь. бытовой таймер. на кухне. :))))))))))))))))))))
0
Omtom_1000
06.09.2012, 13:13 5
Я думаю, если топик про СТМ32, то наверно в СТМ32Ф100 (на Дискаквери) хочу настроить таймер на измерение длительности импульса.
В настройках таймера есть режим захвата, который работает только либо по спаду импульса, либо только по возрастанию. Это позволяет измерять период сигнала. А вот чтоб настроить режим захвата на прерывания по спаду И по возрастанию не знаю как сделать.
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
06.09.2012, 13:15 6
а ничего, что стм32 - это название семейства контроллеров? причем не маленького такого...
0
0 / 0 / 0
Регистрация: 31.08.2010
Сообщений: 550
06.09.2012, 14:21 7
вот пример на восьмушке, но суть одна
http://zibtog.ru/2011/07/31/rabotaem-s-ik-pultom/
0
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 598
06.09.2012, 14:32 8
Цитата Сообщение от tid_fom
а ничего, что стм32 - это название семейства контроллеров? причем не маленького такого...
а ничего, что между большей частью этих контроллеров код совершенно без проблем переносится, а даже если нет, то принцип работы от семейства контроллеров вообще не зависит? убивает эта манера на русскоязычных форумах выставлять себя д"Артаньяном, который с пеленок на асме программировал
0
0 / 0 / 0
Регистрация: 18.04.2010
Сообщений: 598
06.09.2012, 14:40 9
общий принцип состоит в следующем: выход датчика подключаем к ноге, на которой доступно внешнее прерывание. Настраиваем контроллер прерываний на реакцию по изменению лог. уровня (по восходящему или нисходящему фронту - зависит от полярности импульса). В обработчике прерывания запускаем таймер на счет от внутренней частоты, частота (предделитель) выбирается таким образом, чтобыза самый короткий возможный импульс было хотя-бы несколько отсчетов, а на самом длинном не было переполнения счетного регистра таймера. В целом, чем больше частота, тем больше точность, а с переполнениями тоже можно жить, но тогда нужно будет обрабатывает еще прерывание по переполнению таймера. Так вот, в прерывании от ножки входа тайймер запускаем, а само внешнее прерывание перенастраиваем на противоположный фронт. После того, как внешнее прерывание срабатывает второй раз, останавливаем таймер и смотрим, сколько он натикал, из этого, зная частоту счета, определяем длительность. По нескольким импульсам усредняем.
0
0 / 0 / 0
Регистрация: 21.10.2011
Сообщений: 1,860
06.09.2012, 14:43 10
а ничего, что задающий подобные вопросы совершенно очевидно демонстрирует уровень вопрошающего. и, скажем, даже регистр или слегка иное название его заведет в тупик? а указав целевой кристалл больше шансов на получение готового куска, который можно прям копипастой опробовать.
0
Omtom_1000
06.09.2012, 17:35 11
Оказывается в файлах стандартной библиотеки есть пример PWM INPUT. AN2581. Будемс разбаратся.
pshomyo
21.04.2016, 23:32 12
Ребята - нужна помощь плиз, делаю велоспидометр stm32F103 + энкодер 100 импульсов/за оборот (5в, земля, и 1 провод выход) частота с энкодера (мерил частотомером) при нормальной езде 4.5 кГц при более быстрой 10кГц за основу брал готовый частотомер
http://we.iosyitistromyss.ru/S... 2f10x.html
пока едешь считает, но не км/час а просто импульсы а когда останавливаешься показания то в 0 то в зашкал я так понимаю что надо каждый раз перенастраивать захват фронт или спад смотря как остановился энкодер. хотелось бы добиться что бы с 0 работало до 10кГц а там уже думаю смогу перевести в км/час и пройденное расстояние.
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,113
21.04.2016, 23:41 13
Если "частотомер" возвращает число, близкое к 0, либо очень-очень большое (дребезг), то _в_программе_ считайте это состояние = 0 скорости.
Делается это с помощью одного оператора if. Не надо трогать энкодер, если в остальном программа работает.
0
0 / 0 / 0
Регистрация: 10.08.2012
Сообщений: 49
15.05.2016, 10:04 14
Цитата Сообщение от pshomyo
Ребята - нужна помощь плиз, делаю велоспидометр stm32F103 + энкодер 100 импульсов/за оборот (5в, земля, и 1 провод выход) частота с энкодера (мерил частотомером) при нормальной езде 4.5 кГц при более быстрой 10кГц за основу брал готовый частотомер
http://we.iosyitistromyss.ru/S... 2f10x.html
пока едешь считает, но не км/час а просто импульсы а когда останавливаешься показания то в 0 то в зашкал я так понимаю что надо каждый раз перенастраивать захват фронт или спад смотря как остановился энкодер. хотелось бы добиться что бы с 0 работало до 10кГц а там уже думаю смогу перевести в км/час и пройденное расстояние.
Если у вас обычный инкрементальный энкодер подрубите его к ногам таймера и врубите таймер в режиме обработки энкодера:
Код
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

/* Разрешаем счёт в обе стороны*/
TIM_TimeBaseInitTypeDef timer_base;
TIM_TimeBaseStructInit(&timer_base);
timer_base.TIM_Period = encoder->period;
timer_base.TIM_CounterMode = TIM_CounterMode_Down | TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM3, &timer_base);

TIM_SetCounter(TIM3, 0);

/* Считать будем все переходы лог. уровня с обоих каналов */
TIM_EncoderInterfosiConfig(TIM3, TIM_EncoderMode_TI12, TIM_ICPolarity_BothEdge, TIM_ICPolarity_BothEdge);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM3, ENABLE);
теперь с постоянной частотой (зависящей от того как быстро у вас энкодер щёлкает, что бы 16-битный счётчик таймера не переполнился) считываем счётчик используемого таймера и обнуляем его
Код
    int16_t delta = TIM_GetCounter(TIM3);
TIM_SetCounter(TIM3, 0);
теперь у нас есть время (период считывания счётчика) и расстояние пройденое за это время (delta). Найти частоту вращения не составит труда.
0
0 / 0 / 0
Регистрация: 12.10.2014
Сообщений: 164
15.05.2016, 13:10 15
Цитата Сообщение от Omton_1000
"тема по" HC-SR04 Ultrasonic Sensor Dystance Measuring Module. Хочу сделать на его основе бесконтактный датчик уровня воды в ёмкости. Помогите настроить таймер для измерения длительности импульса?
чувак, у меня правда на АВР, давно делал, но межет поможет :)
100% рабочая с дисплеем
на STM32 будет все тоже самое только вместо INT -> EXTI а с таймерами там ничего сложного нету :)

[32.38 Кб]
0
15.05.2016, 13:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.05.2016, 13:10
Помогаю со студенческими работами здесь

Вычисление длительности импульса на МК AT90S2313
Вроде настроила PD6 на вход, обозначила обработчик прерываний, настроила TCCR1B ( бит ICES1, и...

Простейший измеритель длительности импульса. не работает
Здравствуйте. Ниже очень простой код определения длительности импульса, который почему-то не...

Определение длительности импульса и вывод на индикатор
Нужно устройство, которое измеряет время между срабатываниями двух датчиков. Начал с устройства...

Измерение длительности операции
Доброго времени суток! Есть программка для измерения длительности цикла с определенным количеством...

Помогите настроить таймер
Всем привет Нужно настроить таймер чтобы он отсчитывал 40 мкс Работаю с stm32f407vg Пишу в...

ATMega328P. Измерение длительности импульсов
Добрый день, уважаемые форумчане! То ли ввиду моей неопытности в написании программ для МК, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru