Требуется создать устройство для определения скорости детонации. На трубе будет установлено два Зонда, настроенных на регистрацию детонации . к ним подсоединено устройство №1, которое формирует П-образный сигнал. нормальное начальное состояние устройства 0. При прохождении ДВ сигнал становится 1. Далее При прохождении ДВ через второй датчик сигнал меняется на 0. Получаем П-образный сигнал с разрешением около 100 мкс.
К устройству №1 нужно подключить устройство №2, которое будет обрабатывать П-образный сигнал с устройства №1 и вычислять время прохождения волны.
Нужно создать устройство №2
Программа написана на Arduino IDE
по названию interrupt\_int0
.
Программа состояит из 2 подпрограмм:
-
setup
-- инициализация переменных, портов и дисплеев. -
loop
-- основная подпрограмма, которая работает в цикле. сигнал приходит на порт. Фиксируется начальное время в мкс. Далее в бесконечном цикле проверяется состояние порта. при обратном переходе на нулевое значение программа выходит из цикла, фиксирует второе время в мкс. проводится обработка временного периода$\Delta t$ . Устройство рассчитано на циклическую работу, поэтому для уменьшения колебаний значений периодов используем релаксационный фактор. Так наn
-ом цикле выводится время$T_{n} = 7/8 T_{n-1} + 1/8 T_{new}$ . На верхний дисплей выводятся$T_n // 1000$ мс , на нижний -- остаток в мкс,$T_n % 1000$ мкс. Затем следует задержка в 10 мс. Цикл повторяется.
Для выхода из бесконечного цикла можно добавить проверку на нажатие красной кнопки. это не займет много времени.