Kuidas luua CAN siini võrku MCP2515 ja Arduino moodulitega

  • CAN-protokoll võimaldab tõhusat suhtlust tööstus- ja autokeskkondades.
  • MCP2515 moodul on optimaalne lahendus Arduino ühendamiseks CAN-võrku.
  • CAN-siin kasutab kahte kaablit (CAN_H ja CAN_L) usaldusväärseks pikamaa andmeedastuseks.
  • See õpetus juhendab teid samm-sammult CAN-võrgu seadistamisel ja kasutamisel Arduinoga.

ühendatud autod

Kui teile meeldib tehnoloogia ja teete sageli Arduinoga eksperimente, siis see artikkel võlub teid. Täna näeme, kuidas MCP2515 mooduli ja Arduino abil oma CAN-võrku seadistada. Saate teada, kuidas CAN-võrgus erinevate seadmete vahel tõhusalt ja usaldusväärselt suhelda. Seda tüüpi võrke kasutatakse laialdaselt autodes ja muudes tööstuslikes rakendustes.

Olenemata sellest, kas teete autotööstust või vajate sidet mitme mikrokontrolleri vahel, on CAN-siin ideaalne rakenduste jaoks, kus töökindlus ja jõudlus on olulised. Ja MCP2515 mooduliga on Arduino sellesse võrku integreerimine väga lihtne. Niisiis, olge valmis CAN-protokolli, riistvara konfiguratsiooni ja vajaliku programmeerimise kohta põhjalikult tundma õppima.

Mis on CAN-buss?

CAN-buss (Controller Area Network) on jadasideprotokoll, mis võimaldab erinevatel seadmetel omavahel suhelda. Selle töötas välja 1986. aastal Bosch ja see on loodud spetsiaalselt autotööstuse jaoks, kuigi selle kasutamine on levinud ka teistesse sektoritesse, näiteks tööstusautomaatikasse. Seda tüüpi võrgus saadavad ja võtavad ühendatud seadmed vastu sõnumeid, ilma et oleks vaja keskmist hosti või kontrollerit, mistõttu on see väga tõhus protokoll keskkondades, kus side ja usaldusväärsus on võtmetähtsusega.

Kaasaegne auto sisaldab enam kui 70 juhtimisseadet, mida tuntakse ECU-dena (Electronic Control Units), mis on omavahel ühendatud CAN-siini kaudu. Tänu sellele protokollile vahetavad ECU-d auto tööks vajalikku põhiteavet, näiteks sõiduki kiiruseandmeid või gaasipedaali asendit.

CAN siini topoloogia ja signaalid

CAN-süsteemi topoloogia on tüüp multimaster, mis tähendab, et mis tahes võrku ühendatud seade saab sõnumite saatmiseks siini juhtimise üle võtta. Kõik sõlmed kuulavad neid sõnumeid ja otsustavad, kas vastata või ignoreerida.

Füüsilisest vaatenurgast toimub side kahe kaabli kaudu: CAN_H y CAN_L. Need kaablid on elektromagnetiliste häirete minimeerimiseks põimitud. Lisaks tuleb võrgu otsad lõpetada 120-oomiliste takistitega, et vältida signaali peegeldusi.

CAN signaalimine

CAN-süsteem kasutab suhtluseks kahte loogilist olekut: domineeriv y retsessiivne. Domineerivas olekus on CAN_H pinge 3.5 V ja CAN_L pinge 1.5 V. Selles olekus edastatakse loogiline '0'. Teisest küljest on retsessiivses olekus mõlema juhtme pinge 2.5 V, mis näitab, et siin on vaba ja loogika '1' saab edastada. Just see pingemuutus kahe kaabli vahel võimaldab andmeedastust võrgus.

MCP2515 moodul

El MCP2515 moodul See on ideaalne lahendus CAN-ühenduvuse lisamiseks oma Arduinole. See koosneb CAN-kontrollerist (MCP2515, mis järgib CAN 2.0B spetsifikatsiooni) ja CAN-transiiverist (TJA1050, mis haldab füüsilist sidet). Need kaks kiipi töötavad koos, nii et saate SPI-liidese kaudu oma Arduinoga CAN-sõnumeid saata ja vastu võtta.

MCP2515 toetab nii standardseid (11-bitine) kui ka laiendatud (29-bitine) sõnumeid ning sellel on võimalus maskide ja filtrite abil soovimatud sõnumid välja filtreerida, mis laadib töö mikrokontrollerist välja. See on suurepärane valik projektide jaoks, mis nõuavad usaldusväärset sidet, olgu siis mürarikkas keskkonnas või pikkade vahemaade tagant.

MCP2515 mooduli komponendid

MCP2515 moodul sisaldab järgmisi osi:

  • MCP2515 CAN-kontroller: vastutab kõigi CAN-protokolli funktsioonide, näiteks sõnumite edastamise ja vastuvõtmise eest.
  • Transiiver TJA1050 CAN: vastutab CAN-kontrolleri andmete teisendamise eest füüsilise CAN-siini signaalideks ja vastupidi.
  • SPI side kontaktid: Kasutades SCK, MOSI, MISO ja CS kontakte, suhtleb MCP2515 Arduinoga oma SPI liidese kaudu.
  • CAN-bussi terminalid: See väike kruviklemmiplokk on tähistatud "H" ja "L". CAN_H ja CAN_L peavad olema ühendatud CAN-võrgukaablitega.

Kuidas Arduinoga CAN-võrku seadistada

MCP2515 mooduliga on CAN-võrgu seadistamine suhteliselt lihtne. Allpool selgitan, kuidas ühendada moodul oma Arduino plaadiga ja kuidas tarkvara konfigureerida.

MCP2515 mooduli ühendused

Alustamiseks ühendage oma Arduino SPI-tihvtid järgmiselt:

  • MISO (mooduli väljund) Arduino kontaktile D12
  • MOSI (mooduli sisend) Arduino viigule D11
  • SCK (Kell) Arduino tihvti D13
  • CS (Chip Select) Arduino tihvti D10

Samuti peate ühendama MCP2515 INT-pistiku Arduino digitaalse viiguga, näiteks D2-ga, kuna seda kontakti kasutatakse katkestuste käsitlemiseks kehtiva sõnumi vastuvõtmisel.

Ärge unustage oma moodulit toita. VCC tihvt tuleb ühendada 5 V ja GND kontakt maandusega.

Mis puudutab CAN-siinide terminale, siis ühendage erinevate sõlmede vahel, mida soovite omavahel ühendada, CAN_H ühenduspunktiga CAN_H ja CAN_L punktiga CAN_L. Pidage meeles, et CAN-siin tuleb mõlemast otsast lõpetada 120-oomise takistiga.

Arduino programmeerimine

Kui olete sõlmed ühendanud, on aeg programmeerida oma Arduino CAN-siiniga suhtlema MCP2515 mooduli kaudu. Parim viis seda teha on kasutada sobivat teeki, näiteks raamatukogu "mcp2515".

Esiteks peate selle raamatukogu installima. Kui kasutate Arduino IDE-d, avage Sketch > Include Library > Manage Libraries. Otsige üles "mcp2515" ja valige installivalik.

Kui teek on installitud, saate jätkata saatjasõlme ja vastuvõtja sõlme koodi kirjutamist. Allpool toon teile mõlema põhinäiteid.

Saatja sõlme koodinäide

See kood saadab iga sekund CAN-siini kaudu sõnumi "Tere maailm".

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

Vastuvõtva sõlme koodinäide

See kood võtab vastu sõnumeid CAN-siinilt ja kuvab need jadamonitoril.

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

Kiirused ja vahemaad CAN-võrgus

CAN-siin võimaldab sidet erinevatel kiirustel. Maksimaalne kiirus, mida MCP2515 toetab, on 1 Mbit/s, kuid siini pikkus piirab edastuskiirust. Näiteks kiirusel 1 Mbit/s on siini maksimaalne pikkus ligikaudu 40 meetrit. Kui teil on aga vaja läbida pikemaid vahemaid, saate kiirust vähendada. 125 kbit/s juures võib bussi pikkus ulatuda 500 meetrini.

Oluline on võrk hästi planeerida ning kasutada siini pikkusele ja kasutuskeskkonnale sobivat kiirust, kuna mürarikas keskkond võib mõjutada side kvaliteeti.

Ärge unustage ka CAN_H ja CAN_L kaablite jaoks kasutada keerdpaari, kuna see aitab vähendada elektromagnetilisi häireid ja parandab võrgu töökindlust.

CAN-võrk mitme sõlmega

Kui soovite moodustada mitme sõlmega võrku, on protsess väga sarnane. Ainus asi, mida peate tegema, on ühendada kõik sõlmed paralleelselt liinidega CAN_H ja CAN_L. Samuti pidage meeles, et lõpptakistid tuleb paigutada ainult põhiliini otstesse, mitte vahesõlmedesse.

Keerulisemas võrgus võib teil olla mitu sõlme, mis toimivad saatjate ja vastuvõtjatena. Iga sõlm lisab siinile minimaalset koormust, võimaldades ühendada kuni 112 sõlme CAN-võrku ilma jõudlust oluliselt mõjutamata.

Olenemata sellest, kas kasutate CAN-siini autos mootoriandmete lugemiseks või tööstusprojektis mitme anduri edastamiseks, muudab moodul MCP2515 selle funktsiooni lisamise lihtsaks ja tõhusaks. Seda tüüpi võrk sobib ideaalselt rakenduste jaoks, kus on oluline andmeedastuse madal latentsusaeg ja usaldusväärsus.


Ole esimene kommentaar

Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.