-
- Да, полезно, спасибо. Сумма должна быть именно по скользящему окну,
т.е. сумма скажем по последней секунде, верно? Т.е. должен быть
буфер со значениями и со скользящим окном? Ведь на входе может быть
не 50% меандр и набежит ошибка если использовать 1 переменную. - Mty1(30.12.2024 13:55)
- Скользящее окно вы имеете в виду промежуточные значения? Нет, не
обязательно. Сумма и так будет отображать среднее значение. Если
меандр не 50%, то сумма будет выше или ниже среднего, но все равно
попадать в окно значений для порогов отсечки сигнала. Аналогом
этого алгоритма можно считать дифференциальный дискриминатор. Если
среднее значение болтается между двумя порогами, то результат =
"норма", если же вылетает выше или ниже, то результат = "авария 1"
или = "авария reZident(156 знак., 30.12.2024 15:40, картинка)
- Спасибо за пояснения, уточню. Предположим у меня сумма uint8_t
summ=255, я каждую миллисекунду прибавляю или вычитаю по 1 не
выходя за пределы 0...255 Предположим у меня скважность меньше 50%
- сумма будет меняться (если построить график) как "треугольный"
сигнал 0..6 6...0 единиц каждые 12 мс. Если скважность больше 50% -
треугольный график поползет не спеша вверх, пока не упрется в 255
своей верхней частью. Где поймать пороги для детектирования я не
совсем понимаю? - Mty1(30.12.2024 17:47)
- Куда/почему поползет? Даже при 50% меандре у вас среднее будет
"болтаться" возле середины +/- 1 отсчет, т.к. период сигнала не
кратен периодичности отсчетов (12,5мс vs 1мс). Используйте уж тогда
знаковую арифметику для наглядности. Пороговыми значениями у вас
будут числа -10 и +10 (1,5 полупериода входного сигнала). А
предельными можно назначить, например, -19 и +19 (3 полупериода
входного сигнала). Если сумма в пределах +/-10, то сигнал есть,
если больше или меньше, то reZident(78 знак., 30.12.2024 18:45)
- Я имел в виду вот что. Предположим для простоты что период 12мс. Если скважность 50% (6мс+6мс)то все норм. А если сигнал 5мс=0 и 7мс=1 ? Сумма поползет вверх к значению 255, верно? - Mty1(31.12.2024 00:51)
- P.S. а, понял в чем загвоздка! При появлении сигнала (после того как он пропадал) нужно ограничить изменение суммы (только +1 или только -1) пока ее значение нуль не пересечет. - reZident(30.12.2024 18:56)
- Куда/почему поползет? Даже при 50% меандре у вас среднее будет
"болтаться" возле середины +/- 1 отсчет, т.к. период сигнала не
кратен периодичности отсчетов (12,5мс vs 1мс). Используйте уж тогда
знаковую арифметику для наглядности. Пороговыми значениями у вас
будут числа -10 и +10 (1,5 полупериода входного сигнала). А
предельными можно назначить, например, -19 и +19 (3 полупериода
входного сигнала). Если сумма в пределах +/-10, то сигнал есть,
если больше или меньше, то reZident(78 знак., 30.12.2024 18:45)
- Спасибо за пояснения, уточню. Предположим у меня сумма uint8_t
summ=255, я каждую миллисекунду прибавляю или вычитаю по 1 не
выходя за пределы 0...255 Предположим у меня скважность меньше 50%
- сумма будет меняться (если построить график) как "треугольный"
сигнал 0..6 6...0 единиц каждые 12 мс. Если скважность больше 50% -
треугольный график поползет не спеша вверх, пока не упрется в 255
своей верхней частью. Где поймать пороги для детектирования я не
совсем понимаю? - Mty1(30.12.2024 17:47)
- Скользящее окно вы имеете в виду промежуточные значения? Нет, не
обязательно. Сумма и так будет отображать среднее значение. Если
меандр не 50%, то сумма будет выше или ниже среднего, но все равно
попадать в окно значений для порогов отсечки сигнала. Аналогом
этого алгоритма можно считать дифференциальный дискриминатор. Если
среднее значение болтается между двумя порогами, то результат =
"норма", если же вылетает выше или ниже, то результат = "авария 1"
или = "авария reZident(156 знак., 30.12.2024 15:40, картинка)
- Да, полезно, спасибо. Сумма должна быть именно по скользящему окну,
т.е. сумма скажем по последней секунде, верно? Т.е. должен быть
буфер со значениями и со скользящим окном? Ведь на входе может быть
не 50% меандр и набежит ошибка если использовать 1 переменную. - Mty1(30.12.2024 13:55)