Megértés Can Can Can Bus Protocol és az MCP2515 használata Arduino -val

Understanding CAN Bus Protocol and Using the MCP2515 with Arduino

Az autóipari és ipari alkalmazások területén a több mikrovezérlő közötti megbízható kommunikáció kiemelkedően fontos. A Controller Area Network (CAN) buszprotokoll robusztus megoldásként jelent meg az ilyen igényekhez. Ez a blogbejegyzés belemerül a Can Bus Protokoll alapjaiba, és bemutatja, hogyan lehet integrálni az MCP2515 CAN vezérlőt egy Arduino -val, lehetővé téve a zökkenőmentes kommunikációt a projektjeiben.

Mi lehet a buszprotokoll?

A Controller Area Network (CAN) busz egy robusztus járműbusz -szabvány, amelynek célja a mikrovezérlők és eszközök, hogy kommunikálhassanak egymással egy gazdagép nélkül. A Bosch által az 1980 -as években kifejlesztett CAN Bus az autóipari rendszerek szabványává vált, de széles körben használják az ipari automatizálásban és más beágyazott rendszerekben is.

A CAN BUS protokoll legfontosabb jellemzői a következők:

  • Multi-Master konfiguráció: Több csomópont kommunikálhat ugyanazon a buszon központi vezérlő nélkül.
  • Üzenet prioritása: Az üzeneteket az azonosítójuk alapján prioritássá teszik, biztosítva a kritikus adatok továbbítását.
  • Hibafelismerés: Robusztus hibaérzékelő mechanizmusok, beleértve a CRC -ellenőrzéseket és a nyugtázási biteket, javítják a megbízhatóságot.
  • Nagysebességű kommunikáció: Támogatja az adatsebességet akár 1 Mbps-ig, valós idejű alkalmazásokhoz.

Ezek a funkciók a CAN busszal ideálissá teszik a forgatókönyveket, ahol több eszköznek hatékonyan és megbízhatóan kell kommunikálnia, például a járművek motorjainak menedzsmentjeiben, az ipari automatizálásban és a robotikában.

Az MCP2515 CAN vezérlő bemutatása

Az MCP2515 egy önálló vezérlő területi hálózat (CAN) vezérlő, amely a soros perifériás felületen (SPI) mikrovezérlőkkel interfész. Kezeli a bonyolult CAN protokollt, lehetővé téve a fejlesztők számára, hogy a magasabb szintű alkalmazási logikára összpontosítsanak. Az MCP2515 legfontosabb jellemzői a következők:

  • A szabványos és a kiterjesztett CAN keretek támogatása.
  • Beépített hibakezelési és szűrési mechanizmusok.
  • Kompatibilitás különféle mikrokontrollerekkel, beleértve az Arduino -t.
  • Alacsony energiafogyasztás, így alkalmassá teszi a beágyazott rendszerek számára.

Az MCP2515 Arduino-val való integrálásával hozzáadhat CA CAN buszképességeket a projektjeihez, lehetővé téve a kommunikációt más CAN-kompatibilis eszközökkel vagy hálózatokkal.

Az MCP2515 beállítása Arduino -val

Az induláshoz a következő összetevőkre lesz szüksége:

  • Arduino Board (például Arduino Uno)
  • Az MCP2515 CAN modul (gyakran TJA1050 CAN adó -vevővel érkezik)
  • Jumper vezetékek
  • Kenyérlemez (opcionális)

Íme egy lépésről lépésre az MCP2515 beállításához az Arduino-val:

1. Az MCP2515 vezetéke Arduino -ra

Csatlakoztassa az MCP2515 modult az Arduino -hoz, az alábbiak szerint:

  • VCC -hoz 5 V -os Arduino -n
  • GND -hoz GND Arduino -n
  • CS -hoz 10. érintkező Arduino -n
  • SCK -hoz 13. érintkező Arduino -n
  • SI (Mosi) 11. érintkező Arduino -n
  • ÍGY (Miso) 12. érintkező Arduino -n
  • Intert -hoz 2. érintkező Arduino -n

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

2. A szükséges könyvtárak telepítése

Az MCP2515 -vel való kommunikációhoz szükséged lesz a MCP_CAN könyvtár. Telepítse az Arduino Könyvtárkezelőn keresztül:

  1. Nyissa meg az Arduino IDE -t.
  2. Navigál Vázlat> Könyvtár tartalmazzák a könyvtárakat ...
  3. Keres MCP_CAN és telepítse a MCP_CAN Könyvtár: Cory J. Fowler.

3. Töltse fel a példa kódját

Íme egy alapvető példa a CAN üzenetek küldésére és fogadására az MCP2515 és az Arduino használatával:

Can üzenet küldése


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

Can üzenet fogadása


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

A küldő vázlatban az Arduino egy CAN üzenetet továbbít azonosítóval 0x100 Minden másodpercenként. A fogadó vázlat hallgatja a bejövő CAN üzeneteket, és kinyomtatja az azonosítóját és az adatokat a soros monitorra.

Can busz alkalmazása az Arduino -val

A CAN busz integrálása az Arduino -val számos alkalmazást nyit az autóipari rendszereken túl. Néhány népszerű felhasználási eset a következők:

  • Robotika: Engedélyezze a kommunikációt több motorvezérlő és érzékelő között.
  • Ipari automatizálás: Elősegíti az adatcserét a különböző gépek és a vezérlőegységek között.
  • Otthoni automatizálás: Csatlakoztassa a különféle intelligens eszközöket egy egységes hálózaton belül.
  • Adatgyűjtő rendszerek: Az adatok gyűjtése és feldolgozása a több érzékelőből hatékonyan.

Következtetés

A CAN BUS protokoll megbízhatóságával és hatékonyságával gerincként szolgál a kommunikációhoz számos beágyazott rendszerben. Az MCP2515 CAN vezérlő felhasználásával Arduino -val a fejlesztők könnyedén integrálhatják a CAN buszképességeket a projektekbe. Függetlenül attól, hogy autóipari rendszereken, ipari automatizáláson vagy összetett robotikán dolgozik, a CAN BUS megértése és kihasználása jelentősen javíthatja a rendszer kommunikációs keretét.

A bemutatott átfogó útmutatókkal és példákkal jól felkészült arra, hogy beinduljon a CAN busz integrálására a következő Arduino projektbe. Boldog kódolás!

Hagyj egy megjegyzést

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.