ich bin neu hier im Forum, habe jedoch schon Erfahrung mit Arduino. Ich fang sofort mal damit an was ich vorhab:
Kleine CNC Fräse bauen
Mechanik ist soweit zusammen gebaut. Nun wollte ich mit der Elektronik weiter machen. Also Steuerung benutzte ich ein Uno zusammen mit einem CNC Shield v.3.00 (eBay Link), Treiber jeweils ein A4988 und für die Motoren NEMA17.
Ich habe damit angefangen die Grbl v0.9i auf den Uno zuflashen. Dann den X Motor mit Treiber angeschlossen. Nun zum Problem: Der Motor will sich nicht bewegen. Habe dem Uno die Befehle über Universal Gcode Sender geschickt, blinken tut er und es kommt auch ein "ok" zurück, aber keine Bewegung der Achse. Treiber Poti ist bereits eingestellt. Motor Kabelpaare waren schon beim Kauf der Motoren zusammen in einem Stecker (habe ich auch überprüft).
Hier mal eine Liste was ich schon alles probiert habe, um möglichst viel auszuschließen, aber nun weiß ich nicht mehr weiter:
Funktionierenden Treiber von 3D Drucker ausprobiert
Nema17 an 3D Drucker angeschlossen (darüber funktioniert er)
PC Netzteil verwendet (12V, vorher ein altes regelbares Netzteil mit 12-24V)
Grbl 0.8 ausprobiert (die Grbl Meldung erscheint im Sender, Einstellung sind auch aufrufbar)
Microstepping Jumper durch probiert
Andere Achsen getestet (Y, Z)
Andere Treiber getestet (von den 3x A4988 die ich gekauft hatte)
Anderen USB Port
Universal Gcode Sender unter Windows 7 aber auch unter Mac OSX getestet (Verbinden tut er)
Also ich weiß hier echt nicht mehr weiter und brauche Hilfe von euch!
Der Treiber ist auf 600mV eingestellt. Habe mal eine Schaltung auf dem Breadboard aufgebaut. Der Motor macht jetzt schonmal Geräusche dreht sich aber immer noch nicht. Ich verwende ein 12V 4A Netzteil für den Motor.
Welchen Motor (Nennspannung, Nennstrom) hast Du denn? NEMA17 sagt da nichts aus. Aber 1,5A sollten den unbelasteten Motor sausen lassen, daran sollte es eigentlich nicht liegen.
a) Hast du den Motor mal ohne shield (siehe @agmue's post) betrieben und dann den Treiberstrom korrekt eingestellt - und hat der Motor dann ordentlich gedreht?
12V für einen 2A-Motor ist relativ wenig; 20-24V wären wesentlich besser, vor allem, wenn der Motor im Betrieb eine hohe Gegenspannung erzeugt (durch seine Induktivität); da kann dann ein 12V-Netzteil "ohm-mäßig" nicht mehr genug an Strom nachliefern, weil der Gesamtwiderstand zu groß wird.
b) grbl-shield: habe aber irgendwo gelesen, dass es bei den Versionen von grbl Änderungen bzgl. Pinbelegung gegeben hat bzw. auch bei der Taktfrequenz (ab >v0.9a: 115.200 anstelle 9.600 Baud) und: man muss im seriellen Monitor CR+LF auswählen, nicht nur LF, wenn ich das richtig verstanden habe.
dein eBay-link enthält auch einen Arduino-Sketch zum direkten Ansteuern des shields (also ohne grbl);
vielleicht hast du einen 2. Arduino, mit dem du dann den sketch mal direkt (mit dem angeschlossenen shield), aber ohne, dass grbl auf den Arduino geladen wurde, ausprobieren.
Mit diesem sketch hast du dann die Möglichkeit, die x,y,z Achsen direkt zu steuern.
a) Ja, hatte den A4988 einzeln auf dem Breadboard. Der Uno hat ein Sketch geladen der den Motor erst in die eine Richtung drehen sollte dann in die andere. Treiber war auf 0.6V eingestellt. Hat Geräusche und wirklich mini Sprünge gemacht.
b) CR+LF war eingestellt
Ja ENABLE von A4988 ist auf EN beim CNC Shield, bei der Breadboard Schaltung habe ich auch drauf geachtet.
Habe den Code einmal abgetippt und ausprobiert. Nichts.
Zudem kann ich auch keine Treiberspannung einstellen. Wenn ich den Treiber bei meinen 3D Drucker reinstecke kann ich die Spannung messen und einstellen aber am Shield oder auf dem Breadboard tut sich nichts. Der 2A Motor + Treiber funktionieren über den 3D Drucker problemlos. Das Netzteil des Druckers hat 15V und 6.67A 100W kann es einfach daran liegen das mein Netzteil für das CNC Shield nicht stark genug ist?
ich bin gerade auch an einem kleinen CNC-Lasergravierer dran.
Werde mal versuchen, exakt die gleiche Konfiguration (mit grbl_9i) nachzustellen, da ich das gleiche shield habe.
Da ich ein Labornetzgerät anschließen kann, ist es auch einfach, mal mit der Spannung herumzuspielen.
Werde mich melden, sobald ich mehr Erkenntnisse habe.
habe jetzt mein Motorshield (ist exakt das gleiche, was du auch hast) getestet.
Ich habe grbl_v9i auf den Uno R3 geladen, die microsteps alle auf 1/4 gestellt (mittlere Pins gebrückt) und dann mit 12V und 20..24V Test-GCodes gefahren.
Hat einwandfrei funktioniert. Anstelle des Universal-GCode-Senders habe ich allerdings "grbl ChiliPeppr" verwendet. War ein bisschen tricky, das Ding zu überreden, mit dem Arduino-ComPort in Verbindung zu treten, dann aber finde ich diesen Browser-Controller sehr gut, weil viele CNC-features enthalten sind.
Das Erhöhen der Spannung (ich habe 3 NEMA17-Motoren angeschlossen, welche 1,8A max. Strom ziehen) bringt einen etwas ruhigeren Lauf und der Stromverbrauch geht auch runter. Die Stromeinstellung habe ich so niedrig wie möglich eingestellt, damit die Treiber-Chips cool bleiben, was sie auch taten, da im Leerlauf-Test (keine Last an den Motoren) nur max. 0,42A gezogen wurden. Im Stillstand geht der Stromverbrauch sogar auf Null zurück; anscheinend steuert grbl den Enable-Pin an und schaltet den Motorstrom ab.
Somit funktioniert mein shield einwandfrei. Ich würde daher zunächst einmal die Treiber einzeln ohne shield testen; am besten mit der accelstepper library, die einfach zu konfigurieren ist. Wenn das schon nicht klappt, dann hat entweder dein Arduino oder der Treiber einen Schuss.
Danke für die Infos! Ich bin in zwischen auch ein bisschen weiter gekommen. Den einzelnen Treiber auf dem Breadboard habe ich mit einem selbst gelöteten Arduino Board getestet und siehe da der Motor bewegt sich so wie er soll. Dann habe ich den Atmega auf das Uno Board gepackt und getestet. Da passierte wieder nichts, bis ich dem Uno Strom über den externen Stromanschluss gegeben hab, da hat es funktioniert! Aber über USB keine Chance (mein eigenes Board läuft auch über externen Strom). Stecke ich jedoch das Shield wieder auf läuft nichts. Die Pins in dem Beispiel Sketch habe ich auf die Pin des Shields geändert
Edit:
Ohne das Shield, an den gleichen Pin nur mit Treiber funktionert ist. Entweder ist das Shield kaputt oder ertwas fehlt noch am Shield.
Dann ist wohl irgendwas mit der Stromversorgung über USB defekt, wenn es nicht am shield liegt.
Verstehe ich dich richtig: wenn das shield aufgesteckt ist, läuft es nicht, egal, ob mit oder ohne externem Stromanschluss?
Wenn es nur mit externem Stromanschluss läuft: liefert evtl. dein USB-Anschluss zu wenig Strom an Arduino plus shield? Wenn du einen aktiven USB-Hub hast, würde ich das dann mit diesem testen. Ist sowieso zum Schutz der USB-Anschlüsse an PC oder Laptop immer ratsam, einen Hub zu nutzen, das ist im Falle des Falles billiger als den PC/Laptop zu zerschießen.
Hast du mal ein v0.9er GRBL versucht? Ist aber eher unwahrscheinlich, dass es daran liegen sollte; m.E. kommen nur noch Hardware-Themen in Frage:
USB-Stromversorgung?
Verkabelung des shields mit Arduino (alle Pins prüfen, ggf. ist irgendwo einer verbogen oder sonst wo wird ein Kurzschluss o.ä. erzeugt)
shield selbst (wobei das shield ja selbst keine aktiven Bauteile enthält)
Arduino Board ?
Hast du evtl. Zugriff auf ein Oszilloskop? Damit kannst du die einzelnen Pins des Arduino im Betrieb prüfen, ob dir/step ausgegeben wird und bei den 4988er Treibern ankommen.
Mehr fällt mir aus der Ferne jetzt nicht mehr ein, was du noch testen könntest.
Ja mit aufgesteckten Shield passiert nichts. An ein Oszilloskop komme ich leider nicht dran, aber ich hab mal ein paar Messungen mit dem Multimeter gemacht. Auf dem Shield habe ich am 3.3V Pin auch 3.3V aber alle 5V Pins sind tot. Der Treiber bekommt auf VMOT seine 12V und auf Step und Dir kann ich den Rhythmus erkennen (eine Umdrehung nach links dann zurück nach rechts). Aber der VDD Pin hat keine 5V. Habe dann einfach mal ein Jumper Kabel von den 5V des Uno an den VDD angelegt (nicht die beste Art ich weiß) und siehe da der Motor dreht so wie aufm Breadboard! Der Uno lief über USB aber auch über externen Strom.
stammen die 3,3V auf dem shield vom Arduino, der via USB verbunden ist oder via externem Steckernetzteil?
wenn du direkt am Arduino +5V misst - was kommt dann?
Am shield liegt es bestimmt nicht, außer die +5V-Verbindung zum Arduino ist unterbrochen.
Denn der Arduino liefert dem shield die +5V (die wiederum dann an die 4988 Bausteine einfach verteilt wird). Auf dem shield sind ja nur die Fassungen für die Motortreiber, der Reset-Knopf und die diversen Steck-Pins.
Hab jetzt ein Kabel von dem 5V Arduino Pin an einen der 5V Pins des Shields gelötet, jetzt funktioniert es solange ich externen Strom dranhabe. Auch Grbl läuft wenn ich zusätzlich das USB Kabel anschließe. Meine Vermutung ist das Shield eine kaputte Bahn direkt nach der Stiftleiste hat. Von Uno hoch zum Shield ist alles Ok aber danach verteilt sich die 5V nicht.
.. dann kannst da aber auf dieser Basis weiterbauen, oder?
Einziger Wermutstropfen: du brauchst für den Ardu mit shield eine externe Stromversorgung.
Wenn du aber mit der 12V Versorgung für die Motoren zurecht kommst, dann kannst du auch diese 12V für die externe Versorgung des Arduinos und des shields nutzen; es gibt hier einige Diskussionsbeiträge, die im Grunde aussagen, dass mit dem parallelen Anschluss von USB und externer Stromversorgung kein Schaden eintritt.
Aber:
nicht mehr als 12V, sonst stirbt der Festspannungsregler auf Dauer den Hitzetod und
am besten deinen Laptop/PC mit einem USB-Hub entkoppeln