Измерение времени между импульсами

white46
Offline
Зарегистрирован: 14.02.2016

Здравствуйте. Подскажите, как можно измерить и вывести на экран время между исходящим и входящим импульсом на hc-sr04. Нужно для практического измерения скорости звука в жидкости.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

1. посадить входящий сигнал на прерывание

.2. одновременно с отправкой исходящего сигнала (как можно скорее, см. ремарку ниже) влючить таймер с делителем частоты 0

3. В момент прервания снять показания с таймера

4. из показаний таймера вычесть поправку (см. ниже) и результат раделить на 16.

Получите время в микросекундах.

Ремарка насчёт поправки. Вы должны очень аккуратно прописать место от отправки сигнала до включения таймера, желательно на ассемблере, чтобы можно было легко посчитать количество тактов процессора, которое там проходит (T1). Затем, к этому количеству прибавьте 4 (время срабатывания прерывания) и, наконец также аккуратно посчитайте сколько тактов проходит внутри обработчика прерывания до момента считывания значения таймера (включительно) (T2). Величина Т1+Т2+4 и будет поправкой, о которой идёт речь в п.4 выше.

 

a5021
Offline
Зарегистрирован: 07.07.2013

Можно довольно точно измерить время между двумя импульсами, если использовать таймер в режиме захвата (Input Capture). Погуглите, этот вопрос обсосан множеством источников. Метод удобен тем, что точность измерений в большинстве случаев не зависит от того, чем в это время занимается МК.