Страница 1 из 6
Самодельный MUT сканнер :)
Добавлено: 18 мар 2009, 12:16
Cezar
Сделал такое устройство:
Связывается с Паджерой по MUT протоколу с и выводит на экранчик параметры двигателя. Состоит из микропроцессора ATmega168, дисплея от мобильника и адаптера К-линии. Программа написана на С (компилятор CodeVisionAVR).
Хотелось бы связываться с другими системами авто (ABS, иммобилайзер и т.д.) и добавить просмотр/сброс ошибок но нигде не могу найти полного описания процедуры инициализации связи и списка параметров. Может есть у кого описания?
Добавлено: 18 мар 2009, 12:52
de
А поподробнее об устройстве? А то давно уже облизываюсь сделать.
Хотя бы заюзаный протокол, софт сами напишем. Насколько понимаю, просто посылаем один байт в коммуникационный порт, и система нам отвечает одним байтом. Какие параметры порта - битрейт, parity, и т.д.?
Команды эти подходят?
Код: Выделить всё
06 TimingAdv Eval="x-20" Unit="deg"
07 CoolantTemp Eval="-0.0003893*x^3+0.08056*x^2-6.5226*x+315.73" Unit="deg F"
0C FuelTrim_Low Eval="int(.1961*x)-25" Unit="%"
0D FuelTrim_Middle Eval="int(.1961*x)-25" Unit="%"
0E FuelTrim_High Eval="int(.1961*x)-25" Unit="%"
0F O2FeedbackTrim Eval="int(.1961*x)-25" Unit="%"
12 EGRTemp Eval="-2.7*x + 597.7" Unit="deg F"
13 O2Sensor Eval="0.0195*x" Unit="V"
14 Battery Eval="0.0733*x" Unit="V"
15 Baro Eval="x/2" Unit="kPa"
16 ISCSteps Eval="x" Unit="steps"
17 TPS Eval="100*x / 255" Unit="%"
1A AirFlow Eval="6.29*x" Unit="Hz"
1C ECULoad Eval="5*x/8" Unit="%"
1D AccelEnrich Eval="100*x / 255" Unit="%"
1F O2SensorRear Eval="0.0195*x" Unit="V"
21 RPM Eval="int(31.25*x)" Unit="rpm"
24 TargetIdle Eval="7.8*x" Unit="RPM"
26 KnockSum Eval="x" Unit="count"
27 OCTNumber Eval="x" Unit="Int"
29 InjPulseWidth Eval="0.256*x" Unit="ms"
2C AirVol Eval="x" Unit="Int"
2F Speed Eval="(2*x)*0.621371192" Unit="MPH"
30 Knock Eval="x" Unit="count"
32 AFRMAP Eval="x" Unit="Int"
38 MDP Eval="1.25*x" Unit="%"
3A AirTemp Eval="-0.00000003166*x^5+0.00001425*x^4-0.002490*x^3+0.2143*x^2-10.279*x+361.01" Unit="deg F"
6A KnockADC Eval="x" Unit="Int"
6B KnockBase Eval="x" Unit="Int"
6C KnockVar Eval="x" Unit="Int"
6D KnockChange Eval="x" Unit="Int"
6E KnockDynamics Eval="x" Unit="Int"
6F KnockFlag Eval="x" Unit="Int"
86 WGDC Eval="x*100/255"
А эти? Удобно, чтобы не дергать вручную разъемы форсунок.
Код: Выделить всё
F5 Canister purge
F6 Turn on fuel pump
disable injector for about 6 seconds and return 0x00
F7 Disable injector #6
F8 Disable injector #5
F9 Disable injector #4
FA Disable injector #3
FB Disable injector #2
FC Disable injector #1
По ABS видел только
http://alflash.com.ua/abs_mmc.htm
Добавлено: 18 мар 2009, 15:27
Cezar
de писал(а):Команды эти подходят?
Команды подходят.
там только коды неисправностей...
de писал(а):А поподробнее об устройстве?
«устройство» сделано на основе платы freeduino (покупал на
http://www.freeduino.ru/). Это аналог широко известной за рубежом платы Arduino (
http://www.arduino.cc/). Но вполне можно обойтись каким нибудь микроконтроллером с небольшой обвязкой (питание, кварц). Для отображения информации применен дисплей от нокии (6100, 7210, 6610, 7250, 6220 и др.) 132x132 точек @4096 цветов на чипе Philips PCF8833. Информации по подключению этих дисплеев полно в интернете, а также могу свою адаптацию библиотеки С (для CodeVisionAVR) выложить. Для связи с ECU применен адаптер K-линии (делал давно для Форестера , один из самых простых схемы уже нет. ). Думаю подойдет почти любой. НО! Если делать на микроконтроллере, надо учесть разницу в уровнях сигналов (для КОМ порта компьютера +5в/-5в для КОМ порта ATmega 0в\5в) Я поступил просто в адаптере К-линии вытащил микросхему MAX232 и перемычками соединил вход\выход.
Теперь о протоколе (похоже на инициализацию OBD2):
Код: Выделить всё
//Фрагмент кода для ATMEGA168
USART_OFF(); // Выключаем КОМ порт
// посылаем InitByte 5 baud 8 data 1 stop NoParity
// посылаю побитово т.к. ком порт Atmega при тактовой частоте
// 20мГц не может работать на 5 baud если частоту сменить то можно
// так USART_INIT(5); putchar(0x00)- проверено
PORTD.1=1; // PORTD.1 это нога ТХ
delay_ms(300); //Slow Init
PORTD.1=0; //Send Startbit
delay_ms(200);
//Для ECU двигателя на скорости 15625 посылаем 0x00
InitByte=0x00;
nb=1;
while (nb) //Send InitByte (8 bit)
{
PORTD.1=(InitByte&nb); // посылаем InitByte
nb=nb<<1;
delay_ms(200);
}
PORTD.1=1; //Send Stopbit
delay_ms(200);
delay_ms(60); // Осталось от OBD протокола. работает и без нее
// Параметры КОМ-порта 15625 baud 8 data 1 stop NoParity
USART_INIT(15625);
// Ждем такой ответ 0x55 0xEF 0x85
// ВСЕ!
while(1)
{
// посылаем номер параметра, получаем его значение
}
InitByte=0x33 инициализирует OBD2 протокол (10400baud).
Если InitByte например =1, то отвечает другая система! Не знаю какая, но начальный ответ другой. И на запрос параметров какие то ответы приходят.
И вроде для других систем скорости другие…. Вот эту инфу я и ищу….
Добавлено: 18 мар 2009, 16:11
de
Спасибо! Как раз процедуру инициализации и настройки ком-порта я и не мог найти. Надо будет заняться, вот только со стучком в движке разберусь.
Добавлено: 18 мар 2009, 16:59
de
А команды-то для ABS прямо на виду лежат, как оказалось. Вот с инициализацией пока вопрос открыт.
http://limitless.co.nz/EvoScan/

Добавлено: 18 мар 2009, 17:56
Testudo
Интересует пара вопросов.
Во-первых, что Cezar писал про изымание MAX232? Интерфейс у пыжа TTL что-ли?
Ну и главный вопрос. Сколько схем смотрю, никак не могу понять, куда подключаться. Мало того, говорят арабов не всякий сканер берет - нужен с подключеним двух разъемов. Может кто-нибудь просветить?
Добавлено: 18 мар 2009, 18:57
Cezar
de писал(а):А команды-то для ABS прямо на виду лежат, как оказалось.
Тоже там нашел

А инициализацию начал расковыривать так: нашел в инете EVOscan 0.9 настроил свое "устройство" на прием на скорости 5 baud, подключил к компу и запустил EVOscan в режиме ABS и получил на экране "устройства" некий байт! забыл какой

на работе записан. Осталось скорость узнать. По скорости нашел такую таблицу:

, вроде там скорость ABS 10417 (эта таблица из файла )
files.mek1.ru/file/MUT-II/MUT-II_new.pdf ) Может у кого есть свежее EVOscan? Другого софта для доступа к другим системам не знаю. есть разные для доступа к двигателю...
Testudo писал(а):Во-первых, что Cezar писал про изымание MAX232?
Я имел в виду вот что:
Так я цеплял к компу:
[Ком порт компьютера]<-->(-5в\+5в)<-->
{[max232]<-->(0в/5в)<-->[транзисторы]}<-->0\12в<-->[OBD разъем]
a так к atmege (т.е.MAX232 не нужен, так как с ATmegi уже идет 0\5в "=" перемычки вместо MAXa)
[ком порт ATmega]--(0в/5в)-->
{[=]<-->(0в/5в)<-->[транзисторы]}<-->0\12в<-->[OBD разъем]
Синим выделен адаптер К-линии
Testudo писал(а):куда подключатся
У меня японец. Цепляюсь к 7й ноге 16и контактного разъема
Re: Самодельный MUT сканнер :)
Добавлено: 18 фев 2012, 18:03
de
Купил кабель
EvoScan OBDI / ALDL 12pin 1989-1994 Mitsubishi DataLogger Cable с софтом, и что-то никак не получается. Коннектится нормально и данные идут, но показания - какой-то мусор, меняются в нереальных пределах. Хотя данные явно соотносятся с датчиками, например, TPS строго стоит на 11%, и если нажать педаль газа, то начинает меняться, но нелинейно и очень странно, отпускаешь педаль, возвращается на 11%. Обороты также реагируют, показывают 500, чуть надавишь - 700, потом 850, потом 0 и пошло поехало. Настройки как на скриншоте: OpenPort 1.3x (FTDI/12pin/SSM) и MMC (1G/12pin). Причем при этих настройках "Display DTC" не работает, а если выбрать Mitsubishi MUTIII, то коннектится, но ничего интересного не выдает, только список всех возможных кодов ошибок для MUT-II. Даталоггер в этом режиме не работает. На сайте, вобщем-то, и не говорится прямо, что паджеро моего года поддерживается устройством, пишут "Many 1990-1995 Mitsubishi vehicles fitted with a 12-PIN OBDI". Порт на машине точно работает, несколько лет назад ездил на диагностику, все нормально показало. Я пока в тупике, может у кого будут мысли.
Re: Самодельный MUT сканнер :)
Добавлено: 18 фев 2012, 20:57
de
Ух ты, я и не заметил этого примечания:
http://www.evoscan.com/mitsubishi-subar ... can-cables
Known incompatable vehicles (I'm working on making them work, they might all be using the same ecu)
- L200 (petrol and diesel)
- Pajero (petrol and diesel)
- 1992-95 Mitsubishi Evo I, II & III
Жаль, ну да ладно, придется самому софт писать.
Re: Самодельный MUT сканнер :)
Добавлено: 20 фев 2012, 03:54
Карбафос
Да, для араба требуется подключение по двум фишкам. Одна не проканает. Нужон двойник.
Re: Самодельный MUT сканнер :)
Добавлено: 20 фев 2012, 07:42
Daddy
А где эти фишки у араба?
Re: Самодельный MUT сканнер :)
Добавлено: 20 фев 2012, 14:53
de
Карбафос писал(а):Да, для араба требуется подключение по двум фишкам. Одна не проканает. Нужон двойник.
Если одна фишка 12-контактная, другая 16-контактная, то на эвоскане есть такие кабеля, если обе 12-контактные, то таких нет, но есть отдельная 12-контактная фишка с одним проводом, наверное это она и есть, дополнительная.
Re: Самодельный MUT сканнер :)
Добавлено: 22 фев 2012, 00:04
de
Потихоньку изучаю новозеландский софт со шнурком. Посмотрел как EvoScan общается с драйвером шнурка, видно, что инициализация на скорости 5 baud у них делается не через bit bang функции, как везде предполагается, а через break on/off. Это трейс неудачного коннекта, шнурок просто висит в компе, не подключенный к машине, завтра постараюсь реальный снять, сегодня уже поздновато. Время - секунды и миллисекунды. Дока на API драйвера:
http://www.ftdichip.com/Support/Documen ... 00071).pdf
55.716 FT_ListDevices(flags=0x80000000)
55.716 FT_ListDevices: cnt=1
55.716 FT_ListDevices(dev=0, flags=0x40000001)
55.736 FT_ListDevices: serial=FTUJKETK
55.736 FT_ListDevices(dev=0, flags=0x40000002)
55.746 FT_ListDevices: description=EvoScan Mitsubishi OBD1
55.746 FT_Open(dev=0)
55.756 FT_Purge(mask=3)
55.766 FT_SetBaudRate(baudrate=1953)
55.776 FT_SetDataCharacteristics(len=8, stops=0, parity=0)
55.776 FT_SetFlowControl(flow=0, xon=0, xoff=0)
55.776 FT_SetTimeouts(read=1000, write=1000)
55.776 FT_GetLatencyTimer: timer=1
55.776 FT_SetLatencyTimer(timer=1)
55.816 FT_Write(bytes=1)
55.816 17
55.816 FT_Write: written=1
55.826 FT_Read(toRead=2)
56.827 FT_Read: returned=0
56.827 FT_Write(bytes=1)
56.827 33
56.827 FT_Write: written=1
56.827 FT_Read(toRead=2)
57.869 FT_Read: returned=0
57.889 FT_Purge(mask=3)
57.899 FT_SetDtr
58.409 FT_ClrDtr
59.161 FT_SetDtr
59.771 FT_SetBreakOn
01.574 FT_SetBreakOff
01.574 FT_Read(toRead=4)
02.575 FT_Read: returned=0
02.575 FT_Write(bytes=1)
02.575 fe
02.575 FT_Write: written=1
02.575 FT_Read(toRead=2)
03.577 FT_Read: returned=0
03.577 FT_Close
Re: Самодельный MUT сканнер :)
Добавлено: 22 фев 2012, 10:38
Мишаня из Обнинска
Вот это вы мозги!!!
Я них... не понял
Но чувствую что не зря голову ломаете
Re: Самодельный MUT сканнер :)
Добавлено: 22 фев 2012, 10:41
de
Это все от нищебродства

Re: Самодельный MUT сканнер :)
Добавлено: 22 фев 2012, 12:03
Мишаня из Обнинска
От интереса всё. Если бы я шарил, то тоже че ниб придумал.
Я то в школе информатику еле сдал

Re: Самодельный MUT сканнер :)
Добавлено: 22 фев 2012, 12:13
Daddy
Ага! Я вот вроде в компах не последний парень на деревне, но из вышеописанного них..а не понял....
Re: Самодельный MUT сканнер :)
Добавлено: 22 фев 2012, 13:11
Prizrack
DaDDy писал(а):Ага! Я вот вроде в компах не последний парень на деревне, но из вышеописанного них..а не понял....
дык тут то не просто компы, а автомобильные компы !
А это уже совсем другая ифнорматика
Re: Самодельный MUT сканнер :)
Добавлено: 22 фев 2012, 13:16
Daddy
Вот вот! А иметь БК в П2 ну очень уж хоцца!
Re: Самодельный MUT сканнер :)
Добавлено: 22 фев 2012, 14:42
Fil

В машине поиграть не во что?
