Kā izveidot CAN kopnes tīklu ar MCP2515 un Arduino moduļiem

  • CAN protokols nodrošina efektīvu komunikāciju rūpnieciskā un automobiļu vidē.
  • MCP2515 modulis ir optimāls risinājums Arduino savienošanai ar CAN tīklu.
  • CAN kopne izmanto divus kabeļus (CAN_H un CAN_L) uzticamai datu pārraidei lielos attālumos.
  • Šī apmācība soli pa solim palīdzēs iestatīt un izmantot CAN tīklu ar Arduino.

savienotās automašīnas

Ja jums patīk tehnoloģijas un bieži veicat eksperimentus ar Arduino, šis raksts jūs aizraus. Šodien mēs redzēsim, kā izveidot savu CAN tīklu, izmantojot MCP2515 moduli un Arduino. Jūs atklāsiet, kā efektīvi un uzticami sazināties starp dažādām ierīcēm CAN tīklā. Šāda veida tīklu plaši izmanto automašīnās un citos rūpnieciskos lietojumos.

Neatkarīgi no tā, vai veicat autobūves projektu vai nepieciešama saziņa starp vairākiem mikrokontrolleriem, CAN kopne ir lieliski piemērota lietojumprogrammām, kur svarīga ir uzticamība un veiktspēja. Un ar MCP2515 moduli ir ļoti viegli integrēt Arduino šajā tīklā. Tāpēc esiet gatavs padziļināti uzzināt par CAN protokolu, aparatūras konfigurāciju un nepieciešamo programmēšanu.

Kas ir CAN kopne?

CAN kopne (Controller Area Network) ir sērijas sakaru protokols, kas ļauj dažādām ierīcēm sazināties savā starpā. To 1986. gadā izstrādāja Bosch, un tas ir īpaši izstrādāts automobiļu vajadzībām, lai gan tā izmantošana ir izplatījusies arī citās nozarēs, piemēram, rūpnieciskajā automatizācijā. Šāda veida tīklā savienotās ierīces sūta un saņem ziņojumus, neizmantojot centrālo resursdatoru vai kontrolieri, padarot to par ļoti efektīvu protokolu vidēm, kur komunikācija un uzticamība ir svarīga.

Mūsdienu automašīnā ir vairāk nekā 70 vadības ierīces, kas pazīstamas kā ECU (Electronic Control Units), kas savienotas viena ar otru, izmantojot CAN kopni. Pateicoties šim protokolam, ECU apmainās ar galveno informāciju par automašīnas darbību, piemēram, transportlīdzekļa ātruma datiem vai akseleratora stāvokli.

CAN kopnes topoloģija un signāli

CAN sistēmas topoloģija ir tips multimaster, kas nozīmē, ka jebkura tīklam pievienota ierīce var pārņemt vadību pār kopni, lai nosūtītu ziņojumus. Visi mezgli klausās šos ziņojumus un izlemj, vai atbildēt vai ignorēt tos.

No fiziskā viedokļa saziņa tiek veikta, izmantojot divus kabeļus: CAN_H y CAN_L. Šie kabeļi ir pīti, lai samazinātu elektromagnētiskos traucējumus. Turklāt tīkla galiem jābūt noslēgtiem ar 120 omu rezistoriem, lai izvairītos no atstarošanas signālā.

CAN signalizācija

CAN sistēma saziņai izmanto divus loģiskus stāvokļus: dominējošs y recesīvs. Dominējošā stāvoklī CAN_H spriegums ir 3.5 V, bet CAN_L - 1.5 V. Šajā stāvoklī tiek pārraidīts loģisks “0”. No otras puses, recesīvā stāvoklī abiem vadiem ir 2.5 V spriegums, kas norāda, ka kopne ir brīva un var pārraidīt loģisko '1'. Tieši šīs sprieguma izmaiņas starp diviem kabeļiem nodrošina datu pārraidi tīklā.

MCP2515 modulis

El MCP2515 modulis Tas ir ideāls risinājums CAN savienojamības pievienošanai jūsu Arduino. Tas sastāv no CAN kontrollera (MCP2515, kas atbilst CAN 2.0B specifikācijai) un CAN raiduztvērēja (TJA1050, kas apstrādā fizisko komunikāciju). Šīs divas mikroshēmas darbojas kopā, lai jūs varētu nosūtīt un saņemt CAN ziņojumus ar savu Arduino, izmantojot SPI interfeisu.

MCP2515 atbalsta gan standarta (11 bitu), gan paplašinātos (29 bitu) ziņojumus, un tam ir iespēja filtrēt nevēlamos ziņojumus, izmantojot maskas un filtrus, kas izlādē darbu no mikrokontrollera. Tā ir lieliska iespēja projektiem, kuriem nepieciešama uzticama saziņa gan trokšņainā vidē, gan lielos attālumos.

MCP2515 moduļa komponenti

Modulis MCP2515 ietver šādas daļas:

  • MCP2515 CAN kontrolieris: Atbildīgs par visu CAN protokola funkciju izpildi, piemēram, ziņojumu pārsūtīšanu un saņemšanu.
  • TJA1050 CAN raiduztvērējs: atbild par datu pārveidošanu no CAN kontrollera signālos fiziskajai CAN kopnei un otrādi.
  • SPI komunikācijas tapas: Izmantojot SCK, MOSI, MISO un CS tapas, MCP2515 sazinās ar Arduino, izmantojot tā SPI saskarni.
  • CAN autobusu termināļi: Šis mazais skrūvējamais spaiļu bloks ir apzīmēts ar "H" un "L". CAN_H un CAN_L jābūt savienotiem ar CAN tīkla kabeļiem.

Kā iestatīt CAN tīklu ar Arduino

Izmantojot MCP2515 moduli, CAN tīkla iestatīšana ir salīdzinoši vienkārša. Zemāk es paskaidroju, kā savienot moduli ar jūsu Arduino plati un kā konfigurēt programmatūru.

MCP2515 moduļu savienojumi

Lai sāktu, pievienojiet Arduino SPI tapas šādi:

  • Miso (moduļa izeja) uz Arduino tapu D12
  • MOSI (moduļa ieeja) uz Arduino tapu D11
  • SCK (Pulkstenis) uz Arduino tapu D13
  • CS (Chip Select) uz Arduino tapu D10

Jums būs arī jāpievieno MCP2515 INT kontakts ar Arduino digitālo tapu, piemēram, D2, jo šis kontakts tiek izmantots, lai apstrādātu pārtraukumus, kad tiek saņemts derīgs ziņojums.

Neaizmirstiet barot savu moduli. VCC tapai jābūt savienotai ar 5 V, bet GND tapai - ar zemi.

Kas attiecas uz CAN kopnes termināliem, savienojiet CAN_H ar CAN_H un CAN_L ar CAN_L starp dažādiem mezgliem, kurus vēlaties savienot. Atcerieties, ka CAN kopne ir jābeidz abos galos ar 120 omu rezistoru.

Arduino programmēšana

Kad mezgli ir savienoti, ir pienācis laiks ieprogrammēt savu Arduino, lai tas sazinātos ar CAN kopni, izmantojot MCP2515 moduli. Labākais veids, kā to izdarīt, ir izmantot piemērotu bibliotēku, piemēram, bibliotēku "mcp2515".

Pirmkārt, jums ir jāinstalē šī bibliotēka. Ja izmantojat Arduino IDE, dodieties uz Skice > Iekļaut bibliotēku > Pārvaldīt bibliotēkas. Meklējiet “mcp2515” un atlasiet instalēšanas opciju.

Kad bibliotēka ir instalēta, varat turpināt rakstīt kodu savam raidītāja mezglam un uztvērēja mezglam. Zemāk es parādīšu abus galvenos piemērus.

Koda piemērs raidītāja mezglam

Šis kods katru sekundi pa CAN kopni nosūta ziņojumu "Sveika pasaule".

#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);}

Saņēmēja mezgla koda piemērs

Šis kods saņem ziņojumus no CAN kopnes un parāda tos seriālajā monitorā.

#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();}

Ātrumi un attālumi CAN tīklā

CAN kopne nodrošina saziņu dažādos ātrumos. Maksimālais ātrums, ko atbalsta MCP2515, ir 1 Mbit/s, taču kopnes garums ierobežo pārraides ātrumu. Piemēram, pie 1 Mbit/s maksimālais kopnes garums ir aptuveni 40 metri. Tomēr, ja nepieciešams veikt lielākus attālumus, varat samazināt ātrumu. Pie 125 kbit/s autobusa garums var sasniegt 500 metrus.

Ir svarīgi labi plānot tīklu un izmantot atbilstošu ātrumu kopnes garumam un videi, kurā tas tiks izmantots, jo trokšņaina vide var ietekmēt sakaru kvalitāti.

Atcerieties arī izmantot vītā pāra CAN_H un CAN_L kabeļus, jo tas palīdz samazināt elektromagnētiskos traucējumus un uzlabo tīkla uzticamību.

CAN tīkls ar vairākiem mezgliem

Ja vēlaties izveidot tīklu ar vairākiem mezgliem, process ir ļoti līdzīgs. Vienīgais, kas jums jādara, ir savienot visus mezglus paralēli līnijām CAN_H un CAN_L. Atcerieties arī novietot gala rezistorus tikai galvenās līnijas galos, nevis starpmezglos.

Sarežģītākā tīklā jums var būt vairāki mezgli, kas darbojas kā raidītāji un uztvērēji. Katrs mezgls pievieno minimālu slodzi kopnei, ļaujot CAN tīklā savienot līdz pat 112 mezgliem, būtiski neietekmējot veiktspēju.

Neatkarīgi no tā, vai automašīnā izmantojat CAN kopni, lai nolasītu dzinēja datus, vai rūpnieciskā projektā, lai sazinātos ar vairākiem sensoriem, modulis MCP2515 ļauj viegli un efektīvi pievienot šo funkcionalitāti. Šāda veida tīkls ir ideāli piemērots lietojumprogrammām, kurās ir būtiska zema latentuma un datu pārraides uzticamība.


Esi pirmais, kas komentārus

Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.