Написать пост

Linberg

Изобретаю свой "велосипед"

Последние два дня я достал всех в вотсап КадабраЧатике вопросами про вычисления расхода топлива на бензиновом двигателе. Ну а правда, лично вы знаете, сколько ваш прогретый двигатель кушает на холостых бензина в форме "литров в час"? (у кого есть БК - идите лесом :-P, особенно если на марке, которую тут нельзя называть).
За 3 дня у меня получилось сделать простейший аналог штатного Бортового Компьютера, который умеет вычислять моментальный расход и сколько литров сожгли за поездку.
Сейчас я хочу убедится, что в моем алгоритме расчета расхода топливо нет ошибок и приступить к дальнейшей реализации БК и интеграции его в штатную приборку. Для тех кто обладает примерными представлениями по данной теме прошу под кат. I need help.

Итак, пока вы не устали сразу перейдем к делу. Сигнал о расходе я беру от ЭБУ. В штатной проводке Audi есть специальный провод который идет на приборку и называется "Расход топлива". Я не знал до сегодняшнего вечера какую форму имеет сигнал, но предположил, что чем больше будет моментов времени с высоким уровнем, тем больше будет расход. И собственно не прогадал:



Имеем ~100 импульсов в секунду, длительность которых говорит о времени открытия форсунок.
В плане железки у меня сейчас Arduino. Использую аналоговый вход А0, на котором висит АЦП и выдает значения от 0 до 1023.
В программе есть два счетчика: первый (назовем его cnt_all) считает общее количество выборок АЦП, второй (cnt_hi) - кол-во выборок, при которых уровень сигнала был высоким (>800).
Отношение cnt_hi / cnt_all за определенный период дает представление о времени, в течении которого форсунки были открыты.

Например
T = 1 секунда
cnt_all = 8300
cnt_hi = 830
cnt_hi / cnt_all = 0.1 (секунду).

Умножим на общую производительность форсунок (некий коэффициент K) получим расход топлива за T = 1 секунду. Умножив на 60*60 получим расход топлива за T = 1 час.

Так как я хочу наблюдать изменение показаний на БК чуть почаще чем раз в секунду, то вычисления я произвожу почаще. Например раз в t = 0.5 секунды. Итого получаем формулу для расхода топлива за t времени:

V(t) = ( cnt_hi / cnt_all ) * K * t

Общий расход в литрах соответственно:

fuel = fuel + V(t)

Моментальный расход (литров в час):

currFuel = ( V(t)* (1/t) ) * 3600;

Все верно?

Второй вопрос: как лучше подобрать коэффициент K? Пока есть одна мысль:

1 - залить бак до полного, включить счетчик
2 - покататься часик
3 - заправить до полного. На счетчике будет M литров, на чеке N.

M / K = N / X.

Отсюда X = N * K / M (обычная пропорция).

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

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

Какие есть задумки:

1) на приборке есть пустое место (там должен был быть lcd экранчик штатного БК). Хочу найти в китае похожий по размерам цветной с интерфейсом SPI (или I2C) - чтобы занять как можно меньшее кол-во ножек у контроллера. Лучше подключить больше проводов от проборки и мониторить максимально возможное число параметров (Уровень толива в баке, температуру ОЖ, скорость и т.д.). И выводить это все в том формате, который я считаю для себя удобным.

2) интегрировать arduino (или подобный девайс) в приборку - подключить к питанию, припаять информационные провода напрямую к плате. Мб для этого куплю запасную приборку на ebay.

3) вывести usb наружу (возможно задействовав неиспользуемые пины в OBD разъеме - будет возможность сесть в машину, за 5 секунд подключить ноут к arduino и прошить новой прошивкой.

Для желающих начать делать нечто подобное для своего авто - буду рад помочь.
Если кто изучает или работает с FPGA, ARM и т.д. пишите в комментах или в личку - найдем общие темы для разговоров ;-)

Спасибо за внимание.
Личный опыт: Тюнинг, Разное
54 комментария 18нравится 2избранное
AndreyKo
hugarin
WIllyVel
bm9701
Turbocat
kapion
Spirit999
positron48
osa
OlegTar
cooler777
muzhaos
Molodec
intrepid
Kuper
scl
binba
Tangerine
  • squadgazzz
    3 22 ноя 2013 в 22:04
    ну ты и адский задрот. для чего все это?
    • Linberg
      11 22 ноя 2013 в 22:08
      Для меня это отдых))) на работе все покруче и сложнее: вот там мозг кипит)
      • Gareth
        22 ноя 2013 в 22:09
        А что на работе делаешь?
        • Linberg
          1 22 ноя 2013 в 22:13
          Конкретно сейчас изучаю семейство чипов http://www.altera.com/devices/processor/soc-fpga/cyclone-v-soc/cyclone-v-soc.html
          Это FPGA + ARM на одном кристалле.
          • Gareth
            22 ноя 2013 в 22:14
            Что они делают и где используются?
            • Linberg
              22 ноя 2013 в 22:22
              Там где нужна высокая скорость обработки данных, сигналов. Например прокачивать 8 Гигабайт данных в секунду, отфильтровать их и в готовом виде по ethernet отправить результат. При том размеры этой системы будут как 2-3 айфона.
              Применение: системы реального времени. Это космос (спутники, станции), оборонка, оборудование для ЦОД, канальных провайдеров, биржи и т.д.
              • Gareth
                22 ноя 2013 в 22:23
                Понял тебя.
                А нет ли у вас там гениев для халтурки одной?
                • Linberg
                  22 ноя 2013 в 22:26
                  Смотря что за халтурка) пиши в личку) или в whatsapp (номер в профиле)
                  • Gareth
                    22 ноя 2013 в 22:27
                    выйди в аську.
          • evgeniyBolnov
            1 22 ноя 2013 в 22:58
            круто, на 5 работаете, мы пока все на 5 стратиксе =(
            • Linberg
              22 ноя 2013 в 23:18
              Оо. и ты туда же? ух ты))))
              http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=167&No=816
              На мой взгляд очень бюджетная плата) щас с ней и работаю. Пока пытаюсь понять, как передавать данные из плис в процессор. По идее все делается через Qsys и компонент HPS. Пока пошел второй день чтения документации)))
              • evgeniyBolnov
                22 ноя 2013 в 23:36
                ну мы используем плисину и отдельный проц - там сложнее, а так да, вроде QSys. Скоро будет в питере практикум по SoCrate от EBV
                http://inmys.ru/#/products/som_cyclone_v_se
                http://inmys.ru/#/products/evm_cyclone_v_se

                На таких, как я понял платах
                • Linberg
                  22 ноя 2013 в 23:57
                  ну у нас так же было. fpga + dsp bf518) а щас решили освоить новую штуку, пока есть возможность и время.
                  • Certero
                    23 ноя 2013 в 09:47
                    а я и не знал что тут столько электронщиков..)) ну значит буду +1
          • jiv4ik
            1 22 ноя 2013 в 23:02
            Тоже недавно полистал хэндбук на 5 циклон
            Крутой девайс. По сравнению с 3 и 4 циклоном там много интересных фич появилось.
  • Gareth
    22 ноя 2013 в 22:07
    Что за кадабрачатинг? Почему в массы не несете?
  • Gareth
    1 22 ноя 2013 в 22:09
    Радует скорость: 788, валит не кисло.
    • Linberg
      22 ноя 2013 в 22:36
      при расходе 7 литров в час. Экономно. Это ведь шкода с переплатой за бренд.
  • scl
    22 ноя 2013 в 22:34
    Никита ,сделай разветвитель плиз:)
    Я уже простенький коммуникатор выделил под это:)
    • Linberg
      22 ноя 2013 в 22:38
      во. починил комменты.
      а не проще кстати тупо выключатель сделать? там же в простом варианте только k-line нужен, а это один провод) или вся интересная инфа именно в OBD2 идет?
      • scl
        22 ноя 2013 в 22:39
        бортовик без этого сигнала уже не точно мерит напряжение,температуру и расход....
        • scl
          22 ноя 2013 в 22:40
          плюс по этому проводу можно менять температуру первого включения вентилятора летом..
  • vans239
    22 ноя 2013 в 22:44
    Если реализация, такая как здесь, то будут большие проблемы с точностью чисел. Ты постоянно производишь операции с float, поэтому fuel будет накапливать ошибку. График открытия форсунок именно такой? Мне кажется странным, что у них нет промежуточных состояний (открыто наполовину)
    • vans239
      22 ноя 2013 в 22:48
      Коэффициент K ты так точно не подберешь, так как заправки врут. Нужно тогда использовать канистру. Есть еще вариант посмотреть теоритический максимальный расход твоего двигателя (бензонасос, форсунки т.п.) и взять пропорцию
    • vans239
      22 ноя 2013 в 22:55
      Я бы погуглил сначала для лучшего результата.
      http://stackoverflow.com/questions/17170646/fuel-consumption-from-obd2-port-parameters
      • Linberg
        22 ноя 2013 в 23:32
        уже считал по этому методу. вышли немного нереальные цифры. Либо ошибся, либо ЭБУ не поддерживает состав смеси 14/7:1 на холостых (дает обедненную смесь). Насчет последнего на выходных покопаюсь в vag tool (там был по моему параметр, который говорил о составе смеси).
        • vans239
          22 ноя 2013 в 23:41
          я бы поездил с двумя реализациями, благо кодить ничего не надо, и сравнил. Если большие различия - бага хотя бы в одном методе. Еще на всякий пожарный проверить, сколько в теории должен выдавать MAF. Просто везде пишут, что это честнейшей способ и в большинстве машин расход реализован именно так.
          • Linberg
            22 ноя 2013 в 23:46
            спасибо. попробую)
          • Linberg
            22 ноя 2013 в 23:47
            кстати я третий день без расходомера езжу. он сдох во вторник)))
            • ifknew
              23 ноя 2013 в 01:10
              коробас в аварию не встает?
              на тракторах чуть что - только 2я передача и жуткие пинки при включении R/D
              • Linberg
                23 ноя 2013 в 01:25
                Не. Вообще все шикарно. Я сам разъем скинул с дмрв. Когда включаю обратно двиг троит, обороты плавают. Ехать даж не пытался)
                • ifknew
                  23 ноя 2013 в 12:26
                  у меня наоборот: даже если он вообще ничего не показывает, то лучше не отключать, т.к. при отключенном разъеме случается то, о чем писал выше)

                  говорят на механике при отключении дмрв наблюдается резкий скачок в приёмистости и расходе топлива)
                  • Turbocat
                    23 ноя 2013 в 16:58
                    Ну дык на обогащенную смесь выходит по топливным картам.
    • Linberg
      22 ноя 2013 в 23:54
      Насчет частичного открытия форсунок - я думаю это в мозгах все вычисляется и учитывается. Приборку VAG заказывал двум подрядчикам: французам и своим. На вход приборке идет этот сигнал расхода. Теоретически ТЗ там должно было быть простое и без сложных дополнительных вычислений (смысл двум подрядчикам давать делать одну и ту же задачу дважды?))).
      Насчет float подумаю, но думаю это не критично. Планировал хранить значение до следующей заправки. А это не дольше 10 часов работы (10*60*60*2) - столько раз будет суммироватся float)
      • vans239
        23 ноя 2013 в 00:12
        сложность с твоей точки зрения и с точки зрения промышленного программирвоания - разные вещи. Им и интегральчик не влом будет посчитать (хотя косвенно и ты сейчас это делаешь). Просто такая функция нужна везде, легко реализуется, но необязательно настолько легко. В частности в ссылке на stackoverflow человек с правильные решением привел множество параметров желательных для большей точности.
  • Vendict
    22 ноя 2013 в 22:50
    Какова длина импульса ? Дело в том, что у Ардуино analogRead что-то около 0.1 милисекунды работает, а digitalRead около 4мкс (1 такт "процессора").
    По крайней мере я такие цифры получил на моей, пытаясь аналоговым чтением считать ключ Cyfral. И поймал грабли. Длина импульса у Cyfral около 60 мкс. , и за одну операцию analogRead ключик успевал около 10раз напеть мне свой код, как оказалось.
    Не поймай эти грабли, переделай на цифровой вход, правильно подобрав делитель напряжения.
    Я в итоге взял схему делителя отсюда: http://radiokot.ru/circuit/digital/home/77/
    В правом углу схемы около надписи "KEY". В тексте написано, как оно работает. И только тогда я получил все импульсы ключа.
    • Linberg
      22 ноя 2013 в 23:42
      Да, спасибо, уже понял наличие этой проблемы) когда увидел длину импульсов реального сигнала (всю программу писал до того, как увидел реальную картинку).
      AnalogRead делает 8300 отчетов в секунду -> 1\8300 = 0.00012 -> раз в 0,12 ms
      Минимальная длина импульса около 0.35-0.45 ms. Но тут переделать проблемы нет. Главное с алгоритмом и коэффициентом разобраться)))
  • ingmar
    22 ноя 2013 в 22:56
    кружка прикольная, с васильками
  • muzhaos
    22 ноя 2013 в 23:01
    Было бы здорово, вшить данную машинку в мозг авто) Смог бы вскрыть его и разобраться что там к чему?) А то у меня как раз много планов лезть в голову, но для того чтобы там хоть как то разобраться знаний попросту не хватит(
    • Linberg
      22 ноя 2013 в 23:45
      Мозги копать неблагодарное дело. И на самом деле не советую) проще реализовать нужные функции с нуля имея входные данные на своем железе.
    • lolwut
      23 ноя 2013 в 18:12
      Ставь "Январь" coolface.jpg
  • lolwut
    22 ноя 2013 в 23:24
    А зачем брать сигнал с какого-то провода в приборке, если можно взять из OBDII PIDов длительность впрыска форсунок, обороты двигателя, по этим данным рассчитать расход и вывести на экран?
    • Linberg
      1 22 ноя 2013 в 23:34
      1) не хочу тянуть лишние провода
      2) занимать OBD
      3) на приборку и так приходят все нужные провода, просто в виде сигналов (как на фотке с осцилографом). Проще "оцифровать" и обработать.
  • cooler777
    3 23 ноя 2013 в 00:21
  • Timur1976
    23 ноя 2013 в 08:43
    Т.е. грубо говоря, твой девайс не универсален. А если у меня нет такого проводка, как на ауди?
    • ifknew
      23 ноя 2013 в 12:28
      купи)
      • Timur1976
        23 ноя 2013 в 12:38
        хм. забавный ответ. Т.е., если у кого-то в машине нет, ну скажем, провода для прикуривателя регистратора, то он должен пойти и купить новую машину. ОК, круто че.
      • Timur1976
        23 ноя 2013 в 12:40
        я имел в виду про проводок - что если ты показываешь решение проблемы (велосипед, как ты говоришь), то решение должно быть хоть немного унифицировано. Иначе, это велосипед только для избранных, с квадратными колесами, и штырем вместо руля. Вроде и велосипед, но ездить могут только те, кто его придумал.
        • ifknew
          23 ноя 2013 в 18:36
          что за глупость? с таким успехом можно спрашивать с брабуса тюнинг для дэу нексии. а чо? должно быть унифицировано!
          • Timur1976
            24 ноя 2013 в 05:59
            теперь глупость сказал ты, т.к. сравнил совсем другие вещи. Электронику можно унифицировать, добавив/удалив что-нибудь, взяв сигнал с другого контакта, например
        • ifknew
          23 ноя 2013 в 18:38
          и вообще, с чего ЕГО девайс ДОЛЖЕН быть универсальным? он сделал штуку сам для себя, поделился новостью с окружающими, а ты ему тут решил предъявы покидать?
          • Timur1976
            24 ноя 2013 в 06:00
            с другой стороны - он предложил тем, кто тоже работает с ардуино, помочь в реализации, значит, в его схемотехнике может быть универсальность :)
  • yeppix
    23 ноя 2013 в 16:46
    а не проще ли было купить elm327 и подключив его к смартфону/ноутбуку посмотреть всё, что интересует?
    • Linberg
      23 ноя 2013 в 20:20
      Нельзя было сначала комменты почитать в ветке?
Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста, или зарегистрируйтесь.