Реклама ⓘ
Главная » Электроника для авто
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Бортовой компьютер для ЭБУ Bosch 7.9.7+ на MSP430

Статья отличается от этого проекта тем, что работает с ЭБУ типа Bosch 7.9.7+

Функции выполняемые БК:
1. Считывание параметров из ЭБУ (расход, скорость, обороты. температура ОЖ и т.д.)

Считывание параметров из ЭБУ

2. Считывание ошибок ЭБУ и сброс ошибок.

Считывание ошибок ЭБУ

3. Система управления отопителем салона. Измерение текущей температуры, релейное управление электромагнитным клапаном (открыт, закрыт) с настраиваемыми уровнями включения и выключения.

Управления отопителем салона

4. Регулировка яркости дисплея.

Регулировка яркости дисплея

5. Звуковая сигнализация превышения температуры охлаждающей жидкости и напряжения аккумулятора.

Принципиальная схема бортового компьютера:

Принципиальная схема бортового компьютера на MSP430

В качестве сердца используется микроконтроллер фирмы Texas Instruments (почему смотри ниже). Но код написан на Си и может быть легко портирован на любой другой типа mega128 от ATMEL. Контроллер любой из MSP430F1610 MSP430F1611 MSP430F1612 (Даташит).
Требования к контроллеру: не менее 20кБ flash, 4кБ ОЗУ, минимум один USART для связи с ЭБУ и еще один, если используется как у меня SPI датчик температуры.

Экранчик от nokia1202 96х68. Он хорош тем, что в магазине http://siriust.ru/ стоил 25 рублей и было куплено когда-то 10 штук про запас. Была в наличии текстовая библиотека и все было сделано первоначально на ней, но в ней не было русского шрифта. Зато требовалось меньше ОЗУ, так как не требовалось иметь видеобуфер размером почти килобайт (96*64/8+96=864 байта), а писать свою мне было лень. Позже в процессе решения другой задачи, понадобилась графичка под экран nokia 1202. Пришлось взять графичку от nokia3310 и портировать под nokia1202. А как бонус там шел русский шрифт и поэтому в процессе продолжения работ по БК перешел на неё. Подключение с помощью софтварного SPI и тоже естественно легко портируется под любой доступный и понятный вам экран типа Nokia 3310, Nokia 1100 или даже МЭЛТ, ибо в программе используются понятные вызовы библиотечных функций вывода символов. Печатки для этого экрана я сделал сразу штук 5. На них легко припаивается шлейф от экрана и затем сама плата приклеивается на заднюю часть экрана. Получаются этакие доработанные экраны с большими контактами для подпайки и уже обвязанные по питанию и контактами для распайки mosfet-а в корпусе sot-3 для организации регулируемой подсветки в виде ШИМ. Очень полезные странички про покурить экраны

Для связи с ЭБУ используется специализированная микросхема SN65HVDA195 от Texas Instruments (Даташит). Печатная плата также выполнена отдельно.

Датчик температуры TMP121 или TMP123 на аппаратном SPI (Даташит). Меряет температуру от -25 до +85С.

Отличие схемы включения датчика от даташита заключается в том, что я не стал подводить ногу питания к датчику. Вместо этого на плате я поставил диод Шоттки и конденсатор на 10 мкФ между ногами Vcc и Gnd. Сигнал на диод берется с вывода CS. По алгоритму работы с датчиком вывод CS всегда находится под высоким уровнем (при этом происходит непрерывное измерение температуры) и опускается вниз только для считывания измеренного значения температуры. Так как допустимое напряжение питания составляет 2,7В, а ток потребления 50 мкА то данное упрощение вполне допустимо.

И так почему были выбраны детали от техас инструмент? Да потому что бесплатно.
У техаса можно заказать сразу и контроллер и микросхему к-line интерфейса и стабилизатор на 3.3В и датчик температуры (к тому же все это можно заказать не по одному экземпляру, а по 3-5 штук и собрать соответственно не один, а несколько БК).

В чём и как программировать

Я использую IAR Workbench 5.1 который вполне легально можно скачать на сайте ИАРА. После регистрации и запроса evolution версии по ссылке, получаем полнофункциональную версию на 30 дней. А потом можно и еще заказать для продолжения.
Программатор либо по LPT, либо по COM (или переходник USB-COM, так называемый BSL).
Схема для программирования по LPT проста как две копейки (к сожаленью не так проста как 5 проводков для AVR, но уж точно порт не спалите) позволяет прошивать и отлаживать прям из IAR, что для меня большой плюс. Но требует LPT порт, а он все реже попадается.

Программатор BSL по последовательному порту. Использует вшитый в MSP bootloader. Можно шить, но нельзя отлаживать. Зато работает от COM порта и что более актуально - от переходника USB-COM используя линии TXD, RXD, DTR, RTS. У меня прекрасно работает от переходника TUSB3410 фирмы техас инструмент (тут продолжительные аплодисменты).

Переключение по экранам происходит кнопкой "MENU". Регулировка значений включения отключения клапана отопителя кнопками "ВВЕРХ" "ВНИЗ". Переключение между уставками включения отключения клапана отопителя кнопками "СМЕНА". Кнопку "ВКЛ" и "ENTER" пока не используются. Просто они есть на корпусе.

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

Макетка для MSP

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

Регулировка яркости реализована на аппаратном ШИМ с ноги Р4.1.

Алгоритм работы БК следующий:
1. Инициализируется периферия МК, экран, SPI, USART.
2. В таймере формируются так называемые признаки событий.
- признак запроса установления связи с ЭБУ каждые 750 мс.
- признак запроса данных из ЭБУ каждые 270 мс при наличии признака положительного ответа от ЭБУ
- признак запроса температуры каждые 1,5 сек.

Признак запроса данных из ЭБУ меняется на признак запроса ошибок при нахождении в меню "Ошибки" и запрашивается соответственно каждые 270 мс.
Также в таймере ведется подсчет временного интервала с последнего положительного ответа ЭБУ на запрос данных. Если временной интервал между положительными ответами превысит 2,5с, то произойдет сброс признака запроса данных и выставится признак запроса установления связи с ЭБУ. Сброс данного таймера осуществляется в прерывании от принятого байта из USART.

В прерывании USART организован FIFO буфер на 80 байт. Данный объем выбран из условия, что длина максимального ответа от ЭБУ составляет 80 байт.
Также в прерывании USART формируются признаки положительно ответа от ЭБУ, читаются ошибки, вычисляются данные из массива переданного ЭБУ.

В основной программе происходит опрос кнопок и обработка запросов сформированных в прерывании таймеров.

Перед входом в цикл основной программы происходит чтение info сегмента ППЗУ. В ячейке 0х1000 хранится значение температуры включения клапана СУОС рассчитанное по формуле tппзу=t_вкл/5 (Данная запись позволяет регулировать температуру с точностью 0,2С используя один байт для хранения). В ячейке 0х1001 храниться значение дельты температуры включения-отключения клапана СУОС. Таким образом клапан открывается при температуре меньше уставки на величину дельты и выключается при увеличении температуры выше заданной на величину дельты. В ячейке 0х1004 храниться значение последнего экрана. Если в процессе работы сменить экран и находиться в нем более 30с, то этот экран станет основным и запишется в ППЗУ. В ячейке 0х1002 храниться значение яркости экрана. Если ячейки не заполнены, то записываются первоначальные значения 20С, 0.5С, 10,1.

Немного теории. Для тех, кому данный проект будет являться отправной точкой для создания своего БК на другой элементной базе.
Спецификация протокола KWP2000 приведена в файле kwp2000_euro2.doc. Данный документ описывает протокол общения с ЭБУ типа Motronic 1.5.4N, “Январь-5”. У меня контроллер Bosch 7.9.7+. Анализ снифа протокола обмена ЭБУ с диагностической программой на ПК показал достаточно существенные отличия от указанного выше документа.

Во первых инициализация. Мало того, что должна быть послана соответствующая последовательность команд на ЭБУ, необходимо чтобы в процессе инициализации выдерживались строгие временные интервалы выдачи команд.
Так описанный в приведенном документе процесс "быстрой инициализации" должен заключать в передаче низкого уровня по k линии в течении 25мс (с погрешностью +-1мс), затем высокий уровень на k линии в течении 25мс (с погрешностью +-1мс), затем последовательность управляющих команд. Время между посылками инициализации не менее 200мс. При попытке провести указанным образом инициализацию (так ее пытаются выполнить 4 из 5 диагностических программ), ЭБУ возвращает последовательность 0x83 0xF1 0x10 0x7F 0x81 0x11 0x95, что в соответствии с описанием протокола означает, что ЭБУ не знает такую команду.

В ЭБУ Bosch 7.9.7+ инициализация должна выполняться несколько иначе.
Передается инициализирующая последовательность высокий уровень к линии 25мс, низкий уровень к линии 25мс, последовательность 0х81 0х10 0xF1 0x81 0x03. При этом важно отметить, что интервал между инициализирующими посылками не менее 500 мс. ЭБУ сразу выходит на связь с положительным ответом.

Скорость обмена 10400 бод.
Перед запросом информации из ЭБУ его необходимо инициализировать на работу с БК.
Это делается из БК: шлется последовательность команд 0х81 0х10 0xF1 0x81 0x03. В ответ ЭБУ присылает ответ 0x83 0xF1 0x10 0xC1 0xEF 0x8F 0xC3. Это является признаком положительного ответа на запрос инициализации.

Теперь БК может запрашивать информацию.
Запрос диагностической информации осуществляется последовательностью команд 0x82 0x10 0xF1 0x21 0x01 0xA5. В ответ ЭБУ присылает 79 байт начинающихся с последовательности 0x80 0xF1 0x10 0x4A 0x61 0x01 после которой следует массив диагностической информации. Некоторые значения соответствующих данных приведены в файле анализ.xls. Настроив на ПК связку виртуальных COM портов и подключив один к гипертерминалу, а второй к программе диагностики были выявлены конкретные байты передающие диагностическую информацию и порядок преобразования их в физические величины. Если сравнить их с приведенных описанием на протокол KWP2000, то видно множество отличий, что при одинаковости управляющих команд говорит о том, что протокол обмена с Bosch 7.9.7+ является некой надстройкой над KWP2000. Из статьи видно, что указанный выше документ подходит под ЭБУ типа Январь 5 и Январь 7.2+.
Запрос ошибок выполняется последовательностью команд 0x84 0x10 0xF1 0x18 0x00 0xFF 0x00 0x9C
Ответом на запрос в случае отсутствия ошибок, является последовательность 0x82 0xF1 0x10 0x58 0x00 0xDB.
Сброс ошибок выполняется последовательностью 0x83 0x10 0xF1 0x14 0xFF 0x00 0x97

На чем проверялся БК. Точно работает на ЭБУ типа Bosch 7.9.7+ евро 2 на машине Нива 2131. Больше нигде не проверялась, так как нет в наличии других машин.

Скачать печатные платы в формате Sprint-Layout, проект в IAR и др. файлы к проекту вы можете по ссылке ниже

Вторая версия данного проекта

Автор: Трухов Виктор Павлович (tvilsa)

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
МК MSP430
MSP430F1610
1 MSP430F1611 MSP430F1612Поиск в магазине ОтронВ блокнот
МикросхемаSN65HVDA1951 Поиск в магазине ОтронВ блокнот
Датчик температуры
TMP121
1 TMP123Поиск в магазине ОтронВ блокнот
Кварцевый резонатор8 МГц1 Поиск в магазине ОтронВ блокнот
Конденсатор220 пФ1 Поиск в магазине ОтронВ блокнот
Конденсатор10 пФ2 Поиск в магазине ОтронВ блокнот
Конденсатор0.1 мкФ1 Поиск в магазине ОтронВ блокнот
Резистор
15 Ом
1 Поиск в магазине ОтронВ блокнот
Резистор
20 Ом
1 Поиск в магазине ОтронВ блокнот
Резистор
100 Ом
1 Поиск в магазине ОтронВ блокнот
Резистор
330 Ом
1 Поиск в магазине ОтронВ блокнот
Резистор
1 кОм
2 Поиск в магазине ОтронВ блокнот
Резистор
10 кОм
1 Поиск в магазине ОтронВ блокнот
LCD-дисплейNokia 12021 Поиск в магазине ОтронВ блокнот
LED Светодиод1 Поиск в магазине ОтронВ блокнот
Кнопка тактовая6 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Трухов В.П. Опубликована: 2012 г. 0 0
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (12) | Я собрал (0) | Подписаться

0
Юрий #
А диапазон измерений температуры не маловат?
Ответить
0
Максим #
Отличная, хоть и бесполезная для меня статья. Хочется видеть побольше примеров с применением MSP430.
Ответить
0
Виктор #
Окружающая -40 +125. Меряется TMP121. Охлаждайка как в ЭБУ. Сколько ЭБУ намеряет столько и покажет.
Максим. Что Вы хотите? Вы написали что уже освоили частично msp430. Просто непонятно что Вам нужно.
Вот в этом примере работа с аппаратным spi и usart. Есть библиотеки подключения экранов nokia 1202 и siemens A60, C60, M55 к msp430. Могу выложить. У Вас конкретная задача или просто что-то хочется сделать, но не знаешь что?
Ответить
0
mr_smit #
Ещё раз прочитал статью:
...что протокол обмена с Bosch 7.9.7+ является некой надстройкой над KWP2000...
Ничего подобного!!! Это чистый KWP2000!!! Никаких надстроек. Читайте стандарт. Я тоже раньше так думал пока не копнул глубже. Просто Бош выдает больше параметров.
Keyword Protocol 2000 Part 2: Data Link Layer
Keyword Protocol 2000 Part 3: Application Layer
Ответить
0
Витор #
Копнул, посмотрел. Данные документы описывают в общем то общую часть. Физический уровень и формат формирования запросов ответов. Нигде в них не нашел формат возвращаемого сообщения с параметрами намеренными и рассчитанными ЭБУ. Видимо это остается на откуп конкретным производителям ЭБУ.
Ответить
0
mr_smit #
Да, они описывают протокол. Хотя по запросу 0х80 (а не 0х81 как для инициализации) ЭБУ должен вроде как вернуть список поддерживаемых параметров и формулы пересчета. И в документе приведены эти самые формулы! Я попробовал отправить этот запрос в ЭБУ Hyundai Accent. Не помню как называется, но какой то аналог Боша. Эбу ответил, но я так и не смог разобрать что он выдал. Потому что под описание это не подходило.
Ответить
0
Виктор #
Видимо у нас разные документы.
Покажите пожалуйста в каком документе и где это написано. Планирую в перспективе сделать БК универсальным для разных ЭБУ.
Ответить
0
mr_smit #
Я же уже говорил:
Keyword Protocol 2000 Part 2: Data Link Layer
Keyword Protocol 2000 Part 3: Application Layer
Ответить
0
Виктор #
Сообщение от mr_smit

Хотя по запросу 0х80 (а не 0х81 как для инициализации) ЭБУ должен вроде как вернуть список поддерживаемых параметров и формулы пересчета.


В документе Keyword Protocol 2000 Part 3: Application Layer в списке поддерживаемых команд Service Identifier values (стр 14) нет команды со значением 0x80.

Сообщение от mr_smit

ЭБУ должен вроде как вернуть список поддерживаемых параметров и формулы пересчета. И в документе приведены эти самые формулы!


Нет. Это не так.

на стр.56 Keyword Protocol 2000 Part 3: Application Layer для команды с кодом 0x21 readDataByLocalIdentifier сказано The format and definition of the recordValues shall be vehicle manufacturer specific. Это значит, что формат и значение должно быть определено производителем автомобиля.

В документе есть процедура запроса формулы расчета параметра (правда запрашивается она не
Сообщение от mr_smit

по запросу 0х80 (а не 0х81 как для инициализации)
а по запросу readEcuIdentification 0x1A с продолжением identificationOption 0x80 (ECUIdentificationDataTable) при этом написано что данные должны быть определены производителем. Посмотрите пример на странице 35. Там приводиться пример запроса формулы для скорости. Идентификатор параметра скорость 0x10. Т.е. производитель определяет соответствие физических параметров соответствующим хекс кодам типа скорость=0х10. Не исключаю что гдето есть общие таблицы таких соответствий (только где?). Тогда согласен можно было бы слать запрос readEcuIdentification 0x1A 0x80 получать список параметров. Потом слать readEcuIdentification 0x1A 0x81 и получать таблицу формул перевода и размерность физической величины. Но при любом раскладе необходимо иметь таблицу соответствия физ парааметров хекс кодам.
Ответить
0
mr_smit #
Да, я перепутал. Потому что писал по памяти.

82 11 F1 [COLOR=Blue]1A[/COLOR] [COLOR=Red]81[/COLOR] 1F - это ECUIdentificationScalingTable

Т.е. что то типа таблицы масштабирования/пересчета параметров к действительным значениям. Часть 3 страница 49. А на страницах 30-35 той же части есть расшифровка. И приведенный вами пример на странице 35.

Но мне по этому запросу ЭБУ вернул:

A7 F1 11 5A 81 03 [COLOR=Red]90[/COLOR] 6B 03 [COLOR=Red]91[/COLOR] 6B 03 [COLOR=Red]92[/COLOR] 6B 03 [COLOR=Red]93[/COLOR] 6B 03 [COLOR=Red]94[/COLOR] 6B 03 [COLOR=Red]95[/COLOR] 6B 03 [COLOR=Red]96[/COLOR] 6B 03 [COLOR=Red]97[/COLOR] 6B 03 [COLOR=Red]98[/COLOR] 6B 03 [COLOR=Red]99[/COLOR] 6A 03 [COLOR=Red]9A[/COLOR] 64 03 [COLOR=Red]9B[/COLOR] 68 FF A2

Т.е. это список поддерживаемых запросов из таблицы на странице 49. Но никак не таблица масштабируемых параметров. Я проверил, ЭБУ на запросы 87,88,89 и т.д. отвечает что не знает такую команду. Отвечает начиная с 90-го. Как и указывает в таблице. Т.е. можно запросить как отдельно описание какой то характеристики блока:

Например, нормы токсичности: 82 11 F1 [COLOR=Blue]1A[/COLOR] [COLOR=Red]96[/COLOR] 34

8D F1 11 5A 96 45 55 52 4F 2D ‚.ñ.–4ñ.Z–EURO-
33 20 20 20 20 20 BA 3 º

Так и всё целиком:

82 11 F1 [COLOR=Blue]1A[/COLOR] [COLOR=Red]80[/COLOR] 1E

80 F1 11 7B 5A 80 41 44 45 31 ‚.ñ.€.€ñ.{Z€ADE1
49 35 32 20 20 20 20 33 39 31 31 30 32 36 36 34 I52 391102664
30 32 30 32 36 31 32 30 36 36 30 33 20 39 30 33 020261206603 903
30 39 33 30 30 39 33 20 50 44 35 49 53 30 32 45 0930093 PD5IS02E
20 20 20 4D 39 30 41 41 32 34 47 20 20 20 45 55 M90AA24G EU
52 4F 2D 33 20 20 20 20 20 41 4C 50 48 41 31 2E RO-3 ALPHA1.
35 44 20 20 52 45 50 2E 53 48 4F 50 2E 43 44 31 5D REP.SHOP.CD1
38 30 34 30 31 30 39 33 35 4D 37 39 20 70 64 35 804010935M79 pd5
69 73 30 32 65 68

ЭБУ просто возвращает свои характеристики (название, версия прошивки и т.д.) в одну строчку.

А вот приведение параметров к действительным значениям, а так же какой байт соответствует какому параметру это и в правду отведено на откуп производителю (82 11 F1 [COLOR=Blue]21[/COLOR] [COLOR=Red]03[/COLOR] A8 ). И думаю найти это описание не реально. Разве что искать знакомых на заводах. Хотя, даже не на заводах, а в конторах кто делает эти блоки (Итэлма, Bosch и прочие).
Ответить
0
pavellevin #
на AUDI part no.: 8D0 907 557 H
Bosch part no.: 0 261 203 940 / 941
ПОДОЙДЕТ?
Ответить
0
Виктор Чепель #
В анализе не верно указано значение расхода л/ч в младшем байте, должно быть 0.00215
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Набор 4WD Kit Bluetooth
Набор 4WD Kit Bluetooth
Солнечная панель 10Вт 12В поликристаллическая Ветрогенератор
вверх