Емкостной датчик уровня топлива
Емкостной датчик — это такой вид датчиков, в которых для измерения уровня жидкости не используют механические элементы (поплавка нет!). Измеряется даже не сама жидкость, а диэлектрическая проницаемость вещества между электродами, которая прямо пропорциональна количеству жидкости между ними (или не очень прямо, в физику углубляться не будем).
Без поплавка? Как это возможно?
Вместо поплавка ставим две трубки (одна в одной, так чтобы они не прикасались друг к другу) — получается конденсатор, который меняет свою емкость в зависимости от количества изолятора между его пластинами. В качестве изолятора выступает бензин.
Контроллер проводит измерения и превращает результаты измерения в показатели стрелки. (Своего рода тестер, но с одной функцией — измерение емкости конденсатора).
Общая информация
Емкостные датчики изготавливаются серийно на любую длину (допускается обрезка датчика пилой до 30% от длины). Цена от 350 грн. Есть модели для стрелки, есть модели для подключения к КАН линии (для авто в который является центральный компьютер). Но данные датчики требуют подтянуть к ним 12 вольт и не имеют выхода на лампочку. (Ну по крайней мере я таких не встречал). Поэтому я, имея в запасе базовое понятие в программировании и принципе работы датчика, решил сделать свою модификацию.
О принципе работы
Зайду из далека … По сути датчик — это две трубки — одна меньшего диаметра, вторая большего диаметра. Если этих двух трубки запихнуть друг в друга так, чтобы они не касались друг друга — то получится конденсатор. Конденсатор — это такая штука которая умеет накапливать электрический заряд (своего рода батарейка, но очень малой емкости). И как любая батарейка накопления заряда занимает определенный промежуток времени. То есть если на тех две трубки подать 1 Вольт — это то вольт на трубках начнет накапливаться (сначала там будет 0,01В, затем 0,02В … до 1В). Измерив время накопления того вольта на стенках трубок можно вычислить их емкость. Формулы пропускают … 🙂
Возникает вопрос, как измерить тем конденсатором уровень бензина? Очень просто! Все знают, что воздух ток не проводит. Но на самом деле это не так. Оно проводит, но очень плохо. Так же бензин — ток не проводит. То есть проводит, но тоже очень плохо. Однако чуть лучше чем воздух.
К чему это я … То есть, когда мы те трубки заряжаем — то часть заряда убегает через воздух. И мы на заряд тратим больше времени.
Когда же трубки погрузить в бензин — на их заряд — надо еще больше времени (бензин проводит ток лучше). Причем чем больше мы их в бензин окунаем, тем больше времени нужно на то, чтобы их зарядить.
А дальше все просто. Задача контроллера — измерить это время и превратить его в показания стрелки.
На практике разница во времени заряда трубок на воздухе и в бензине очень мала — меньше миллисекунды. Точно не скажу, ибо без опыта расчетов под рукой. Но для микроконтроллера, который выполняет 8000000 операций в секунду — это очень большой промежуток времени, и он может различить более 200 значений этой разницы. 40л / 200 = 200 грамм. НЕ точность аптекаря, но для ориентировки в запасе бензина вполне достаточно.
Ну и теперь непосредственно о самом приборе.
Как видно из схемы — основой является контроллер Atmega8 и таймер NE555 (подключен по схеме мультивибратора). В качестве конденсатора, который задает частоту таймера — выступает зонд. Строение зонда очень просто. Это по сути есть две трубки с любого металла, расположенных друг в друге (я использовал два фотобарабана от картриджей лазерного принтера). Данный зонд находится в середине бака. И в зависимости от количества бензина — меняет свою емкость. Изменение емкости — меняет исходную частоту таймера. Контроллер измеряет частоту и с помощью ШИМ — формирует сигнал для приборной панели.
Для датчика нужно дополнительного питания. Он питается от тока, проходящего через лампу «аварийного запаса бензина». Ток, потребляемый — недостаточный для того, чтобы лампочка светила, однако, когда уровень бензина снижается ниже отметки 5% — контроллер создает дополнительную нагрузку (замыкая вход LAMP на минус с работодателем ШИМ сигнала с скважностью 20%) и лампочка загорается. В период свечения лампочки — контроллер питается от тока, накопленного на конденсаторе C2, а диод не позволяет ему разрядиться через нагрузочный транзистор. Полевые транзисторы установил те, которые были под рукой. В принципе — подойдут любые, которые могут выдержать ток больше 500мА (если в приборной панели стоит 5 ваттная лампочка).
Подключение
В 90% автомобилей — датчик топлива выполнен однотипно (в виде потенциометра, к которому подведено три проводника «-«, вход стрелки, вход лампочки). Так же подключается и этот датчик через разъем J2.
Назначение выходов разъема J2:
- GND;
- Вишид указателя стрелки;
- Выход лампы аварийного запаса топлива.
Источник
Емкостной датчик уровня топлива на ATMega8A
Знать уровень топлива в баке не только «прикольно», но иногда жизненно необходимо. В некоторых случаях затруднительно оценить уровень топлива в баке из-за его расположения или недостаточной прозрачности. Для таких случаев и существуют датчики уровня топлива. На сегодняшний день наиболее распространены поплавковые датчики. Принцип работы таких датчиков достаточно прост. Поплавковый механизм в зависимости от уровня топлива в баке изменяет положение подвижного контакта потенциометра. Показание напряжения на потенциометре измеряются и преобразуются в человекочитаемый вид. Однако не всегда имеется возможность установить поплавковый датчик из-за его габаритов. Кроме того, в аппаратах, где крен является нормальным состоянием, например, сверхлегкие летательные аппараты, возможен перекос и подклинивание поплавкового механизма. Кроме того, положение бака в наземном и полетном положении может отличаться, что может внести изменения в работу поплавкового механизма. Однако существуют и другие способы измерения уровня топлива. Я говорю о емкостном датчике топлива. Он особо актуален, если существует необходимость избавится от подвижных частей.
Принцип измерения и особенности
Этот способ основан на измерении электрической емкости датчика, которая, в свою очередь, зависит от уровня топлива. Датчик, с помощью которого измеряется уровень топлива, называют емкостным датчиком уровня топлива. Конструкция датчика достаточно проста и представляет собой не что иное, как конденсатор. Он состоит из двух обкладок, между которыми существует зазор, который может заполнять топливо. Исполнение датчика может быть в виде двух металлических пластин или вставленных одна в другую трубок. При этом поверхности двух электродов (обкладок конденсатора) не должны иметь электрического контакта, а промежуток между обкладками должен свободно заполняться топливом при погружении датчика и так же свободно освобождаться при уменьшении уровня топлива. Поскольку топливо заполняет пространство между обкладками конденсатора (датчика), его емкость изменяется. Этот способ подходит только для жидкостей, не проводящих электрический ток. Таким способом не получится измерить уровень воды. Бензин и другие виды жидкого топлива электрический ток не проводят. Измеряя электрическую емкость датчика можно оценить уровень топлива в баке. Хотелось бы обратить внимание на некоторые недостатки такого способа измерения. Дело в том, что диэлектрические свойства топлива могут изменяться при изменении химического состава топлива. Т.е. при смене типа топлива, возможно, придется калибровать прибор. Не смотря на это, такой способ позволяет устанавливать датчик в баке под углом, или даже монтировать в крышку заливной горловины бака. Датчик не имеет подвижных частей, что в некоторых случаях крайне необходимо.
Насколько безопасно помещать электрическую схему в бак? Многих беспокоит этот вопрос. А вдруг искра? Наша схема датчика питается напряжением 5В, а датчик заряжается через резистор в несколько мегаом. В этих условиях образование искры невозможно. Напряжение в 5В ничтожно мало для возникновения искры пробоя. Кроме того, в баке любого автомобиля уже «плавает» электрический датчик уровня топлива. Низкие напряжения и токи не могут вызвать искру и возгорание топлива.
Я не ставил перед собой задачу получить супер точный датчик, способный измерить уровня топлива в 1мм и погрешностью в 0,1%, хотя это вполне возможно. Учитывая, что датчик создавался для аппаратов, где топливо в баке будет подвижно, нас вполне устроит бюджетный вариант с погрешностью в 5%.
Немного о конструктивных особенностях. Для уменьшения паразитных емкостей измерительная схема должна находиться в непосредственной близости от датчика. Не допускается подключение датчика к измерительной схеме с помощью проводов более 20 мм. Другими словами измерительная схема должна быть на датчике, датчик в баке, в то время, как дисплей должен находиться возле человека на некотором расстоянии от бака. Поэтому, конструктивно схема измерения уровня топлива разделена на два модуля — модуль емкостного датчика топлива и модуль отображения. Эти два модуля связаны между собой тремя проводами по двум из них подается питание к модулю датчика, по третьему — от модуля датчика передаются данные в цифровом виде к модулю отображения. Это позволило решить вопрос с передачей данных на несколько метров, и дает возможность конструктивно изменять модуль отображения. При этом схему модуля датчика модифицировать не придется.
Схема модуля датчика и модуля отображения
Схема модуля датчика основана на измерении времени заряда датчика. Чем выше уровень топлива, тем выше емкость датчика, тем больше времени потребуется для заряда датчика (конденсатора). Работает схема следующим образом. Используется встроенный в микроконтроллер ATMega8A аналоговый компаратор. На вход компаратора PD7 подается половина напряжения питания через резистивный делитель R3,R4. В момент, когда датчик зарядится до этого напряжения, сработает компаратор. На ноге PD6 устанавливается логический «0». Датчик разряжается через резистор R2. После чего выход PD6 переключается и работает как вход компаратора, запускается таймер, а датчик начинает заряжаться через резистор R1. При достижении напряжения установленного на входе PD7, срабатывает компаратор, таймер останавливается. Показания таймера используются для вычислений. Для обеспечения стабильности микроконтроллер должен тактироваться кварцем. Чем больше частота, на которой работает контроллер, тем выше точность измерения. В нашей схеме ATMega8A тактируется кварцем 16Мгц. Измерения выполняются постоянно, усредняются и один раз в секунду отправляются по последовательному порту UART на скорости 9600 в виде числового значения. На этом функции модуля датчика и заканчиваются.
В качестве датчика я использовал две полоски из фольгированного текстолита толщиной 1.5мм размерами: 290×20 мм. Полоски склеены между собой фольга к фольге через небольшие непроводящие прокладки. Расстояние между пластинами 1.5 мм. Их можно делать практически любой длины. При необходимости можно обрезать. Особо важно обеспечить равномерный зазор между пластинами по всей длине «конденсатора» .
Отображением полученных от модуля емкостного датчика данных занимается модуль отображения. Этот модуль можно спроектировать в соответствии с Вашими требованиями. Данные можно выводить на светодиодную линейку, на дисплей, как в нашем случае, на стрелочный индикатор или любое другое устройство отображения. При необходимости модуль датчика можно подключить к компьютеру через такой переходник.
Модуль отображения работает следующим образом. Данные в числовом виде принимаются от модуля датчика по порту UART на скорости 9600, рассчитываются показания уровня топлива и выводятся на дисплей. Но для того, чтобы выполнить корректный пересчет, модулю отображения потребуется знать как минимум два значения датчика — числовое показание датчика при пустом баке и числовое показание датчика при полном баке. Для этого, после установки датчика выполняется процедура калибровки прибора. Модуль отображения запоминает показания при пустом и полном баке, сохраняет в своей энергонезависимой памяти и в соответствии с этими данными выполняет пересчет. Поскольку от модуля не требуется особого быстродействия, его микроконтроллер ATMega8A работает на частоте 2Мгц от встроенного RC-генератора.
Процедура калибровки прибора:
- топливный бак должен быть пуст, прибор выключен
- нажмите и удерживайте кнопку
- включите питание прибора
- отпустите кнопку
- на экране появится «SET 0». Убедитесь, что бак пуст и нажмите кнопку
- на экране появится «SET 100». Залейте полный бак топлива и нажмите кнопку
- калибровка завершена
Пример печатных плат:
Плата модуля датчика
Плата модуля дисплея
Это наиболее простой вариант модуля отображения. В перспективе можно создать модуль с возможностью тарирования. Т.е. указать прибору не только два крайних значения при пустом и полном баке, а несколько промежуточных, которые учитывали бы особенности формы бака. Такой подход позволит не только отображать уровень топлива, но и рассчитывать оставшееся количество топлива в литрах. А также, при необходимости, вести ориентировочный расчет времени работы двигателя на текущем остатке топлива.
Фьюзы (Fuses) для модуля датчика:
Фьюзы (Fuses) для модуля отображения (дисплея):
P.S. Видео теста прототипа:
Источник