Přejít na obsah
  • Current Donation Goals

Recommended Posts

Odesláno

... ide o to, ze povodnym zapisom sa zistuje, ci bit7 (MSB v buf[4]) nadobuda hodnotu "1". Takze sa urobi logicky sucin: buf[4] & 0b1000000. Ak MSB = 1, tak vysledok je 0x80.

Povodny zapis by sa vsak dal aj prepisat ako:  if (((buf[4]&0x80)>>7) == 1)  tzn. MSB bit sa posunul o 7 pozic doprava na poziciu LSB (low significant bit).

Premenna "buf[]" je v programe definovana ako "char" cize 8bit premenna, nie "boolean" t.j. 1 bit.

V C-cku existuje mnoho zapisov, v tomto pripade sa iba zistuje, ci bit7 v premennej "buf[4] nadobuda hodnotu "log.1".

Zapisom "if (((buf[4]&0x80) == 1)" by sa zistovalo, ci po aplikovani masky "1000 000", premenna bit[4] nadobuda hodnotu "1" tzn. bit0 je "log.1".

Odesláno

@Lisiak dakujem velmi pekne za vysvetlenie. Programovat arduino sa stale len ucim a hlavne praca s tymito bitmi a sestnastkovou sustavou mi robi problemy 🙂 Preto pozeram rozne projekty a snazim sa v nich vyznat.    

  • O 3 měsíce později...
Odesláno (upraveno)

Neměřili jste, jaký to má odběr? Když je to stále připojené na napájení? Jdu to zkusit postavit 🙂

Edit:

Tak zpět. Přečetl jsem si, že je napájení připojené na PIN1, takže je to napájené až po zapnutí klíčku.

Upraveno uživatelem afilip
Doplnění textu.
  • O 5 týdnů později...
Odesláno (upraveno)

Tento navod na jednoduchu signalizaciu poziadavky na regeneraciu FAP filtra bol publikovany z mojej strany uz pred viac ako 2 rokmi a pocas tychto Korona casov sa mi podarilo dokoncit vylepsenu verziu CANBUS readeru. Tymto prispevkom by som chcel poukazat na to co vsetko sa da z tychto informacii “poskladat” a s akymi problemami, pri stavbe readera, sa musi clovek popasovat.

Hlavne vlastnosti noveho CANBUS readeru:

-        Pouzity graficky farebny OLED displej,

-        Zobrazenie na displeji poziadavky na regeneraciu FAP filtra + zvukova signalizacia (signalizuje sa zaciatok a aj koniec regeneracie),

-        Zobrazenie kilometrovej vzdialenisti od poslednej regeneracie,

-        Zobrazenie vzdialenosti medzi dvoma poslednymi regeneraciami ( da sa vydedukovat kolko km zostava do nasledujucej regeneracie, ak su viac-menej zachovane jazdne vlastnosti),

-        Zobrazenie otacok motora (od 0 do 8191),

-        Zobrazenie rychlosti (od 0 do 655km/h),

-        Zobrazenie prejdenej vzdialenosti od startu (rozlisenie ABS/ESP RJ je 10cm),

-        Zobrazenie zrychlenia vozidla (od -14 do 6,32m/s2),

-        Zobrazenie okamziteho momentu motora (od -100 do 408Nm),

-        Zobrazenie natocenia vlantu v stupnoch (od 0 do 589st na obidve strany),

-        Zobrazenie teplot: motora, oleja, nasavaneho vzduchu,

-        Zobrazenie spotreby v mililitroch od nastartovania,

-        Zobrazenie celkovej spotreby v litroch od posledneho vynulovania,

-        Zobrazenie casu jazdy od nastartovania,

-        Zobrazenie celkoveho casu jazdy od posledneho vynulovania,

-        Zobrazenie napatia akumulatora a teploty interieru (cez Dallas DS18B20).

Vsetky tieto informacie su podrobnejsie popisane uz spominanom francuzkom dokumente, odkaz sa nachadzal v navode. (http://romain.raveaux.free.fr/teaching/TP207.pdf).

Teraz sa pokusim priblizit ako to na CANBUS zbernici vyzera a na ake problemy je potrebne sa pripravit. V mojom aute sa na rychlej 500kbit/s CANBUS zbernici nachadza asi 72 adries a CANBUS reader nacitava z toho mnozstva dat len 4 adresy, ktore ma zaujimaju resp. mam k nim popis. Ide o nasledujuce adresy:

-        0x208 -> na tejto adrese sa nachadza info o otackach motora, poziadavka na regeneraciu FAP filtra a okamzity moment motora. Cas obnovovania informacii je 15ms t.j. kazdych 15ms posle RJ motora na CANBUS novu informaciu o okamzitych otackach motora.

-        0x38D -> rychlost vozidla, prejdena vzialenost do 6553,5m (potom sa vynuluje a pocita odzaciatku), zrychlenie vozidla. Obnovovacia perioda 50ms.

-        0x305 -> natocenie volantu v stupnoch a jeho smer otacania. Nejde o moc relevantnu informaciu, ale na tejto adrese som skusal prepinanie filtrov v MCP2515 “za jazdy”. Obnovovacia casova perioda 15ms.

-        0x488 -> informacie o teplotach a spotrebe motora (pocitadlo pocita do 20400mm3 a potom sa vynuluje t.j. overflow). Perioda obnovovania 100ms.

CANBUS interface nacitava udaje z CANBUS zbernice v nahodnom poradi t.j. ako ich “odchytne”, pricom plati, ze pravdepodobnost “odchytu” adresy s nizsou obnovovacou periodou je vyssia ako adresy, ktora sa obnovuje pomalsie. Z tohto dovodu moze trvat nacitavanie udajov napr. o spotrebe (adresa 0x488 s periodou 100ms) aj niekolko desiatok sekund a za tento cas sa moze stat, ze pocitadlo v RJ motora sa “pretoci” po 20ml cim sa strati presnost pocitania spotreby. Aby sme sa tomuto spomaleniu vyhli a nacitavali udaje takmer v realnom case, tak je nevyhnutne v CANBUS interfacei aktivovat filtre. Obvod MCP2515 ich ma 6. To znamena, ze len tie adresy sa dostanu dalej na spracovanie, ktore su definovane v tychto filtroch. V mojom pripade definicia tychto filtrov vyzera v Arduino sketchi nasledovne:

     CAN.init_Mask(0, 0, 0x7FF);                        

     CAN.init_Filt(0, 0, 0x208);                         

     CAN.init_Filt(1, 0, 0x38D);                          

     CAN.init_Mask(1, 0, 0x7FF);

     CAN.init_Filt(2, 0, 0x488);

     CAN.init_Filt(3, 0, 0x488);                         

     CAN.init_Filt(4, 0, 0x488);                          

     CAN.init_Filt(5, 0, 0x488);

MCP2515 ma dva buffre, v ktorych sa nachadzaju „odchytene“ adresy s udajami. Pokial su obidva buffre plne, tak sa nacitavanie z CANBUSu zastavi a caka sa na ich vyprazdnenie.  Je dost podstatne si uvedomit tento princip nacitavania a dalsieho spracovania dat z CANBUSu, clovek sa tak vyhne velmi velkemu mnozstvu “bezsennych noci” a otazkam typu: preco mi to doma na stole funguje, ale v aute uz nie?

Pre predtavu o aky komplexny projekt ide, tak hlavny ovladaci program v Arduine ma nieco cez 1000riadkov + driver na MCP2515 obvod (cez 1600 riadkov) + driver na OLED SSD1351 displej (400 riadkov) …atd. Drivery na ovladanie hardwareu su nastastie uz napisane a k dispozicii vdaka obrovskej Arduino komunite. Uz ide len o to, do akej formy spracovat informacie a nacitane udaje z CANBUS zbernice.

Tymto prispevkom som chcel len poukazat na to, ze v dnesnych modernych autach sa nachadza obrovske mnozstvo dat a niekedy je celkom zaujimave sa k tymto udajom dostat a dokazat ich vhodne interpretovat vo svoj prospech. Informacia o regeneracii FAP filtra je pre viac ako 95% uzivatelov aut totalne k nicomu, ale pre ten zvysok, ktori maju radi techniku a maju stale radost z hrania sa, to moze byt zaujimave 😊.

WhatsApp Image 2020-05-19 at 16.54.59 (1).jpeg

WhatsApp Image 2020-05-19 at 16.54.59 (2).jpeg

WhatsApp Image 2020-05-19 at 16.54.59 (3).jpeg

WhatsApp Image 2020-05-19 at 16.54.59 (4).jpeg

WhatsApp Image 2020-05-19 at 16.55.00 (1).jpeg

WhatsApp Image 2020-05-19 at 16.55.00 (2).jpeg

WhatsApp Image 2020-05-19 at 16.55.00 (4).jpeg

WhatsApp Image 2020-05-19 at 16.55.00.jpeg

Upraveno uživatelem Lisiak
Odesláno

Dobrá práce. Já čekám už jenom na konektor, abych mohl zkompletovat tu detekci regenerace FAP.  Nevíš náhodou, jestli se v nějakém PID také nezobrazují aktuální GPS souřadnice? Přemýšlel jsem, že by se kombinací nějakého modulu SIM800L dal udělat jednoduchý sledovací modul. Samozřejmě by k tomu šel připojit i vlastní GPS modul, ale bylo by to asi zbytečné, jestli se ty souřednice někde na CANBUSu objevují.

 

Odesláno (upraveno)

Takmer vsetky informacie, ktore sa zobrazuju na displeji sa nacitavaju z CANBUSu. Avsak nie na systemovej (500kb/s) zbernici, ale na komfortnej (125kb/s). Kedze na tejto zbernici sa nachadza napr. info o case, tak predpokladam, ze aj GPS koordinaty na nejakom PIDku budu. Kde konkretne vsak neviem. Nieco popisane o komfortnej zbernici sa nachadza na tomto odkaze https://autowp.github.io/, ktory bol uvedeny v navode. Na komfortnu zbernicu sa da pripojit napr. na konektore autoradia. 

Ja som sa pokusal pomocou "reverse engineering" zistit na ktorom PID su informacie o tlakoch a teplotach v pneumatikach. Zistil som (je mozne, ze sa aj mylim), ze na systemovu zbernicu poziela RJ pneu len "error flag", ktore koleso ma pokles tlaku v pneu a podla toho sa zobrazi sprava na displeji. Informacie o tlakoch a teplotach su pristupne cez testovaciu/diagnosticku zbernicu. Je vsak tiez mozne, ze na komfortnej zbernici nejake info o tom bude. Tu som vobec neskumal.

P.S: AK by niekto, na tomto fore, disponoval podrobnejsim popisom CANBUSu od PSA, ocenil by som, ak by sa sukromne/diskretne o take informacie podelil. :). 

Upraveno uživatelem Lisiak
  • O 5 let později...

Zúčastnit se diskuse

Můžete odpovědět a až poté se registrovat If you have an account, sign in now to post with your account.

Návštěvník
Odpovědět na toto téma...

×   Byl vložen obsah s formátováním.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Kdo si právě prohlíží tuto stránku   0 registrovaných uživatelů

    • Žádný registrovaný uživatel si neprohlíží tuto stránku
×
×
  • Vytvořit...