Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Download    Reaktionen    Spiele    Gadgets    Kontakt   




<<< Xylophon         Demonstration Servomotor >>>

Grundlagen zu CNC-Maschinen

Das Video zu Grundlagen von CNC-Maschinen


Auch ihr teilt meine Begeisterung für günstige CNC-Maschinen und denkt daran, eine zu kaufen?
Dann werft mal einen Blick auf die Seiten von Vevor, einem Onlinehändler für Werkzeuge.

CNC 3018, Angebot 1.
CNC 3018, Angebot 2.
CNC 3018, Angebot 3.

oder auf Amazon:
CNC auf Amazon, Angebot 1
CNC auf Amazon, Angebot 2

Durch den Kauf über die angegebenen Links unterstützt ihr HomoFaciens, ohne dass euch dadurch Zusatzkosten entstehen - Danke!


Schwachstellen der Mechanik

Werkzeugaufnahme
Abbildung 1:
Die Frässpindel besteht aus einem simplen Gleichstrommotor, an dessen Ausgangswelle ein Adapter zur Werkzeugaufnahme angebracht ist. Der Hebel von der Werkzeugspitze zum unteren Motorlager ist für Frässpindeln gigantisch, was unweigerlich zu schlechten Rundlauf führt.

Stahlbuchsen
Abbildung 2:
Die Bewegung der Achsen erfolgt längs von Rundstahl. Bei der günstigsten meiner CNC-Maschinen, der "T8" übernehmen Stahlbuchsen die Führung. Diese umschließen den Rundstahl leicht klemmend, womit kein merkliches Spiel vorhanden ist. Der Nachteil ist, dass die Reibung recht hoch ausfällt.

Linearkugellager
Abbildung 3:
Anstelle der Stahlbuchsen werden bei den teureren Exemplaren Linearkugellager zur Führung längs der Rundstäbe verwendet. Klingt besser, ist es aber nicht wirklich, da preisgünstige Maschinen auch preisgünstige Kugellager verwenden, die leichtes Spiel quer zur Bewegungsrichtung aufweisen.

Rahmen CNC Maschine
Abbildung 4:
Die Mechanik einer CNC ist niemals ideal steif und verbiegt sich daher unter Last. Die sehr ungünstigen, weil unnötig langen, Hebelverhältnisse der Mechanik verstärken die unerwünschten Effekte durch Spiel und Verbiegen.

Leitspindel, festes Ende
Abbildung 5:
Die zum Antrieb verwendeten Spindeln besitzen ein festes und ein loses Ende. Das feste Ende muss natürlich drehbar, dabei aber auch möglichst spielfrei am Rahmen der Mechanik befestigt sein. Die verwendeten Kugellager haben merkliches Spiel und die Aufnahme der Spindel ist nicht perfekt zentrisch.

Leitspindel, loses Ende
Abbildung 6:
Die mangelnde Präzision der Spindelbefestigung am festen Ende wird am losen Ende, an dem sich der Antriebsmotor befindet, mit einer flexiblen Kupplung ausgeglichen. Diese Kupplung erlaubt ein Ausweichen der Spindel sowohl quer, als auch längs der Spindelachse. Sehr steif ist diese allerdings beim Übertragen von Drehbewegung.

Führungsmutter mit Vorspannung per Spiralfeder
Abbildung 7:
Die Antriebsspindeln arbeiten mit Messinghülsen als Führungsmuttern. Diese weisen merkliches Spiel auf. Um dieses zu kompensieren, wird bei den beiden anderen CNC-Maschinen über eine Schraubenfeder und eine zweite Messingmutter eine gewisse Vorspannung auf die Führungsmutter gegeben. Somit wird die entsprechende Achse mit einer definierten Kraft gegen die Windungen der Trapezspindel gedrückt.
Dieses Konzept der Vorspannung ist im Bereich von CNC-Maschinen weit verbreitet, funktioniert allerdings nur, so lange die Kräfte während des Betriebs der Mechanik unterhalb der durch die Vorspannung gegebenen Kraft bleiben. Ferner gilt: Je höher die Vorspannung, um so höher die dadurch verursachte, unerwünschte Reibung.
Bei den hier zu sehenden CNC-Maschinen ist die Vorspannung eher gering, so dass die Seitenkräfte beim Fräsen auch nicht sehr groß ausfallen dürfen.

Was die Maschinen können

Haolz fräsen mit einer günstigen CNC-Maschine
Abbildung 8:
Metalle fräsen zu können, darf man mit diesen CNC-Maschinen nicht erwarten, aber Kunststoff gravieren oder Holz fräsen gelingt mit einer Präzision, die sich durchaus sehen lassen kann.
Bei dem hier gezeigten Fräsen von Holz wird das Werkstück zeilenweise und immer nur von links nach rechts gefräst. Somit ist die Kraftrichtung auf den Fräser und die Mechanik stets gleich, womit das Spiel in der Anlenkung keinen merklichen Einfluss auf die Qualität des Ergebnisses hat.
Man kann sehr viel über den softwaretechnischen Weg von der digitalen Vorlage hin zum fertigen Werkstück lehren und lernen, denn dieser Weg ist alles andere als "Klick und fertig!"

Elektronik

Arduino UNO Klon mit CNC-Shield
Abbildung 9:
Am Hackerfreundlichsten ist diesbezüglich die T8, denn die Hauptplatine besteht aus einem Arduino UNO-Klon und einem darauf aufgesteckten CNC-Schield mit entsprechenden Motorsteuerungen. Die Schrittmotorsteuerungen sind auf dem Schield aufgesteckt und können bei Bedarf ausgetauscht werden - besser geht's nicht.
Ferner sind alle Pins des ATmega über das aufgesteckte Shield leicht zu erreichen - womit auch Hacks in Sachen Elektronik extrem einfach durchzuführen sind.
Die Firmware kann über die Arduino IDE nach belieben angepasst werden.

Hauptplatine 3018 Robo
Abbildung 10:
Die Kombination "Arduino Klon + CNC-Shield" ist mittlerweile bei den auf dem Markt erhältlichen Maschinen durch komplett verlötete Hauptplatinen ersetzt worden. Dennoch handelt es sich meist um die gleichen Komponenten.

Haptplatine 3018Pro
Abbildung 11:
Wer mit einer CNC das Programmieren erlernen oder einfach nur etwas mehr aus der Firmware heraushohlen möchte, sollte darauf achten, dass die Maschine mit grbl als Firmware beworben wird.


ATmega328P Mikroprozessor
Abbildung 12:
Auf der Hauptplatine sollte sich ein ATmega328 Mikrocontroller befinden.


CH34xx Chip für USB-Kommunikation
Abbildung 13:
Ferner sollte auf der Platine ein Chip, der mit der Bezeichnung CH34 beginnt, zu finden sein. Dieser ist für die USB-Schnittstelle nötig.

Firmware "hacken"

Durch Manipulation der Firmware könnt ihr eure CNC unter Umständen unbrauchbar machen!!! Die hier beschriebenen Änderungen unternehmt ihr auf eigene Gefahr!!! Ich kann keinen Erfolg garantieren!!!

Die auf dieser Seite beschriebene Vorgehensweise bezieht sich auf das Betriebssystem Linux. Wer ein anderes System verwendet, muss eventuell auftretende Problemen selber lösen. Ich verwende nichts anderes!
Linux ist in Sachen Maschinensteuerung und Robotik das meistverwendete Betriebssystem. Wer in die Welt des "Physical Computing" einsteigen möchte, kommt nicht darum herum und sollte (sofern nicht schon lämgst geschehen) dieses Betriebssystem auf der Festplatte installieren. Getestet habe ich die hier zu lesende Anleitung mit Linux Mint, das für Einsteiger in Sachen Linux sehr zu empfehlen ist.

Das Modifizieren der Firmware beginnt mit dem Anlegen einer Sicherungskopie!

Dazu wird die CNC mit der USB-Schnittstelle verbunden. Anschließend wird über den Befehl

lsusb


angezeigt, ob die CNC-Maschine ordnungsgemäß erkannt wurde und ob ein USB-Chip Typ ch34.. verbaut ist. Die Ausgabe sollte in etwa so aussehen:

Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 2232:1005 Silicon Motion WebCam SCB-0385N
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub



Entscheidend ist die vorletzte Zeile, welche einen HL-340 USB adapter anzeigt.
Nun gilt es, herauszufinden, wie die Linux-interne Bezeichnung der USB-Schnittstelle der CNC-Maschine lautet. Das funkioniert mit dem Befehl:

ls /dev/tty*



Die Ausgabe auf meinem Laptop ergibt ohne angeschlossene CNC-Maschine:

/dev/tty /dev/tty13 /dev/tty19 /dev/tty24 /dev/tty3 /dev/tty35 /dev/tty40 /dev/tty46 /dev/tty51 /dev/tty57 /dev/tty62 /dev/ttyS0 /dev/ttyS14 /dev/ttyS2 /dev/ttyS25 /dev/ttyS30 /dev/ttyS8 /dev/tty0 /dev/tty14 /dev/tty2 /dev/tty25 /dev/tty30 /dev/tty36 /dev/tty41 /dev/tty47 /dev/tty52 /dev/tty58 /dev/tty63 /dev/ttyS1 /dev/ttyS15 /dev/ttyS20 /dev/ttyS26 /dev/ttyS31 /dev/ttyS9 /dev/tty1 /dev/tty15 /dev/tty20 /dev/tty26 /dev/tty31 /dev/tty37 /dev/tty42 /dev/tty48 /dev/tty53 /dev/tty59 /dev/tty7 /dev/ttyS10 /dev/ttyS16 /dev/ttyS21 /dev/ttyS27 /dev/ttyS4 /dev/tty10 /dev/tty16 /dev/tty21 /dev/tty27 /dev/tty32 /dev/tty38 /dev/tty43 /dev/tty49 /dev/tty54 /dev/tty6 /dev/tty8 /dev/ttyS11 /dev/ttyS17 /dev/ttyS22 /dev/ttyS28 /dev/ttyS5 /dev/tty11 /dev/tty17 /dev/tty22 /dev/tty28 /dev/tty33 /dev/tty39 /dev/tty44 /dev/tty5 /dev/tty55 /dev/tty60 /dev/tty9 /dev/ttyS12 /dev/ttyS18 /dev/ttyS23 /dev/ttyS29 /dev/ttyS6 /dev/tty12 /dev/tty18 /dev/tty23 /dev/tty29 /dev/tty34 /dev/tty4 /dev/tty45 /dev/tty50 /dev/tty56 /dev/tty61 /dev/ttyprintk /dev/ttyS13 /dev/ttyS19 /dev/ttyS24 /dev/ttyS3 /dev/ttyS7



Wird nun die CNC-Maschine an die USB-Schnittstelle angeschlossen, so ergibt der Befehl:

/dev/tty /dev/tty13 /dev/tty19 /dev/tty24 /dev/tty3 /dev/tty35 /dev/tty40 /dev/tty46 /dev/tty51 /dev/tty57 /dev/tty62 /dev/ttyS0 /dev/ttyS14 /dev/ttyS2 /dev/ttyS25 /dev/ttyS30 /dev/ttyS8 /dev/tty0 /dev/tty14 /dev/tty2 /dev/tty25 /dev/tty30 /dev/tty36 /dev/tty41 /dev/tty47 /dev/tty52 /dev/tty58 /dev/tty63 /dev/ttyS1 /dev/ttyS15 /dev/ttyS20 /dev/ttyS26 /dev/ttyS31 /dev/ttyS9 /dev/tty1 /dev/tty15 /dev/tty20 /dev/tty26 /dev/tty31 /dev/tty37 /dev/tty42 /dev/tty48 /dev/tty53 /dev/tty59 /dev/tty7 /dev/ttyS10 /dev/ttyS16 /dev/ttyS21 /dev/ttyS27 /dev/ttyS4 /dev/ttyUSB0 /dev/tty10 /dev/tty16 /dev/tty21 /dev/tty27 /dev/tty32 /dev/tty38 /dev/tty43 /dev/tty49 /dev/tty54 /dev/tty6 /dev/tty8 /dev/ttyS11 /dev/ttyS17 /dev/ttyS22 /dev/ttyS28 /dev/ttyS5 /dev/tty11 /dev/tty17 /dev/tty22 /dev/tty28 /dev/tty33 /dev/tty39 /dev/tty44 /dev/tty5 /dev/tty55 /dev/tty60 /dev/tty9 /dev/ttyS12 /dev/ttyS18 /dev/ttyS23 /dev/ttyS29 /dev/ttyS6 /dev/tty12 /dev/tty18 /dev/tty23 /dev/tty29 /dev/tty34 /dev/tty4 /dev/tty45 /dev/tty50 /dev/tty56 /dev/tty61 /dev/ttyprintk /dev/ttyS13 /dev/ttyS19 /dev/ttyS24 /dev/ttyS3 /dev/ttyS7



Es ist ein zusätzliches Gerät erkannt worden mit der Bezeichnung /dev/ttyUSB0. Diese Bezeichnung für die USB-Schnittstelle muss beim Auslesen der Firmware angegeben werden. Dazu muss eventuell die Software "avrdude" installiert werden, was mit den beiden Befehlen:

sudo apt-get update
sudo apt-get install avrdude



gemacht wird. Jetzt können wir die Firmware auf die Festplatte kopieren, was mit den beiden Befehlen:

avrdude -u -c arduino -p m328p -P /dev/ttyUSB0 -b 115200 -U flash:r:"3018pro.hex":i
avrdude -u -c arduino -p m328p -P /dev/ttyUSB0 -b 115200 -U eeprom:r:"3018pro_eeprom.hex":i



geschieht. Lautet die Bezeichnung für die USB-Schnittstelle auf eurem Computer nicht "/dev/USB0", so müsst ihr den Parameter hinter -P entsprechend ändern (z.B. in "/dev/USB1" oder "/dev/ttyACM0"). In beiden Fällen sollte angezeigt werden, dass die Firmware erfolgreich ausgelesen wurde:

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading flash memory:

Reading | ################################################## | 100% 7.68s

avrdude: writing output file "test.hex"

avrdude done. Thank you.



Hat das Auslesen der Firmware nicht funktioniert, so erscheint die Ausgabe:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00



Das kann daran liegen, dass die Übertragungsrate der USB-Schnittstelle nicht stimmt. Bei meiner 3018Pro musste ich diese auf 57600 Baud ändern:

avrdude -u -c arduino -p m328p -P /dev/ttyUSB0 -b 57600 -U flash:r:"3018pro.hex":i
avrdude -u -c arduino -p m328p -P /dev/ttyUSB0 -b 57600 -U eeprom:r:"3018pro_eeprom.hex":i



Probiert einfach verschiedene Baudraten durch (z.B. 110, 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 38400, 57600, 115200, 128000 und 256000), bis das Auslesen funktioniert.

Auf jeden Fall müssen jetzt zwei neue Dateien auf eurer Festplatte mit Namen "3018pro.hex" und "3018pro_eeeprom.hex" zu finden sein und die Dateigröße muß mehrere Kilobytes betragen, ansonsten ist das Auslesen der Firmware fehlgeschlagen, und ich empfehle nicht, an der Firmware der CNC herumzufummeln!!!

Hat das Sichern der Firmware funktioniert, kann die Original-Firmware jederzeit wieder mit den Befehlen:

avrdude -u -c arduino -p m328p -P /dev/ttyUSB0 -b 115200 -U flash:w:"3018pro.hex":i
avrdude -u -c arduino -p m328p -P /dev/ttyUSB0 -b 115200 -U eeprom:w:"3018pro_eeprom.hex":i



Zur CNC zurückgespielt werden, womit diese wieder im Originalzustand ist.

Nach Anlegen der Sicherheitskopie könnt ihr die CNC über die Arduino IDE wie gewohnt programmieren.

Solltet ihr beim Anlegen der Sicherungskopie der Firmware eine andere Baudrate als 115200 verwendet haben, so muss die Arduino IDE ein wenig angepasst werden. Bei meiner 3018Pro waren das 57200 Baud. Dazu muss die Datei "boards.txt" der Arduino IDE angepasst werden. Diese Datei befindet sich unter Linux Mint in dem Verzeichnis:
./.arduino15/packages/arduino/hardware/avr/1.8.6/boards.txt

Die Bezeichnung des Pfades kann abweichen, solltet ihr nicht die gleiche Version der Arduino IDE installiert haben. Die Datei solltet ihr aber auf jeden Fall finden. Öffnet diese Datei mit einem Texteditor und fügt folgende Zeilen ein:


##############################################################

cnc3018.name=3018Pro

cnc3018.vid.0=0x2341
cnc3018.pid.0=0x0043
cnc3018.vid.1=0x2341
cnc3018.pid.1=0x0001
cnc3018.vid.2=0x2A03
cnc3018.pid.2=0x0043
cnc3018.vid.3=0x2341
cnc3018.pid.3=0x0243
cnc3018.vid.4=0x2341
cnc3018.pid.4=0x006A
cnc3018.upload_port.0.vid=0x2341
cnc3018.upload_port.0.pid=0x0043
cnc3018.upload_port.1.vid=0x2341
cnc3018.upload_port.1.pid=0x0001
cnc3018.upload_port.2.vid=0x2A03
cnc3018.upload_port.2.pid=0x0043
cnc3018.upload_port.3.vid=0x2341
cnc3018.upload_port.3.pid=0x0243
cnc3018.upload_port.4.vid=0x2341
cnc3018.upload_port.4.pid=0x006A
cnc3018.upload_port.5.board=uno

cnc3018.upload.tool=avrdude
cnc3018.upload.tool.default=avrdude
cnc3018.upload.tool.network=arduino_ota
cnc3018.upload.protocol=arduino
cnc3018.upload.maximum_size=32256
cnc3018.upload.maximum_data_size=2048
cnc3018.upload.speed=57600

cnc3018.bootloader.tool=avrdude
cnc3018.bootloader.tool.default=avrdude
cnc3018.bootloader.low_fuses=0xFF
cnc3018.bootloader.high_fuses=0xDE
cnc3018.bootloader.extended_fuses=0xFD
cnc3018.bootloader.unlock_bits=0x3F
cnc3018.bootloader.lock_bits=0x0F
cnc3018.bootloader.file=optiboot/optiboot_atmega328.hex

cnc3018.build.mcu=atmega328p
cnc3018.build.f_cpu=16000000L
cnc3018.build.board=AVR_UNO
cnc3018.build.core=arduino
cnc3018.build.variant=standard

##############################################################



Entscheidend ist die Zeile:
cnc3018.upload.speed=57600
in welcher die Baudrate eingetragen werden muss, die ihr beim erfolgreichen Sichern der Firmware verwendet habt.

CNC-Maschine per Arduino IDE programmieren
Abbildung 14:
Startet ihr nun die Arduino IDE, so könnt ihr unter Tools->Board->Arduino AVR-> den Eintrag "3018Pro" auswählen und so die CNC wie einen normalen Arduino UNO programmieren.




<<< Xylophon         Demonstration Servomotor >>>


Neuigkeiten    Das Projekt    Technik    RoboSpatium    Unterstützung    Stichwortverzeichnis    Archiv    Download    Reaktionen    Spiele    Verweise    Gadgets    Kontakt    Impressum   





Twitter YouTube Hackaday Patreon TPO