klipper_faq:can:can_board
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
klipper_faq:can:can_board [2023/11/04 20:07] – removed - external edit (Unknown date) 127.0.0.1 | klipper_faq:can:can_board [2023/11/04 20:08] (current) – dominik | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== CAN Bus Infosammlung ====== | ||
+ | ===== neue Themen / ToDo ===== | ||
+ | * U2C mit Network Manager einrichten | ||
+ | * Rene melden | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * wenn mit CAN geflasht dann keine Kommunikation mehr über die serielle ! | ||
+ | * CAN Support für RP2040 in github klipper ! | ||
+ | * inkl. USB Bridge Mode für 2040 ! | ||
+ | * Sternverdrahtung vermeiden | ||
+ | * Beispiel Pi, Spider, Head ... Und dann Y Verkabelt mit 3 widerständen ... | ||
+ | * Hinweisen das man die Widerstände von den Boards auch ablöten kann | ||
+ | * {{: | ||
+ | * BTT USB Board per CAN Bus sichtbar? | ||
+ | * Wie finde ich das im System überhaupt ? | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Tip: Zeichnung vom BUS machen ! | ||
+ | * Kurze Anleitung entlöten ? Mit Entlötkupfer und beide Seiten mit Lötkolben heiß machen ... | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * candump sample von Kevin | ||
+ | * https:// | ||
+ | * Schaltplan MCP2515 CAN Module TJA1050 \\ https:// | ||
+ | * Spider Can Bus Expander https:// | ||
+ | |||
+ | ====== Einführung ====== | ||
+ | |||
+ | CAN (Controller Area Network) wurde 1986 von Bosch entwickelt um Kabelbäume leichter und effizienter zu gestallten. Das Bussystem ist also prädestiniert dafür in einem 3D Drucker zur Verkabelung eingesetzt zu werden. Die Vorteile liegen klar auf der Hand: | ||
+ | * mehr Störsicherheit als bei serieller Übertragung (durch differentielle Signalleitungen) | ||
+ | * weniger Overhead als bei USB | ||
+ | * deutlich weniger Kabel - mit Zusatzplatine am Druckkopf reichen 4 Leitungen aus (inkl. Strom) | ||
+ | * mehrere Teilnehmer an einen Bus anschließbar (also auch das Drucker Board selber) | ||
+ | * Kommunikation schon über 2 Leitungen realisierbar | ||
+ | |||
+ | Im 3D Druck Bereich setzen sich vermehrt die Head Boards durch. Also kleine Platinen die alle Funktionen des Druckkopfs steuern und regeln können und direkt am Durckkopf angebracht sind. Diese Boards können fast alle mittels CAN angebunden werden. Im besten Fall reduziert dies die Kabel in der Schleppkette zum Kopf auf 4 (2x Strom, 2x CAN Bus). | ||
+ | |||
+ | Das folgende Dokument beschreibt die Einrichtung von CAN am Raspberry PI, zeigt verschiedene Anschlussvarianten auf und gibt zudem tiefergreifende Informationen (auch zur Fehlersuche). | ||
+ | |||
+ | > **Hinweis**: | ||
+ | |||
+ | ===== Links ===== | ||
+ | * https:// | ||
+ | * https:// | ||
+ | ===== Quickstart ===== | ||
+ | |||
+ | Die Doku enthält doch ziemlich viel Detail Informationen die evtl. nicht jeden interessieren. Darum hier ein Quickstart für Eilige ... Die Anleitung basiert auf folgender Hardware: | ||
+ | * Raspberry Pi | ||
+ | * Waveshare CAN HAT | ||
+ | * Spider Board (wobei das Board aber fast irrelevant ist) | ||
+ | |||
+ | === Steps to do === | ||
+ | * Der Raspberry Pi sollte Klipper installiert haben. Das geht entweder über MainSailOS oder ein Raspberry Pi Lite und KIAUTH. | ||
+ | * Der Zugriff über Netzwerk / SSH sollte vorhanden sein (Tipp: MobaXTerm verwenden als SSH Client) | ||
+ | * Das Waveshare CAN HAT auf dem Raspberry Pi installieren (im stromlosen Zustand versteht sich) | ||
+ | * Den CAN Bus passend verkabeln. Das Spider Board braucht in meinem Fall einen extra 5V [[can_board# | ||
+ | * Sicherstellen das der Bus an beiden Enden mit 120Ω terminiert ist. Das Waveshare Board hat das fest verbaut, das Spider Board auf dem Transceiver auch. Bei einem BTT Kopf Modul ist das jumperbar. | ||
+ | * Raspberry Pi starten und konfigurieren | ||
+ | * System Update \\ '' | ||
+ | * SPI einschalten \\ '' | ||
+ | * MCP2515 Chip aktivieren \\ '' | ||
+ | * Interface einrichten \\ **Achtung** : die 500000er Bitrate muss auch in der Board Firmware eingestellt werden ! \\ '' | ||
+ | iface can0 can static | ||
+ | bitrate 500000 | ||
+ | up ifconfig $IFACE txqueuelen 128 </ | ||
+ | * Raspberry Neustart \\ '' | ||
+ | * Drucker Board flashen | ||
+ | * '' | ||
+ | * '' | ||
+ | * Jetzt das Board einstellen und den richtigen Communication Interface aussuchen. Beim Spider Board ist das '' | ||
+ | * '' | ||
+ | * neu compilierte Firmware '' | ||
+ | * Nach dem Flashen am besten den ganzen Drucker mal neu starten oder zumindest das Drucker Board resetten. | ||
+ | * Kommunikation testen / Board suchen | ||
+ | * '' | ||
+ | * {{: | ||
+ | * Klipper Config anpassen | ||
+ | * Bei der mcu keinen seriellen Port eintragen sondern eine canbus_uuid. Und zwar die aus dem vorherigen Schritt. \\ {{: | ||
+ | * Save & Restart im MainSail Editor und das Board sollte zum Leben erwecken :-) \\ {{: | ||
+ | * Jetzt noch das Board konfigurieren mit seinen Anschlüssen und fertsch :-) | ||
+ | ===== Bus Struktur ===== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Ein CAN Bus ist im Grunde immer gleich aufgebaut. Es gibt zwei Leitungen die zur Datenübertragung genutzt werden : CAN L(ow) und CAN H(igh). An die beiden Busleitungen werden dann die Knoten / Teilnehmer angeschlossen. Jeder der Knoten (und das könnte z.B. ein Drucker Board sein) hängt über einen [[can_board# | ||
+ | |||
+ | Aus dem Schaubild ergeben sich daraus schon einige **Dinge die man beachten sollte**: | ||
+ | * Jeder Bus Teilnehmer muss korrekt angeschlossen werden (CAN L vom Teilnehmer an CAN L vom Bus, selbes für CAN H) | ||
+ | * Der CAN Bus muss am Ende jeweils mit 120Ω abgeschlossen sein. Darauf achten das nicht jeder Busteilnehmer 120Ω " | ||
+ | * Die CAN L und CAN H Leitung sollte im besten fall verdrillt sein. | ||
+ | * Jeder Bus Teilnehmer braucht einen [[can_board# | ||
+ | * Alle Busteilnehmer müssen die gleiche Geschwindigkeit eingestellt haben! | ||
+ | * Um den Raspberry PI an CAN anzubinden braucht es einen extra Adapter (oder ein HAT). | ||
+ | |||
+ | Die meisten Themen werden aber noch im Detail erklärt. | ||
+ | |||
+ | |||
+ | ===== Kabel ===== | ||
+ | |||
+ | ==== Längen ==== | ||
+ | |||
+ | Die CAN Bus Leitung verbindet alle Teilnehmer des CAN Bus miteinander. Bei der Länge ist das aus 3D Drucker Sicht unkritisch - denn selbst mit 500kBit/Sec kann die Buslänge immer noch ca. 100m betragen. Grundsätzlich kann man aber sagen - je länger das Kabel, desto geringer die Übertragungsgeschwindigkeit. Prinzipiell sollten sich also auch mehrere Drucker mit einem CAN Bus betreiben lassen. :-) | ||
+ | Im Netz gibt es diverse Übersichten was die Maximallänge angeht. Aber ganz grob schaut das immer so aus: | ||
+ | ^ Baud-Rate | ||
+ | | 1 MBit/ | ||
+ | | 500 kBit/ | ||
+ | | 250 kBit/ | ||
+ | | 125 kBit/ | ||
+ | | 50 kBit/ | ||
+ | | 20 kBit/ | ||
+ | | 10 kBit/ | ||
+ | |||
+ | ==== Stichleitungen (Stub) ==== | ||
+ | |||
+ | Angaben zum Thema Stub (siehe Schaubild oben) bzw. Stichleitungen findet man nur spärlich. Grundsätzlich sollte man solche **Stichleitungen vermeiden** denn sie führen zu Signalreflektionen (= Störungen). Ein grober Anhaltswert wären ca. 0,5m bei 500kBit/s. Aber wenn eben möglich sollte der CAN Bus wie an einer Perlenkette aufgebaut werden, also von Gerät zu Gerät verbunden. Nur so ist eine saubere Terminierung sichergestellt. | ||
+ | |||
+ | === Links === | ||
+ | * Bitrate und Leitungslängen \\ https:// | ||
+ | * Busrate \\ https:// | ||
+ | * Buslänge \\ https:// | ||
+ | |||
+ | ==== Typen ==== | ||
+ | |||
+ | Grundsätzlich sollten die Kabel bei CAN verdrillt sein. Bei guten Kabeln sind die Paare auch zusätzlich geschirmt. Schirmung ist bei den kurzen Distanzen im Drucker aber eher weniger notwendig. Der Querschnitt sollte ebenfalls nicht zu gering sein um den Leitungswiderstand klein zu halten. | ||
+ | ^ Buslänge [m] ^ Widerstand [mΩ/ | ||
+ | | 0 - 40 | 70 | 0,25 - 0,34 | | ||
+ | | 40 - 300 | < 60 | 0,34 - 0,60 | | ||
+ | | 300 | < 40 | 0,50 - 0,60 | | ||
+ | | 600 - 1000 | < 26 | 0,75 - 0,80 | | ||
+ | |||
+ | Für einen 3D Drucker sollte also für die CAN Leitungen 0,25mm² Leitung reichen. Bei den stromführenden Leitungen sieht das etwas anders aus ... | ||
+ | |||
+ | === Stromberechnung === | ||
+ | |||
+ | Wer noch Strom zum Kopf führen will sollte das vorher mal grob überschlagen. Gehen wir mal von 24V aus und ca. 60W Heizpatrone. Dazu kommen vielleicht nochmal 0,5A an Strom für die Elektronik. Dann bedeutet das wir müssen ca. 60W/24V = 2,5A + 0,5A = ~3A zum Kopf transportieren. Gehen wir weiter davon aus das im Drucker ca. 3m Kabel lieben (und das wäre schon arg lang) dann hat ein Kabel mit 0,5mm² Querschnitt überschlagen ca. 0,11Ω an Leitungswiderstand. Damit lässt sich dann der Spannungsabfall berechnen ... U = R*I = 0,11Ω * 3,0A = 0,33V. Am Kopf kommen also von den 24V ca. 23,7V an. Das passt :-) | ||
+ | |||
+ | -> http:// | ||
+ | |||
+ | ==== Empfehlung ==== | ||
+ | Für den Druckkopf sollte man 4*0,5mm² Leitung verwenden. Zudem sollte das Kabel Schleppkettentauglich sein sonst ist es nach kurzer Bewegung schnell hin. Da es die Igus Kabel nicht an jeder Ecke gibt kann man auch einfach etwas dickere nehmen. Bei Voelkner gibt es z.B. Igus-CF9.10.04 - also 4x1,0mm². Das passt dann locker und ist auch nur ca. 6mm im Durchmesser. | ||
+ | |||
+ | Passende Leitungen gibt es von IGUS: \\ | ||
+ | 0.5mm² -> https:// | ||
+ | 0.75mm² -> https:// | ||
+ | 2 x 0,5mm² -> https:// | ||
+ | 4 x 1mm² -> https:// | ||
+ | ===== Gleiches an Gleiches ===== | ||
+ | |||
+ | Bei der Verkabelung vom CAN Bus ist darauf zu achten das die Anschlüsse richtig verbunden werden. Der BUS hat immer eine Leitung für CAN L(ow) und eine für CAN H(igh). Das ist auf den Boards oft mit H / L oder CH / CL oder eben CANL / CANH beschriftet. Dabei gilt ... Gleiches mit Gleichem verbinden :-) \\ | ||
+ | Beispiel mit dem Waveshare Board und dem BTT 42 Kopf Board: \\ {{: | ||
+ | |||
+ | ==== CAN Tx / CAN Rx ==== | ||
+ | |||
+ | Es gibt Boards wo der CAN Anschluss mit Tx, Rx oder T, R gekennzeichnet ist. Manchmal findet sich auch die Bezeichnung CAN Tx und CAN Rx. Hier ist Vorsicht geboten denn diesen Anschlüssen fehlt oft der [[klipper_faq: | ||
+ | Wie man sieht werden die Pins mit RX und TX bezeichnet - das ist noch **kein CAN Anschluss**! Hier fehlt der Transceiver der die TX, RX Signale in CAN H und CAN L wandelt. Ein passender Adapter findet sich bei Ebay oder Amazon - einfach nach **CAN Transceiver** suchen. | ||
+ | |||
+ | Aber Obacht : Hier muss auf die Spannung geachtet werden. Das Spider Board liefert an seinem CAN Anschluss 5V. Viele CAN Transceiver bei Ebay nutzen aber den SN65HVD230 Chip und der arbeitet mit 3,3V ! Also genau drauf achten was man kauft. Faustregel: Suche nach **TJA1050 CAN Transceiver** liefert 5V Typen, Suche nach **SN65HVD230 CAN Transceiver** liefert 3,3V Typen :-) | ||
+ | |||
+ | Der Anschluss der Transceiver ist dann trivial. 4 Leitungen gehen vom Board zum CAN Transceiver und der wird mit 2 Leitungen an den CAN Bus angeschlossen (auch hier auf L / H achten !). | ||
+ | ===== Terminatoren ===== | ||
+ | |||
+ | Wie im Schaubild oben zu sehen ist muss der CAN Bus am Ende mit jeweils einem 120Ω Widerstand terminiert werden. Wenn diese Endwiderstände nicht vorhanden sind kommt es auf dem Bus zu Signalreflektionen und damit früher oder später zu Störungen. Man muss allerdings aufpassen wo und wie viele Widerstände " | ||
+ | |||
+ | Deshalb immer 2x hinschauen wo sich am BUS Kabel Widerstände befinden. Die Widerstände sollten immer am Ende des Kabels sein. Bei einem Drucker ist das oft direkt vorgegeben. Es gibt einen Buskoppler am Raspberry PI und ein Drucker Board z.B. am Druckkopf. Beide haben in der Regel einen 120Ω Widerstand direkt verbaut und der BUS ist damit sauber terminiert. Hängen aber mehrere Teilnehmer am CAN Bus kann das durchaus ein Thema werden. | ||
+ | |||
+ | === Im Zweifel Messen === | ||
+ | |||
+ | Wer sich unsicher bezüglich der korrekten Terminierung ist kann dies mit einem Digitalmultimeter (Ohm Messung) prüfen. Dazu alle Elektronik erstmal stromlos machen! Dann kann man mit dem Ohmmeter den Widerstand zwischen der L und H CAN Leitung messen. Dabei sollte das Messgerät ~60Ω anzeigen (Das Ergebnis von 120Ω parallel zu 120Ω). Ist das Ergebnis kleiner ist garantiert ein Widerstand zu viel aktiv am Bus. Misst man hingegen 120Ω fehlt ein Widerstand - bei unendlich Ω fehlen beide ;-) | ||
+ | ===== CAN Transceiver ===== | ||
+ | |||
+ | Der CAN Transceiver stellt die Verbindung dar zwischen den CAN Daten die geschrieben und gelesen werden sollen und dem physikalischem CAN BUS. Er " | ||
+ | * SN65HVD23x (Vcc 3.3V) \\ https:// | ||
+ | * TCAN33x (Vcc 3.3V) \\ https:// | ||
+ | * XINLUDA XL1050 (Vcc 5.0V) \\ https:// | ||
+ | * SN65HVD1050 (Vcc 5.0V) \\ https:// | ||
+ | * MCP2542 (Vcc 5.0V) \\ http:// | ||
+ | * MCP2551 (Vcc 5.0V) \\ http:// | ||
+ | * TJA1050 (Vcc 5.0V) \\ https:// | ||
+ | |||
+ | ==== Versorgung ==== | ||
+ | In einem Punkt unterscheiden sich die ICs aber deutlich und das ist die Versorgungsspannung. Viele der Transceiver brauchen 5V um zu funktionieren, | ||
+ | Gerade wenn man den Transceiver selber verbaut sollte man hier Obacht walten lassen :-) | ||
+ | |||
+ | ==== Bus Pegel ==== | ||
+ | Die Bus Pegel bei einem CAN Bus sind - unabhängig von der Transceiver Versorgung - immer gleich. \\ {{: | ||
+ | |||
+ | |||
+ | ==== Boards mit und ohne ==== | ||
+ | |||
+ | Wie schon [[klipper_faq: | ||
+ | |||
+ | Beispiel Spider Board \\ {{: | ||
+ | |||
+ | Beispiel Octopus Board \\ {{: | ||
+ | |||
+ | **Faustregel** \\ | ||
+ | sind die Pins nicht mit CAN H / CAN L (oder H / L) beschriftet braucht es in der Regel einen extra [[can_board# | ||
+ | |||
+ | |||
+ | ===== Geschwindigkeit ===== | ||
+ | |||
+ | Bei einem CAN Bus ist es wichtig das alle Bus Teilnehmer die gleiche Geschwindigkeit benutzen. Sonst können Bus Teilnehmer nicht gefunden bzw. verwendet werden. | ||
+ | |||
+ | Also immer drauf achten das die Geschwindigkeit am **Raspberry Pi** ... \\ {{: | ||
+ | ===== GND / Masse ===== | ||
+ | |||
+ | Zu guter Letzt noch ein sehr kontrovers diskutiertes Thema beim CAN Bus. Muss ich die Masse der CAN Bus Teilnehmer miteinander verbinden? Grundsätzlich kann man sagen - nein. Auf dem CAN Bus werden die Daten differentiell übertragen woraus sich eine Spannungsdifferenz ergibt die ausgewertet werden kann. Als Beispiel dafür mein Testaufbau: \\ {{: | ||
+ | |||
+ | Der PI (links) ist über das Waveshare HAT nur mit 2 Strippen mit dem Drucker Board verbunden (über den [[can_board# | ||
+ | |||
+ | **ABER** \\ | ||
+ | In der realen Welt teilen sich PI und Drucker Board eh schon die gleiche Masse durch das Netzteil. Also ist es im 3D Drucker Umfeld irrelevant. \\ | ||
+ | Prinzipiell sorgt eine CAN Masse dafür das die CAN Pegel zwischen den Boards nicht zu große Differenzen aufweisen. Das kann bei sehr störbehafteten Umgebungen zu Problemen führen. Aber wie schon erwähnt haben wir im Drucker eh eine gemeinsame Masse und das Thema ist damit abgehakt. | ||
+ | |||
+ | === Links === | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ===== Raspberry PI einrichten ===== | ||
+ | |||
+ | Letztlich gibt es da nicht sehr viel zu tun... | ||
+ | |||
+ | * System Updaten und ein paar Tools installieren \\ '' | ||
+ | * SPI einschalten \\ '' | ||
+ | * Interface einrichten \\ **Achtung** : die 500000er Bitrate muss auch in der Board Firmware eingestellt werden ! \\ '' | ||
+ | iface can0 can static | ||
+ | bitrate 500000 | ||
+ | up ifconfig $IFACE txqueuelen 128 </ | ||
+ | | ||
+ | Alle weiteren nötigen Schritte werden bei den Buskopplern erklärt. Wenn auch die eingerichtet sind empfiehlt sich ein Reboot '' | ||
+ | |||
+ | > **Hinweis** : Werden keine CAN Boards gefunden sollte man die Bitrate hier mit 250000 versuchen. Dann müssen natürlich auch alle Firmware Versionen neu kompiliert werden mit der Geschwindigkeit. Hier kann schlechtes Kabel einem schwer in die Suppe spucken ... | ||
+ | |||
+ | ===== Buskoppler ===== | ||
+ | |||
+ | Also Buskoppler werden hier die Geräte gemeint welche den Raspberry PI (oder jeden anderen SBC) in die Lage versetzen mit einem CAN Bus zu kommunizieren. | ||
+ | |||
+ | Grundsätzlich gibt es da 3 Typen: | ||
+ | * Buskoppler mit USB Anschluss | ||
+ | * Buskoppler mit SPI Anschluss | ||
+ | * [[can_board# | ||
+ | |||
+ | Die USB Typen sollen (laut Klipper Doku) stabiler laufen vor allem wenn mehrere CAN Boards angeschlossen werden. Die SPI Typen erzeugen wohl höhere CPU Last am PI. Auf der anderen Seite sind SPI Typen günstiger, leichter zu beschaffen und einfacher in der Handhabung als USB Typen. Die Klipper Entwicklern nutzen wohl auch eher das Waveshare HAT was ein SPI Buskloppler ist. Ganz so verkehrt kann das also nicht sein ;-) Hier muss man sicher noch etwas probieren und testen ... | ||
+ | |||
+ | Der Bridge Mode ist derzeit in der experimentellen Phase. Ob er in den Hauptzweig von Klipper aufgenommen wird muss sich noch zeigen. | ||
+ | |||
+ | In [[https:// | ||
+ | //The MCP2515 is a very common SPI connected CAN bus chip. It is a pretty bad options since it has very small buffers on chip and creates a lot of CPU load on the Raspberry Pi, and has a tendency to drop packet. It is not recomended if you use more than 1 or 2 boards or if you plan to use the accelerometer. You have to run the CAN bus at 250kbits/s or possibly 500kbits/s. An older Pi, or a Pi Zero will not work reliably, it has to be a Pi3 or Pi4 or better.// | ||
+ | |||
+ | Hier finden sich auch noch weitere Infos zu dem Performance Problem -> https:// | ||
+ | ==== Waveshare CAN HAT (SPI) ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Im Grunde ein schönes Board. Es hat einen SN65HVD230 [[can_board# | ||
+ | |||
+ | === Links === | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Manual \\ https:// | ||
+ | * Schaltplan \\ https:// | ||
+ | |||
+ | === Einrichtung am PI === | ||
+ | * MCP2515 Chip aktivieren \\ '' | ||
+ | |||
+ | === RS485 entfernen === | ||
+ | Dieser Umbau ist nur dann nötig wenn man den seriellen Port am Raspberry PI verwenden möchte. Wer das Drucker Board über USB betreibt müsste hier nichts tun. Grundsätzlich brauche ich den RS485 Part aber so oder so nicht. Also kann auch alles vom Board runter was unnötig Strom frisst .... \\ | ||
+ | {{: | ||
+ | Nach dem " | ||
+ | {{: | ||
+ | |||
+ | Läuft tadellos, aber die Garantieansprüche sind dann auch dahin 8-) | ||
+ | |||
+ | === Tests === | ||
+ | Die Tests funktionieren nur wenn der PI eingerichtet wurde, das Waveshare HAT eingerichtet ist und der Raspberry Rebootet wurde ! | ||
+ | * '' | ||
+ | * '' | ||
+ | ==== 2 Channel CAN HAT (SPI) ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Ein Board was zwei isolierte CAN Interfaces für den Raspberry PI bereit stellt. | ||
+ | |||
+ | === Links === | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Schaltplan \\ https:// | ||
+ | |||
+ | === Einrichtung am PI === | ||
+ | Siehe Wiki -> https:// | ||
+ | |||
+ | === Tests === | ||
+ | Siehe Wiki -> https:// | ||
+ | |||
+ | |||
+ | ==== EBay Adapter (SPI) ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Bei Ebay, Amazon und Co. gibt es für wenige Euro ebenfalls Buskoppler. Diese sind aber nicht als HAT konzipiert sondern einfach als kleine Extraplatine. Die Boards haben nur einen Nachteil wenn man sie mit einem Raspberry PI verwenden will - 5V Versorgung. Der verbaute [[can_board# | ||
+ | |||
+ | === Links === | ||
+ | * https:// | ||
+ | * Schaltplan \\ https:// | ||
+ | |||
+ | === Einrichtung am PI === | ||
+ | * MCP2515 Chip aktivieren \\ '' | ||
+ | |||
+ | **Achtung** : ocillator muss passen ! \\ | ||
+ | Auf dem Board ist ein Bauteil mit silberner Kappe. Das ist der Quarz für den MCP2515 Chip. Da ist eine Nummer aufgedruckt, | ||
+ | |||
+ | === Transceiver 3,3V Hack === | ||
+ | Tja leider hat die Platine den falschen Transceiver verbaut. Also bleibt nix anderes als den Transceiver zu tauschen. So einen 8 Pinner kann man noch ganz gut von Hand auslöten. Bei Ebay sucht man sich eine Platine mit SN65HVD230 Chip. Den lötet man dann einfach um und fertig. Die Chips sind pinkompatibel. \\ Alternativ kann man sich auch den Chip bei Reichelt oder Aliexpress bestellen. | ||
+ | |||
+ | Siehe dazu auch hier -> https:// | ||
+ | |||
+ | === Tests === | ||
+ | Die Tests funktionieren nur wenn der PI eingerichtet wurde, das Waveshare HAT eingerichtet ist und der Raspberry Rebootet wurde ! | ||
+ | * '' | ||
+ | * '' | ||
+ | ==== candleLight Adapter (USB) ==== | ||
+ | |||
+ | candleLight ist ein Projekt auf GitHub und stellt eine Firmware für diverse USB <> CAN Adapter bereit. Die Firmware " | ||
+ | |||
+ | Wer eine Alternative zum BTT Adapter sucht sollte auf Aliexpress nach " | ||
+ | |||
+ | === Adapter === | ||
+ | * CANable: USB to CAN Adapter \\ https:// | ||
+ | * Innomaker USB CAN \\ https:// | ||
+ | * Aliexpress \\ Bsp: https:// | ||
+ | |||
+ | === Links === | ||
+ | * candleLight Firmware \\ https:// | ||
+ | * Weitere Infos zu USB Adaptern \\ https:// | ||
+ | |||
+ | |||
+ | ==== BTT U2C Modul (USB) ==== | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Dann gibt es da noch die U2C Boards von BIGTREETECH in zwei Versionen. Die V1.1 hat lediglich noch ein paar mehr Anschlussmöglichkeiten als die V1.0 Version. Technisch sind die aber identisch. Auch diese Boards nutzen die candleLight Firmware. Ansonsten werden die sehr ähnlich eingerichtet wie die SPI Buskoppler. Der Unterschied besteht lediglich darin das kein extra Interface erzeugt werden muss. | ||
+ | |||
+ | Das Board wird später noch genauer getestet - ist aber noch in der Post ;-) | ||
+ | |||
+ | === Links === | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * GitHub \\ https:// | ||
+ | * Handbuch \\ https:// | ||
+ | |||
+ | ===== Drucker Boards ===== | ||
+ | |||
+ | Inzwischen gibt es eine ganze Reihe an Drucker Boards die mit CAN betrieben werden können. Die folgende Liste ist auch sicher unvollständig, | ||
+ | ==== FYSETC Spider Vx.x ==== | ||
+ | |||
+ | Das FYSETC Spider Board ist in allen Versionen CAN kompatibel. es hat allerdings keinen CAN [[can_board# | ||
+ | |||
+ | === Transceiver nachrüsten === | ||
+ | Damit das Board überhaupt am CAN Bus funktioniert muss ein [[can_board# | ||
+ | |||
+ | === Firmware kompilieren === | ||
+ | Folgende Einstellungen sind zu treffen: \\ {{: | ||
+ | |||
+ | === Firmware flashen === | ||
+ | Zum Flashen der Firmware nutzt man am einfachsten das Tool dfu-util in der Linux Konsole. | ||
+ | |||
+ | * Jumper beim Spider Board setzen: \\ {{: | ||
+ | * Das Board mittels USB Kabel mit dem PI verbinden | ||
+ | * Das Board resetten (Taster neben dem SD Slot) | ||
+ | * Mit folgendem Kommando flashen \\ '' | ||
+ | ==== BTT Octopus (Pro) ==== | ||
+ | |||
+ | Das BTT Octopus (Pro) Board hat den Vorteil das bereit ein CAN Transceiver verbaut ist. Genaugenommen ein MCP2542 [[can_board# | ||
+ | |||
+ | === Firmware kompilieren === | ||
+ | Folgende Einstellungen sind zu treffen: \\ {{: | ||
+ | |||
+ | === Firmware flashen === | ||
+ | Zum Flashen der Firmware nutzt man am einfachsten das Tool dfu-util in der Linux Konsole. | ||
+ | |||
+ | * Jumper beim Octopus Board setzen: \\ {{: | ||
+ | * Das Board mittels USB Kabel mit dem PI verbinden | ||
+ | * Das Board resetten (Taster neben dem SD Slot) | ||
+ | * Mit folgendem Kommando flashen \\ '' | ||
+ | |||
+ | ==== BTT EBB36 & 42 CAN V1.0 ==== | ||
+ | |||
+ | Die EBB Boards sind Erweiterungen für den Druckkopf. Sie werden an den Extrudermotor geschraubt und können alle Kopffunktionen bis hin zum Licht übernehmen. EBB36 ist die Variante für NEMA14 Stepper, EBB42 die für NEMA17. Die Boards sind bei Ebay und Aliexpress für ~20-50€ zu bekommen - je nach Ausstattung. | ||
+ | |||
+ | Handbuch, Doku und Schaltplan -> https:// | ||
+ | |||
+ | === Firmware kompilieren === | ||
+ | Folgende Einstellungen sind zu treffen: \\ {{: | ||
+ | |||
+ | === Firmware flashen === | ||
+ | Zum Flashen der Firmware nutzt man am einfachsten das Tool dfu-util in der Linux Konsole. | ||
+ | |||
+ | * Das Board mittels USB Kabel mit dem PI verbinden | ||
+ | * Die Boot Taste am Board gedrückt halten, dann Reset Taste drücken, Reset loslassen, Boot loslassen. \\ Die Tasten befinden sich auf der Rückseite des Boards. | ||
+ | * Mit folgendem Kommando flashen \\ '' | ||
+ | |||
+ | === Shop === | ||
+ | * https:// | ||
+ | |||
+ | ==== BTT EBB36 & 42 CAN V1.1 ==== | ||
+ | |||
+ | Hier gibt das Gleiche wie bei Version V1.0. Der Unterschied ist nur ein anderer Prozessor. | ||
+ | |||
+ | > **Achtung**: | ||
+ | |||
+ | === Firmware kompilieren === | ||
+ | Folgende Einstellungen sind zu treffen: \\ {{: | ||
+ | |||
+ | === Firmware flashen === | ||
+ | Zum Flashen der Firmware nutzt man am einfachsten das Tool dfu-util in der Linux Konsole. | ||
+ | |||
+ | * Das Board mittels USB Kabel mit dem PI verbinden | ||
+ | * Die Boot Taste am Board gedrückt halten, dann Reset Taste drücken, Reset loslassen, Boot loslassen. \\ Die Tasten befinden sich auf der Rückseite des Boards. | ||
+ | * Mit folgendem Kommando flashen \\ '' | ||
+ | |||
+ | ==== Mellow Fly-SHT Boards ==== | ||
+ | Das scheinen mir doch ziemliche Clone von den BTT Boards EBB36 / EBB42 zu sein. Insofern gilt bei denen auch das Gleiche bezüglich Firmware und Anschluss. | ||
+ | |||
+ | Hier gibt es noch weitere Infos: \\ http:// | ||
+ | |||
+ | === Shop === | ||
+ | * https:// | ||
+ | ==== Huvud ==== | ||
+ | Das Huvud Board war wohl eines der ersten CAN Boards für den Druck Kopf. Es gibt inzwischen diverse Versionen und Stände von diesem Board. Das größte Problem ist die Verfügbarkeit - es ist kaum mal irgendwo zu bekommen. | ||
+ | |||
+ | {{: | ||
+ | |||
+ | === Links === | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * Halterung \\ https:// | ||
+ | |||
+ | === Firmware kompilieren === | ||
+ | Folgende Einstellungen sind zu treffen: \\ {{: | ||
+ | |||
+ | |||
+ | |||
+ | ==== PandaCAN Extruder ==== | ||
+ | |||
+ | Ein weiteres Board mit CAN. Allerdings noch nie in der Hand gehabt oder gesehen. Deswegen hier nur der Verweis auf die Webseite für weitere Infos. | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ==== Eigenbau ==== | ||
+ | Auch Board Eigenbauten sind mit Klipper möglich. Hier können alle Controller verwendet werden die einen CAN Bus mitbringen. Zu erkennen ist das immer daran das unter dem Cummunication Interface CAN ausgewählt werden kann. \\ {{: | ||
+ | |||
+ | Um eine Eigenkonstruktion an CAN zu betreiben muss natürlich ein [[can_board# | ||
+ | |||
+ | So ein Board könnte man z.B. zur LED Beleuchtung hernehmen. Aber grundsätzlich kann man mit so einem Board alles steuern und Regeln was Klipper so anzubieten hat. Wer da Inspirationen braucht sollte sich mal den [[https:// | ||
+ | |||
+ | === Links === | ||
+ | * https:// | ||
+ | |||
+ | |||
+ | ===== Klipper Konfig ===== | ||
+ | |||
+ | Die Konfiguration von Klipper mit einem CAN Board unterscheidet sich nur in einem Punkt - die **canbus_uuid**. Boards die nicht über CAN betrieben werden nutzten einen seriellen Port für die Kommunikation mit dem Raspberry PI: | ||
+ | < | ||
+ | [mcu] | ||
+ | restart_method | ||
+ | serial | ||
+ | </ | ||
+ | Wir CAN verwendet ändert sich nur die serial Zeile zu canbus_uuid: | ||
+ | < | ||
+ | [mcu] | ||
+ | restart_method | ||
+ | canbus_uuid | ||
+ | </ | ||
+ | |||
+ | Bleibt noch die Frage wie man an die UUID ran kommt. Dafür gibt es Klipper Python Script '''' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Kommt hier die Meldung '' | ||
+ | * Reset Taste an den Drucker Boards drücken und nochmal versuchen | ||
+ | * Firmware falsch oder nicht korrekt aufgespielt (oder gar nicht aufgespielt) | ||
+ | * Firmware ohne CAN Support kompiliert | ||
+ | * CAN Bus falsch verdrahtet | ||
+ | * CAN Bus ohne die 120Ω Widerstände am Ende der Busleitung | ||
+ | * Kein [[can_board# | ||
+ | * CAN Anschluss am PI läuft nicht sauber | ||
+ | * CAN Bus Speed ist zu schnell für das Kabel | ||
+ | * Das '' | ||
+ | |||
+ | Wer hier hängt sollte sich das Kapitel [[can_board# | ||
+ | |||
+ | ===== Beispiel 3 CAN Geräte ===== | ||
+ | |||
+ | Nachdem am Anfang schon ein " | ||
+ | * Raspberry PI mit Waveshare CAN HAT | ||
+ | * Spider Board V1.1 mit extra angeschlossenem [[can_board# | ||
+ | * BTT EBB42 CAN V1.0 Board für den Druckkopf | ||
+ | |||
+ | Betrachtet wird nur der Teil bis die Boards in und mit Klipper funktionieren. Die Konfiguration ist hier nicht Bestandteil - sollte aber normalerweise auch kein Problem darstellen. | ||
+ | |||
+ | ==== Raspberry Pi einrichten ==== | ||
+ | Wie der Raspberry PI eingerichtet werden muss steht in diesem [[can_board# | ||
+ | ==== Firmware Spider Board ==== | ||
+ | Wie ein Spider Board mit Firmware geflasht wird steht in diesem [[can_board# | ||
+ | ==== Firmware BTT Board ==== | ||
+ | Wie ein BTT Board mit Firmware geflasht wird steht in diesem [[can_board# | ||
+ | ==== Bus verkabeln ==== | ||
+ | |||
+ | Wie schon oben im Schaubild zu sehen ist werden alle 3 BUS Teilnehmer wie an einer Perlenschnur miteinander verbunden. \\ {{: | ||
+ | |||
+ | Viel mehr ist es nicht. Man sollte nur peinlichst drauf achten das jeweils CAN_L an CAN_L ist und gleiches für CAN_H. | ||
+ | ==== Busteilnehmer suchen ==== | ||
+ | Die Busteilnehmer muss man suchen, weil man die UUIDs für die Konfiguration in Klipper braucht. Das Kommando dazu lautet folgendermaßen: | ||
+ | |||
+ | Welches Board nun zu welcher UUID gehört kann man mit dieser Ausgabe nicht ermitteln. Hier hilft nur raten oder die Boards einzeln am CAN Bus anschließen und auslesen. | ||
+ | |||
+ | Problematisch ist das '' | ||
+ | * Klipper Dienst stoppen \\ '' | ||
+ | * Jetzt alle Drucker Boards resetten. Dazu haben eigentlich alle Boards immer eine extra Taste verbaut. | ||
+ | * Erst danach den bus scannen \\ '' | ||
+ | |||
+ | Wer hier hängt sollte sich das Kapitel [[can_board# | ||
+ | |||
+ | |||
+ | ==== printer.cfg canbus_uuid ==== | ||
+ | |||
+ | Bleibt noch die printer.cfg mit passenden Einträgen zu versehen. Hier ist für einen ersten Test nur die Minimal Konfig abgebildet: \\ {{: | ||
+ | |||
+ | Nach einem Restart von MainSail sollte dann das Ergebnis so aussehen: \\ {{: | ||
+ | |||
+ | ===== CAN Bus Bridged Mode ===== | ||
+ | |||
+ | Es gibt seit kurzer Zeit einen neuen Modus für CAN fähige STM32 Boards - den Bridge Mode. Dabei kann man sich am Raspberry PI das extra CAN HAT ersparen. Die Aufgabe übernimmt ein Stückchen Software in der Drucker Board Klipperfirmware. Das schaut dann in etwa so aus: \\ {{: | ||
+ | |||
+ | Auch wenn dieser neue Modus erstmal sehr interessant klingt, bringt er doch ein paar Einschränkungen mit sich: | ||
+ | * Der Bridge Mode ist nur auf " | ||
+ | * Der Controller der im Bridge Mode läuft erscheint nicht als CAN Bus Gerät. Er kann zudem auch nicht direkt mit anderen CAN BUS Teilnehmern kommunizieren - das geht immer über den Raspberry PI und den USB Port. | ||
+ | * Die can0 Schnittstelle muss trotzdem konfiguriert werden. Timings werden aber ignoriert und nur die Timings von '' | ||
+ | * Immer wenn der Bridge Controller zurückgesetzt wird, deaktiviert sich gleichzeitig auch die can0 Schnittstelle in Linux. Man kann das über '' | ||
+ | |||
+ | Wer das zur Zeit testen möchte muss den git Branch " | ||
+ | * '' | ||
+ | * '' | ||
+ | * Jetzt ist der neue Bridge Mode bei '' | ||
+ | * Zurück zum normalen Klipper Branch kommt man danach wieder mittels '' | ||
+ | |||
+ | Könnte einen spannende Sache werden, denn es erspart das CAN Interface am Raspberry PI. Allerdings sollte man warten bis diese Funktion in den Hauptzweig von Klipper eingefügt wurde. Derzeit ist es eher ein experimentelles Feature mit Potential :-) | ||
+ | |||
+ | === Links === | ||
+ | * https:// | ||
+ | * https:// | ||
+ | * https:// | ||
+ | |||
+ | ===== Flashen per CAN ===== | ||
+ | |||
+ | Es gibt seit einiger Zeit ein sehr interessantes Projekt namens " | ||
+ | |||
+ | > **Hinweis**: | ||
+ | |||
+ | ==== Download ==== | ||
+ | Um CanBoot zu nutzen muss zunächst einmal der Code geladen werden: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== Controller Konfig ==== | ||
+ | Dann muss der Controller konfiguriert werden - ähnlich wie beim Klipper kompilierern: | ||
+ | * '' | ||
+ | * Für ein EBB46 V1.0 Board schaut das dann so aus \\ {{: | ||
+ | * Abschließend dann den Bootloader compilieren mit '' | ||
+ | |||
+ | > **Hinweis**: | ||
+ | |||
+ | > **<color # | ||
+ | |||
+ | ==== CanBoot flashen ==== | ||
+ | Der nächste Schrott besteht dann darin den frisch kompilierten Bootloader auf das Drucker Board zu flashen. Für diesen Test ist das ein EBB46 V1.0 Board. Aber das sollte mit allen anderen STM32 Controllern ganz genauso funktionieren. | ||
+ | |||
+ | * Das Board per USB mit dem Raspberry PI verbinden | ||
+ | * Das Board in den DFU Modus bringen. | ||
+ | * Beim BTT Board geht das über die folgende Button Reihenfolge: | ||
+ | * Bei anderen STM32 Boards muss der Jumper bei BOOT0 oder auch BT0 gesetzt werden. | ||
+ | * **Tipp**: Ob der Controller im DFU Modus ist lässt sich mit diesem Befehl ermitteln: '' | ||
+ | * Dann den Bootloader flashen \\ '' | ||
+ | * Nach dem Flashen des CanBoot Bootloader ist es immer eine gute Idee mal den Reset Button vom Board zu drücken. | ||
+ | |||
+ | ==== Board suchen ==== | ||
+ | Nachdem das Board nun den CanBoot Bootloader installiert hat muss es am CAN Bus auch gefunden werden. Dazu gibt es ein extra Python Script im CanBoot Verzeichnis '' | ||
+ | |||
+ | * Boards am CAN Bus suchen die CanBoot installiert haben \\ '' | ||
+ | * Die UUID - in diesem Fall 539892be834d - brauchen wir für das Flashen von Klipper später | ||
+ | |||
+ | Alternativ geht die Board suche auch mittels '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | ==== Board flashen ==== | ||
+ | Bleibt noch der letzte Schritt - Klipper über CAN zu flashen. | ||
+ | |||
+ | * Das Board wird wie gehabt konfiguriert | ||
+ | * '' | ||
+ | * '' | ||
+ | * Abschließend ein '' | ||
+ | * Dann das Board mittels CAN flashen | ||
+ | * '' | ||
+ | * '' | ||
+ | * Das Ergebnis: \\ {{: | ||
+ | * Kleine Überprüfung ob alles geklappt hat ... | ||
+ | * '' | ||
+ | * Passt also :-) | ||
+ | |||
+ | Das tolle an diesem Bootloader ist, dass man am Drucker Board nichts mehr machen muss wenn er einmal aufgespielt ist. Also keinen Taster drücken für DFU Mode, keine SD Karte, nichts. Einfach nur erneut das Flash Skript aufrufen mit der neuen Klipper Firmware und alles geht wie von Zauberhand. Eine enorme Vereinfachung für den Flashvorgang :-) | ||
+ | | ||
+ | ===== Fehlersuche ===== | ||
+ | Wie schon etwas weiter oben im Text aufgezeigt, kann es eine ganze Reihe an Gründen / Problemen geben warum der CAN Bus nicht sauber funktioniert. Dafür im Folgenden ein paar praktische Tipps zur Fehlersuche ... | ||
+ | |||
+ | https:// | ||
+ | ==== Hardware ==== | ||
+ | |||
+ | **CAN Bus falsch verdrahtet** \\ | ||
+ | Auch wenn der CAN Bus nur 2 Leitungen benötigt muss auf die Verdrahtung geachtet werden. CAN L gehört immer an CAN L, CAN H immer an CAN H. Das gilt für **alle** Geräte am CAN Bus! | ||
+ | |||
+ | **CAN Bus ohne die 120Ω Widerstände am Ende der Busleitung** \\ | ||
+ | Am Ende des CAN Bus muss jeweils ein 120Ω Widerstand für die Terminierung vorhanden sein. Diese beiden Widerstände hängen am *äußersten Ende der Busleitung* jeweils zwischen CAN L und CAN H. Prüfen kann man die Widerstände mit einem Ohmmeter. Wenn die Hardware (= der Drucker) komplett stromfrei ist, einfach zwischen CAN L und CAN H den Widerstand messen: | ||
+ | * ~60Ω und alles ist im Lot | ||
+ | * ~120Ω und es fehlt ein Abschlusswiderstand | ||
+ | * unendlich Ω und es ist gar kein Widerstand vorhanden | ||
+ | * alles kleiner 60Ω (also genauer so ab 40Ω und tiefer) deutet darauf hin das zu viele Abschlusswiderstände aktiv sind | ||
+ | |||
+ | **CAN Bus Speed ist zu schnell für das Kabel / schlechtes Kabel** \\ | ||
+ | Für den CAN Bus sollte im Bestfall gedrilltes Kabel verwendet werden. Auch die Dicke der Adern sollte nicht zu gering sein. Sind diese Kriterien nicht erfüllt kann es vorkommen das der CAN Bus nicht sauber funktioniert. Geräte werden dann z.B. nicht sauber oder nur sporadisch erkannt. In einem solchen Fall sollte man die Busgeschwindigkeit herunter setzen auf 250000 Bit/s (oder auch noch tiefer wenn nötig - siehe dazu Tabelle am [[can_board# | ||
+ | |||
+ | Einstellen kann man die Bus Geschwindigkeit in der Datei ''/ | ||
+ | |||
+ | > **<color # | ||
+ | |||
+ | **Kein Transceiver auf dem Board bzw. keiner extra angeschlossen** \\ | ||
+ | Einige Boards haben keinen [[can_board# | ||
+ | |||
+ | > **Faustregel**: | ||
+ | |||
+ | **SPI nicht aktiviert** \\ | ||
+ | Damit die SPI basierten Buskoppler funktionieren muss auf dem Raspberry PI die SPI Schnittstelle eingeschaltet werden. Das geht über '' | ||
+ | |||
+ | **SPI mcp251x funktioniert nicht** \\ | ||
+ | Fast alle SPI basierten Buskoppler basieren auf dem Chip mcp251x. Damit dieser sauber funktioniert muss er in der Konfiguration vom PI eingerichtet werden. Siehe dazu die [[can_board# | ||
+ | |||
+ | |||
+ | |||
+ | ==== Software ==== | ||
+ | |||
+ | **Firmware falsch oder nicht korrekt aufgespielt (oder gar nicht aufgespielt)** \\ | ||
+ | Es sollte natürlich sichergestellt sein das die richtige Firmware für das Board eingerichtet und kompiliert wurde. Tückisch kann dabei ein vorhandener Bootloader sein (Stichwort Bootloader offset) oder eine falsch eingestellte CPU und / oder Clock Reference. Hier also genau auf die richtigen Einstellungen achten. | ||
+ | |||
+ | Manchmal kann es auch helfen vor dem Schreiben der Firmware den Flash Speicher zu löschen. Dann ist der Aufruf von dfu-util leicht anders. | ||
+ | Anstatt wie sonst üblich mit leave \\ '' | ||
+ | |||
+ | **Firmware ohne CAN Support kompiliert** \\ | ||
+ | Essentiell beim Kompilieren neuer Klipper Firmware ist natürlich der CAn Support. Dazu das richtige Communication interface auswählen. Hier besonders auf die verwendeten Controller Pins achten. Zur Not im Schaltplan des Boards nachsehen welche Pins genau für CAN reserviert wurden. | ||
+ | |||
+ | **Tools finden keine CAN Geräte** \\ | ||
+ | Es kommt vor das **canbus_query.py** wie auch **flash_can.py** keine CAN Geräte am Bus finden. Hier ist es mitunter sinnvoll mal die Reset Taste der Druckerboards zu drücken und die Suche zu wiederholen. Zudem ist es ratsam vor der Nutzung dieser Tools den Klipper Dienst zu stoppen: \\ '' | ||
+ | |||
+ | **CAN Anschluss am PI läuft nicht sauber** \\ | ||
+ | Wenn der CAN Bus am PI nicht verfügbar ist, oder nicht korrekt läuft liegt das zu 99% an einer falschen Konfiguration: | ||
+ | * entweder ist die Datei ''/ | ||
+ | * oder aber SPI ist nicht eingeschaltet und / oder der mcp251x funktioniert nicht | ||
+ | |||
+ | Prüfen kann man das mittels '' | ||
+ | |||
+ | **Falsche txqueuelen in / | ||
+ | Es wird in manchen Dokus empfohlen die txqueuelen in der Datei ''/ | ||
+ | |||
+ | Die txqueuelen kann auch im Betrieb (bis zum nächsten Reboot) neu gesetzt werden: \\ '' | ||
+ | |||
+ | **can0 Interface down** \\ | ||
+ | Es ist immer eine gute Idee den Status des can0 interfaces zu prüfen. Das geht recht einfach mittels '' | ||
+ | |||
+ | Sollte das can0 Interface mal auf DOWN stehen kann man versuchen es mittels \\ '' | ||
+ | |||
+ | Interface auf UP setzen mit bitrate \\ | ||
+ | '' | ||
+ | |||
+ | Bitrate testweise umsetzen \\ | ||
+ | '' | ||
+ | |||
+ | |||
+ | ==== Tools ==== | ||
+ | |||
+ | Es gibt unter Linux (und Klipper) eine ganze reihe an Tools, um den CAN Bus zu untersuchen. | ||
+ | |||
+ | **Klipper - canbus_query.py** \\ | ||
+ | Das Skript canbus_query.py listet alle Klipper und CanBoot Geräte am CAN Bus auf. Das ist dann von Nöten wenn die UUIDs für die Klipper Konfig ermittelt werden müssen. Ganz nebenbei zeigt es aber auch recht simple ob die Geräte am Bus funktionell sind. \\ '' | ||
+ | |||
+ | > **Achtung**: | ||
+ | |||
+ | Beste Vorgehensweise \\ | ||
+ | * Klipper Dienst stoppen \\ '' | ||
+ | * Alle Boards am Bus einmal resetten über die Hardware Taste am Board | ||
+ | * Dann die Suche ausführen \\ '' | ||
+ | * Klipper Dienst wieder starten \\ '' | ||
+ | |||
+ | **Klipper - console.py** \\ | ||
+ | ein weiteres Klipper Skript ist console.py. Es ist nur schwer in Dokumentationen zu finden, aber im Grunde sollte es jeder kennen. Es stellt eine Verbindung zum Drucker Board her und zeigt die Kommunikation an. Damit kann man nicht nur testen ob das Board sauber mit der Klipper Firmware arbeitet. Damit lässt sich auch schnell die Firmware Version auslesen. Anmerkung am Rande ... Das Tool funktioniert auch mit seriellen Verbindungen. \\ {{: | ||
+ | |||
+ | Beste Vorgehensweise \\ | ||
+ | * Klipper Dienst stoppen \\ '' | ||
+ | * evtl. das Baord einmal resetten über die Hardware Taste | ||
+ | * '' | ||
+ | * Hinten steht die CAN UUID die man mit canbus_query.py ausgelesen hat ;-) | ||
+ | * Klipper Dienst wieder starten \\ '' | ||
+ | |||
+ | **CanBoot - flash_can.py** \\ | ||
+ | Das nächste interessante Skript stammt vom CanBoot Projekt. Es kann ebenfalls alle CAN Geräte am Bus finden. \\ {{: | ||
+ | |||
+ | Beste Vorgehensweise \\ | ||
+ | * Klipper Dienst stoppen \\ '' | ||
+ | * Alle Boards am Bus einmal resetten über die Hardware Taste am Board | ||
+ | * '' | ||
+ | * Klipper Dienst wieder starten \\ '' | ||
+ | |||
+ | **Linux - can-utils** \\ | ||
+ | '' | ||
+ | '' | ||
+ | |||
+ | **Linux - tcpdump** \\ | ||
+ | '' | ||
+ | '' |