Für eine CNC Fräse baue ich mir meine eigene Leiterplatte und habe ein paar Fragen zum Schaltplan bzw. praktischen Ausführung.
Ich benutze einen STM32 und die externen Motortreiber verwenden alle 5V. Da die meisten GPIOs vom STM32 5V tolerant sind, würde ich die mit einem Pullup als Opendrain konfigurieren. Den Pullup setze ich direkt an den Mikrocontroller (oder an die Buchse) und die Steuerleitungen gehen von dort zu einer Schraubbuchse o.ä.
Da ja ein paar Zentimeter zurückgelegt werden frage ich mich, ob das so ok ist? Sollte ich hier abgeschirmte Kabel verwenden? Muss ich noch etwas machen, außer den GPIO + Pullup direkt an die Buchse zu verlegen?
Ebenso sollen die 6 Endschalter einfach von den GPIOs direkt an eine Schraubbuchse laufen. Jeder Endschalter schaltet gegen Masse und hat daher auf jeden Fall ein geschrimtes Kabel.
Als Motortreiber verwende ich entweder externe oder auf der Leiterplatte auflötbare A4988 Module.
Die 5V Pullups habe ich im Schaltplan noch nicht integriert.
am besten direkt als *.pdf.
Denn nach Vergrößerung und abgespeichert als *.png wird's auch nicht
schärfer.
Siehe Bild
Ob du den Matsch als JPG oder PNG abspeicherst, macht die Sache nicht besser.
Der muss gleich als PNG erzeugt werden.
Wozu willst du das noch ins PDF verpacken?
Kleiner Tipp aus Erfahrung..hab auch meine eigene CNC Fräsen-Steuerung gebaut. Nimm lieber einen Schrittmotortreiber von Trinamics, die sind deutlich leiser und bieten andere Vorteile, wie Stromreduzierung im Stillstand etc...
Ich verwende z.B. den TMC2209, der hat bis 2A Motorstrom und kann von 5.5 bis 28V betrieben werden. Falls du einen Referenzschaltplan brauchst, melde dich
wirklich notwendig wirds nicht sein, aber ich hätte für alles an Signalen was die Platine verlässt wenigstens einen Serienwiderstand und Klemmdioden eingefügt. Also hier bei den Endschaltern, Motortreiber abhängig davon wie weit weg und wie die wirklich angeschlossen sind.
Für eine CNC Fräse baue ich mir meine eigene Leiterplatte und habe ein
paar Fragen zum Schaltplan bzw. praktischen Ausführung.
Wie hast du den Prototypen realisiert? Läuft dieser ohne Probleme?
Da ja ein paar Zentimeter zurückgelegt werden frage ich mich, ob das so
ok ist? Sollte ich hier abgeschirmte Kabel verwenden? Muss ich noch
etwas machen, außer den GPIO + Pullup direkt an die Buchse zu verlegen?
Hattest du an diesem Punkt Probleme beim Prototypen? Wieso erwartest du solche dann an der "eigenen Leiterplatte"?
Ebenso sollen die 6 Endschalter einfach von den GPIOs direkt an eine
Schraubbuchse laufen. Jeder Endschalter schaltet gegen Masse und hat
daher auf jeden Fall ein geschrimtes Kabel.
Aus meiner eigenen Erfahrung mit meiner CNC Fräse (und Arduino) ohne geschirmte Kabel: Plan ein paar Entstörkondensatoren (100nF) auf der Platine für die Endschalter ein. Ich hatte die erst nicht und dachte die internen Pullups reichen - das gab immer wieder Fehlauslöser, sobald die Fräse lief. Dann hab ich den zweiten Schaltkontakt (Wechsler) mit Vcc verbunden, so dass da ein kräftiges High anlag. Brachte garnichts. Erst mit 100nF in der Leitung gegen Masse kurz vor dem Controller gehts jetzt zuverlässig.
Ansonsten streng genommen eine Gemeinheit bei der 5V Toleranz: Die 5V toleranten GPIOs dürfen maximal +4V gegenüber Vcc haben. Wenn jetzt der 3.3V Spannungsregler ein paar µs braucht bis er 1V überschreitet aber 5V sofort anliegen, hast du bis dahin streng genommen die absolute Maximum Ratings überschritten, wenn du da extern einen Pullup oder vergleichbares gegen +5V hast.
Ich verwende z.B. den TMC2209, der hat bis 2A Motorstrom und kann von
5.5 bis 28V betrieben werden. Falls du einen Referenzschaltplan
brauchst, melde dich
Habe mich mal eingelesen, und den Schaltplan dahingehend geändert. Ich werde 4 Treiber auf der Leiterplatte vorsehen. Hiervon können zwei nicht bestückt und über die Leiste externe Treiber angeschlossen werden. Ein 5. kann nur extern angeschlossen werden.
Aus meiner eigenen Erfahrung mit meiner CNC Fräse (und Arduino) ohne
geschirmte Kabel: Plan ein paar Entstörkondensatoren (100nF) auf der
Platine für die Endschalter ein.
Hast Du schon mal die Bewegung mit Last getestet?
Die Schrittmotoren verlieren schnell mal einen Schritt ohne eine Lagekontrolle wird der Fehler nicht erkannt oder Du mußt viel Reserve einplanen. Bei 3D-Druck sind nur bekannt Kräfte auf den Motoren, aber bei einer Fräse . . .
Hast Du schon mal die Bewegung mit Last getestet?
Die Schrittmotoren verlieren schnell mal einen Schritt ohne eine
Lagekontrolle wird der Fehler nicht erkannt oder Du mußt viel Reserve
einplanen. Bei 3D-Druck sind nur bekannt Kräfte auf den Motoren, aber
bei einer Fräse . . .
Sehr viele nutzen A4988 und Nema17 für eine CNC Fräse. Ich werde das jetzt mit Nema23/Nema17 und eben dem TMC2209 und DM556 aufbauen. Warum sollte das nicht funktionieren?
Weil sich Schrittfehler mit der Zeit nun mal akkumulieren (ansammeln).
Nema17 wird wohl bei Holz noch gerade so funktionieren. Aber selbst in Alu sind die notwendigen Bewegungskräfte von Nema23 nicht immer ausreichend.
Das Problem liegt in der Bewegung. Schrittmotoren verlieren mit zunehmender Geschwindigkeit an Kraft. Will man jetzt zügig fräsen (was ja mit heutigen HS Spindeln tatsächlich möglich ist) hat man auch relativ hohe Drehgeschwindigkeiten der Stepper. Und da können sie eben nicht mehr so viel Kraft aufbringen.
Und wenn man hin und wieder einen Schritt verliert, sieht man das nicht gleich. Man sieht vielleicht erst nach einmaligen umrunden der Kontur das sich eine winzige Stufe gebildet hat.
Schrittverluste lassen sich aber grundsätzlich durch die Verwendung von Closed Loop Motoren vermeiden. Und bei einer CNC mit der man Alu (oder gar ein wenig Stahl) fräsen möchte, ist das eigentlich schon Pflicht. Dann reichen auch Nema23.
Mal was anderes gefragt, weil ich auch mal grob darüber nach gedacht habe, die Steuerung selber zu machen: was möchtest du an Software nutzen? Also auf dem Controller und auch auf dem PC?
Haben sich damit die Fragen zu Open Collector und Pullup aus dem
Eingangsbeitrag erledigt?
Ich habe noch einen älteres Thema dazu hier gefunden. 100nF an den GPIO gegen Masse und einen Pullup nach 3.3V bei den Endschaltern.
Bei den open Collectoren habe ich wenig Angst, dass die durch Einschaltzeit Verzögerung kaputt gehen. Jedoch war der einzige Hinweis, dass ich einen Reihenwiderstand einfügen soll. Vermutlich wegen Reflexionen auf der Leitung, aber bei den niedrigen Frequenzen?
Ich sehe keinerlei EMV-Maßnahmen und keinerlei ESD-Schutz!
Externe Endschalter ohne ESD-Schutzdioden, ohne jeglichen Serienwiderstand, komplett ohne Filterung, ohne extra Pullup-Widerstände, nur mit den internen μC-Pullups - sowas fliegt dir in der Praxis ganz schnell mit Fehlfunktionen bis zu defekten μC-Pins um die Ohren...
Die Ströme in so einer Motorsteuerung erfordern ein äußerst sorgfältigrs Layout, um die Motorströme aus dem μC-Teil rauszuhalten.
Ich würde sowas nicht mehr als zweilagige Platine layouten, sondern mindestens 4 Lagen vorsehen um eine unzerschnittene Masselage zu haben.
gibt es einen sinnvollen Grund für J1? Würde ich aufteilen auf 5 kleine Debug Steckverbinder direkt an A1-A5, lässt sich besser routen. Sonst ziehst du dir die Steuersignale sinnlos quer über die PCB und machst sie anfälliger
VBAT am STM an 3V3 + zusätzlicher 100nF
D1 nicht angebunden
keine ESD Schutz Maßnahmen an Ein und Ausgängen
kein Filter/Puffer für die 48V Versorgungsspannungen
woher kommen die 5V am AZ1117?
C25 darf auch 22uF sein, den hast du eh schon drauf am AZ1117
Vorschläge:
MS von U1-U5 als Lötjumper, stellst du nur einmal ein und spart dir Platz für besseres Layout bei kritischeren Komponenten
Reset nicht hart belegen, evetuell sogar an den uC führen um Komponeten gezielt resetten zu können
willst du wirklich keinen Quarz anschließen? Reicht dir die Genauigkeit vom interen OSC? Ich würde ihn zumindest vorsehen auf der PCB
Die 5V und D1 sind noch nicht geklärt. Da muss irgend ein Stepdown hin, welcher habe ich mich noch nicht entschieden. Daher fliegt das auch noch in der Luft.
gibt es einen sinnvollen Grund für J1? Würde ich aufteilen auf 5
kleine Debug Steckverbinder direkt an A1-A5, lässt sich besser routen.
Sonst ziehst du dir die Steuersignale sinnlos quer über die PCB und
machst sie anfälliger
Für die Endschalter plane ich jetzt 100nF nach GND, 2k7 nach +3V3 und eine ESD Diode. Einen Serienwiderstand plane ich nicht, da hier eigentlich keine schnellen Signale drauf liegen, sondern nur ein/aus.
Bei den Steuerleitungen zu den externen Motortreibern werde ich hingegen noch einen Serienwiderstand spendieren.
Nema17 wird wohl bei Holz noch gerade so funktionieren. Aber selbst in
Alu sind die notwendigen Bewegungskräfte von Nema23 nicht immer
ausreichend.
Hmm ich hab mal bei meiner umgebauten Proxxon MF70 mit Nema17 Motoren nachgeschaut. Um Schrittverluste auszuschließen musste ich auf 200mm/min in x und y und 160mm/min in z Richtung runter. Damit kann sich der Fragesteller hoffentlich entscheiden ob ihm die Größenordnung reicht. Gefräst hab ich bisher Holz und Alu. Ist zugegeben schon recht langsam.
Weil sich Schrittfehler mit der Zeit nun mal akkumulieren (ansammeln).
Nema17 wird wohl bei Holz noch gerade so funktionieren. Aber selbst in
Alu sind die notwendigen Bewegungskräfte von Nema23 nicht immer
ausreichend.
Das Problem liegt in der Bewegung. Schrittmotoren verlieren mit
zunehmender Geschwindigkeit an Kraft. Will man jetzt zügig fräsen (was
ja mit heutigen HS Spindeln tatsächlich möglich ist) hat man auch
relativ hohe Drehgeschwindigkeiten der Stepper. Und da können sie eben
nicht mehr so viel Kraft aufbringen.
Und wenn man hin und wieder einen Schritt verliert, sieht man das nicht
gleich. Man sieht vielleicht erst nach einmaligen umrunden der Kontur
das sich eine winzige Stufe gebildet hat.
Gerade bei höheren Drehzahlen "verliert" ein Schrittmotor keinen Schritt. Wenn er überlastet wird, fällt er ganz aus dem Tritt und bleibt stehen. Einzelne Schrittfehler entstehen meist durch falsches Timing oder EMV-Probleme beim Anfahren/Stoppen oder bei niedrigen Drehzahlen.