Официальный сайт компании Arduino по адресу arduino.cc
Измерение времени между импульсами
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 16/02/2016 - 16:27
Здравствуйте. Подскажите, как можно измерить и вывести на экран время между исходящим и входящим импульсом на hc-sr04. Нужно для практического измерения скорости звука в жидкости.
1. посадить входящий сигнал на прерывание
.2. одновременно с отправкой исходящего сигнала (как можно скорее, см. ремарку ниже) влючить таймер с делителем частоты 0
3. В момент прервания снять показания с таймера
4. из показаний таймера вычесть поправку (см. ниже) и результат раделить на 16.
Получите время в микросекундах.
Ремарка насчёт поправки. Вы должны очень аккуратно прописать место от отправки сигнала до включения таймера, желательно на ассемблере, чтобы можно было легко посчитать количество тактов процессора, которое там проходит (T1). Затем, к этому количеству прибавьте 4 (время срабатывания прерывания) и, наконец также аккуратно посчитайте сколько тактов проходит внутри обработчика прерывания до момента считывания значения таймера (включительно) (T2). Величина Т1+Т2+4 и будет поправкой, о которой идёт речь в п.4 выше.
Можно довольно точно измерить время между двумя импульсами, если использовать таймер в режиме захвата (Input Capture). Погуглите, этот вопрос обсосан множеством источников. Метод удобен тем, что точность измерений в большинстве случаев не зависит от того, чем в это время занимается МК.