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:
- Nyissa meg az Arduino IDE -t.
- Navigál Vázlat> Könyvtár tartalmazzák a könyvtárakat ...
- 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!