Logo

Цифровой индикатор количества топлива

dump_night_small

Решил сделать цифровой индикатор количества топлива на грузовой автомобиль (автобус), используя штатный (довольно посредственный) датчик уровня топлива...

Весь процесс создания и что из этого вышло читаем в статье далее.

Начальные условия:

  •  Грузовой автомобиль (автобус) с бортовым напряжением 24в
  • Топливный бак для дизельного топлива на 220л
  • Датчик уровня топлива ДУМП39
  • Указатель уровня топлива ЭИ8057М-3

Нужно:

Сделать цифровой указатель уровня топлива,  используя штатный датчик уровня.

Для начала придется тщательно изучить, что из себя представляет штатный датчик уровня топлива, именуемый ДУМП-39. Демонтируем его и внимательно рассматриваем.

Как и  следовало ожидать, имеется поплавок, тяга, переменный резистор... стоп, про переменный резистор подробнее. Как говорится, лучше один раз увидеть, чем сто раз услышать:
dump-39-1Конструкция одновременно и логична, и топорна. Логично то, что ползунок скользит не по непосредственно переменному сопротивлению (которое довольно нежное), а по металлическим отводам от него, но за такое повышение надёжности приходится платить дискретностью. Топорно в этой конструкции то, что, как видно на фото, в среднем положении поплавка мы имеем нехилую зону "нечувствительности", из-за очень уж широкого центрального отвода от сопротивления. Зачем это сделано, остаётся только догадываться, но что имеем, с тем и придётся работать.

Итак, роемся в инете и ищем инфу. Вот что я откопал:

Диапазон перемещения поплавка - 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 Ом.

график сопротивления датчика(по горизонтали - сопротивление в Омах, по вертикали условные единицы длины)

Ничего приятного в этой картине нет, датчик вродебы и линеен но имеет существенный излом.

С такой картиной  мы либо получим точность посередине, либо на концах ломаной, либо чтото среднее произведя аппроксимилацию:
dump02
 Получив формулу с поправкой и коэффициентом можно в принципе уже сделать нечто похожее на цифровой указатель уровня топлива, коэффициент R2  линии тренда в 0,97 конечно не плох, можно в принципе использовать всё что больше 0,95.

а можно получить для каждой прямой свой коэффициент пересчёта, что будет более точно:
Сразу замеряем значение АЦП в нужных нам точках чтобы 5% допуск на резисторы делителя на входе АЦП нам ничего не подпортили и получаем в диапазоне от пустого бака (ADC822) до 1\2 бака (ADC700):

график датчика от пустого бака до половины(по горизонтали полученные отсчёты АЦП, по вертикали объём топлива в литрах)

В диапазоне от 1\2 бака (ADC700) до полного (ADC456):
график датчика от 12 до полного бака Из вышеприведённого имеем следующее:

1. С увеличением кол-ва топлива сопротивление датчика уменьшается, и уменьшается падение напряжения на нём.

2. Дельта напряжения датчика составляет 1,45в, что при 10 битном АЦП составит 56% что более чем достаточно для масштабирования результата АЦП  в шкалу 0....220л и позволит обойтись просто оцифровыванием результата без использвания ОУ для подгонки под нужный диапазон напряжения.

Схема  проста до безобразия:
Схема
Микроконтроллёр Mega8, LED индикатор на 3 разряда с общим катодом, входной делитель из двух резисторов R1, R2. Стабилитрон (по буржуйски зенер "zener" диод :)) для защиты входа МК на всякий случай. Цепи питания я рисовать не стал, там классические 0,1мкф керамика и какой нибудь электролит на 100...1000мкФ как и гасящие резисторы между МК и индикатором, подойдут  любые в диапазоне  80...100Ом в зависимости от напряжения питания МК и яркости индикатора. Напряжение на борту автомобиля при заведённом двигателе составляло 27,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мя проводами-клеммами)  лишний пластик из корпуса удалили бокорезы.

Плата односторонняя, без перемычек:

dump_pcb_1Сначала распаял ШИМку и проверил работы, работает. покрыл лаком. можно продолжить сборку:
dump_pcb_3

dump_pcb_2 

dump_nightP.S.  Проект создан при огромной поддержке Романа Викторовича, за что ему огромное спасибо, также спасибо человеку Jonson из Украины за математическую помощь и некоторые идеи.

Вложения:
ФайлОписаниеРазмер файла:
Скачать этот файл (Digital_fuel.rar)Прошивка уровень топливаПрошивка для индикатора уровня топлива1 Кб
Обсудить эту статью на форуме (1 ответов).
Template Design © Joomla Templates | GavickPro. All rights reserved.