Italian ELM327

Fulvio75

Well-Known Member
Licensed User
Ritestato la velocità senza le stringhe ATSTFF e ATIB10, ora la risposta ai comandi AT è di 20-50 ms ma a volte alcuni comandi che prima hanno risposto 50 ms rispondono 600 ms, quindi è l'adattatore?
 

Alessandro71

Well-Known Member
Licensed User
Longtime User
ATIB non si applica al protocollo che stai usando.
ma da dove arriva quella sequenza?
 

Fulvio75

Well-Known Member
Licensed User
ATIB non si applica al protocollo che stai usando.
ma da dove arriva quella sequenza?
L'avevo presa da internet, ma non funzionava nulla, la tua si....
L'adattatore l'ho testato, hanno cambiato la rtesistenza da 60ohm a 120ohm, i primi erano difettosi e montavano la 60ohm

Per il problema del Header per visualizzare il dato di due centraline differenti nello stesso momento (Pressione turbo centralina motore e coppia centralina cambio) ho pensato di risolverlo cosi:
passo tutta la tua stringa all'apertura dell'app e imposto quella motore (10) subito all'apertura dell'app
ATZ
ATE0
ATL0
ATS0
ATAT1
ATH1
ATAL
ATSP7
ATCP18
ATSH DA10F1
ATFCSH 18DA10F1
ATFCSD 300000
ATFCSM1
ATCFC1
ATCAF1
ATCRA 18DAF110


così preparo ELM327 a leggere la centralina motore (10) poi per ottenere i dati farei così (scritto al volo ora):

B4X:
dim stringhe() as string = array as string("ATSHDA10F1","ATFCSH18DA10F1","ATCRA18DAF110",PIDpressioneturbo,PIDpressioneOlio,"ATSHDA18F1","ATFCSH18DA18F1","ATCRA18DAF118",PIDcoppia)

do while ECUReading = true

           for i = 0 to stringhe.lenght-1

           elm327.send(Stringhe(i))

           WaitingForRespose = True

            'attende la risposta ELM327 prima di lanciare un altro comando
            Do While WaitingForRespose = True
                Sleep(0)
                If ECUReading = False Then Exit
            Loop

            If ECUReading = False Then Exit

            next

loop

in modo da cambiare l'header per i dati a seconda della centralina, ovviamente nel ciclo do while aspetto la risposta dei pid prima di lanciare il successivo
 

Fulvio75

Well-Known Member
Licensed User
Lancetta pressione Turbo funziona egregiamente, pressione olio e coppia no.
Ora i casi sono 2 il PID è sbagliato o la formula inventata quindi come trovo questi due parametri?
Anzi 3 tutti e due sbagliati
 

Fulvio75

Well-Known Member
Licensed User
I PID rispondono per esempio la pressione olio motore tradoddo con la formula trovata su un sito alfa romeo restituisce 0,1 bar ma è impossibile dovrebbe essere 2/3 bar e la coppia 9800 nm.... Azzzz ma nemmeno un camion li ha

Questo è l'olio ma è anche del turbo e non può essere
OBD Mode&PID -- 22195a
Unit Type -- Bar
Equation -- A*10/255
OBD Header -- DA10F1

Gli altri
01 Engine oil pressure
OBD Mode&PID -- 22195a
Unit Type -- Bar
Equation -- A*10/255
OBD Header -- DA10F1


#02 Engine oil temperature
OBD Mode&PID -- 221302
Unit Type -- ℃
Equation -- B
OBD Header -- DA10F1

#03 Intake manifold temperature IMT (before the intercooler)
OBD Mode&PID -- 223a58
Unit Type -- ℃
Equation -- A-40
OBD Header -- DA10F1

#04 Intake air temperature IAT (after the intercooler)
OBD Mode&PID -- 221935
Unit Type -- ℃
Equation -- A-40
OBD Header -- DA10F1

#05 Torque(from TCM)
OBD Mode&PID -- 221018
Unit Type -- Nm
Equation -- max(((A*256+B)-500):0)
OBD Header -- DA18F1

#06 Calculated horsepower(based on #05 torque)
OBD Mode&PID -- 221018
Unit Type -- HP
Equation -- max(((A*256+B)-500):0)*[0C]/9549*1.34
OBD Header -- DA18F1


#07 Gearbox oil temperature
OBD Mode&PID -- 2204fe
Unit Type -- ℃
Equation -- A-40
OBD Header -- DA18F1

#08 Engine oil level
OBD Mode&PID -- 223a41
Unit Type -- L
Equation -- (A*256+B)/1000
OBD Header -- DA10F1

#09 Current engaged gear
OBD Mode&PID -- 22192d
Equation -- LOOKUP(A::0='N':16='R')
OBD Header -- DA10F1

Note:CAN bus can only transfer HEX data,so gear 'N' and 'R' I translated to a readable format,the corresponding values are as showed as equation:'N'==0==0x00,'R'==16==0x10

#10 Boost pressure(absolute)
OBD Mode&PID -- 22195a
Unit Type -- Bar
Equation -- ((A*256+B)/1000)-1
OBD Header -- DA10F1
 

Fulvio75

Well-Known Member
Licensed User
Ho fatto così

Stringa restituita
18DAF11805621018XXYY

If Buffer.Contains("18DAF118") = True Then
HexString = Buffer.Replace(">","").Replace(" ","").Replace(Chr(10),"").Replace(Chr(13),"").Trim
HexA = HexString.SubString2((HexString.Length-4),(HexString.Length-4)+2)
HexB = HexString.SubString2((HexString.Length-2),(HexString.Length-2)+2)
A = HEXtoINT.Convert(HexA)
B = HEXtoINT.Convert(HexB)
Value = Max((((256*A)+B)-500),0)
End of

Il HEXtoINT.Convert(HexA) è questo

public Sub Convert(HEX As String) As Int

Select HEX.Length

Case 2
HEX = "000000" & HEX

Case 4
HEX = "0000" & HEX

Case 6
HEX = "00" & HEX

End Select
Value = Conv.IntsFromBytes(Conv.HexToBytes(HEX))
Return Value(0)
End Sub
 

Fulvio75

Well-Known Member
Licensed User
non ho capito se la risposta al PID ce l'hai o hai NO DATA o 037Fxx
sulla marcia inserita da:
> 22192b
18DAF118037F2231
0308 ms

ovvero nulla.

Per la coppia ora la da corretta ma i cavalli no da sempre 0
La formula è HP = max(((A*256+B)-500):0)*[0C]/9549*1.34
dove max(((A*256+B)-500):0) è la coppia moltiplicata per [0C]/9549*1.34
secondo me è lo 0C che non si capisce cosa sia, ho provato a mettere 12 ma i cv sono sempre 0
 
Last edited:

Alessandro71

Well-Known Member
Licensed User
Longtime User
sulla marcia inserita da:
> 22192b
18DAF118037F2231

037Fxx: PID non supportato

supposto che le tue formule di conversione da hex funzionino correttamente, nella tua formula
B4X:
Value = Max((((256*A)+B)-500),0)
manca la moltiplicazione successiva
prova a guardare sul forum di Torque cosa significa la notazione []
 

Fulvio75

Well-Known Member
Licensed User
0C è il pid standard dei giri motore, il problema è che se leggo i PID con la tua sequenza e funziona non riesco più a leggere gli standard perché mi dice no data, quindi 0c non posso leggerlo, dovrei trovare il pid proprietario per i giri motore
 

Alessandro71

Well-Known Member
Licensed User
Longtime User
quale sequenza usavi per leggere lo 0C?
tutta le sequenza completa intendo, non solo 010C
 

Fulvio75

Well-Known Member
Licensed User
quale sequenza usavi per leggere lo 0C?
tutta le sequenza completa intendo, non solo 010C
La mia sequenza farlocca con alla fine ATSH18DA10F1
Però non leggeva i PID proprietari e la tua si, ci vorrebbe una sequenza che legge tutti e due i pid
 

Fulvio75

Well-Known Member
Licensed User
Azzzz... Questo elm327 non vale a nulla ci impiega un botto a lanciare tutta la sequenza

ATZ
ATE0
ATL0
ATS0
ATAT1
ATH1
ATAL
ATSP7
ATCP18
ATSH DA10F1
ATFCSH 18DA10F1
ATFCSD 300000
ATFCSM1
ATCFC1
ATCAF1
ATCRA 18DAF110


(1740 ms) - (3050 ms)

non è mai costante
 

Fulvio75

Well-Known Member
Licensed User
ok problema numero giri motore risolto, è il cambio che li restituisce con questa sequenza.
 

Fulvio75

Well-Known Member
Licensed User
Domandona... Dato che la box dove installo l'app è collegata all'infotaiment della macchina ed è basata su Apple carplay con interfaccia android, è possibile prendere i dati da lì anziché via elm327?
L'infotaiment visualizza il livello dell'olio e la pressione delle gomme quindi è collegato alla ECU
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…