Индикатор расхода топлива для инжекторного двигателя – версия 2  P

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

В конструкцию прибора были внесены некоторые изменения, касающиеся стабилизации питания и отображения результатов измерений.image

Поговорим обо всем по порядку. Итак – начну с питания. Несмотря на то, что схема понижения и стабилизации напряжения питания микроконтроллера, примененная в первой версии устройства работала без нареканий, ее решено было переделать. По большей части причиной послужило то, что в моем распоряжении появилась горсть low-drop регуляторов напряжения на 5 вольт – TLE4275.

Регуляторы эти хороши тем, что имеют специальный выход, подключаемый к ноге reset микроконтроллера. Таким образом, регулятор напряжения включает микроконтроллер только тогда, когда питающее напряжение устаканится. В случае повторных скачков или просадки напряжения, регулятор самостоятельно перезагрузит микроконтроллер. Величина временной задержки, между моментом, когда питающее напряжение устаканивается, и моментом, когда регулятор включает микроконтроллер, устанавливается емкостью одного из конденсаторов в обвязке регулятора. Такая схема позволяет гарантировано избежать фатальных зависаний микроконтроллера при проблемах с питающим напряжением.

Лирическое отступление: при проблемном питании, как например, в бортовой сети авто, не стоит надеяться на вотч-дог в микроконтроллере. По своему опыту могу однозначно сказать, что при скачках напряжения зависает он не хуже всего остального оборудования на чипе. Следует отдавать себе отчет, что встроенный вотч-дог предназначен главным образом для борьбы с программными зависонами – например, если программа наглухо застрянет в каком-то непредусмотренном цикле и т.п. С аппаратными проблемами встроенный вотч-дог не всегда может бороться.

Кроме того, данный регулятор питания выпускается в удобных корпусах, позволяющих расположить его горизонтально на плате, а также сертифицирован для использования в автомобильной технике.

Второе изменение в конструкции моего прибора коснулось отображения информации. Во время использования первой версии устройства, я заметил, что при особенно интенсивном разгоне, потребление топлива становится настолько большим, что если принять его за 100%, потребление во время не особо напористого движения не превышает 20-40%. Таким образом, на приборе редко загоралось больше 4-5 делений из 10.

Для борьбы с этим явлением в устройство было добавлено две кнопки, позволяющие задать порог отображения расхода. Поясню на примере. Как вы помните, устройство самообучающееся – каждый раз, обнаружив новое максимальное потребление топлива за единицу времени, система запоминает его, и впоследствии ведет отображение относительно этого нового максимального значения. Примем его за 100%. В новой версии устройства, я могу принудительно заставить шкалу заполниться полностью при, к примеру, 70% от максимума. Таким образом, при потреблении 35% от максимума, будет гореть половина шкалы, при 70% и выше – вся шкала. Меня такое положение дел вполне устроило – устройство не предназначено для точного учета расхода (хотя и этот функционал может быть совсем просто реализован – нужно лишь подключиться к датчику скорости и дописать несколько строк кода), а для эффектного визуального отображения информации.

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

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

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

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

На плате предусмотрен разъем для внутрисхемного программирования чипа – ISP. Да кстати, контроллер поменялся на Atmel Atmega8 в стандартном DIP корпусе.

Так уж получилось, что совершенно случайно я просверлил в дешборде 11 дырок для светодиодов, вместо 10. В итоге в системе появился 11тый светодиод, который постоянно неспешно мигает, сигнализируя о текущем статусе работы устройства. Например, если он мигает раз в 5 секунд, то устройство находится в штатном режиме работы. Если мигает раз в секунду – то устройство обнаружило новый максимальный расход, но еще не записало его в постоянную память EEPROM (запись произойдет в течение минуты, при этом во время записи светодиод загорится постоянно на несколько секунд). Также, светодиод мигнет пять раз и останется гореть постоянно, при входе в режим настройки отображения информации.

Для входа в режим настройки достаточно несколько секунд подержать нажатыми кнопки SW3 и SW4. После того как сигнальный светодиод отмигает свои пять раз, на цифровом дисплее отобразится процент порога отображения расхода, как я и объяснял раньше. Тот же порог отобразится и на шкале, но с разрешением в 10% – большего от простой шкалы добиться невозможно. Порог можно двигать, нажимая те же кнопки SW3 и SW4. По окончанию процесса настройки нажмите кнопки SW3 и SW4 на несколько секунд снова.

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

Еще одно изменение в схеме коснулось подключения к форсунке – теперь оно осуществляется через оптрон (я использовал 4N37). Это гарантирует отсутствие фатальных помех по сигнальной линии.

В остальном схема осталась без изменений – более конкретные объяснения есть в упомянутых мной статьях о первой версии устройства.

Стоит упомянуть, что на контроллере осталось четыре неиспользованных ноги – возможно, кому-то захочется расширить функционал устройства с их помощью.

Дальше под катом »

Ваттметр  P

Приобрел себе вот такую вот штуку:

image

Это ваттметр – он умеет показывать электрическую мощность, потребляемую включенным в него электроприбором. Ваттметр включается в розетку, а потребитель мощностью до 1400 Ватт (для этой конкретной модели) в сам ваттметр – такой допустимой мощности достаточно для, например, утюга.

Вот точные спецификации ваттметра:

  • Plug In/Socket Out Voltage: 220V
  • Plug In/Socket Operation Current/Power: 6A or 1400W
  • Local Power: ~1.2W
  • Operative Current / Power: ~2 mA or 0.44W
  • Power Resolution: 1W
  • Accurate Class: 1.0 class (~1%)
  • Anti-Lightning Dynamic (Surge Protection) Function: Yes
  • Operation Temperature: 0-50 Degrees Celsius
  • Timer mode settings are from 00-59 minutes.
  • Power usage auto shutoff settings are from 000-660W.
  • Historical Data Memory: Yes
  • Measurement Industry Standard: IEC1036
  • Dimensions: 100 mm (L) x 70 mm (W) x 35 mm (H)
  • Cord Length: 60 cm

Ваттметр продается с вилками для разных стандартов розеток, а на себе несет панель, в которую можно воткнуть вилку всех возможных мировых стандартов – а их, как выяснилось, навалом.

image

Дальше под катом »

Индикатор расхода топлива для инжекторного двигателя – часть 0b11  P

imageПоследняя часть цикла статей о индикаторе расхода топлива. Первые две части находятся здесь и здесь.

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

Саму программу и файл прошивки можно сказать здесь.

Программа пользуется обоими таймерами, имеющимися на борту микропроцессора. Восьмибитный таймер, запущенный с делителем 1024 (т.е. работающий на частоте 8МГц/1024=7812Гц), при переполнении вызывает прерывание. За 1 секунду происходит примерно 30 таких прерываний, так что отсчитав 6 из них, можно точно отмерять промежутки времени в примерно 0.2 секунды. Это и есть те самые 0.2 секунды, задающие такт всей системе.

Шестнадцатибитный таймер использует внешнее прерывание для включения и выключения – он включается по спадающему и выключается по возрастающему фронту. Иными словами, таймер считает, когда инжектор открыт. Каждые 0.2 секунды главная функция программы сравнивает текущее значение таймера с максимально известным значением, и на основании этого сравнения, принимает решение, насколько заполнить индикатор. Теперь о максимальном значении – у программы есть два режима работы, в точности как у Терминатора – помните, у него был переключатель в мозгах, который позволял или запрещал Терминатору учиться новым вещам. Изначально программа учится – каждый раз, обнаружив новое значение таймера, которое больше предыдущего максимума, она запоминает его в энергонезависимую память EEPROM (в переменную maximum). Там-же хранится флаг (переменная learning), отвечающий за включение и отключение режима обучения – соответственно, когда этот режим выключен, программа не будет запоминать новые максимальные значения подсчетов таймера.

Возможность смены режима обучения была сделана вот для чего: как выяснилось, на максимальном “газе” (а-ля “pedal to the metal”) подача бензина столь велика, что после запоминания значений таймера в таких режимах работы, при обычном, спокойном стиле езды, индикатор заполняется всего на 2-3 деления из 10. Естественно, это не совсем удобно и устройство теряет смысл существования, при обычной езде, без гонок. Поэтому я обучил его немного газанув на разгоне, и отрубил обучающий режим. Теперь при прогреве например, горят 2 деления. При обычной езде – до 6ти, при резвом разгоне – 9-10, ну и если вообще притопить, то все 10 постоянно.

Для сброса сохраненного в EEPROM максимально известного значения таймера и переключения режимов обучения устройства, существует кнопка SW2 (смотрите схему). Если во время работы устройства подержать ее нажатой несколько секунд, то EEPROM обнулится. Если держать ее нажатой в момент инициализации микропроцессора (читай –  подачи питания на устройство), то оно переключится на другой режим обучения.

Для визуализации процессов инициализации, запоминания в EEPROM новых значений и переключения режимов обучения реализованы простые схемы подмигивания индикатором – этим занимаются функции running_bar и blinking_bar.

Поскольку запись в EEPROM процесс довольно медленный, обнаружив необходимость записать в EEPROM новое значение таймера, программа ждет примерно минуту (300 циклов по примерно 0.2 секунды), прежде чем записать его (этим занимается переменная e_eprom_w_timer). Если в течении этой минуты будет обнаружено очередное, еще более высокое значение таймера, то отсчет минуты начинается заново.

Важный момент в работе шестнадцатибитного таймера – при выключении двигателя, таймер включается по спадающему фронту внешнего прерывания, и остается включенным. Это не есть хорошо, поскольку работа всего устройства будет скомпрометирована. Решение проблемы очень простое: таймер работает с делителем 64, т.е. на частоте 8МГц/64=125КГц, следовательно он переполнится примерно за 0.5 секунды. Включаем прерывание на переполнение этого таймера. Если такое прерывание наступает, то система понимает, что двигатель остановлен, вырубает таймер, обнуляет его, отменяет запись в EEPROM нового, нереального значения таймера (ведь он продолжает непрерывно считать почти полсекунды, думая что инжектор открыт) и инициализирует систему по новой (замещает неверные максимальные значения таймера правильными, из EEPROM).

Дальше под катом »

Индикатор расхода топлива для инжекторного двигателя — часть 0b10  P

imageИтак, в первой части повествования мы с вами разобрались в базовой теории работы инжектора и определились с функционалом и принципом реализации будущего устройства для измерения потребления топлива.
Сердцем устройства станет, разумеется, микроконтроллер (далее МК). Мой выбор пал на самый древний, что завалялся у меня на полке — Atmel AVR AT90S2313. Его скромных возможностей выше крыши хватит для реализации задуманного. В этом МК нет никакого внутреннего резонатора – к нему нужно подключить внешний источник тактовой частоты – как правило это кварцевый резонатор. Я подчеркиваю – выбор пал на этот МК только потому что более простого у меня не оказалось.

Как было сказано, принцип работы индикатора расхода строится на измерении суммарного интервала открытия форсунки в единицу времени. Чем больше замеренный суммарный интервал, тем больше делений загорится на индикаторе. Значит пришла пора определиться с единицей времени, и сделать это можно по следующей логике: по идее, на холостом ходу мотор моего Nissan’a (да и на самом деле на большинстве других легковых авто) работает со скоростью около 700 об/мин (это по паспорту). Допустим он работает даже 600 об/мин, т.е. 10 об/сек. Таким образом, за 1 секунду, коленвал совершит 10 оборотов. Форсунка открывается 1 раз за 2 оборота, во время такта впуска. Таким образом, за секунду, форсунка откроется 5 раз, а значит минимальный отрезок времени, за который она откроется хотя-бы раз (что бы наш измеритель хоть чего-нибудь да измерил) равняется 1/5 секунды или 200мс. Ну вот и возьмем эти 200мс за единицу времени, т.е. будем мерить сколько времени была открыта форсунка за 200мс. Соответственно, с тем же 200от-миллисекундным интервалом будут обновляться показания на индикаторе.

Дальше под катом »

Индикатор расхода топлива для инжекторного двигателя – часть 0b01  P

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

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

И тогда я понял, что мне нужен простой “прогресс бар” (вообще это это называется “бар граф” от англ. bargraph, но прогресс бар как то понятнее звучит Smile), который будет показывать расход топлива в единицу времени. Вот такой вот:

image

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

Дальше под катом »

Превращение FLUKE 15B в FLUKE 17B и обзор оного  P

fluke_15B fluke_17B Понадобился мне нормальный мультиметр. Я уже довольно давно обходился простеньким UNI-T UT33C, но вопрос о точности его измерений всегда оставался открытым. Я даже просверлил в его корпусе дырки, для быстрого доступа к подстроечникам (а из там аж 5!!!) и иногда калибровал его в лаборатории. Но все равно точность плавала в зависимости от температуры окружающей среды, фазы Луны и черт знает чего еще. Кроме того чувствительность была мала и измерять низкие напряжения с достаточной долей точности было нереально. Со временем еще отвалился провод от одного из щупов… В общем впечатления от UNI-T остались не очень радужными.

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

Решил купить нормальный прибор, причем именно FLUKE, так как существует легенда, что FLUKE — это папа всех мультиметров на планете.

Покопавшись в сети, я облюбовал модель FLUKE 17B ценой примерно в 100 баксов. Однако, спустя секунду я обнаружил что существует модель FLUKE 15B, которая в отличие от старшей модели не умеет мерить температуру, частоту и скважность, а также производить измерения напряжения и тока относительно некоторой заданной величины. При этом данный мультиметр стоил значительно дешевле — около 50 баксов. Присмотревшись, я заметил, что обе модели имеют практически идентичный внешний вид, разве что у младшей отсутствует пара элементов управления.

Это навело меня на мысль, что с производственной точки зрения, совершенно нерентабельно делать две разные начинки для двух соседних моделей прибора. Скорее всего начинка у обоих мультиметров одна, и только конструктивные особенности корпуса и пара перемычек на плате ограничивают FLUKE 15B от использования части функционала, доступного на FLUKE 17B. Забегая вперед скажу, что я оказался чертовски прав!

Понимая, что даже если мне не удастся превратить FLUKE 15B в 17B, я получу изумительный, точный и надежный прибор, я приобрел FLUKE 15B.

Дальше под катом »

Вольтметр для компа — продвинутая версия  P

На этот раз начну с конца. Вот, что получилось:

Ну а теперь, давайте поговорим о том, как я к этому все пришел. Может быть кто-то узреет для себя пару полезных идей.

Дальше под катом »

Вольтметр для компа — простая версия  P

Захотелось мне однажды сочинить вольтметр для своего компа. Дело в том, что комп сильно разогнан, и очень уж мне хотелось постоянно мониторить напряжения в нескольких точках (таких как память, процессор, линии питания и т.п.) Кроме всего прочего эстетическая сторона вопроса тоже не давала покоя — я представлял себе как клево будет смотреться экранчик с цифрами на морде у компа.

Задача была проста: придумать некий девайс, состоящий из, собственно, вольтметра и коммутатора — узла, который бы позволил подключать к одному вольтметру несколько цепей для измерения. К сожалению особых познаний в электронике у меня тогда не было, и пришлось пожертвовать желанием сделать цифровое переключение каналов, довольствуясь пакетным переключателем. Таких было сразу же куплено парочку, про запас:

Пакетник
Пакетник

Вольтметр было принято решение сделать самому, так как имеющееся в продаже китайское барахло было адски неточным и экран был жидкокристаллическим, в то время как мне хотелось ярких цифр на LED дисплее.

К счастью желание заиметь рукотворный вольтметр посетило не меня одного и давным-давно была придумана соответствующая микросхема КР572ПВ2А и ее импортный аналог ICL7107CPL, которая сочетает в себе довольно точный вольтметр и драйвер для четырех семисегментных LED индикаторов. Микросхема (а точнее целых четыре!) было получено нахаляву, в качестве инженерных образцов от фирмы проихводителя MAXIM — при заказе можно выбрать опцию Order Sample и так до восьми чипов за раз.

Схема вольтметра была взята из даташита на данную микросхему:

Схема вольтметра
Схема вольтметра

К сожалению у меня не осталось файлов с разводкой платы, но она настолько элементарна, что думаю любой при желании легко с этим справится. Сама схема настолько проста, что начинает работать сразу, без каких либо настроек и плясок с бубном. На вход ставится точный делитель напряжения 1:10 (нога номер 31), то есть придется найти где-то точный прибол для настройки делителя. Рекоммендую строить его на точном многооборотном подстроечнике.

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

Вот как это было в моем случае:

This SimpleViewer gallery requires Macromedia Flash. Please open this post in your browser or get Macromedia Flash here.
This is a WPSimpleViewerGallery

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

UPDATE: создал, делюсь. :-)

Облако меток:

  • самопал обзор поржать модернизация доработка компьютер Almera измерения гараж ремонт паяльники и пайка водянка двигатель N15 прошивка кулер Nissan Софт технологии блок питания интрумент микропроцессоры Windows чистка смартфон тюнинг помпа история бред интрукция браузер GA16DE GPS автоматика unlock рабочее место мышка программирование процессор электрогитара

  • Подняться вверх