CAN-netwerk MCP2515

Hallo, Ik ben Pieter Reynebeau en ik ben student aan de Thomas More hogeschool in Geel (België). Ik maak voor mijn bachelorproef een tractor implement management (TIM). Om mijn bachelorproef te doen slagen zou ik graag de CAN-bus van een tractor willen uitlezen. Hiervoor zou ik een MCP2515 willen gebruiken. Ik vond online al verschillende programma's maar tot dusver kan ik 2 MCP2515 modules niet met elkaar doen communiceren. Als dit lukt zou het uitlezen van de CAN-bus van de tractor moeten lukken. Ik gebruikte het onderstaande schema' en opstelling:

Het schema en programma komt van bij: arduino - MCP2515 CAN Transceivers can't go higher than 125kbps - Electrical Engineering Stack Exchange
Iemand een idee wat ik mis doe? Ik krijg steeds de melding dan mijn signaal verzonden wordt maar niet ontvangen. Omdat ik al verschillende systemen testte en verder geen echt probleem zie vermoed ik dat het aan mijn schakeling ligt. Of dat de arbitrage hier de CAN-bus om 1 of andere reden blokkeert.
Alvast bedankt
Pieter Reynebeau

Welkom op het forum; Installation and Troubleshooting is voor problemen met de IDE of het herkennen van je Arduin, niet voor problemen met (of advies voor) je project.

Je hebt je schema al hier geplaatsts, kun je a.u.b. je programma(s) hier ook plaatsen; gebruik a.u.b. zogenaamde code-tags (de </> knop in het antwoord scherm).

Ik heb geen verstand van CAN-bus, dus zal je waarschijnlijk niet verder kunnen helpen.

Beste,
Mijn excuses ik dacht dat dit deel voor problemen met een project was. Het programma is ook van dezelfde website gehaald als het schema (arduino - MCP2515 CAN Transceivers can't go higher than 125kbps - Electrical Engineering Stack Exchange) . dit programma is voor de zendende module:


// demo: CAN-BUS Shield, send data
// loovee@seeed.cc


#include <SPI.h>

/*SAMD core*/
#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
   #define SERIAL SerialUSB
#else
   #define SERIAL Serial
#endif


#define CAN_2515
// #define CAN_2518FD

// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10

// Set SPI CS Pin according to your hardware
// For Wio Terminal w/ MCP2518FD RPi Hat:
// Channel 0 SPI_CS Pin: BCM 8
// Channel 1 SPI_CS Pin: BCM 7
// Interupt Pin: BCM25
// *****************************************
// For Arduino MCP2515 Hat:
// SPI_CS Pin: D9

#ifdef CAN_2518FD
#include "mcp2518fd_can.h"
const int SPI_CS_PIN = 10;
const int CAN_INT_PIN = 2;
mcp2518fd CAN(SPI_CS_PIN); // Set CS pin
#endif

#ifdef CAN_2515
#include "mcp2515_can.h"
const int SPI_CS_PIN = 10;
const int CAN_INT_PIN = 2;
mcp2515_can CAN(SPI_CS_PIN); // Set CS pin
#endif                              // Set CS pin

void setup() {
   SERIAL.begin(115200);
   while(!Serial){};

#ifdef CAN_2518FD
   while (0 != CAN.begin((byte)CAN_500K_1M)) {            // init can bus : baudrate = 500k
#else
   while (CAN_OK != CAN.begin(CAN_500KBPS)) {             // init can bus : baudrate = 500k
#endif        
       SERIAL.println("CAN BUS Shield init fail");
       SERIAL.println(" Init CAN BUS Shield again");
       delay(100);
   }
   SERIAL.println("CAN BUS Shield init ok!");
}

unsigned char stmp[8] = {0, 0, 0, 0, 0, 0, 0, 0};
void loop() {
   // send data:  id = 0x00, standrad frame, data len = 8, stmp: data buf
   stmp[7] = stmp[7] + 1;
   if (stmp[7] == 100) {
       stmp[7] = 0;
       stmp[6] = stmp[6] + 1;

       if (stmp[6] == 100) {
           stmp[6] = 0;
           stmp[5] = stmp[6] + 1;
       }
   }

   CAN.sendMsgBuf(0x00, 0, 8, stmp);
   delay(100);                       // send data per 100ms
   SERIAL.println("CAN BUS sendMsgBuf ok!");
}

// END FILE

Het programma voor de ontvangende module is:

// demo: CAN-BUS Shield, receive data with check mode
// send data coming to fast, such as less than 10ms, you can use this way
// loovee, 2014-6-13


#include <SPI.h>
/*SAMD core*/
#ifdef ARDUINO_SAMD_VARIANT_COMPLIANCE
    #define SERIAL SerialUSB
#else
    #define SERIAL Serial
#endif

#define CAN_2515
// #define CAN_2518FD

// the cs pin of the version after v1.1 is default to D9
// v0.9b and v1.0 is default D10

// Set SPI CS Pin according to your hardware
// For Wio Terminal w/ MCP2518FD RPi Hat:
// Channel 0 SPI_CS Pin: BCM 8
// Channel 1 SPI_CS Pin: BCM 7
// Interupt Pin: BCM25
// *****************************************
// For Arduino MCP2515 Hat:
// SPI_CS Pin: D9

#ifdef CAN_2518FD
#include "mcp2518fd_can.h"
const int SPI_CS_PIN = 10;
const int CAN_INT_PIN = 2;
mcp2518fd CAN(SPI_CS_PIN); // Set CS pin
#endif

#ifdef CAN_2515
#include "mcp2515_can.h"
const int SPI_CS_PIN = 10;
const int CAN_INT_PIN = 2;
mcp2515_can CAN(SPI_CS_PIN); // Set CS pin
#endif                           

void setup() {
    SERIAL.begin(115200);

#ifdef CAN_2518FD
    while (0 != CAN.begin((byte)CAN_500K_1M)) {            // init can bus : baudrate = 500k
#else
    while (CAN_OK != CAN.begin(CAN_500KBPS)) {             // init can bus : baudrate = 500k
#endif
        SERIAL.println("CAN BUS Shield init fail");
        SERIAL.println(" Init CAN BUS Shield again");
        delay(100);
    }
    SERIAL.println("CAN BUS Shield init ok!");
}


void loop() {
    unsigned char len = 0;
    unsigned char buf[8];

    if (CAN_MSGAVAIL == CAN.checkReceive()) {         // check if data coming
        CAN.readMsgBuf(&len, buf);    // read data,  len: data length, buf: data buf

        unsigned long canId = CAN.getCanId();

        SERIAL.println("-----------------------------");
        SERIAL.print("Get data from ID: 0x");
        SERIAL.println(canId, HEX);

        for (int i = 0; i < len; i++) { // print the data
            SERIAL.print(buf[i], HEX);
            SERIAL.print("\t");
        }
        SERIAL.println();
    }
}

/*********************************************************************************************************
    END FILE

Al de beetjes die mij kunnen helpen zijn welkom.

Alvast bedankt

Pieter Reynebeau

Fout gedacht :wink: Zie About the IDE 1.x category.

Bovendien heb je het in de Nederlandse taal geschreven en de meesten hier spreken / lezen / schrijven geen Nederlands en om alles door google translate te halen is ook zo iets :slight_smile: Daarom is er een speciale sectie :wink:

Kun je a.u.b. de code-tags opnieuw proberen; je kunt je vorig post bewerken. Je hebt nu een enkele ` in het begin en een enkele aan het eind; dat moeten er drie zijn en ze moeten op hun eigen regel.

```
programma hier
```

en het resultaat

programma hier

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.