Obsah:

Jednoduchý návod pre CANBUS: 8 krokov
Jednoduchý návod pre CANBUS: 8 krokov

Video: Jednoduchý návod pre CANBUS: 8 krokov

Video: Jednoduchý návod pre CANBUS: 8 krokov
Video: Все, что вам нужно знать о том, что находится в блоке предохранителей автомобиля 2024, Júl
Anonim
Jednoduchý návod pre CANBUS
Jednoduchý návod pre CANBUS

Študujem CAN tri týždne a teraz som dokončil niekoľko aplikácií na overenie výsledkov vzdelávania. V tomto návode sa naučíte, ako používať Arduino na implementáciu komunikácie CANBUS. Ak máte nejaké návrhy, zanechajte odkaz.

Zásoby:

Hardvér:

  • Maduino Zero CANBUS
  • Modul teploty a vlhkosti DHT11
  • 1,3 "I2C OLED 128 x 64- modrý
  • Kábel DB9 až DB9 (zásuvka - zásuvka)
  • Dupont Line

Softvér:

Arduino IDE

Krok 1: Čo je to CANBUS

Čo je CANBUS
Čo je CANBUS
Čo je CANBUS
Čo je CANBUS

O spoločnosti CAN

CAN (Controller Area Network) je sériová komunikačná sieť, ktorá dokáže realizovať distribuované riadenie v reálnom čase. Je vyvinutý pre automobilový priemysel, aby nahradil komplexný káblový zväzok dvojvodičovou zbernicou.

Protokol CAN definuje vrstvu Data Link Layer a časť fyzickej vrstvy v modeli OSI.

Protokol CAN je ISO štandardizovaný s ISO11898 a ISO11519. ISO11898 je vysokorýchlostný komunikačný štandard CAN s komunikačnou rýchlosťou 125 kbps-1 Mbps. ISO11519 je nízkorýchlostný komunikačný štandard CAN s komunikačnou rýchlosťou nižšou ako 125 kbps.

Tu sa zameriavame na vysokorýchlostný CAN.

ISO-11898 popisuje, ako sa informácie prenášajú medzi zariadeniami v sieti, a zodpovedá modelu prepojenia otvorených systémov (OSI), ktorý je definovaný z hľadiska vrstiev. Skutočná komunikácia medzi zariadeniami prepojenými fyzickým médiom je definovaná fyzickou vrstvou modelu

  • Každá jednotka CAN pripojená k zbernici sa môže nazývať uzol. Všetky jednotky CAN sú pripojené k zbernici zakončenej na každom konci 120 Ω odpormi, aby vytvorili sieť. Zbernica pozostáva z liniek CAN_H a CAN_L. Regulátor CAN určuje úroveň zbernice na základe rozdielu v úrovni výkonu na oboch vodičoch. Úrovne autobusov sú rozdelené na dominantné a recesívne úrovne, ktoré musia byť jednou z nich. Odosielateľ odošle správu príjemcovi vykonaním zmeny na úrovni zbernice. Keď je na zbernici vykonaný logický riadok „a“, dominantná úroveň je „0“a recesívna úroveň je „1“.
  • V dominantnom stave je napätie CAN_H asi 3,5 V a napätie CAN_L je asi 1,5 V. V recesívnom stave sa napätie oboch vedení pohybuje okolo 2,5V.
  • Signál je diferenciálny, a preto CAN odvodzuje svoju robustnú odolnosť voči šumu a odolnosť voči poruchám. Vyvážený diferenciálny signál redukuje šumové prepojenie a umožňuje vysokú mieru signalizácie cez kábel krútenej dvojlinky. Prúd v každom signálnom vedení je rovnaký, ale v opačnom smere a má za následok efekt rušenia poľa, ktorý je kľúčový pre nízke emisie hluku. Použitie vyvážených diferenciálnych prijímačov a skrútenej dvojlinky zvyšuje odmietanie bežného režimu a vysokú odolnosť proti rušeniu zbernice CAN.

Transceiver CAN

CAN transceiver je zodpovedný za konverziu medzi logickou úrovňou a fyzickým signálom. Skonvertujte logický signál na diferenciálnu úroveň alebo fyzický signál na logickú úroveň.

Ovládač CAN

Ovládač CAN je základnou súčasťou systému CAN, ktorý realizuje všetky funkcie vrstvy dátového spojenia v protokole CAN a môže automaticky prekladať protokol CAN.

MCU

MCU je zodpovedný za ovládanie funkčného obvodu a regulátora CAN. Napríklad parametre radiča CAN sa inicializujú pri spustení uzla, rámec CAN sa načíta a odošle prostredníctvom radiča CAN atď.

Krok 2: O komunikáciách CAN

Keď je zbernica v nečinnosti, všetky uzly môžu začať odosielať správy (ovládanie viacerých masterov). Uzol, ktorý ako prvý pristupuje na zbernicu, má právo odosielať (režim CSMA/CA). Keď začne odosielať viac uzlov súčasne, uzol, ktorý odosiela správu s vysokou prioritou, dostane právo odoslať.

V protokole CAN sú všetky správy odosielané v pevnom formáte. Keď je zbernica nečinná, všetky jednotky pripojené k zbernici môžu začať odosielať nové správy. Keď viac ako dve bunky začnú odosielať správy súčasne, priorita sa určí na základe identifikátora. ID nepredstavuje cieľovú adresu odoslania, ale skôr prioritu správy, ktorá pristupuje k zbernici. Keď začnú odosielať správy viac ako dve bunky súčasne, každý bit bezúročného identifikátora sa rozhoduje jeden po druhom. Jednotka, ktorá vyhrá arbitráž, môže pokračovať v odosielaní správ a jednotka, ktorá arbitráž prehrá, okamžite zastaví odosielanie a prijíma prácu.

Zbernica CAN je prenosový typ zbernice. To znamená, že všetky uzly môžu „počuť“všetky prenosy. všetky uzly vždy zachytia všetku návštevnosť. Hardvér CAN poskytuje lokálne filtrovanie, takže každý uzol môže reagovať iba na zaujímavé správy.

Krok 3: Rámy

Rámy
Rámy

Zariadenia CAN odosielajú údaje prostredníctvom siete CAN v paketoch nazývaných rámce. CAN má štyri typy rámcov:

  • Dátový rámec: rámec obsahujúci údaje uzla na prenos
  • Vzdialený rámec: rámec požadujúci prenos konkrétneho identifikátora
  • Chybový rámec: rámec prenášaný ktorýmkoľvek uzlom, ktorý detekuje chybu
  • Rámec preťaženia: rámec na vloženie oneskorenia medzi údajmi alebo vzdialeným rámcom

Dátový rámec

Existujú dva typy dátových rámcov, štandardné a rozšírené.

Význam bitových polí na obrázku je:

  • SOF - Bit dominantného začiatku rámca (SOF) označuje začiatok správy a používa sa na synchronizáciu uzlov na zbernici po nečinnosti.
  • Identifikátor-Štandardný 11-bitový identifikátor CAN určuje prioritu správy. Čím nižšia je binárna hodnota, tým vyššia je jej priorita.
  • RTR - bit s požiadavkou na jeden vzdialený prenos (RTR)
  • IDE - bit s rozšírením o jeden dominantný identifikátor (IDE) znamená, že sa prenáša štandardný identifikátor CAN bez rozšírenia.
  • R0 – Rezervovaný bit (pre prípadné použitie v budúcej štandardnej novele).
  • DLC-4-bitový kód dĺžky údajov (DLC) obsahuje počet bajtov prenášaných dát.
  • Údaje - Je možné prenášať až 64 bitov údajov aplikácie.
  • CRC-16-bitová (15 bitov plus oddeľovač) kontrola cyklickej redundancie (CRC) obsahuje kontrolný súčet (počet prenesených bitov) údajov predchádzajúcej aplikácie na detekciu chýb.
  • ACK – ACK sú 2 bity, jeden je potvrdzovací bit a druhý je oddeľovač.
  • EOF-Toto 7-bitové pole na konci rámca (EOF) označuje koniec rámca (správy) CAN a deaktivuje bitstuffing, čo naznačuje chybu plnenia, keď je dominantný. Keď sa počas normálnej prevádzky vyskytne postupne 5 bitov rovnakej logickej úrovne, do dát sa vloží kúsok opačnej logickej úrovne.
  • IFS-Tento 7-bitový medzrámcový priestor (IFS) obsahuje čas požadovaný radičom na presunutie správne prijatého rámca na jeho správne miesto v oblasti vyrovnávacej pamäte správ.

Arbitráž

V stave nečinnosti zbernice dostane jednotka, ktorá ako prvá začne odosielať správu, správne odosielanie. Keď začne odosielať viac jednotiek súčasne, každá vysielacia jednotka začína v prvom bite rozhodcovského segmentu. Jednotka s najväčším počtom dominantných úrovní súvislého výstupu môže pokračovať v odosielaní.

Krok 4: Rýchlosť a vzdialenosť

Rýchlosť a vzdialenosť
Rýchlosť a vzdialenosť

Zbernica CAN je zbernica, ktorá spája viacero jednotiek súčasne. Celkový počet jednotiek, ktoré je možné pripojiť, teoreticky nie je obmedzený. V praxi je však počet jednotiek, ktoré je možné pripojiť, obmedzený časovým oneskorením na zbernici a elektrickým zaťažením. Znížte rýchlosť komunikácie, zvýšte počet jednotiek, ktoré je možné pripojiť, a zvýšte rýchlosť komunikácie, počet jednotiek, ktoré je možné pripojiť, sa zníži.

Komunikačná vzdialenosť nepriamo súvisí s komunikačnou rýchlosťou a čím ďalej je komunikačná vzdialenosť, tým menšia je komunikačná rýchlosť. Dlhšia vzdialenosť môže byť 1 km alebo viac, ale rýchlosť je nižšia ako 40 kps.

Krok 5: Hardvér

Hardvér
Hardvér

Modul Maduino Zero CAN-BUS je nástroj vyvinutý spoločnosťou Makerfabs na komunikáciu CANbus-je založený na Arduine s CAN radičom a CAN transceiverom, aby vytvoril port CAN-bus pripravený na použitie.

  • MCP2515 je samostatný radič CAN, ktorý implementuje špecifikáciu CAN. Je schopný prenášať a prijímať štandardné aj rozšírené údaje a vzdialené rámce.
  • Rozhrania MAX3051 medzi radičom protokolu CAN a fyzickými vodičmi zberníc v sieti riadiacej oblasti (CAN). MAX3051 poskytuje schopnosť diferenciálneho prenosu na zbernicu a schopnosť diferenciálneho príjmu do radiča CAN.

Krok 6: Pripojenie

Pripojenie
Pripojenie

Pripojte modul DHT11 k modulu Maduino Zero CAN-BUS pomocou vodičov, ktoré sa majú použiť ako nástroj na podporu komunikácie CAN. Podobne pripojte displej k modulu, aby ste prijali údaje a zobrazili ich.

Spojenie medzi Maduino Zero CANBUS a DHT11 :

Maduino Zero CANBUS - DHT11

3v3 ------ VCC GND ------ GND D10 ------ DATA

Spojenie medzi Maduino Zero CANBUS a OLED :

Maduino Zero CANBUS - OLED

3v3 ------ VCC GND ------ GND SCL ------ SCL SDA ------ SDA

Pomocou kábla DB9 prepojte dva moduly Maduino Zero CANBUS.

Krok 7: Kód

MAX3051 dokončuje prevod diferenciálnych úrovní na logické signály. MCP2515 dopĺňa funkciu CAN, ako je kódovanie a dekódovanie údajov. MCU potrebuje iba inicializovať ovládač a odosielať a prijímať údaje.

  • Github:
  • Po nainštalovaní Arduina neexistuje balík na podporu dosky (Arduino nula), ktorý je potrebné nainštalovať.
  • Vyberte nástroje -> Board -> Board Manager, vyhľadajte „Arduino zero“a nainštalujte „Arduino SAMD Boards“.
  • Vyberte položku Nástroje -> Doska -> Arduino Zero (natívny port USB), vyberte položku Nástroje -> Port -> com…
  • Po získaní programu z GitHub sa musíte uistiť, že všetky súbory sú v adresári projektu, ktorý obsahuje súbory knižnice, ktoré podporujú CANBUS.
  • Nainštalujte knižnicu senzorov DHT od spoločnosti Adafruit, ktorá slúži na pohon DHT11 na získavanie teploty a vlhkosti.
  • Na odoslanie teploty a vlhkosti oddelene v kóde Test_DHT11.ino použite rôzne adresy.

CAN.sendMsgBuf (0x10, 0, stmp1.length (), stmp_send1);

oneskorenie (500); CAN.sendMsgBuf (0x11, 0, stmp2.length (), stmp_send2); oneskorenie (500);

„0x10“je ID správy, „0“je priemerný štandardný rámec, „stmp1.length ()“je dĺžka správy, „stmp_send1“sú odoslané údaje.

  • V kóde Test_OLED.ino sú všetky správy na CANBUS prijímané dotazom a požadované informácie sú zobrazené na OLED.
  • Nahrajte program Maduino-CANbus-RS485/Test_DHT11_OLED/Test_DHT11/Test_DHT11.ino do modulu, ktorý je pripojený k senzoru, a nahrajte program Maduino-CANbus RS485/Test_DHT11_OLED/Test_OLED/Test_OLED.ino do iného modulu, ktorý je pripojený k OLED.

Krok 8: Ukážte

Šou
Šou
Šou
Šou

Zapnite dva moduly, teplota a vlhkosť sa zobrazia na displeji.

Odporúča: