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

Рейтинг пользователей: / 1
ХудшийЛучший 
Проекты - Электроника

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 Kb
 Обсудить на форуме (1 комментариев).

Добавить комментарий

Правила комментирования

Запрещается вводить оскорбительные тексты, использовать нецензурные выражения, публиковать экстремистские призывы, давать ссылки на сайты, не имеющие отношения к теме обсуждения. Все сообщения, нарушающие данные требования, будут удалены без уведомлений, а их авторы - заблокированы.
Незарегистрированные посетители не могут вводить ссылки, BB-коды и т.п., зарегистрированные - могут. Подробности о возможностях, доступных зарегистрированным посетителям, см. в разделе Помощь.


Защитный код
Обновить

Возможно, вас так же заинтересует:



Темы форума
Комментарии
Статистика
Просмотров:
mod_vvisit_counterСегодня8256
mod_vvisit_counterВчера3318
mod_vvisit_counterНа этой неделе46430
mod_vvisit_counterНа прошлой неделе40507
mod_vvisit_counterВ этом месяце175241
mod_vvisit_counterЗа все время11537462

Ваш IP: 54.224.4.231
 , 
27 Май. 2017