Привет всем.
Последнее время мне "понравилось" запускать все на столе - вот дошло время приборной панели.
Собственно получилось запустить приборку на "столе" (без машины) и чуток покрутить стрелками с помощью Arduino.
Теперь все по порядку:
1. Подключение приборки.
2. Управление стрелкой спидометра
2. Управление стрелкой тахометра
3. Управление стрелкой эконометра
4. Что дальше
Сразу оговорюсь что у меня хай приборка с машины 525i 1994.
Подключение приборки.
Как подключить приборку я нашел в этой статье
Х17 — High 26 пин, бежевый
Х17 — High Х17 6 пин, коричневый
Для этого нам требуется подать +12V в три места:
Х17: 15 (включено всегда если не ошибаюсь, соответствует положению ACC ключа)
Х16: 12 (включено всегда)
Х16: 7 (включено зажигание)
и минус:
Х17: 1 (Масса или минус)
После этого если все пошло хорошо то вы увидите пробег и несколько ошибок на экрана
Далее можно вытянуть 7 пин с X16, далее зажать правую кнопку на приборке, включить 7 пин с X16, отпустить кнопку — должен начаться тест приборки.
На котором вы увидите примерно это:
1 Номер партии (6 цифр)
2 Серийный номер кодера приборки.
3 K NUMBER (4 digits) — (количество ипульсов для одометра/спидометра означает сколько раз датчик посылает сигнал по прохождению 1 км).
4 VIN кузова. (5 последних цифр)
5 Версия программного обеспечения.
6 Версия платы приборки.
* очень важен 4 параметр с помощью него можно рассчитать сколько импульсов нужно что б спидометр показал 100 км в час — Х = K * 100 (км) / 60 (минут) / 60 (сек) (Х — количество импульсов в 1 сек.)
Управление стрелкой спидометра
Распиновка приборки
Для управление спидометром нам нужно передавать количество импульсов на X271 пин 8.
Рассчитываем его по формуле Х = K * 100 (км) / 60 (минут) / 60 (сек) (Х — количество импульсов в 1 сек.)
Далее подключаем arduino и с помощью функции tone задает количество импульсов, в свою очередь пин который выдает сигнал подключен к базе полевого транзистора который подает и убирает напряжение с X271 пин 8. (Транзистор нам нужен поскольку сигнал должен приходить на приборку 12в, а arduino выдает 5в, как подключать транзистор легко найти в интернете описывать не буду).
Если все получилось то вы сможете задавать любое значение для спидометра с программы, которое выше 40 км — это связано с тем что функция tone выдает квадратный сигнал (50% времени сигнал есть 50% его нет), а реальный датчик выдает сигнал примерно 75% есть и 25% нет.
Если хотите что б и до 40км работало красиво надо написать реализацию на таймерах (библиотеки я не нашел
)
Управление стрелкой тахометра
Для управление спидометром нам нужно передавать количество импульсов на X16 пин 18.
Тут примерно 50 импульсов (hz) в секунду равно 1000 оборотов, но работает как то странно… я подобрал вот такое соотношение (сначала выставил стрелку по центру, а потом калибровал что б на 1к и 6к тоже правильно показывало)
X = (engineRPM — (engineRPM — 3500) / 19.7) / 19.4; (X — количество импульсов в секунду).
Тут сигнал тоже не квадратный а 66% в high (есть сигнал) и 34 в low (нет сигнала).
Управление стрелкой эконометра
Для управление эконометром нам нужно передавать количество импульсов на X16 пин 17.
По этой стрелке вообще очень мало инфы в инете… пришлось что то выдумывать получилось что то сложное но работает ))
Проблема в том что машина получает импульсы с DME (предположительно количество впрысков и их длина) дальше как то преобразует его в литры на 100км учитывая текущую скорость и обороты.
Методом "тыка" вывел такую формулу
X = engineRPM / 20; (X — количество импульсов в секунду)
Но тут еще влияет длина сигнала (впрыска).
1 / Х — длина одного импульса
litersPer100km — сколько мы хотим увидеть на эконометре
currentSpeed — текущая скорость авто
далее нужно посчитать длину high фазы (есть сигнал)
Y = (1 / X) * litersPer100km * currentSpeed / 3000 (Y — длина high фазы, длина low фазы — (1 / Х — Y))
Теперь при изменение скорости или оборотов надо пересчитывать и текущий расход на 100 км.
Что дальше
Дальше хотел еще добить бак и температуру
По баку знаю что он работает от сопротивления 87 Ом — пустой, 2 Ом — полный. Но по какой то причине стрелка не двигается… если кто то знает почему напишите.
По температуре еще ничего не смотрел но думаю должно быть легко (если у кого то есть инфа напишите)
Нашел тему где люди выводят свой текст вместо ошибок — тоже интересно попробовать но пока не знаю зачем ))
Ах да, еще одно для тестов, когда все будет спаяно попробую подключить все к жуку (vw new beetle) — надеюсь приборка заработает (должна дублировать основную приборку машины)
P.S.
Все это делается что б подружить новые двигателя которые работают по can шине с оригинальной приборкой.
Видео работы.
[video=youtube;zGW9lw26zVs]https://www.youtube.com/watch?time_continue=6&v=zGW9lw26zVs[/video]
Последнее время мне "понравилось" запускать все на столе - вот дошло время приборной панели.
Собственно получилось запустить приборку на "столе" (без машины) и чуток покрутить стрелками с помощью Arduino.

Теперь все по порядку:
1. Подключение приборки.
2. Управление стрелкой спидометра
2. Управление стрелкой тахометра
3. Управление стрелкой эконометра
4. Что дальше
Сразу оговорюсь что у меня хай приборка с машины 525i 1994.
Подключение приборки.
Как подключить приборку я нашел в этой статье
Х17 — High 26 пин, бежевый
Х17 — High Х17 6 пин, коричневый
Для этого нам требуется подать +12V в три места:
Х17: 15 (включено всегда если не ошибаюсь, соответствует положению ACC ключа)
Х16: 12 (включено всегда)
Х16: 7 (включено зажигание)
и минус:
Х17: 1 (Масса или минус)
После этого если все пошло хорошо то вы увидите пробег и несколько ошибок на экрана
Далее можно вытянуть 7 пин с X16, далее зажать правую кнопку на приборке, включить 7 пин с X16, отпустить кнопку — должен начаться тест приборки.
На котором вы увидите примерно это:
1 Номер партии (6 цифр)
2 Серийный номер кодера приборки.
3 K NUMBER (4 digits) — (количество ипульсов для одометра/спидометра означает сколько раз датчик посылает сигнал по прохождению 1 км).
4 VIN кузова. (5 последних цифр)
5 Версия программного обеспечения.
6 Версия платы приборки.
* очень важен 4 параметр с помощью него можно рассчитать сколько импульсов нужно что б спидометр показал 100 км в час — Х = K * 100 (км) / 60 (минут) / 60 (сек) (Х — количество импульсов в 1 сек.)
Управление стрелкой спидометра
Распиновка приборки
Для управление спидометром нам нужно передавать количество импульсов на X271 пин 8.
Рассчитываем его по формуле Х = K * 100 (км) / 60 (минут) / 60 (сек) (Х — количество импульсов в 1 сек.)
Далее подключаем arduino и с помощью функции tone задает количество импульсов, в свою очередь пин который выдает сигнал подключен к базе полевого транзистора который подает и убирает напряжение с X271 пин 8. (Транзистор нам нужен поскольку сигнал должен приходить на приборку 12в, а arduino выдает 5в, как подключать транзистор легко найти в интернете описывать не буду).
Если все получилось то вы сможете задавать любое значение для спидометра с программы, которое выше 40 км — это связано с тем что функция tone выдает квадратный сигнал (50% времени сигнал есть 50% его нет), а реальный датчик выдает сигнал примерно 75% есть и 25% нет.
Если хотите что б и до 40км работало красиво надо написать реализацию на таймерах (библиотеки я не нашел

Управление стрелкой тахометра
Для управление спидометром нам нужно передавать количество импульсов на X16 пин 18.
Тут примерно 50 импульсов (hz) в секунду равно 1000 оборотов, но работает как то странно… я подобрал вот такое соотношение (сначала выставил стрелку по центру, а потом калибровал что б на 1к и 6к тоже правильно показывало)
X = (engineRPM — (engineRPM — 3500) / 19.7) / 19.4; (X — количество импульсов в секунду).
Тут сигнал тоже не квадратный а 66% в high (есть сигнал) и 34 в low (нет сигнала).
Управление стрелкой эконометра
Для управление эконометром нам нужно передавать количество импульсов на X16 пин 17.
По этой стрелке вообще очень мало инфы в инете… пришлось что то выдумывать получилось что то сложное но работает ))
Проблема в том что машина получает импульсы с DME (предположительно количество впрысков и их длина) дальше как то преобразует его в литры на 100км учитывая текущую скорость и обороты.
Методом "тыка" вывел такую формулу
X = engineRPM / 20; (X — количество импульсов в секунду)
Но тут еще влияет длина сигнала (впрыска).
1 / Х — длина одного импульса
litersPer100km — сколько мы хотим увидеть на эконометре
currentSpeed — текущая скорость авто
далее нужно посчитать длину high фазы (есть сигнал)
Y = (1 / X) * litersPer100km * currentSpeed / 3000 (Y — длина high фазы, длина low фазы — (1 / Х — Y))
Теперь при изменение скорости или оборотов надо пересчитывать и текущий расход на 100 км.
Что дальше
Дальше хотел еще добить бак и температуру
По баку знаю что он работает от сопротивления 87 Ом — пустой, 2 Ом — полный. Но по какой то причине стрелка не двигается… если кто то знает почему напишите.
По температуре еще ничего не смотрел но думаю должно быть легко (если у кого то есть инфа напишите)
Нашел тему где люди выводят свой текст вместо ошибок — тоже интересно попробовать но пока не знаю зачем ))
Ах да, еще одно для тестов, когда все будет спаяно попробую подключить все к жуку (vw new beetle) — надеюсь приборка заработает (должна дублировать основную приборку машины)
P.S.
Все это делается что б подружить новые двигателя которые работают по can шине с оригинальной приборкой.

Видео работы.
[video=youtube;zGW9lw26zVs]https://www.youtube.com/watch?time_continue=6&v=zGW9lw26zVs[/video]