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:
- Avaa Arduino IDE.
- Siirtyä jhk Luonnos> Sisällytä kirjasto> Hallitse kirjastoja ...
- 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!