сайт для палких паяльників

Скачать схему, прошивки и примеры печатных плат емкостного датчика уровня топлива.

Знать уровень топлива в баке не только “прикольно”, но иногда жизненно необходимо. В некоторых случаях затруднительно оценить уровень топлива в баке из-за его расположения или недостаточной прозрачности. Для таких случаев и существуют датчики уровня топлива. На сегодняшний день наиболее распространены поплавковые датчики. Принцип работы таких датчиков достаточно прост. Поплавковый механизм в зависимости от уровня топлива в баке изменяет положение подвижного контакта потенциометра. Показание напряжения на потенциометре измеряются и преобразуются в человекочитаемый вид. Однако не всегда имеется возможность установить поплавковый датчик из-за его габаритов. Кроме того, в аппаратах, где крен является нормальным состоянием, например, сверхлегкие летательные аппараты, возможен перекос и подклинивание поплавкового механизма. Кроме того, положение бака в наземном и полетном положении может отличаться, что может внести изменения в работу поплавкового механизма. Однако существуют и другие способы измерения уровня топлива. Я говорю о емкостном датчике топлива. Он особо актуален, если существует необходимость избавится от подвижных частей.

Принцип измерения и особенности

Этот способ основан на измерении электрической емкости датчика, которая, в свою очередь, зависит от уровня топлива. Датчик, с помощью которого измеряется уровень топлива, называют емкостным датчиком уровня топлива. Конструкция датчика достаточно проста и представляет собой не что иное, как конденсатор. Он состоит из двух обкладок, между которыми существует зазор, который может заполнять топливо. Исполнение датчика может быть в виде двух металлических пластин или вставленных одна в другую трубок. При этом поверхности двух электродов (обкладок конденсатора) не должны иметь электрического контакта, а промежуток между обкладками должен свободно заполняться топливом при погружении датчика и так же свободно освобождаться при уменьшении уровня топлива. Поскольку топливо заполняет пространство между обкладками конденсатора (датчика), его емкость изменяется. Этот способ подходит только для жидкостей, не проводящих электрический ток. Таким способом  не получится измерить  уровень воды. Бензин и другие виды жидкого топлива электрический ток не проводят. Измеряя электрическую емкость датчика можно оценить уровень топлива в баке. Хотелось бы обратить внимание на некоторые недостатки такого способа измерения. Дело в том, что диэлектрические свойства топлива могут изменяться при изменении химического состава топлива. Т.е. при смене типа топлива, возможно, придется калибровать прибор. Не смотря на это, такой способ позволяет устанавливать датчик в баке под углом, или даже монтировать в крышку заливной горловины бака. Датчик не имеет подвижных частей, что в некоторых случаях крайне необходимо.

Насколько безопасно помещать электрическую схему в бак? Многих беспокоит этот вопрос. А вдруг искра? Наша схема датчика питается напряжением 5В, а датчик заряжается через резистор в несколько мегаом. В этих условиях образование искры невозможно. Напряжение в 5В ничтожно мало для возникновения искры пробоя. Кроме того, в баке любого автомобиля уже “плавает” электрический датчик уровня топлива. Низкие напряжения и токи не могут вызвать искру и возгорание топлива.

Я не ставил перед собой задачу получить супер точный датчик, способный измерить уровня топлива в 1мм и погрешностью в 0,1%, хотя это вполне возможно. Учитывая, что датчик создавался для аппаратов, где топливо в баке будет подвижно, нас вполне устроит бюджетный вариант с погрешностью в 5%.

Немного о конструктивных особенностях. Для уменьшения паразитных емкостей измерительная схема должна находиться в непосредственной близости от датчика. Не допускается подключение датчика к измерительной схеме с помощью проводов более 20 мм. Другими словами измерительная схема должна быть на датчике, датчик в баке, в то время, как дисплей должен находиться возле человека на некотором расстоянии от бака. Поэтому, конструктивно схема измерения уровня топлива разделена на два модуля – модуль емкостного датчика топлива и модуль отображения. Эти два модуля связаны между собой тремя проводами по двум из них подается питание к модулю датчика, по третьему – от модуля датчика передаются данные в цифровом виде к модулю отображения. Это позволило решить вопрос с передачей данных на несколько метров, и дает возможность конструктивно изменять модуль отображения. При этом схему модуля датчика модифицировать не придется.

Схема модуля датчика и модуля отображения

Емкостной датчик уровня топлива на ATMega8A. Схема

Схема модуля датчика основана на измерении времени заряда датчика. Чем выше уровень топлива, тем выше емкость датчика, тем больше времени потребуется для заряда датчика (конденсатора). Работает схема следующим образом. Используется встроенный в микроконтроллер ATMega8A аналоговый компаратор.
На вход компаратора PD7 подается половина напряжения питания через резистивный делитель R3,R4. В момент, когда датчик зарядится до этого напряжения, сработает компаратор. На ноге PD6 устанавливается логический «0». Датчик разряжается через резистор R2. После чего выход PD6 переключается и работает как вход компаратора, запускается таймер, а датчик начинает заряжаться через резистор R1. При достижении напряжения установленного на входе PD7, срабатывает компаратор, таймер останавливается. Показания таймера используются для вычислений. Для обеспечения стабильности микроконтроллер должен тактироваться кварцем. Чем больше частота, на которой работает контроллер, тем выше точность измерения. В нашей схеме ATMega8A тактируется кварцем 16Мгц. Измерения выполняются постоянно, усредняются и один раз в секунду отправляются по последовательному порту UART на скорости 9600 в виде числового значения. На этом функции модуля датчика и заканчиваются.

В качестве датчика я использовал две полоски из фольгированного текстолита толщиной 1.5мм размерами: 290×20 мм. Полоски склеены между собой фольга к фольге через небольшие непроводящие прокладки. Расстояние между пластинами 1.5 мм. Их можно делать практически любой длины. При необходимости можно обрезать. Особо важно обеспечить равномерный зазор между пластинами по всей длине  “конденсатора” .

Емкостной датчик уровня топлива на ATMega8A. Плата с контроллеромЕмкостной датчик уровня топлива на ATMega8A. Плата сбоку
Емкостной датчик уровня топлива на ATMega8A. Общий размерЕмкостной датчик уровня топлива на ATMega8A. Общий размер с аккумулятором

Отображением полученных от модуля емкостного датчика данных занимается модуль отображения. Этот модуль можно спроектировать в соответствии с Вашими требованиями. Данные можно выводить на светодиодную линейку, на дисплей, как в нашем случае, на стрелочный индикатор или любое другое устройство отображения. При необходимости модуль датчика можно подключить к компьютеру через такой  переходник.

Модуль отображения работает следующим образом. Данные в числовом виде принимаются от модуля датчика по порту UART на скорости 9600, рассчитываются показания уровня топлива и выводятся на дисплей. Но для того, чтобы выполнить корректный пересчет, модулю отображения потребуется знать как минимум два значения датчика – числовое показание датчика при пустом баке и числовое показание датчика при полном баке. Для этого, после установки датчика выполняется процедура калибровки прибора. Модуль отображения запоминает показания при пустом и полном баке, сохраняет в своей энергонезависимой памяти и в соответствии с этими данными выполняет пересчет. Поскольку от модуля не требуется особого быстродействия, его микроконтроллер ATMega8A работает на частоте 2Мгц от встроенного RC-генератора.

Емкостной датчик уровня топлива на ATMega8A. Плата дисплея сзадиЕмкостной датчик уровня топлива на ATMega8A. Плата дисплея спереди
Процедура калибровки прибора:
-топливный бак должен быть пуст, прибор выключен
-нажмите и удерживайте кнопку
-включите питание прибора
-отпустите кнопку
-на экране появится “SET 0”. Убедитесь, что бак пуст и нажмите кнопку.
-на экране появится “SET 100”. Залейте полный бак топлива и нажмите кнопку.
-калибровка завершена.

Пример печатных плат:

Плата модуля датчика

Емкостной датчик уровня топлива на ATMega8A. Чертеж платы модуля датчика

Плата модуля дисплея

Емкостной датчик уровня топлива на ATMega8A. Чертеж платы модуля дисплея
Это наиболее простой вариант модуля отображения. В перспективе можно создать модуль с возможностью тарирования. Т.е. указать прибору не только два крайних значения при пустом и полном баке, а несколько промежуточных, которые учитывали бы особенности формы бака. Такой подход позволит не только отображать уровень топлива, но и рассчитывать оставшееся количество топлива в литрах. А также, при необходимости, вести ориентировочный расчет времени работы двигателя на текущем остатке топлива.

Скачать схему, прошивки и примеры печатных плат емкостного датчика уровня топлива.

Фьюзы (Fuses) для модуля датчика:Фьюзы датчика

Фьюзы (Fuses) для модуля отображения (дисплея):

Фьюзы модуля дисплея

Успехов!

P.S. Видео теста прототипа:

58 комментариев: Емкостной датчик уровня топлива на ATMega8A

  • Алексей говорить:

    А можно ли получить исходник для модуля датчика (по возможности на Си) и в качестве бонуса доработать схему для получения на выходе с датчика сопротивление 0-300 Ом

    • admin говорить:

      Я так понимаю, Вы хотите заменить автомобильный датчик, оставив индикатор прежним. Это можно сделать. Резистивный выход – не проблема. Для этого надо найти цифровой потенциометр на номинальное сопротивление 300 ОМ. Я пока таких не встречал, но можно поискать. По цене он стоит не дорого, как вся схема датчика. Подключить его к микроконтроллеру, дописать софт для управления цифровым потенциометром не проблема. Закончив превращение цифрового датчика в аналоговый, с количеством шагов всего 64 или 100 (это как повезет, смотри доку по цифровым потенциометрам), придется подумать, как добавить в датчик функцию калибровки. В исходном приборе этим занимается модуль отображения. Теперь же датчику придется калиброваться самому. Это тоже не сложная доработка – добавить всего-то одну кнопку. Правда, как мы узнаем, что он в режиме калибровки? Добавим и светодиод. После этого вспомним, что придется, где то добыть +5В. Если на борту только 12В, в схему добавим преобразователь напряжения. И это все ради того, чтобы заменить обычный потенциометр? Я пока не уловил смысл этой задумки? Но за деньги заказчика готов воплотить в жизнь любой каприз.

      • Александр говорить:

        Ответ как-то не соответствует концепции сайта “для горячих паяльников”. Скорее “для капризных заказчиков”.
        “Горячему паяльнику” лучше подойдет исходник + совет + пинок “дальше сам думай”.

        • admin говорить:

          Александр, в своем ответе я всего лишь обосновал нецелесообразность переделки цифрового датчика в цифровой датчик с аналоговым выходом. Эта затея не только идет в разрез самой идеи этого устройства, но ведет к ухудшению характеристик и увеличению стоимости датчика. Однако я не имею права, да и желания отговаривать кого-либо от реализации их личных замыслов. Свой я реализовал и делюсь с Вами. В то же время, я не готов тратить свое личное время на переделку своего прибора в технической целесообразности, которой я сомневаюсь.

      • Александр говорить:

        Интересное решение.
        Хочу попробовать доработать ваш прибор, (стоит в машине GPS трекер) с частотным входом.
        Если есть возможность получить исходники, буду только рад.
        Заранее благодарю.

  • Сергей говорить:

    Спасибо автору за статью. Уже какое-то время хочу сделать подобное устройство и себе. А не мог бы многоуважаемый автор еще выложить и исходные тексты прошивок? Был бы весьма признателен!

  • Алексей говорить:

    В схеме и прошивке к МО есть маленькая неточность – Линии данных к LCD не PC2-PC5(Схема), а PC0-PC3(прошивка), плату не проверял. Да и в Протеусе заработала только прошивка МО, пришлось написать прошивку к МД самому. Что касаемо аналового выхода то он просто необходим, так как приборная панель уже электронная, а цифровой потенциометр не подходит в силу того, что обладает базовым сопротивлением меньше которого на выходе быть не может и это далеко не 0 и даже не 300 Ом.

    • Алексей говорить:

      В догонку, на плате все разведено правильно и соответствует прошивке.

  • Алексей говорить:

    Еще один вопрос, какая емкость датчика получилась у Вас?

    • admin говорить:

      Схему поправил, спасибо за замечание. В Протеусе у меня тоже датчик не работает. Не знаю почему, но незаладилось у меня в Протеусе с аналоговым компаратором. Не срабатывает прерывание. А в реальной схеме все ОК. Емкость датчика в воздухе порядка 30-35 пикофарад. На выходе датчика можно ШИМ-ом сформировать напряжение, если это подойдет. Как сделать резистивный выход пока не знаю. Мысли есть, но они бредовые.

  • Алексей говорить:

    Да такая идея есть, причем ШИМом управлять полевиком и использовать его как переменный шунт, но я не силен в схемотехнике.

    • admin говорить:

      Я тогда выскажу свою бредовую идею. Делаем шунт нужного сопротивления, параллельно ему включаем транзистор. Транзистор открыт – сопротивление 0, закрыт = R шунта = 300 Ом. ШИМ-ом регулируем период когда ключ открыт. Получаем во времени некое “усредненное сопротивление”. Если схема панели имеет хоть какой то механизм усреднения или демпфирования, может пройдет такой способ.

  • Василий говорить:

    Очень интересная статья! Как можно получить исходный код данного проекта? Спасибо!

  • Роман говорить:

    Тоже бы не отказался от исходников… есть желание собрать БК, но не со штатным датчиком. Буду премного благодарен.

  • gmihaly4 говорить:

    Доброго времени суток. Я студент и стою на пороге сдачи очередного курсового проекта. И хочется создать такую же модель. Сколько стоит собранный вариант и может ли помочь кто-то собрать такой же? Киев. Заранее благодарен.

  • Алексей говорить:

    Админ! Вопрос стоит в следующем – в протеусе модель работает, а в железе есть нюанс – стабильная работа начинается с емкости в 10 нан, а на пиковых емкостях происходит что-то не то. прерывание по сравнению и захват таймера срываются. Может что подскажешь?

    • admin говорить:

      Не совсем понял что означает “…прерывание по сравнению и захват таймера срываются…”. Не стабильная работа может быть если проводники на плате слишком длинные, датчик подключен к плате проводами, что либо касается к датчику. Так же не стабильная работа может быть, если используете импульсный блок питания. Тяжело установить диагноз не видя пациента. Схему не меняли? Печатная плата датчика такая же как и в примере или свою разводили?

  • Анатолий говорить:

    Буду очень благодарен, если подлитесь исходниками. Хочется вглянуть на вашу разработку, дабы почерпнуть некоторые идеи для своего проекта. Если все получится с меня стакан.

  • admin говорить:

    Исходники будут опубликованы позже, после полного цикла ходовых испытаний и окончательных доработок.

  • Сергей говорить:

    Попробывал подключить к заводскому датчику в котором погорела плата. смотря через терминал на компе, видел только непонятные символы но не как не числа.
    хотелось бы на самом деле взглянуть на исходник. если это возможно. Даже на сырой без ходовых испытаний.

    • admin говорить:

      У заводского датчика может быть совсем другой интерфейс и данные передаваться в числовом, а не текстовом формате. В данном случае, текстовая передача информации выбрана для универсальности.

      • Сергей говорить:

        дело в том что датчик будет использоваться в устройстве которое разрабатывается. а данные там будет по Кан шине передаватся. потому и хотелось бы взглянуть на кусок кода который отвечает за измерение

  • олег говорить:

    Уваж. автор.1-Спасибо за такие схемы и за то,что делитесь ими с нами.2-Подскажите индекс индикатора wh0802a (ygh,ygk и т.д.).будет не гуд если закажу не то.Спасибо.

    • admin говорить:

      Я использовал дисплей без подсветки WH0802A-NGG-CT, но можно и с подсветкой, например, WH0802A-YGH-CT.
      Главное, чтобы это был WH0802A. Если планируется эксплуатировать дисплей при отрицательных температурах, или есть какие то особенные требования, следует внимательнее присмотреться к обозначениям.
      Подробно об обозначениях дисплеев я писал тут: http://www.avislab.com/blog/lcd/ в разделе Характеристики и обозначение дисплеев есть таблица.

  • Александр говорить:

    подскажите,пожалуйста, правильные fuse для контроллеров.

    • admin говорить:

      Фьюзы нужно изменить только те, которые отвечают за тактирование микроконтроллеров. Модуль датчика работает на частоте 16МГц, т.е. нужно установить тактирование от внешнего кварцевого резонатора. Для модуля отображения применяется встроенный RC-генератор 2 Мгц. В конце статьи добавил фьюзы как они будут выглядеть для PonyProg и AVRDUDE.

  • Федор говорить:

    Как я понимаю самый ответственный узел Вашего решения – кварц на меге. Который при установке температуры ниже -10 С имеет свойство уплывать по частоте.
    Сам решаю ту же задачу и выбрал решение с двумя генераторами, один с эталонной емкостью, другой с измеряемой. Соответственно считаем отношение частот и на данное решение дрейф кварцев и емкостей по температуре исключается. Остается только дрейф по качеству и составу топлива, но от этого только тарировка.

    • admin говорить:

      Примерно так. Стабильная частота имеет решающее значение.

  • Александр говорить:

    А как решить с тарированием бака?

  • ujin говорить:

    уважаемый админ не сочтите за наглость, не могли бы вы кинуть на мыло(ujin_1971@mail.ru) исходник данного устройства,за ранее спасибо.

  • Александр говорить:

    Сможет ли эта схема измерять уровень жидкости в цилиндрическом лабораторном сосуде 250мм высотой и внутренним диаметром 42 мм.??
    диапазон измерений: от 0 (!) до 240мм
    5% погрешности
    выходной сигнал: 8-разрядный последовательный код

    ответьте пожалуйста
    если нет, то насколько сложно её будет изменить?

  • Алексей говорить:

    Прошу скинуть исходники датчика (kot23rus@mail.ru), заранее благодарен

    • admin говорить:

      Как я писал ранее, исходники будут опубликованы позже, после окончательных доработок.

  • Алексей говорить:

    Уважаемый админ, в принципе устройство полностью перерабатывается, и исходники нужны для сравнения кода моего и вашего (оптимизация ПО), и надеюсь вы вышлете даже не доработанные исходники модуля датчика

    • admin говорить:

      Планируется и тарирование бака и публикация исходных кодов. Но это будет позже.

  • Алексей говорить:

    Считаю очень полезным устройством. Вообщем вытравит я автора платы, собрал. Но! работает как то не чётко, В режиме камибровки цеплял проверучную емкость. Цифры постоянной плавают причём с хорошим диапазоном. Тоесть калибрую пустой бак на 100 пф, полный 200. Ставлю емкость 30 пф, показывает 32%.Всё хорошо. НО! через какое-то… время по разному, начинает уплывать в ту или иную сторону показания дисплея. Собрал 2 таких устройства и все работают одинаково нестабильно. При сбрасывании питания картина повторяеться или сразу или через время. Можно поподробней как меряеться емкость. Напряжение на PD6 -1.56 вольт, осцилограмма кривая и не стабильная. И на ваших кварц 16.934,а по схеме 16 Мгц. У Вас на плате датчика выходить 4 провода , 3 понятно, а желтый зачем (висит на микрыже PD0-RXD)?! Был бы благодарен за исходники (почта alexvihr@bigmir.net).

    • admin говорить:

      У меня кварц 16.934, потому как ставил тот который был под рукой. Потом применял 16МГц. Разница не принципиальная. 4 провода +,-,Tx,Rx. Один провод не задействован (не пригодился) поскольку никаких команд в модуль датчика не оправляется. За не надобностью лишний провод на схеме не обозначен. Емкость может скакать если датчик подключен с плате проводами. Надо чтобы обкладки датчика были максимально близко к плате. У меня плата датчика фактически напаяна на пластины датчика. Немножко потеплеет будем экспериментировать с разными формами датчика.

  • Алексей говорить:

    Про 4 провод понятно, можно использовать его при подключении к компу . А датчик у меня припаян прямо к плате – это 2 конденсатора по 100 пикофарад. 100пф это пусто, 2 по 100 пф полный. Этоже полноценая эмуляция датчика в баке или я неправ, поправте. Датчик кстати буду делать наверно из трубок. Кстати если модуль дисплея прошить под 1 Мгц внутренний генератор и модуль датчика под 8 Мгц внутренний генератор. То тоже будет работает. Плиз огромная просьба на почту исходник (почта alexvihr@bigmir.net). Я ещё хотелось обменяться телефончиками, созвониться и пообщаться.

  • Алексей говорить:

    Кстати для всех. ещё желательно Бит CKOPT активизировать. Бит CKOPT задает размах тактового сигнала. Т.е. амплитуду колебаний на выходе с кварца. Когда CKOPT = 1 то размах маленький, за счет этого достигается меньшее энергопотребление, но снижается устройчивость к помехам, особенно на высоких скоростях . Точнее запуститься то он может запустится, но вот надежность никто не гарантирует). А вот если CKOPT активизировать, записать в него 0, то размах сигнала сразу же станет от 0 до питания. Что увеличит энергопотребление, но повысит стойкость к помехам. Желательно активизировать Бит CKOPT при использовании кварцев свыше 8 Мгц. У меня из 3х кварцев запустилось только 2, с некрасивой синусоидой. Когда активизировал CKOPT все 3 кварца запустились с красивой синусоидой

  • Алексей говорить:

    Ребята скажите кто делал ещё по этой схеме датчик топлива, у кого работает стабильно?! Никак не получается стабилизировать показания. Продов нет датчик напаян прямо на плате.

  • Сергей говорить:

    Доброго дня всем!
    Схема на 11 светодиодах тоже я так понимаю ваша разработка. Собрал, прошил впринципе работает. Термостабильность мне неважна. Но немогу только понять как калибловать (пару раз получилось, потом сбилась калибровка в ходе экспериментом). Кнопки SA1 – SA2 за что отвечают и как ими калибровать пустой и полный бак.
    И хотель бы найти прошиву для столбика.

  • Вячеслав говорить:

    Добрый день! А вы бы не могли выложить исходник, или раскажите алгоритм измерения емкостным датчиком? а то нужно встроить в свой БК этот измеритель

  • Grey говорить:

    Здравствуйте. Изготовить датчик под заказ возможно.

    • admin говорить:

      Увы, это устройство я пока не изготовляю.

  • Алексей говорить:

    Автора наверно задолбали вопросами. А исходник ему тажело выложить, что бы меньше их было . Вот и молчит теперь. Кроме меня кто-то делал эту схему или у всех всё работает. Вот про измеритель на 11 светодиодах тоже
    спрашивали нет ответа.

    • admin говорить:

      Я уже отвечал раньше в комментариях:

      Исходники будут опубликованы позже, после полного цикла ходовых испытаний и окончательных доработок.

      На светодиодах тоже я делал, но то была не удачная попытка. Про нее лучше забыть.

  • Алексей говорить:

    На светодиодах человек уже сделал, хоть подскажите ему какая кнопка за что отвечает или как калибровать. Да там уже я думаю Сергей разберётся. Возможно на LCD ему сложная схема. Как говорится тренироваться нужно на кроликах.:)

    • admin говорить:

      Алексей, по поводу схемы на светодиодах, я уже отвечал. Здесь обсуждается совершенно другое устройство с другим принципом измерения. Попрошу в комментариях высказываться по существу, касательно описанного здесь устройства. С прочими вопросами или просто поговорить – ко мне на почту (см. http://www.avislab.com/blog/about/).

  • Оля говорить:

    А можете подсказать какой именно таймер используется и в каком режиме в схеме модуля датчика?

    • andre говорить:

      TIMER0 – для подсчета времени заряда.

      TCCR0 = 1<

  • Анатолий говорить:

    Как у вас дела с разработкой?
    Есть ли возможность получить исходники.
    gts37@mail.ru

    • andre говорить:

      Исходники будут опубликованы как только это станет возможным.

  • Оля говорить:

    Добрый день. Пытаюсь разобраться со схемой и возник вопрос, можно ли этот датчик сделать на одной микросхеме? Если нет, то почему?

    • andre говорить:

      Для уменьшения паразитных емкостей измерительная схема должна находиться в непосредственной близости от датчика. Не допускается подключение датчика к измерительной схеме с помощью проводов более 20 мм. Другими словами измерительная схема должна быть на датчике, датчик в баке, в то время, как дисплей должен находиться возле человека на некотором расстоянии от бака. Поэтому, конструктивно схема измерения уровня топлива разделена на два модуля — модуль емкостного датчика топлива и модуль отображения.

      Можно сделать и на одной микросхеме. Все зависит от поставленной задачи. Но учтите, что

      Для уменьшения паразитных емкостей измерительная схема должна находиться в непосредственной близости от датчика.

Translate
Архіви

© 2011-2019 Андрій Корягін, Кременчук - Київ, Україна