Ymmärtäminen voi väyläprotokollaa ja MCP2515: n käyttäminen Arduinon kanssa

Understanding CAN Bus Protocol and Using the MCP2515 with Arduino

Auto- ja teollisuussovellusten valtakunnassa luotettava viestintä useiden mikrokontrollerien välillä on ensiarvoisen tärkeää. Controller Area Network (CAN) -väylän protokolla on noussut vahvaksi ratkaisuksi tällaisiin tarpeisiin. Tämä blogiviesti pohditaan CAN -väyläprotokollan perusteita ja osoittaa, kuinka integroida MCP2515 CAN Controller Arduinolla, mikä mahdollistaa saumattoman viestinnän projekteissasi.

Mikä on bussiprotokolla?

Controller Area Network (CAN) -väylä on vankka ajoneuvoväylän standardi, joka on suunniteltu sallimaan mikrokontrollerit ja laitteet kommunikoida keskenään ilman isäntätietokonetta. Boschin 1980 -luvulla kehittämä Bussista on tullut autoteollisuusjärjestelmien standardi, mutta sitä käytetään myös laajasti teollisuusautomaatioissa ja muissa sulautettuissa järjestelmissä.

CAN -väyläprotokollan tärkeimmät ominaisuudet sisältävät:

  • Multi-Master-kokoonpano: Useat solmut voivat kommunikoida samassa väylässä ilman keskushallintoa.
  • Viestin priorisointi: Viestit priorisoidaan niiden tunnisteen perusteella, varmistaen, että kriittiset tiedot lähetetään ensin.
  • Virheiden havaitseminen: Vahvat virheen havaitsemismekanismit, mukaan lukien CRC -tarkistukset ja kuittausbitit, lisäävät luotettavuutta.
  • Nopea viestintä: Tukee tiedonsiirtonopeuksia enintään 1 Mbit / s, joka sopii reaaliaikaisiin sovelluksiin.

Nämä ominaisuudet tekevät linja -autosta ihanteellisen skenaarioihin, joissa useita laitteita on kommunikoida tehokkaasti ja luotettavasti, kuten ajoneuvon moottorin hallintajärjestelmissä, teollisuusautomaatio ja robotti.

MCP2515 CAN -ohjaimen esittely

MCP2515 on itsenäinen ohjainalueen verkon (CAN) ohjain, joka on rajapinnassa mikrokontrollereiden kanssa sarjaperifeerisen rajapinnan (SPI) kautta. Se hoitaa monimutkaisen CAN-protokollan, jolloin kehittäjät voivat keskittyä korkeamman tason sovelluslogiikkaan. MCP2515: n tärkeimmät ominaisuudet sisältävät:

  • Tuki vakio- ja laajennetuille CAN -kehyksille.
  • Sisäänrakennetut virheiden käsittely- ja suodatusmekanismit.
  • Yhteensopivuus erilaisten mikrokontrollerien kanssa, mukaan lukien Arduino.
  • Pieni virrankulutus, mikä sopii sulautettuihin järjestelmiin.

Integroimalla MCP2515 Arduinon kanssa voit lisätä Bus Bus -ominaisuuksia projekteihisi, mikä mahdollistaa viestintää muiden CAN-yhteensopivien laitteiden tai verkkojen kanssa.

MCP2515: n perustaminen Arduinon kanssa

Aloittamiseksi tarvitset seuraavat komponentit:

  • Arduino Board (esim. Arduino Uno)
  • MCP2515 CAN -moduuli (mukana tulee usein TJA1050 Can lähetin -vastaanotin)
  • Hyppyjohdot
  • Leipälevy (valinnainen)

Tässä on vaiheittainen opas MCP2515: n asettamiseen Arduinon kanssa:

1. MCP2515: n johdotus Arduinolle

Kytke MCP2515 -moduuli Arduinoon seuraavasti:

  • VCC -lla 5V Arduinolla
  • Hölynpöly -lla Hölynpöly Arduinolla
  • CS -lla Nasta 10 Arduinolla
  • Sck -lla Nasta 13 Arduinolla
  • SI (Mosi) Nasta 11 Arduinolla
  • NIIN (Miso) Nasta 12 Arduinolla
  • Int -lla Nasta 2 Arduinolla

     Arduino          MCP2515
     -------          -------
     5V       ------>  VCC
     GND      ------>  GND
     Pin 10   ------>  CS
     Pin 13   ------>  SCK
     Pin 11   ------>  SI (MOSI)
     Pin 12   ------>  SO (MISO)
     Pin 2    ------>  INT

2. vaadittavien kirjastojen asentaminen

Voit kommunikoida MCP2515: n kanssa MCP_CAN kirjasto. Asenna se Arduino Library Manager -sovelluksen kautta:

  1. Avaa Arduino IDE.
  2. Siirtyä jhk Luonnos> Sisällytä kirjasto> Hallitse kirjastoja ...
  3. Etsiä jtk MCP_CAN ja asenna MCP_CAN Kirjasto: Cory J. Fowler.

3. Esimerkkikoodin lähettäminen

Tässä on perusesimerkki lähetettäväksi ja vastaanottamiselle, joka voi vastaanottaa viestejä MCP2515: n ja Arduinon avulla:

Purkiviestin lähettäminen


// Include the necessary libraries
#include 
#include "mcp_can.h"

// Define the CS pin
#define CAN0_CS 10

// Initialize the CAN controller
MCP_CAN CAN0(CAN0_CS);

void setup() {
    Serial.begin(115200);
    while (CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) != CAN_OK) {
        Serial.println("CAN BUS Shield init fail");
        Serial.println(" Init CAN BUS Shield again");
        delay(100);
    }
    Serial.println("CAN BUS Shield init ok!");
    CAN0.setMode(MCP_NORMAL);
}

void loop() {
    byte data[] = {0x00, 0xFF, 0xAA, 0x55, 0x33, 0x66, 0x99, 0xCC};
    // Send data: CAN ID = 0x100, data length = 8
    if (CAN0.sendMsgBuf(0x100, 0, 8, data) == CAN_OK) {
        Serial.println("Message Sent Successfully!");
    } else {
        Serial.println("Error Sending Message...");
    }
    delay(1000);
}

Voi viestien vastaanottaminen


// Include the necessary libraries
#include 
#include "mcp_can.h"

// Define the CS pin
#define CAN0_CS 10

// Initialize the CAN controller
MCP_CAN CAN0(CAN0_CS);

void setup() {
    Serial.begin(115200);
    while (CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_8MHZ) != CAN_OK) {
        Serial.println("CAN BUS Shield init fail");
        Serial.println(" Init CAN BUS Shield again");
        delay(100);
    }
    Serial.println("CAN BUS Shield init ok!");
    CAN0.setMode(MCP_NORMAL);
}

void loop() {
    unsigned long canId;
    byte len = 0;
    byte buf[8];
    
    // Check if data has been received
    if (CAN0.checkReceive() == CAN_MSGAVAIL) {
        CAN0.readMsgBuf(&canId, &len, buf);
        Serial.print("CAN ID: 0x");
        Serial.println(canId, HEX);
        Serial.print("Data: ");
        for (int i = 0; i < len; i++) {
            Serial.print(buf[i], HEX);
            Serial.print(" ");
        }
        Serial.println();
    }
}

Lähetysluonnoksessa Arduino lähettää tölkkiviestin tunnuksella 0x100 joka sekunti. Saapuvan vastaanottavan luonnos voi viestiä ja tulostaa tunnuksen ja tiedot sarjamonitorille.

Can Bus -sovellukset Arduinossa

Integrointi CAN Busin kanssa Arduinon kanssa avaa monia sovelluksia autojärjestelmien ulkopuolella. Joitakin suosittuja käyttötapauksia ovat:

  • Robotiikka: Ota yhteys useiden motoristen ohjaimien ja anturien välillä.
  • Teollisuusautomaatio: Helpota tiedonvaihtoa eri koneiden ja ohjausyksiköiden välillä.
  • Kodin automaatio: Yhdistä erilaisia ​​älylaitteita yhtenäisessä verkossa.
  • Tiedonkeruujärjestelmät: Kerää ja käsittele tietoja useista antureista tehokkaasti.

Johtopäätös

CAN -väyläprotokolla luotettavuudella ja tehokkuudella toimii selkärangana viestintää varten lukuisissa sulautetuissa järjestelmissä. Hyödyntämällä MCP2515 Can Controller -sovellusta Arduinolla, kehittäjät voivat vaivattomasti integroida CAN Bus -ominaisuudet projektiinsa. Työskenteletkö autoteollisuusjärjestelmien, teollisen automaation tai monimutkaisen robottiikan, ymmärryksen ja hyödyntämisen avulla, mikä voi parantaa järjestelmän viestintäkehystä merkittävästi.

Kattavien oppaiden ja esimerkkien avulla olet hyvin varusteltu integroimaan CAN-bussiin seuraavaan Arduino-projektisi. Hyvää koodausta!

Jätä kommentti

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.