Pālekt uz saturu


Foto

CAN bus loggeris


  • Lūdzu pieslēdzies, lai atbildētu
2 atbildes uz šo tēmu

#1 fest

fest
  • Biedri
  • 861 raksti

Pievienots 11 November 2012 - 12:56

Vienam manam projektiņam (ko centīšos aprakstīt drīzumā) bija nepieciešams pieslēgties pie auto CAN bus, lai nolasītu pogu stāvokli uz stūres (konkrēti interesē tieši navigācijas pogas- Back/Enter, bultiņas).

Nedaudz par subjektu- Volvo S80. Tam auto pa CAN busu komunicē gandrīz viss- sākot ar piesprādzēšanās lampiņām uz spoguļa un pagriezieniem, beidzot ar motoru, ātrumkārbu, ABS u.c. Pēc manuāļa noskaidroju, ka auto ir divas atsevišķas CAN bus "sliedes"- viena, kas darbojas ar 125 kbit/s perifērijai- nafigācijai, telefonam, spuldzītēm un citiem mezgliem. Otra sliede, komunicē starp motoru/ABS/pretizslīdēšanas/ātrumkārbas mezgliem ar 500 kbit/s.

Lai pieslēgtos pie CAN bus, izmantoju visai izplatītu un lētu kombināciju- MCP2551 un MCP2515. Pirmais ir CAN bus transceiveris- pārveido CAN bus signālus TTL līmenī. Savukārt otrais ir CAN kontrolieris- mikrene, kas stiiipri atvieglo pieslēgšanos pie CAN busa- tiek galā ar taimingiem priekš vajadzīgā bitreita, rx/tx bufferi, filtri kā arī interrupti kad ir saņemti CAN ziņojumi. Izstrādei noderīgs ir loopback režīms, lai notestētu komunikāciju starp mikrokontrolieri un MCP2515.

"Nav lielākas nelaimes kā programmētājs ar lodāmuru rokās" /interneti/


Ievietotais attēls
Ievietotais attēls


CAN kontrolieris vadās caur SPI. Testiem pašlaik izmantoju Arduino, kas saņemtos CAN ziņojumus pa seriālo portu nosūta uz PC, kur tie tiek apstrādāti ar pitonā uzrakstītu GUI.

GUI ir atsevišķas rindkopas vērts. Tā kā man vajadzēja redzēt tikai nospiestās pogas- no sākuma mēģināju parādīt visus ziņojumus uz ekrāna. Aplauzos, >100 ziņojumu sekundē.

Nākošais mēģinājums- nespaidot pogas, krāt ziņojumus, kuru ID'us ignorēt. Pēc tam pārtraukt ignorēšanu- piespiest pogu, un skatīties, kas atnāks. Arī aplauzos, nesaņēmu vairs neko.

Trešais piegājiens- nespaidot pogas, krāt ziņojumus, kurus ignorēt. Ignorēšanu pārtraukt, piespiest pogu, un skatīties, kas atnāks. Aplauzos, tāpat pāris 10 ziņojumu sekundē.

Ceturtais piegājiens- apvieno trešo piegājienu + filtru: "Rādīt tikai ziņojumus, kas atkārtojušies tieši N reizes". N reizes piespiežam pogu uz stūres- un vualā, atnāk tieši interesējošais ziņojums. Kad bija rokā CAN bus ziņojuma ID, pārējās pogas atrast vairs nebija grūti- filtrējot pēc ID smuki izdevās atrast arī datu daļu katram pogas spiedienam.

Ievietotais attēls

Ja nu kādam noder- kods priekš Arduino un GUI iekš python'a atrodams šeit: https://github.com/f...v/canbus_logger

Šo rakstu rediģēja fest: 11 November 2012 - 15:05



Nevēlies vairs redzēt šo reklāmu? Kļūsti par BOOT.Lv foruma biedru!

#2 binary

binary
  • Biedri
  • 2,320 raksti
  • Atrodos:Rīga

Pievienots 11 November 2012 - 14:36

Par projektu - kamēr nav aprakstīts, tikmēr nav ko komentēt :D Ja nu vienīgi pavaicāt, cik reizes staigāji uz auto :)

Par plati - šāda tipa plates arī izmanto?

#3 fest

fest
  • Biedri
  • 861 raksti

Pievienots 11 November 2012 - 14:57

Uz auto staigāju tikai beigu stadijā- no sākuma uz galda saliku plati, uzrakstīju/izmēģināju/debugoju softu uz Arduino, kas sazinās ar kontrolieri. Uz mašīnu staigāju tikai beigās, kad jau dati ielogojās un strādāju pie GUI.

Par plati- jā, izmantoju arī šādu. No sākuma biju saspraudis uz tādas, bet SPI man īsti negribēja darboties. Visdrīzāk kaut kur bija nestabils kontakts- tad nospļāvos un uzlodēju uz šitās plates. Gala variantam tāpat kodināšu PCB- šis ir tikai izmēģinājums, lai saprastu, vai shēma strāda, un lai ielogotu ziņojumus.

Tīri intereses pēc nomērīju- tikai pie ieslēgtas aizdedzes tur skraida ~300 ziņojumi sekundē.
Ievietotais attēls

Šo rakstu rediģēja fest: 11 November 2012 - 15:01



 
 
 
 


0 Lietotāji(s) lasa šo tēmu

0 biedri(s), 0 viesi(s), 0 anonīmi(s) lietotāji(s)