Емкостной датчик уровня топлива на ATMega8A
Скачать схему, прошивки и примеры печатных плат емкостного датчика уровня топлива.
Знать уровень топлива в баке не только "прикольно", но иногда жизненно необходимо. В некоторых случаях затруднительно оценить уровень топлива в баке из-за его расположения или недостаточной прозрачности. Для таких случаев и существуют датчики уровня топлива. На сегодняшний день наиболее распространены поплавковые датчики. Принцип работы таких датчиков достаточно прост. Поплавковый механизм в зависимости от уровня топлива в баке изменяет положение подвижного контакта потенциометра. Показание напряжения на потенциометре измеряются и преобразуются в человекочитаемый вид. Однако не всегда имеется возможность установить поплавковый датчик из-за его габаритов. Кроме того, в аппаратах, где крен является нормальным состоянием, например, сверхлегкие летательные аппараты, возможен перекос и подклинивание поплавкового механизма. Кроме того, положение бака в наземном и полетном положении может отличаться, что может внести изменения в работу поплавкового механизма. Однако существуют и другие способы измерения уровня топлива. Я говорю о емкостном датчике топлива. Он особо актуален, если существует необходимость избавится от подвижных частей.
Принцип измерения и особенности
Этот способ основан на измерении электрической емкости датчика, которая, в свою очередь, зависит от уровня топлива. Датчик, с помощью которого измеряется уровень топлива, называют емкостным датчиком уровня топлива. Конструкция датчика достаточно проста и представляет собой не что иное, как конденсатор. Он состоит из двух обкладок, между которыми существует зазор, который может заполнять топливо. Исполнение датчика может быть в виде двух металлических пластин или вставленных одна в другую трубок. При этом поверхности двух электродов (обкладок конденсатора) не должны иметь электрического контакта, а промежуток между обкладками должен свободно заполняться топливом при погружении датчика и так же свободно освобождаться при уменьшении уровня топлива. Поскольку топливо заполняет пространство между обкладками конденсатора (датчика), его емкость изменяется. Этот способ подходит только для жидкостей, не проводящих электрический ток. Таким способом не получится измерить уровень воды. Бензин и другие виды жидкого топлива электрический ток не проводят. Измеряя электрическую емкость датчика можно оценить уровень топлива в баке. Хотелось бы обратить внимание на некоторые недостатки такого способа измерения. Дело в том, что диэлектрические свойства топлива могут изменяться при изменении химического состава топлива. Т.е. при смене типа топлива, возможно, придется калибровать прибор. Не смотря на это, такой способ позволяет устанавливать датчик в баке под углом, или даже монтировать в крышку заливной горловины бака. Датчик не имеет подвижных частей, что в некоторых случаях крайне необходимо.
Насколько безопасно помещать электрическую схему в бак? Многих беспокоит этот вопрос. А вдруг искра? Наша схема датчика питается напряжением 5В, а датчик заряжается через резистор в несколько мегаом. В этих условиях образование искры невозможно. Напряжение в 5В ничтожно мало для возникновения искры пробоя. Кроме того, в баке любого автомобиля уже "плавает" электрический датчик уровня топлива. Низкие напряжения и токи не могут вызвать искру и возгорание топлива.
Я не ставил перед собой задачу получить супер точный датчик, способный измерить уровня топлива в 1мм и погрешностью в 0,1%, хотя это вполне возможно. Учитывая, что датчик создавался для аппаратов, где топливо в баке будет подвижно, нас вполне устроит бюджетный вариант с погрешностью в 5%.
Немного о конструктивных особенностях. Для уменьшения паразитных емкостей измерительная схема должна находиться в непосредственной близости от датчика. Не допускается подключение датчика к измерительной схеме с помощью проводов более 20 мм. Другими словами измерительная схема должна быть на датчике, датчик в баке, в то время, как дисплей должен находиться возле человека на некотором расстоянии от бака. Поэтому, конструктивно схема измерения уровня топлива разделена на два модуля - модуль емкостного датчика топлива и модуль отображения. Эти два модуля связаны между собой тремя проводами по двум из них подается питание к модулю датчика, по третьему - от модуля датчика передаются данные в цифровом виде к модулю отображения. Это позволило решить вопрос с передачей данных на несколько метров, и дает возможность конструктивно изменять модуль отображения. При этом схему модуля датчика модифицировать не придется.
Схема модуля датчика и модуля отображения
Схема модуля датчика основана на измерении времени заряда датчика. Чем выше уровень топлива, тем выше емкость датчика, тем больше времени потребуется для заряда датчика (конденсатора). Работает схема следующим образом. Используется встроенный в микроконтроллер ATMega8A аналоговый компаратор. На вход компаратора PD7 подается половина напряжения питания через резистивный делитель R3,R4. В момент, когда датчик зарядится до этого напряжения, сработает компаратор. На ноге PD6 устанавливается логический «0». Датчик разряжается через резистор R2. После чего выход PD6 переключается и работает как вход компаратора, запускается таймер, а датчик начинает заряжаться через резистор R1. При достижении напряжения установленного на входе PD7, срабатывает компаратор, таймер останавливается. Показания таймера используются для вычислений. Для обеспечения стабильности микроконтроллер должен тактироваться кварцем. Чем больше частота, на которой работает контроллер, тем выше точность измерения. В нашей схеме ATMega8A тактируется кварцем 16Мгц. Измерения выполняются постоянно, усредняются и один раз в секунду отправляются по последовательному порту UART на скорости 9600 в виде числового значения. На этом функции модуля датчика и заканчиваются.
В качестве датчика я использовал две полоски из фольгированного текстолита толщиной 1.5мм размерами: 290x20 мм. Полоски склеены между собой фольга к фольге через небольшие непроводящие прокладки. Расстояние между пластинами 1.5 мм. Их можно делать практически любой длины. При необходимости можно обрезать. Особо важно обеспечить равномерный зазор между пластинами по всей длине "конденсатора" .
Отображением полученных от модуля емкостного датчика данных занимается модуль отображения. Этот модуль можно спроектировать в соответствии с Вашими требованиями. Данные можно выводить на светодиодную линейку, на дисплей, как в нашем случае, на стрелочный индикатор или любое другое устройство отображения. При необходимости модуль датчика можно подключить к компьютеру через такой переходник.
Модуль отображения работает следующим образом. Данные в числовом виде принимаются от модуля датчика по порту UART на скорости 9600, рассчитываются показания уровня топлива и выводятся на дисплей. Но для того, чтобы выполнить корректный пересчет, модулю отображения потребуется знать как минимум два значения датчика - числовое показание датчика при пустом баке и числовое показание датчика при полном баке. Для этого, после установки датчика выполняется процедура калибровки прибора. Модуль отображения запоминает показания при пустом и полном баке, сохраняет в своей энергонезависимой памяти и в соответствии с этими данными выполняет пересчет. Поскольку от модуля не требуется особого быстродействия, его микроконтроллер ATMega8A работает на частоте 2Мгц от встроенного RC-генератора.
Процедура калибровки прибора:
- топливный бак должен быть пуст, прибор выключен
- нажмите и удерживайте кнопку
- включите питание прибора
- отпустите кнопку
- на экране появится "SET 0". Убедитесь, что бак пуст и нажмите кнопку
- на экране появится "SET 100". Залейте полный бак топлива и нажмите кнопку
- калибровка завершена
Пример печатных плат:
Плата модуля датчика
Плата модуля дисплея
Это наиболее простой вариант модуля отображения. В перспективе можно создать модуль с возможностью тарирования. Т.е. указать прибору не только два крайних значения при пустом и полном баке, а несколько промежуточных, которые учитывали бы особенности формы бака. Такой подход позволит не только отображать уровень топлива, но и рассчитывать оставшееся количество топлива в литрах. А также, при необходимости, вести ориентировочный расчет времени работы двигателя на текущем остатке топлива.
Скачать схему, прошивки и примеры печатных плат емкостного датчика уровня топлива.
Фьюзы (Fuses) для модуля датчика:
Фьюзы (Fuses) для модуля отображения (дисплея):
Успехов!
P.S. Видео теста прототипа:
А можно ли получить исходник для модуля датчика (по возможности на Си) и в качестве бонуса доработать схему для получения на выходе с датчика сопротивление 0-300 Ом
Я так понимаю, Вы хотите заменить автомобильный датчик, оставив индикатор прежним. Это можно сделать. Резистивный выход - не проблема. Для этого надо найти цифровой потенциометр на номинальное сопротивление 300 ОМ. Я пока таких не встречал, но можно поискать. По цене он стоит не дорого, как вся схема датчика. Подключить его к микроконтроллеру, дописать софт для управления цифровым потенциометром не проблема. Закончив превращение цифрового датчика в аналоговый, с количеством шагов всего 64 или 100 (это как повезет, смотри доку по цифровым потенциометрам), придется подумать, как добавить в датчик функцию калибровки. В исходном приборе этим занимается модуль отображения. Теперь же датчику придется калиброваться самому. Это тоже не сложная доработка - добавить всего-то одну кнопку. Правда, как мы узнаем, что он в режиме калибровки? Добавим и светодиод. После этого вспомним, что придется, где то добыть +5В. Если на борту только 12В, в схему добавим преобразователь напряжения. И это все ради того, чтобы заменить обычный потенциометр? Я пока не уловил смысл этой задумки? Но за деньги заказчика готов воплотить в жизнь любой каприз.
Ответ как-то не соответствует концепции сайта "для горячих паяльников". Скорее "для капризных заказчиков". "Горячему паяльнику" лучше подойдет исходник + совет + пинок "дальше сам думай".
Александр, в своем ответе я всего лишь обосновал нецелесообразность переделки цифрового датчика в цифровой датчик с аналоговым выходом. Эта затея не только идет в разрез самой идеи этого устройства, но ведет к ухудшению характеристик и увеличению стоимости датчика. Однако я не имею права, да и желания отговаривать кого-либо от реализации их личных замыслов. Свой я реализовал и делюсь с Вами. В то же время, я не готов тратить свое личное время на переделку своего прибора в технической целесообразности, которой я сомневаюсь.
Спасибо автору за статью. Уже какое-то время хочу сделать подобное устройство и себе. А не мог бы многоуважаемый автор еще выложить и исходные тексты прошивок? Был бы весьма признателен!
В схеме и прошивке к МО есть маленькая неточность - Линии данных к LCD не PC2-PC5(Схема), а PC0-PC3(прошивка), плату не проверял. Да и в Протеусе заработала только прошивка МО, пришлось написать прошивку к МД самому. Что касаемо аналового выхода то он просто необходим, так как приборная панель уже электронная, а цифровой потенциометр не подходит в силу того, что обладает базовым сопротивлением меньше которого на выходе быть не может и это далеко не 0 и даже не 300 Ом.
В догонку, на плате все разведено правильно и соответствует прошивке.
Еще один вопрос, какая емкость датчика получилась у Вас?
Схему поправил, спасибо за замечание. В Протеусе у меня тоже датчик не работает. Не знаю почему, но незаладилось у меня в Протеусе с аналоговым компаратором. Не срабатывает прерывание. А в реальной схеме все ОК. Емкость датчика в воздухе порядка 30-35 пикофарад. На выходе датчика можно ШИМ-ом сформировать напряжение, если это подойдет. Как сделать резистивный выход пока не знаю. Мысли есть, но они бредовые.
Да такая идея есть, причем ШИМом управлять полевиком и использовать его как переменный шунт, но я не силен в схемотехнике.
Я тогда выскажу свою бредовую идею. Делаем шунт нужного сопротивления, параллельно ему включаем транзистор. Транзистор открыт - сопротивление 0, закрыт = R шунта = 300 Ом. ШИМ-ом регулируем период когда ключ открыт. Получаем во времени некое "усредненное сопротивление". Если схема панели имеет хоть какой то механизм усреднения или демпфирования, может пройдет такой способ.
Очень интересная статья! Как можно получить исходный код данного проекта? Спасибо!
Тоже бы не отказался от исходников... есть желание собрать БК, но не со штатным датчиком. Буду премного благодарен.
Доброго времени суток. Я студент и стою на пороге сдачи очередного курсового проекта. И хочется создать такую же модель. Сколько стоит собранный вариант и может ли помочь кто-то собрать такой же? Киев. Заранее благодарен.
Админ! Вопрос стоит в следующем - в протеусе модель работает, а в железе есть нюанс - стабильная работа начинается с емкости в 10 нан, а на пиковых емкостях происходит что-то не то. прерывание по сравнению и захват таймера срываются. Может что подскажешь?
Не совсем понял что означает "...прерывание по сравнению и захват таймера срываются...". Не стабильная работа может быть если проводники на плате слишком длинные, датчик подключен к плате проводами, что либо касается к датчику. Так же не стабильная работа может быть, если используете импульсный блок питания. Тяжело установить диагноз не видя пациента. Схему не меняли? Печатная плата датчика такая же как и в примере или свою разводили?
Буду очень благодарен, если подлитесь исходниками. Хочется вглянуть на вашу разработку, дабы почерпнуть некоторые идеи для своего проекта. Если все получится с меня стакан.
Интересное решение. Хочу попробовать доработать ваш прибор, (стоит в машине GPS трекер) с частотным входом. Если есть возможность получить исходники, буду только рад. Заранее благодарю.
Исходники будут опубликованы позже, после полного цикла ходовых испытаний и окончательных доработок.
Попробывал подключить к заводскому датчику в котором погорела плата. смотря через терминал на компе, видел только непонятные символы но не как не числа. хотелось бы на самом деле взглянуть на исходник. если это возможно. Даже на сырой без ходовых испытаний.
У заводского датчика может быть совсем другой интерфейс и данные передаваться в числовом, а не текстовом формате. В данном случае, текстовая передача информации выбрана для универсальности.
дело в том что датчик будет использоваться в устройстве которое разрабатывается. а данные там будет по Кан шине передаватся. потому и хотелось бы взглянуть на кусок кода который отвечает за измерение
Уваж. автор.1-Спасибо за такие схемы и за то,что делитесь ими с нами.2-Подскажите индекс индикатора wh0802a (ygh,ygk и т.д.).будет не гуд если закажу не то.Спасибо.
Я использовал дисплей без подсветки WH0802A-NGG-CT, но можно и с подсветкой, например, WH0802A-YGH-CT. Главное, чтобы это был WH0802A. Если планируется эксплуатировать дисплей при отрицательных температурах, или есть какие то особенные требования, следует внимательнее присмотреться к обозначениям. Подробно об обозначениях дисплеев я писал тут: http://www.avislab.com/blog/lcd/ в разделе Характеристики и обозначение дисплеев есть таблица.
Спасибо за ответ
подскажите,пожалуйста, правильные fuse для контроллеров.
Фьюзы нужно изменить только те, которые отвечают за тактирование микроконтроллеров. Модуль датчика работает на частоте 16МГц, т.е. нужно установить тактирование от внешнего кварцевого резонатора. Для модуля отображения применяется встроенный RC-генератор 2 Мгц. В конце статьи добавил фьюзы как они будут выглядеть для PonyProg и AVRDUDE.
Большое спасибо
Как я понимаю самый ответственный узел Вашего решения - кварц на меге. Который при установке температуры ниже -10 С имеет свойство уплывать по частоте. Сам решаю ту же задачу и выбрал решение с двумя генераторами, один с эталонной емкостью, другой с измеряемой. Соответственно считаем отношение частот и на данное решение дрейф кварцев и емкостей по температуре исключается. Остается только дрейф по качеству и составу топлива, но от этого только тарировка.
Примерно так. Стабильная частота имеет решающее значение.
А как решить с тарированием бака?
уважаемый админ не сочтите за наглость, не могли бы вы кинуть на мыло([email protected]) исходник данного устройства,за ранее спасибо.
Сможет ли эта схема измерять уровень жидкости в цилиндрическом лабораторном сосуде 250мм высотой и внутренним диаметром 42 мм.?? диапазон измерений: от 0 (!) до 240мм 5% погрешности выходной сигнал: 8-разрядный последовательный код ответьте пожалуйста если нет, то насколько сложно её будет изменить?
Прошу скинуть исходники датчика ([email protected]), заранее благодарен
Как я писал ранее, исходники будут опубликованы позже, после окончательных доработок.
Уважаемый админ, в принципе устройство полностью перерабатывается, и исходники нужны для сравнения кода моего и вашего (оптимизация ПО), и надеюсь вы вышлете даже не доработанные исходники модуля датчика
будет ли тарировка бака
Планируется и тарирование бака и публикация исходных кодов. Но это будет позже.
Считаю очень полезным устройством. Вообщем вытравит я автора платы, собрал. Но! работает как то не чётко, В режиме камибровки цеплял проверучную емкость. Цифры постоянной плавают причём с хорошим диапазоном. Тоесть калибрую пустой бак на 100 пф, полный 200. Ставлю емкость 30 пф, показывает 32%.Всё хорошо. НО! через какое-то... время по разному, начинает уплывать в ту или иную сторону показания дисплея. Собрал 2 таких устройства и все работают одинаково нестабильно. При сбрасывании питания картина повторяеться или сразу или через время. Можно поподробней как меряеться емкость. Напряжение на PD6 -1.56 вольт, осцилограмма кривая и не стабильная. И на ваших кварц 16.934,а по схеме 16 Мгц. У Вас на плате датчика выходить 4 провода , 3 понятно, а желтый зачем (висит на микрыже PD0-RXD)?! Был бы благодарен за исходники (почта [email protected]).
У меня кварц 16.934, потому как ставил тот который был под рукой. Потом применял 16МГц. Разница не принципиальная. 4 провода +,-,Tx,Rx. Один провод не задействован (не пригодился) поскольку никаких команд в модуль датчика не оправляется. За не надобностью лишний провод на схеме не обозначен. Емкость может скакать если датчик подключен с плате проводами. Надо чтобы обкладки датчика были максимально близко к плате. У меня плата датчика фактически напаяна на пластины датчика. Немножко потеплеет будем экспериментировать с разными формами датчика.
Про 4 провод понятно, можно использовать его при подключении к компу . А датчик у меня припаян прямо к плате - это 2 конденсатора по 100 пикофарад. 100пф это пусто, 2 по 100 пф полный. Этоже полноценая эмуляция датчика в баке или я неправ, поправте. Датчик кстати буду делать наверно из трубок. Кстати если модуль дисплея прошить под 1 Мгц внутренний генератор и модуль датчика под 8 Мгц внутренний генератор. То тоже будет работает. Плиз огромная просьба на почту исходник (почта [email protected]). Я ещё хотелось обменяться телефончиками, созвониться и пообщаться.
Кстати для всех. ещё желательно Бит CKOPT активизировать. Бит CKOPT задает размах тактового сигнала. Т.е. амплитуду колебаний на выходе с кварца. Когда CKOPT = 1 то размах маленький, за счет этого достигается меньшее энергопотребление, но снижается устройчивость к помехам, особенно на высоких скоростях . Точнее запуститься то он может запустится, но вот надежность никто не гарантирует). А вот если CKOPT активизировать, записать в него 0, то размах сигнала сразу же станет от 0 до питания. Что увеличит энергопотребление, но повысит стойкость к помехам. Желательно активизировать Бит CKOPT при использовании кварцев свыше 8 Мгц. У меня из 3х кварцев запустилось только 2, с некрасивой синусоидой. Когда активизировал CKOPT все 3 кварца запустились с красивой синусоидой
Ребята скажите кто делал ещё по этой схеме датчик топлива, у кого работает стабильно?! Никак не получается стабилизировать показания. Продов нет датчик напаян прямо на плате.
Доброго дня всем! Схема на 11 светодиодах тоже я так понимаю ваша разработка. Собрал, прошил впринципе работает. Термостабильность мне неважна. Но немогу только понять как калибловать (пару раз получилось, потом сбилась калибровка в ходе экспериментом). Кнопки SA1 - SA2 за что отвечают и как ими калибровать пустой и полный бак. И хотель бы найти прошиву для столбика.
Добрый день! А вы бы не могли выложить исходник, или раскажите алгоритм измерения емкостным датчиком? а то нужно встроить в свой БК этот измеритель
Здравствуйте. Изготовить датчик под заказ возможно.
Автора наверно задолбали вопросами. А исходник ему тажело выложить, что бы меньше их было . Вот и молчит теперь. Кроме меня кто-то делал эту схему или у всех всё работает. Вот про измеритель на 11 светодиодах тоже спрашивали нет ответа.
Увы, это устройство я пока не изготовляю.
Я уже отвечал раньше в комментариях: «Исходники будут опубликованы позже, после полного цикла ходовых испытаний и окончательных доработок.» На светодиодах тоже я делал, но то была не удачная попытка. Про нее лучше забыть.
На светодиодах человек уже сделал, хоть подскажите ему какая кнопка за что отвечает или как калибровать. Да там уже я думаю Сергей разберётся. Возможно на LCD ему сложная схема. Как говорится тренироваться нужно на кроликах.:)
Алексей, по поводу схемы на светодиодах, я уже отвечал. Здесь обсуждается совершенно другое устройство с другим принципом измерения. Попрошу в комментариях высказываться по существу, касательно описанного здесь устройства. С прочими вопросами или просто поговорить - ко мне на почту (см. http://www.avislab.com/blog/about/).
А можете подсказать какой именно таймер используется и в каком режиме в схеме модуля датчика?
TIMER0 - для подсчета времени заряда. TCCR0 = 1<<CS00; TCCR1B = ((1<<CS10) | (1<<CS12));
Как у вас дела с разработкой? Есть ли возможность получить исходники. [email protected]
Исходники будут опубликованы как только это станет возможным.
Добрый день. Пытаюсь разобраться со схемой и возник вопрос, можно ли этот датчик сделать на одной микросхеме? Если нет, то почему?
«Для уменьшения паразитных емкостей измерительная схема должна находиться в непосредственной близости от датчика. Не допускается подключение датчика к измерительной схеме с помощью проводов более 20 мм. Другими словами измерительная схема должна быть на датчике, датчик в баке, в то время, как дисплей должен находиться возле человека на некотором расстоянии от бака. Поэтому, конструктивно схема измерения уровня топлива разделена на два модуля — модуль емкостного датчика топлива и модуль отображения.» Можно сделать и на одной микросхеме. Все зависит от поставленной задачи. Но учтите, что «Для уменьшения паразитных емкостей измерительная схема должна находиться в непосредственной близости от датчика.»
Недавні записи
- LCD Display ST7567S (IIC)
- Розпізнавання мови (Speech recognition)
- Selenium
- Комп'ютерний зір (Computer Vision)
- Деякі думки про точність вимірювань в електроприводі
- Датчики Холла 120/60 градусів
- Модуль драйверів напівмосту IGBT транзисторів
- Драйвер IGBT транзисторів на A316J
- AS5600. Варіант встановлення на BLDC мотор
- DC-DC для IGBT драйверів ізольований 2 W +15 -8 вольт
Tags
battery soldering java-script ngnix adc rs-232 flask esp8266 watchdog web exti solar mongodb rtc sms pwm usart books ethernet smd git websocket meteo css python dc-dc displays led ssd1306 eeprom gpio barometer max1674 mpx4115a brushless motor mpu-6050 timer sensors remap servo bldc atmega pmsm 3d-printer flash encoder examples dma raspberry-pi tim ssd1331 piezo mpu-9250 rfid eb-500 foc bme280 gps nvic dht11 bluetooth hih-4000 stm32 st-link docker uart avr html wifi bmp280 bkp nodemcu options usb lcd programmator i2c capture
Архіви