- Родительская категория: Проекты
- Категория: Электроника
- Автор: FurCat
- Просмотров: 33544
Цифровой индикатор количества топлива
Решил сделать цифровой индикатор количества топлива на грузовой автомобиль (автобус), используя штатный (довольно посредственный) датчик уровня топлива...
Весь процесс создания и что из этого вышло читаем в статье далее.
Начальные условия:
- Грузовой автомобиль (автобус) с бортовым напряжением 24в
- Топливный бак для дизельного топлива на 220л
- Датчик уровня топлива ДУМП39
- Указатель уровня топлива ЭИ8057М-3
Нужно:
Сделать цифровой указатель уровня топлива, используя штатный датчик уровня.
Для начала придется тщательно изучить, что из себя представляет штатный датчик уровня топлива, именуемый ДУМП-39. Демонтируем его и внимательно рассматриваем.
Как и следовало ожидать, имеется поплавок, тяга, переменный резистор... стоп, про переменный резистор подробнее. Как говорится, лучше один раз увидеть, чем сто раз услышать:
Конструкция одновременно и логична, и топорна. Логично то, что ползунок скользит не по непосредственно переменному сопротивлению (которое довольно нежное), а по металлическим отводам от него, но за такое повышение надёжности приходится платить дискретностью. Топорно в этой конструкции то, что, как видно на фото, в среднем положении поплавка мы имеем нехилую зону "нечувствительности", из-за очень уж широкого центрального отвода от сопротивления. Зачем это сделано, остаётся только догадываться, но что имеем, с тем и придётся работать.
Итак, роемся в инете и ищем инфу. Вот что я откопал:
Диапазон перемещения поплавка - 412мм
Номинальное сопротивление - 800 Ом (по другому источнику номинальное сопротивление - 761,0 – 193,5 Ом)
Рабочий диапазон от -40°С до +60°С
Наработка на отказ - 400тыс. км до 95% ушатывания ресурса
Масса 160 грамм, аналог - МАЗ.
В общем-то не густо.
Берём тестер и замеряем, в итоге получачается такая картина:
Схема включения:
Измеренные параметры датчика:
Полное сопротивление - 767 Ом
Дополнительное сопротивление - 187 Ом (оно обеспечивает минимальное сопротивление датчика).
Левая (по фото) часть сопротивления - 203 Ом (13 отводов на ползунок), правая часть Ом 376(17 отводов на ползунок).
Два металлических сектора выше контактной группы - левый сектор не используется, правый идёт на лампу резеврного остатка топлива.
В общем-то такое подробное описание привожу только для любопытствующих, нам же нужно значение напряжения, которое мы имеем на выходном контакте при различном уровне топлива. При крайнем левом положении контакта на выходе у нас получилось 1,57в, при крайнем правом положении 3,28в, половина бака - 2,44в. В начале сектора включения лампы остатка резерва 2,95в.
Ещё для любопытных. Общая схема подключения датчика уровня топлива выглядит примерно так:
Катушки L1A, L1B, L2 - это отклоняющая система указателя уровня топлива (по сути миллиамперметр) Резистор - термоконпенсационный.
На самом деле это схема классического электромагнитного автомобильного прибора, а конкретно ЭИ8057М-3 - это уже нечто другое: внутри расположена электронная схема, стрелка приводится в движение шаговым электродвигателем, и управляется всё это при помощи микроконтроллёра PIC.
В принципе, этого достаточно для тарировки цифрового указателя, если бы не парочка неприятностей:
1. Указанный объём топливного бака в 220л не соответствует действительности, на самом деле в баке помещается больше топлива.
2. При крайнем правом положении подвижного контакта датчика, когда в баке якобы уже нет топлива, на самом деле поплавок уже должен находится ниже уровня бака, что конечно же глупость (определено геометрией бака и датчика уровня топлива.
3. Измерив рулеткой геометрию бака, убеждаемся, что это прямоугольный параллелепипед с незначительно закруглёнными длинными гранями, размеры 40х112х60 см. Соответственно перемножив стороны, получаем внутренний объём в 268л, что, согласитесь, сильно отличается от заявленных 220 л, и очень сомнительно, что внутренние перегородки, сетка, топливозаборник, и тп. занимают аж почти 50 л.
4. Как уже написано выше, сопротивление датчика на протяжении длины его сопротивления нелинейно.
Что делаем:
Заливаем полный бак и контролируем напряжение на выходе ДУТ. Получается, что после достижения отметки 1,57в в бак ещё входит добрых двадцать литров топлива.
Снимаем поплавок и ставим датчик на место. Естественно тяга, лишённая поплавка, уходит на самое дно бака, смотрим напряжение - оно составляет 3,02в ! Это важно, т.к. фактически при таком положении в баке уже нет топлива, а подвижный контакт ещё не дошёл до крайнего положения в 3,28в, при этом штатный прибор ЭИ8057М-3 показывает что в баке осталось ещё 1/8 объема. (Поставив поплавок в центральное положение, на штатном ЭИ8057М-3 наблюдаем вместо положенных 1/2 бака аж 5/8 уровня, при полном баке штатный прибор зашкаливает).
Смотрим на график нашего датчика уровня топлива,
Возмём три точки - сопротивления датчика, первая точка это его наименьшее сопротивление (подвижный контакт слева) образованное дополнительным сопротивлением в 187 Ом (на фото вертикальный чёрный прямоугольник), вторая точка при среднем положении контакта когда последовательно включены 187 Ом и 203 Ом, т.е. 390 Ом, полное сопротивление соответственно будет 390 + 376 = 766 Ом.
(по горизонтали - сопротивление в Омах, по вертикали условные единицы длины)
Ничего приятного в этой картине нет, датчик вродебы и линеен но имеет существенный излом.
С такой картиной мы либо получим точность посередине, либо на концах ломаной, либо чтото среднее произведя аппроксимилацию:
Получив формулу с поправкой и коэффициентом можно в принципе уже сделать нечто похожее на цифровой указатель уровня топлива, коэффициент R2 линии тренда в 0,97 конечно не плох, можно в принципе использовать всё что больше 0,95.
а можно получить для каждой прямой свой коэффициент пересчёта, что будет более точно:
Сразу замеряем значение АЦП в нужных нам точках чтобы 5% допуск на резисторы делителя на входе АЦП нам ничего не подпортили и получаем в диапазоне от пустого бака (ADC822) до 1\2 бака (ADC700):
(по горизонтали полученные отсчёты АЦП, по вертикали объём топлива в литрах)
В диапазоне от 1\2 бака (ADC700) до полного (ADC456):
Из вышеприведённого имеем следующее:
1. С увеличением кол-ва топлива сопротивление датчика уменьшается, и уменьшается падение напряжения на нём.
2. Дельта напряжения датчика составляет 1,45в, что при 10 битном АЦП составит 56% что более чем достаточно для масштабирования результата АЦП в шкалу 0....220л и позволит обойтись просто оцифровыванием результата без использвания ОУ для подгонки под нужный диапазон напряжения.
Схема проста до безобразия:
Микроконтроллёр Mega8, LED индикатор на 3 разряда с общим катодом, входной делитель из двух резисторов R1, R2. Стабилитрон (по буржуйски зенер "zener" диод :)) для защиты входа МК на всякий случай. Цепи питания я рисовать не стал, там классические 0,1мкф керамика и какой нибудь электролит на 100...1000мкФ как и гасящие резисторы между МК и индикатором, подойдут любые в диапазоне 80...100Ом в зависимости от напряжения питания МК и яркости индикатора. Напряжение на борту автомобиля при заведённом двигателе составляло 27,5в.
Мой вариант разводки платы:
Справа на плате я расположил преобразователь питания обеспечивающий 5в при бортовом напряжении 10...30в преобразователь собран на МС34063 по типовое схеме из даташита. дроссель murata 1812. Указанный на схеме стабилитрон на 3,3в я профукал при разводке и допаивал сверху.
Почему я применил Mega8 когда есть куда более удобная Tiny26 и тп. ? потому что у Mega8 имеется 1кБ оперативки, зачем столько ? микроконтроллёр не просто замеряет напряжение на входе и выводит на индикатор пересчитанное значение, он постоянно записывает замерянные значения в одну из 256 ячеек памяти, заполняя их по замкнутому кругу и после записи каждой ячейки производит расчёт усреднённого значения по всем имеющимся в текущий момент 256 ячейкам.
Индикатор распологается вне платы на приборной панели автомобиля и соединяется с ним 11 жильным шлейфом. Плата помещается в крохотный корпус http://www.simple-devices.ru/utils/15-utilites/149-2012-09-01-19-35-34 (второй, тот что с 4мя проводами-клеммами) лишний пластик из корпуса удалили бокорезы.
Плата односторонняя, без перемычек:
Сначала распаял ШИМку и проверил работы, работает. покрыл лаком. можно продолжить сборку:
P.S. Проект создан при огромной поддержке Романа Викторовича, за что ему огромное спасибо, также спасибо человеку Jonson из Украины за математическую помощь и некоторые идеи.