Jak vytvořit síť CAN Bus s moduly MCP2515 a Arduino

  • Protokol CAN umožňuje efektivní komunikaci v průmyslovém a automobilovém prostředí.
  • Modul MCP2515 je optimálním řešením pro připojení Arduina k síti CAN.
  • Sběrnice CAN využívá dva kabely (CAN_H a CAN_L) pro spolehlivý přenos dat na dlouhé vzdálenosti.
  • Tento tutoriál vás krok za krokem provede nastavením a používáním sítě CAN s Arduinem.

připojená auta

Pokud milujete technologie a často experimentujete s Arduinem, tento článek vás zaujme. Dnes se podíváme, jak si nastavit vlastní CAN síť pomocí modulu MCP2515 a Arduina. Zjistíte, jak efektivně a spolehlivě komunikovat mezi různými zařízeními v síti CAN. Tento typ sítě je široce používán v automobilech a dalších průmyslových aplikacích.

Ať už děláte automobilový projekt nebo potřebujete komunikaci mezi více mikrokontroléry, sběrnice CAN je ideální pro aplikace, kde je spolehlivost a výkon zásadní. A s modulem MCP2515 je velmi snadné integrovat Arduino do této sítě. Připravte se tedy na podrobné informace o protokolu CAN, konfiguraci hardwaru a nezbytném programování.

Co je sběrnice CAN?

Sběrnice CAN (Controller Area Network) je sériový komunikační protokol, který umožňuje vzájemnou komunikaci různých zařízení. Byl vyvinut v roce 1986 společností Bosch a je navržen speciálně pro automobilové aplikace, i když se jeho použití rozšířilo i do dalších odvětví, jako je průmyslová automatizace. V tomto typu sítě připojená zařízení odesílají a přijímají zprávy bez potřeby centrálního hostitele nebo řadiče, což z něj činí velmi účinný protokol pro prostředí, kde je komunikace a spolehlivost klíčová.

Moderní automobil obsahuje více než 70 řídicích zařízení, známých jako ECU (Electronic Control Units), vzájemně propojených prostřednictvím sběrnice CAN. Díky tomuto protokolu si ECU vyměňují klíčové informace pro provoz vozu, jako jsou údaje o rychlosti vozidla nebo poloha plynového pedálu.

Topologie a signály sběrnice CAN

Topologie systému CAN je typová multimaster, což znamená, že jakékoli zařízení připojené k síti může převzít kontrolu nad sběrnicí a odesílat zprávy. Všechny uzly naslouchají těmto zprávám a rozhodují se, zda na ně reagovat nebo je ignorovat.

Z fyzického hlediska probíhá komunikace prostřednictvím dvou kabelů: CAN_H y MŮŽU. Tyto kabely jsou opleteny, aby se minimalizovalo elektromagnetické rušení. Kromě toho musí být konce sítě zakončeny 120 ohmovými odpory, aby se zabránilo odrazům v signálu.

CAN signalizace

Systém CAN používá pro komunikaci dva logické stavy: dominantní y recesivní. V dominantním stavu má CAN_H napětí 3.5V a CAN_L má napětí 1.5V. V tomto stavu je přenášena logická '0'. Na druhou stranu v recesivním stavu mají oba vodiče napětí 2.5 V, což znamená, že sběrnice je volná a lze přenášet logickou „1“. Právě tato změna napětí mezi dvěma kabely umožňuje přenos dat v síti.

Modul MCP2515

El Modul MCP2515 Je to ideální řešení pro přidání CAN konektivity do vašeho Arduina. Skládá se z CAN řadiče (MCP2515, který se řídí specifikací CAN 2.0B) a CAN transceiveru (TJA1050, který zajišťuje fyzickou komunikaci). Tyto dva čipy spolupracují, takže můžete odesílat a přijímat zprávy CAN se svým Arduinem přes rozhraní SPI.

MCP2515 podporuje standardní (11bitové) i rozšířené (29bitové) zprávy a má schopnost odfiltrovat nežádoucí zprávy pomocí masek a filtrů, které odlehčují práci mikrokontroléru. Je to vynikající volba pro projekty, které vyžadují spolehlivou komunikaci, ať už v hlučném prostředí nebo na velké vzdálenosti.

Součásti modulu MCP2515

Modul MCP2515 obsahuje následující části:

  • Ovladač CAN MCP2515: Zodpovídá za provádění všech funkcí protokolu CAN, jako je odesílání a přijímání zpráv.
  • Vysílač a přijímač TJA1050 CAN: Zodpovídá za převod dat z CAN kontroléru na signály pro fyzickou sběrnici CAN a naopak.
  • Komunikační piny SPI: Pomocí pinů SCK, MOSI, MISO a CS komunikuje MCP2515 s Arduinem prostřednictvím rozhraní SPI.
  • Terminály sběrnice CAN: Tato malá šroubovací svorkovnice je označena „H“ a „L“. CAN_H a CAN_L musí být připojeny k síťovým kabelům CAN.

Jak nastavit síť CAN s Arduinem

S modulem MCP2515 je nastavení sítě CAN poměrně jednoduché. Níže vysvětluji, jak připojit modul k desce Arduino a jak nakonfigurovat software.

Připojení modulu MCP2515

Chcete-li začít, připojte piny SPI vašeho Arduina následovně:

  • MISO (výstup modulu) na pin D12 Arduina
  • LELKOVAT (modulový vstup) na pin D11 Arduina
  • SCK (Hodiny) na Arduino pin D13
  • CS (Chip Select) na Arduino pin D10

Budete také muset připojit kolík INT na MCP2515 k digitálnímu kolíku Arduino, například D2, protože tento kolík se používá ke zpracování přerušení, když je přijata platná zpráva.

Nezapomeňte modul napájet. Pin VCC by měl být připojen k 5V a pin GND k zemi.

Pokud jde o svorky sběrnice CAN, připojte CAN_H k CAN_H a CAN_L k CAN_L mezi různými uzly, které chcete propojit. Pamatujte, že sběrnice CAN musí být na obou koncích zakončena odporem 120 ohmů.

Programování Arduina

Jakmile připojíte uzly, je čas naprogramovat vaše Arduino tak, aby komunikovalo se sběrnicí CAN prostřednictvím modulu MCP2515. Nejlepší způsob, jak toho dosáhnout, je použít vhodnou knihovnu, jako je knihovna 'mcp2515'.

Nejprve musíte nainstalovat tuto knihovnu. Pokud používáte Arduino IDE, přejděte na Sketch > Include Library > Manage Libraries. Vyhledejte „mcp2515“ a vyberte možnost instalace.

S nainstalovanou knihovnou můžete pokračovat v psaní kódu pro váš uzel vysílače a váš uzel přijímače. Níže vám ukážu základní příklady pro oba.

Příklad kódu pro uzel vysílače

Tento kód posílá každou sekundu zprávu „Hello World“ přes sběrnici CAN.

#include void setup() { Serial.begin(9600); while (!Serial); Serial.println("Nodo transmisor CAN"); if (!CAN.begin(500E3)) { Serial.println("Error al iniciar CAN"); while (1); }}void loop() { Serial.print("Enviando mensaje... "); CAN.beginPacket(0x12); CAN.write('H'); CAN.write('o'); CAN.write('l'); CAN.write('a'); CAN.write(' '); CAN.write('M'); CAN.write('u'); CAN.write('n'); CAN.write('d'); CAN.write('o'); CAN.endPacket(); Serial.println("Mensaje enviado correctamente"); delay(1000);}

Příklad kódu pro uzel přijímače

Tento kód přijímá zprávy ze sběrnice CAN a zobrazuje je na sériovém monitoru.

#include void setup() { Serial.begin(9600); while (!Serial); Serial.println("Nodo receptor CAN"); if (!CAN.begin(500E3)) { Serial.println("Error al iniciar CAN"); while (1); } CAN.onReceive(onReceive);}void loop() {}void onReceive(int packetSize) { Serial.print("Mensaje recibido con ID: 0x"); Serial.print(CAN.packetId(), HEX); Serial.print(" | Tamaño: "); Serial.print(packetSize); Serial.print(" | Datos: "); while (CAN.available()) { Serial.print((char)CAN.read()); } Serial.println();}

Rychlosti a vzdálenosti v síti CAN

Sběrnice CAN umožňuje komunikaci různými rychlostmi. Maximální rychlost podporovaná MCP2515 je 1 Mbit/s, ale délka sběrnice omezuje přenosovou rychlost. Například při rychlosti 1 Mbit/s je maximální délka sběrnice přibližně 40 metrů. Pokud však potřebujete cestovat na větší vzdálenosti, můžete snížit rychlost. Při rychlosti 125 kbit/s může délka sběrnice dosáhnout 500 metrů.

Je důležité dobře naplánovat síť a použít vhodnou rychlost pro délku sběrnice a prostředí, ve kterém bude použita, protože hlučné prostředí může ovlivnit kvalitu komunikace.

Nezapomeňte také použít kroucenou dvojlinku pro kabely CAN_H a CAN_L, protože to pomáhá snížit elektromagnetické rušení a zlepšuje spolehlivost sítě.

Síť CAN s více uzly

Pokud chcete vytvořit síť s několika uzly, postup je velmi podobný. Jediné, co musíte udělat, je zajistit, aby byly všechny uzly připojeny paralelně k liniím CAN_H a CAN_L. Nezapomeňte také umístit zakončovací odpory pouze na konce hlavního vedení a ne na mezilehlé uzly.

Ve složitější síti můžete mít více uzlů, které fungují jako vysílače a přijímače. Každý uzel přidává minimální zatížení sběrnice, což umožňuje připojení až 112 uzlů do sítě CAN bez výrazného dopadu na výkon.

Ať už používáte sběrnici CAN v automobilu ke čtení dat motoru nebo v průmyslovém projektu ke komunikaci více senzorů, modul MCP2515 usnadňuje a zefektivňuje přidání této funkce. Tento typ sítě je ideální pro aplikace, kde je zásadní nízká latence a spolehlivost při přenosu dat.


Začněte konverzaci

Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.