Hallo Allerseits,
ich habe mich schon länger mit dem Arduino befasst (also 1 Jahr) und ich habe nächstes Jahr meine Matura Prüfung für welche ich ein Projekt bauen muss. Dabei dachte ich an einen 3D-Drucker. Für die Steuerung möchte ich alles (Platine - wird ein modifiziertes Arduino DUE) selbst machen. Dabei dachte ich mir dass die Kommunikation zwischen PC und Arduino mit dem Serial eher schlecht als recht läufr und will diese Verbindung durch einen CAN Bus austauschen. Meine frage ist: gibt es einen nicht allzuteueren USB -> CAN Adapter? ( mit teuer meine ich 100€+)
Ich hoffe ihr könnt mir helfen.
MfG
Felix
hi,
hehres ziel, aber wozu?
die serielle verbindung ist um nichts schlechter als der CAN, der ist allerdings um welten mehr arbeit...
für kurze verbindungen innerhalb eines gerätes ist der i²C noch besser, weil auch schon die adressierung in hardware passiert.
gruß stefan
Der gedanke war dass ich mit jedem man dass ich ein ACK vom drucker an den PC sende alle Systemdaten mitsende, wären motortemperaturen, extruder, druckbrett, position,... also wird ein großes Packet und der Serial wird da zu langsam. I²C würde sicher gehen wäre nicht der umstand dass zwischen PC und Drucker auch mehr als 20 sein könnten weil ich das Wahrscheinlich in zusammenarbeit mit einem unternehmen bauen werde.
Wäre RS232 eine alternative?
RS232 ist lediglich ein serielles Signal mit anderen elektrischen Pegeln als TTL. Das erhöht die Reichweite, aber ändert nichts an der Geschwindigkeit.
Serial geht auch auf dem Arduino locker mit 500.000 Baud. Das sind 20µs pro Zeichen!
Es gibt etliche Firmware Projekte für 3D Drucker, die mit
Serial arbeiten.
Auch hier werden nach jeder G-Code Zeile neben dem ACK die Druckerparameter mitgeschickt.
Ist Quelloffen, kannst ja mal einen Blick reinwerfen
Dein Vorhaben ist schon anspruchsvoll, aber du lernst das ja professionell.
Ich habe bei der Firmware für einen Lasercutter schon sehr rumgetüftelt bis das funktionierte.
Bin allerdings nur ein Hobbyentwickler.
Du must 3 Achsen + Extruder kontrollieren
Bresenham lässt grüßen
Also das Problem ist dass der Serial nicht so angenehm zu verwenden ist.
Und ich hab soch so einoge Firmwars zerlegt alleine um eine geeignete für meinen 3D Drucker zu finden. Weshalb ich da nicht ganz in den Wolkenherumstochere...
Wenn es unbedingt CAN sein muss, kommst Du für einen PC-Adapter wahrscheinlich mit einem Arduino und so einem Shield am günstigsten weg:
Bei den fertigen USB-CAN-Adaptern ist das hier schon mit der günstigste, mit dem ich je zu tun hatte:
Naja ok 195€ sind wirklich viel.
Ist es eigentlich möglich über Ethernet oder USB mit dem Arduino zu kommunizieren?
Die Arduino Boards haben entweder einen USB-TTL Konverter drauf oder die Prozessoren können nativ USB. Also einfach anschließen und schon kann man kommunizieren.
Ethernet geht mit einem Shield oder Breakout Board.
Der Due hat eigentlich auch eine CAN Schnittstelle auf dem Prozessor. Aber die wird durch die Software nicht unterstützt...
Serenifly:
Der Due hat eigentlich auch eine CAN Schnittstelle auf dem Prozessor.
Nach der Doku dieser Library sind es sogar zwei.
Aber nur in 3,3 V Logik. Da müssen noch Tranceiver-Chips dahinter um die CAN Pegel zu erzeugen.
Also wäre USB geeigneter nur gibt es dazu eine Dokumentation für den DUE?
20 Meter über USB?
Das wird nix.
Preiswerte Varianten:
RS485
Ethernet
Wlan
Bluetooth
Für WLAN gibt es diese sehr günstigen ESP8266 Module, die gehen wahrscheinlich an einem Due.
Wenn ich meinen Due ans Ethernet hänge mache ich das entweder indirekt, in dem ich ihn am USB eines Raspi betreibe. Oder er hängt über UART an einem anderem ARM-Board mit Ethernet und SD-Karte, das ist ein FRDM-K64F kein Arduino.
RS-232 geht auch mit 20m. Einfach zwei MAX232 an jedes Ende und gut ist.
Hatte etwas übersehen dass es auch über größere Entfernungen gehen soll, weil erst die Geschwindigkeit angesprochen wurde. Würde mich dann eher darum kümmern. Wie gesagt, bekommt auch mit seriell höhere Geschwindigkeiten hin, da man nicht bei den geringen Baudraten bleiben muss.
Wie schon angesprochen, RS232 arbeitet mit höheren Spannungspegel.
Softwaremässig ist dies wie eine TTL Serielle Übertragung, und das wurde von Fragesteller abgelehnt.
Wie wäre es mit einem W5100 Modul UDP Messages zu versenden. (Also Ethernet Verbindung.)
Bluetooth läuft softwaremässig auch wieder die Serielle hinaus.
Also mein Problem ist, dass ich ja sobald ich was anderes als den "normalen" TTL Serial verwende, mir die PC Software selbst schreiben muss und das kann dauern... Vor allem da ich das dann in C# oder LabView machen muss.
Sorry für die Gegenfrage, warum lehnst du dann die serielle Methode ab ?
Du sagst die serielle ist nicht angenehm zu verwenden und funktioniert mehr schlecht als recht.
Kann ich jetzt nicht bestätigen.
Klar wäre eine Can Lösung oder auch Ethernet performanter und die Messages wären schöner zu verarbeiten.
Wie du schon sagst ein G-Code Sender Programm musst du in beiden Fällen selber schreiben
Warum bist du an C Sharp oder LabView gebunden ?
Bleibt dann nur eine RS232 wegen der größeren Entfernungen.
Einer serielle Sender Software funktioniert damit auch.
hi,
Bleibt dann nur eine RS232 wegen der größeren Entfernungen.
nein, dann bitte RS485. mit 232 ist er bei 20m und 19200 baud an der grenze. RS485 bekommt da noch lange keine probleme, da kann er locker mit 500.000 baud fahren.
und die nötige hardware kostet einen euro...
gruß stefan
hi,
ich hab' grad gesehen, daß Du auf einer seite einen pc hast.
also entweger einen mikrocontroller mit RS485-stein neben den pc und auf die usb-schnittstelle durchleiten oder eine RS485-karte in den pc, gibts um 25 euro...
gruß stefan
Also kurz zum:
rudirabbit:
Wie du schon sagst ein G-Code Sender Programm musst du in beiden Fällen selber schreiben
Warum bist du an C Sharp oder LabView gebunden ?
Ich bin an die beiden gebunden weil ich die Compiler für die beiden von der Schule zur verfügung gestellt kriege bzw das Visual Studio selbst habe. Und ich mir nicht die Arbeit antun mochte mich in C++ oder sonstwas einzulesen obwohl ich das eh noch vorhatte (Vorallem Java, MAC C, C++ und F#)
Wie es aussieht wird es dann wohl eine Serielle Verbindung... Naja egal dann könnt ich das ganze auch über ne XBEE Bridge machen.