CAN-Bus

Dieses Projekt befindet sich noch im Entwicklungsstadium!

In diesem Projekt möchte ich versuchen einen Hausbus mittels CAN-Protokoll zu realisieren. Dieses Projekt wird in mehrere Schritte aufgeteilt.
Zuerst werden die Berechnungen für das Bit-Timing durchgeführt.
Danach gehe ich auf die Grundlagen der Kommunikation mit einem MCP2515 und einen Mega32 von Atmel ein. Der nächste Schritt ist dann die Hardware worauf das gesamte Projekt basiert. Nach der Hardware erläutere ich mein Programm etwas genauer und zeige wie das versenden einer Nachricht mit einem MCP2515 funktioniert.
Anschließend gehe ich etwas genauer auf die Filter, Identifier und den Daten- bzw. Remoteframe ein. Danach zeige ich euch wie Sensoren angebunden werden und wie der Bus vom PC aus gesteuert werden kann.
Falls keinerlei Vorkenntnisse über den CAN-Bus vorhanden sein sollten, sind das Buch oder die Links, welche ich unten aufgeführt habe, sehr hilfreich. Sie erklären alle Einzelheiten des CAN-Protokolls.

Ich beginne mit den Berechnungen für den CAN-Controller. Diese Berechnungen (Bit-Timing, Baudrate, usw.) dienen dazu um die Register des CAN-Controllers optimal einzustellen.
Als kleine Hilfe habe ich unten unter „Zusätzliche Infos“ ein Tool von Mikrochip verlinkt, welches die ganzen Berechnungen vereinfacht.
Wegen der Komplexität der Berechnungen verlagere ich die Erklärung auf eine andere Seite. Hier in der Beschreibung greife ich nur auf die fertigen Werte zurück.
Die Berechnungen können hier eingesehen werden:

-> CAN-Bus Bit Timing

Anschließend kann der CAN-Controller an einen Mega32 angeschlossen werden. Wie dies gemacht wird und wie die Kommunikation mit dem Mega32 aussieht möchte ich auf dieser Seite beschreiben:

-> Kommunikation mit dem MCP2515

Da die Kommunikation zwischen CAN-Controller und Mega32 nun funktioniert, stelle ich euch meinen selbst entwickelten CAN-Knoten etwas genauer vor:

-> Der CAN-Knoten

Nachdem nun sowohl die Grundlagen meines Programmes und die Hardware erklärt wurden, gehe ich etwas tiefer auf das Programm für den Mikrocontroller ein. Als erstes erkläre ich wie ihr den MCP2515 für die ersten Versuche richtig konfiguriert:

-> Konfigurieren des MCP2515

Da der MCP2515 nun fertig konfiguriert ist, können wir damit beginnen eine Nachricht zu versenden:

-> Versenden und Empfangen einer Nachricht

Falls ihr Fragen zu dem Projekt oder irgendwelche Fehler in der Dokumentation gefunden habt, schreibt mir ruhig eine E-Mail an:

DanielKampert@kampis-elektroecke.de

Dokumentation:

 

-> Zurück zu den Projekten

6 thoughts on “CAN-Bus
  1. Hello,

    Can I buy 1 PC from you?
    I like to have an experiment board to read CAN data from cars.

    Will be great if you still have one spare PCB for me.

    Thanks, Msmax

    • Hey,

      I have to look for my third PCB. If I find it you can buy it, if you want (it´s the first Revision so you have to fix some Bugs in the Layout).

      Greetings
      Daniel

  2. Servus,

    erstaml ein großes Lob für die sehr ausführliche Dokumentation dieser Arbeit.

    Kurze Frage: Wenn ich zwei Controller miteinander verbinden möchte (zwei Crum boards at90can), verbinde ich sie dann über CAN_H und CAN_L oder über TX/RX miteinander?

    gruß matze

    • Hallo Matze,

      das kannst du machen wie du möchtest. Rx und Tx sind die Leitungen aus dem CAN-Controller. Diese werden normalerweise dann noch an einen Pegelwandler geschaltet (der MCP2551). Dieser macht dann aus dem Rx das CAN_H und CAN_L (dieses Signal ist dann differenziell und nicht mehr auf Masse bezogen wie Rx), bzw. an der Gegenstelle aus CAN_H und CAN_L dann Tx. Über längere Entfernungen ist die Wandlung auf CAN_H und CAN_L sicherlich sinnvoll, aber wenn es nur eine kurze Verbindung sein soll, kannst du auch direkt Rx und Tx verbinden (musst du dann aber kreuzen – glaube ich).

      Gruß
      Daniel

  3. Hallo Daniel,

    Super Infos auf der Seite – die helfen mir bei meinem Home-Automation-Projekt gerade sehr weiter, da ich mich nun für CAN als Netzwerk zwischen den einzelnen AVRs entschieden habe. Zunächst jedoch eine ganz banale Frage:

    Welches Stecker- / Buchsensystem hast Du benutzt? Auf den Bildern sind sie gut erkennbar (die Grünen mit Klemmanschluss für die Kabel), doch ich kann nirgendwo eine Bezeichnung finden. Hast Du evtl sogar günstige Bezugsquellen?

    Viele Grüße,
    Stefan

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload CAPTCHA.