Опрос дискретного датчика уровня
-
Andrey_RTF
- Встал на лапы
- Сообщения: 148
- Зарегистрирован: Вс дек 20, 2009 12:02:33
Опрос дискретного датчика уровня
Приветсвую всех. Столкнулся с проблемой - имеется устройство отслеживающее многие параметры автомобиля одним из которых является уровень масла в картере двигателя который отслеживается с помощью дикретного датчика уровня, так вот собственно в чем проблема - когда заводится двигатель большая часть масла расходится по техническим магистралям двигателя, но в поддоне остается еще немного масла, при этом, если машина стоит на ровной поверхности то датчик уровня находится еще в допустимом положении. Стоит только заехать на какой нибудь небольшой бугорок, срабатывает датчик и устройство сигнализирует о недостаточном уровне масла, хотя по тех. параметрам, масла в двигателе залито норма. Так вот вопрос как избавиться от "ложных" срабатываний - увеличивать интервал между опросами датчиков. Для полной картины - машина ВАЗ 2114, датчик уровня масла - дискретного типа геркон + магнит на поплавке, в данный момент датчики опрашиваются 10 раз в секунду, остальные датчики уровней (охл. жидкость и омывающая жидкость, тормозная жидкость) работают отлично, проблема возникла только с датчиком уровня масла.
Re: Опрос дискретного датчика уровня
Один из вариантов - попробовать "скрестить" его с датчиком давления масла. Когда реально масла мало, то и давление падает. Но тогда нужно менять датчик давления на что-то, что его реально измеряет, а не указывает на факт наличия.
Re: Опрос дискретного датчика уровня
Может стоить попробовать поставить датчик наклона? Самый простой, в котором просто шарик бегает и замыкает контакты или пузырек в трубке плавает... И поставить условие: если начальный уровень масла нормальный и пошел наклон - то все хорошо
-
Andrey_RTF
- Встал на лапы
- Сообщения: 148
- Зарегистрирован: Вс дек 20, 2009 12:02:33
Re: Опрос дискретного датчика уровня
Мне тут подсказали другой способ - сделать своего рода программную фильтрацию, но опять же от этого упадет оперативность, но это уже не столь важно. Заключается эта фильтрация в следующем - несколько раз опрашивать датчик (сколько конкретно нужно будет устанавливать опытным путем) и если допустим за 10 опросов он показал 1 то значит уровень действительно упал, лучше напишу приблизительный код, так будет понятнее
Пока нет возможности опробовать данный способ, как думаете - вариан рабочий?
Код: Выделить всё
(переменные и названия портов условны)
//тело обработчика прерывания по таймеру (опрос 10 раз в секунду)//
if(PIND.1==1) // опрашиваем датчик
{
c++; // инкрементируем переменную "С"
if(c==50) // если в течение 5 сек состояние датчико было равно 1 (врямя цикла опроса нужно подбирать экспериментально)
{
status=1; // то уровень низкий
с=0; // обнуляем переменную для следуюшего цикла опроса
}
}
else
{
status=0; // иначе, если хотя бы один раз датчик перешел в нулевое состояние, то уровень в норме (таким образом мы убираем срабатывание усройства при кратковременных перекосах автомобиля)
c=0; //обнуляем переменную для следуюшего цикла опроса
}
Пока нет возможности опробовать данный способ, как думаете - вариан рабочий?
Re: Опрос дискретного датчика уровня
Я думаю такое возможно организовать. Если не ошибаюсь, то надо применять медианный фильтр. Но тут надо делать выборку и следовательно выйдет что результат будет с неким запаздыванием. Выглядит это где -то так: есть выборка из N элементов, берем первые М из них(это окно, размер которого берем, скорее всего, экспериментально). Эти М элементов сортируем по возрастанию и берем медиану из этого массива. Далее передвигаем окно на один элемент вправо и проделываем операцию по новой. Такой фильтр весьма не плохо фильтрует импульсные помехи. Главное правильно подобрать размер окна и частоту опроса датчика...
(Но лучше посмотреть по фильтру в википедии)
(Но лучше посмотреть по фильтру в википедии)
-
Andrey_RTF
- Встал на лапы
- Сообщения: 148
- Зарегистрирован: Вс дек 20, 2009 12:02:33
Re: Опрос дискретного датчика уровня
ну это практически то же самое, что янаписал выше