Omtom_1000
|
|
1 | |
Помогите настроить таймер на измерение длительности импульса06.09.2012, 11:40. Показов 12096. Ответов 14
Метки нет (Все метки)
"тема по" HC-SR04 Ultrasonic Sensor Dystance Measuring Module. Хочу сделать на его основе бесконтактный датчик уровня воды в ёмкости. Помогите настроить таймер для измерения длительности импульса?
|
06.09.2012, 11:40 | |
Ответы с готовыми решениями:
14
Измерение длительности импульса на цифровых микросхемах Регулятор длительности импульса Ограничитель длительности импульса Нормирование длительности импульса на АГ3 |
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
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
Код
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); Код
int16_t delta = TIM_GetCounter(TIM3); TIM_SetCounter(TIM3, 0);
0
|
0 / 0 / 0
Регистрация: 12.10.2014
Сообщений: 164
|
|
15.05.2016, 13:10 | 15 |
Сообщение от Omton_1000
100% рабочая с дисплеем на STM32 будет все тоже самое только вместо INT -> EXTI а с таймерами там ничего сложного нету :) [32.38 Кб]
0
|
15.05.2016, 13:10 | |
15.05.2016, 13:10 | |
Помогаю со студенческими работами здесь
15
Вычисление длительности импульса на МК AT90S2313 Простейший измеритель длительности импульса. не работает Определение длительности импульса и вывод на индикатор Измерение длительности операции Помогите настроить таймер ATMega328P. Измерение длительности импульсов Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |