Судя по приведенному Вами графику, логика определения факта заправки совершенно прозрачна. Применение какого-либо сложного цифрового фильтра мне не кажется целесообразным. Логики if ((X[i] - X[i - 1]) > 30 ) вполне достаточно. Вот только мне непонятен выброс на Вашем рисунке левее первой заправки. Его надо отфильтровать. Надо бы разобраться с природой его возникновения. Что-то мне подсказывает, что он - это скорее помеха или какой-то глюк датчика уровня. Или, допустим, это резкое движение кузова вверх-вниз на лежачем полицейском или на яме на дороге. Тогда не проще ли делать измерения чаще, например раз в 10 секунд, а затем просто усреднить серию измерений за 1-5 минут. Тогда факт заправки можно будет определить с точность 1-5 минут. Вам же не нужна точность до 1 секунды ?

При этом проверять скачок на 30 литров надо будет усредненные значения, не соседние, а отстоящие друг от друга на 1 период усреднения, чтобы избежать попадания на саму заправку.
Сообщение отредактировал MSP430F - Nov 18 2015, 17:14