Anschließen eines CAN-Bus zum Auslesen von Daten

Schönen guten Tag leibe Gemeinde,
da ich noch etwas unerfahren bin was dieses Thema angeht und ich auch nicht ganz fündig geworden bin im Internet wollte ich mich mal an euch wenden.

Zu meinem Problem: Ich habe hier schon einmal durch die Themen geklickt und bin Teilweise fündig geworden aber noch nicht so, dass es funktioniert.
Set Up:

  • Arduino Uno

  • CAN-Shield: Sunflower Canshield V3

  • CAN-Bus : EGS NX2

  • Code:

// 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>
#include "mcp_can.h"


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

MCP_CAN CAN(SPI_CS_PIN);                                    // Set CS pin
 
void setup()
{
    Serial.begin(9600);

START_INIT:

    if(CAN_OK == CAN.begin(CAN_250KBPS))                   // init can bus : baudrate = 250k
    {
        Serial.println("CAN BUS Shield init ok!");
    }
    else
    {
        Serial.println("CAN BUS Shield init fail");
        Serial.println("Init CAN BUS Shield again");
        delay(100);
        goto START_INIT;
    }
}

     unsigned char stmp[8] = {0, 1, 2, 3, 4, 5, 6, 7};

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: ");
        Serial.println(canId, HEX);

        for(int i = 0; i<len; i++)    // print the data
        {
            Serial.print(buf[i]);
            Serial.print("\t");
        }
        Serial.println();
        
     // send data:  id = 0x00, standart flame, data len = 8, stmp: data buf
      CAN.sendMsgBuf(0xFEDF, 0, 4, stmp);  
      delay(100);                       // send data per 100ms
    }
}

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

Diesen Code habe ich mehrfach hier im Forum gefunden aber irgendwie taucht bei mir immer der Fehler "CAN Bus inti fail " auf und komme da auch nicht so recht weiter :frowning:
Desweiteren hab ich auch nicht das Gefühl, dass die Heizung des Sensors angeht obwohl der eigentlich nur Spannung brauch oder hab ich da noch was übersehen?

Ich hoffe ihr könnt mir helfen.

Viele Grüße
SCAGPhil

Hallo,

diese CAN-Shields benutzen zwar alle das gleiche IC (MCP2515, ein anderes gibt es nicht mehr), sind aber von der Verdrahtung unterschiedlich. Manche verwenden den SPI-Bus über den ICSP-Header andere über die normalen Pins. Ausserdem verwenden sie natürlich unterschiedliche Pins für das CS-Signal.

Dass es also nicht funktioniert, wenn man irgendein Shield und irgendwelchen Code einfach so benutzen will, ist also deutlich wahrscheinlicher, als dass es geht.

Also Schaltplan studieren und Sketch anpassen.

Den Sensor kenne ich nicht.