Вопрос

Как работает индикатор расхода топлива в реальном времени?

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




  1. Пока все правильно?



Если я правильно понял, у меня возник вопрос по теме: интервал отправки данных зависит от времени (например, каждые пять секунд) или от расстояния (например, каждые 700 пройденных футов)? Я спрашиваю об этом, потому что первый вариант будет немного сложнее в реализации (хотя и не невозможен), чем второй. Я не знаю, какой вариант выбрать, но мне бы хотелось, чтобы симуляция была как можно ближе к реальности.



Перевод вопроса с Mechanics Stack Exchange
Лицензия: CC BY-SA (2.5–4.0)
Оригинальный вопрос: https://mechanics.stackexchange.com/questions/36285/how-does-a-real-time-mpg-display-work

7 Комментариев


  1. Помимо прочего, я преподаю информатику.




    Эй! Я тоже!




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




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




    Если я правильно понял, у меня возник вопрос по теме: интервал отправки данных зависит от времени (например, каждые пять секунд) или от расстояния (например, каждые 700 пройденных футов)?




    Все дисплеи, которые я когда-либо видел, были привязаны ко времени. На самом деле всё немного сложнее:




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

    2. Обычно с момента последнего сброса данных отображается общий средний расход топлива / миль на галлон.

    3. Часто используется скользящее среднее значение расхода топлива / миль на галлон, которое охватывает более длительный период, чем в примере 1 выше.

    4. Фильтры Калмана играют важную роль во всём вышеперечисленном.



    Однако, если вы просто хотите познакомить студентов с основами программирования систем и пользовательских интерфейсов, вычисление среднего значения за определённый промежуток времени не составит труда. Например, предположим, что вы получаете данные о расходе топлива и пройденном расстоянии примерно раз в 1/10 секунды. Создайте ограниченную по времени очередь, которая будет собирать эти данные и вычислять расход топлива на 1 галлон в час.


  1. Я полагаю (надеюсь, кто-нибудь поправит меня, если я ошибаюсь), что количество топлива измеряется расходом топливных форсунок и временем их открытия. Форсунки рассчитаны на подачу определённого количества топлива при давлении в топливной системе автомобиля. Время их открытия определяется ЭБУ.



    Пройденное расстояние определяется датчиком скорости и расстояния. Вы получаете один импульс за каждое вращение. Вас интересует длительность импульса — промежуток времени между импульсами.


  1. По крайней мере, в моей машине используется расчёт, основанный на временных единицах. Возможно, есть и резервный расчёт, основанный на расстоянии.



    Причина:



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


  1. Я всегда думал, что это «предположение о потреблении». :-)
  1. Возможно, вам будет интересно узнать о MPGuino — дисплее расхода топлива на базе Arduino / бортовом компьютере.
  1. Ваша идея отслеживать показания одометра и топливной магистрали может сработать в теории, но на практике она не используется. Во-первых, часто есть обратная топливная магистраль, поэтому вам понадобятся два датчика расхода и нужно будет вычислять разницу между измеренными значениями. Это увеличивает затраты и усложняет процесс, хотя уже существуют другие способы подсчёта пробега.



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



    Кроме того, существуют приложения для мобильных телефонов и т. д. которые подключаются к порту OBD-II (для диагностики). Через этот порт обычно нельзя получить данные о пробеге или расходе топлива, но можно получить информацию о расходе воздуха. Зная это, приложение может рассчитать, сколько топлива нужно добавить для идеального соотношения воздуха и топлива. Разумеется, это не работает на дизельных двигателях и обычно не распознаёт отключение подачи топлива.



    С точки зрения программирования я не вижу особой разницы. ЭБУ либо использует прерывание по таймеру, либо прерывание по какому-то «отрезку расстояния».



    Если вы посмотрите на индикатор пробега, то увидите, что он обновляется каждые несколько секунд, независимо от вашей скорости. Подумайте вот о чём: было бы неприятно, если бы индикатор обновлялся раз в минуту, когда вы едете с остановками, и если бы он обновлялся дважды в секунду на шоссе. Постоянный интервал обновления гораздо удобнее!


  1. На самом деле это зависит от того, сколько топлива впрыскивается в цилиндры (ширина импульса форсунки или коэффициент заполнения), а не от состояния самой топливной магистрали. Гораздо проще определить, сколько топлива впрыскивается в конкретный момент. Кроме того, у большинства автомобилей с системой впрыска топлива есть возвратные топливные магистрали, по которым неиспользованное топливо возвращается в топливный бак... чтобы это определить, нужно контролировать обе магистрали. Что касается интервала, то он, скорее всего, зависит от производителя. Однако они могли настроить его так, чтобы он работал достаточно точно.
Вы уже ответили на этот вопрос