Arduino Uno; CNC-Shield V3; Dual endstops

New Home Forum Mostly Printed CNC – MPCNC Troubleshooting – MPCNC Arduino Uno; CNC-Shield V3; Dual endstops

This topic contains 20 replies, has 5 voices, and was last updated by  Jan Walter 1 month, 4 weeks ago.

Viewing 21 posts - 1 through 21 (of 21 total)
  • Author
    Posts
  • #100709

    Martin
    Participant

    Hallo Forum,

    ich habe die Suche bereits benutzt, konnte zu meinem Problem jedoch keinen passenden Thread finden. Ich werde meine Posts grundsätzlich in Deutsch verfassen, weil ich nicht über die nötige Terminologie in Englischer Sprache verfüge. Ich werde jedoch meine Posts mittels Google-Übersetzer in Englische Sprache übersetzen.

    Ich habe meine MPCNC mittlerweile vollständig aufgebaut und sie funktioniert soweit auch. Der Arbeitsbereich beträgt 600mm x 400mm x 120mm. Es wurden NEMA 17 Motoren mit 59ncm verbaut. Angesteuert wird die Fräse über einen Arduino UNO mit CNC-Shield V3 und DRV8825 Treibern. Als CAM-Programm verwende ich ESTLCAM.

     

    Beim Aufbau der Fräse habe ich besonders genau darauf geachtet, dass der Rahmen rechtwinklig ausgerichtet ist – Die Diagonale passt auf den Millimeter genau. Ohne die Rohre der Z-Achse ist das Kreuz der X/Y Achse ebenfalls genau rechtwinklig. Wenn ich jedoch die Z-Achse einführe wird der XYZ-Burly leicht aufgedrückt, sodass der rechte Winkel der X/Y Achsen verloren geht. Ich habe in weiterer Folge die Bohrungen vergrößert um den Druck vom XYZ-Burly zu nehmen. Dies führte zu verbesserungen, jedoch nicht zum endgültigen Erfolg. Ich möchte die Löcher aber nicht noch weiter aufbohren, um Ungenauigkeiten auf Grund von Lagerspiel zu vermeiden. Wenn ich mit der MPCNC ein Quadrat zeichne, habe ich aber immer noch eine leichte Ungenauigkeit beim messen der Diagonale. Wenn ich vor dem Einschalten der Stepper-Motoren die Achsen per Hand leicht stauche, sodass der Winkel passt, bleibt der Winkel logischerweise korrekt und die Fräse zeichnet das Quadrat exakt.

    Nun zu  meinen Fragen:

    Ist es Möglich, mit meinen Voraussetzungen (Arduino UNO, CNC-Shield V3, ESTLCAM) eine Ansteuerung mittels Dual-Endstops einzurichten? Gedacht wäre, dass z.B. der X1 Endstop beim aktivieren den X1 Motor anhält und der X2 Endstopp den X2 Motor erst anhält sobald dieser auf der selben Höhe ist. Ich bin mir nicht sicher, ob das mit meinem Board möglich ist, weil ich die Motoren X1 und X2 ja parallel geschalten und verlötet habe, da auf Grund von Steckplatzmangel nur ein Ausgang für beide Motoren zur Verfügung steht.

    Wenn obige Konfiguration nicht möglich ist, bitte ich um Ideen, wie mein Problem gelöst werden kann.

    Mit freundlichen Grüßen Martin

     

    Hello forum, I’ve already used the search, but could not find a suitable thread for my problem. I will basically write my posts in German because I do not have the necessary terminology in English. However, I will translate my posts into English using Google translators. I have now built up my MPCNC completely and it works so far as well. The working area is 600mm x 400mm x 120mm. NEMA 17 engines with 59ncm were installed. The router is controlled by an Arduino UNO with CNC-Shield V3 and DRV8825 drivers. As a CAM program I use ESTLCAM.   When setting up the milling machine, I paid particular attention to ensuring that the frame is aligned at right angles – the diagonal fits exactly to the millimeter. Without the tubes of the Z-axis, the cross of the X / Y axis is also exactly right-angled. However, when I introduce the Z axis, the XYZ burly is lightly pushed open so that the right angle of the X / Y axes is lost. I subsequently increased the holes to take the pressure off the XYZ Burly. This led to improvements, but not to definitive success. But I do not want to drill the holes any further to avoid inaccuracies due to bearing clearance. When I draw a square with the MPCNC, I still have a slight inaccuracy in measuring the diagonal. If, before turning on the stepper motors, I slightly bump the axles by hand so that the angle fits, the angle will logically remain correct and the mill will accurately draw the square.

    Now to my questions:

    Is it possible to use my requirements (Arduino UNO, CNC-Shield V3, ESTLCAM) to set up a control via dual-end-stops? It would be thought that for example the X1 Endstop stops when the X1 engine stops and the X2 Stop stops the X2 engine until it is at the same position. I am not sure if this is possible with my board, because I switched the motors X1 and X2 so in parallel and soldered, because due to lack of slots only one exit for both engines is available.

    If the above configuration is not possible, I ask for ideas on how to solve my problem.

     

    Best regards Martin

    #100710

    Ryan
    Keymaster

    Without the tubes of the Z-axis, the cross of the X / Y axis is also exactly right-angled. However, when I introduce the Z axis, the XYZ burly is lightly pushed open so that the right angle of the X / Y axes is lost. I subsequently increased the holes to take the pressure off the XYZ Burly.

    This is not correct, I would check the calibration of your printer (most common issue), make sure your rails are the correct diameter and make sure you are using the correct sized printed parts. Loosen up all tension bolts, and make no adjustments without the Z axis in place.

     

    Is it possible to use my requirements (Arduino UNO, CNC-Shield V3, ESTLCAM) to set up a control via dual-end-stops?

    No. You need a board with 5 drivers and firmware that supports it (rambo/marlin is what I recommend).

    1 user thanked author for this post.
    #100711

    Ryan
    Keymaster

    Before we made the dual endstop firmware we did just correct the machine before we engaged the steppers like you are currently doing.

    1 user thanked author for this post.
    #100713

    Martin
    Participant

    Thank you for your fast answer. All of the other parts fits perfect on the tubes. If i print a 100mm calibration cube the Deviation is about 0,1mm (to small), that should not be a big Problem. The tubes have exactly 25mm. However, i will print These parts new, and will post this here if it´s done.

     

    PS: thank you for your great Job here. This is the best and fastest Forum i´ve ever seen at all!

     

    Best regards Martin

    #100714

    Ryan
    Keymaster

    Check the diagonals. X Y and Z can all be fine and many have realized there printers are leaning and the diagonals are way off.

    If those are fine as well, then loosen everything up and break it in a bit, then try to adjust and set before every cut.

    1 user thanked author for this post.
    #100717

    Martin
    Participant

    i will do!

    #100781

    Dario
    Participant

    Was ein zufall, ich bin gerade in der gleichen Situation. Ich habe ein Update von meinem Arduino Uno CNC-Shield auf ein MKS Gen 1.4 mit 5 Stepper Treiber gemacht. Ich habe vorher sehr gerne Estlcam benutzt und sogar eine Tastplatte aus Aluminium verwendet. Estlcam hat mir super gefallen, ich hatte gedoch eine Ungenauigkeit und meine Rechtecke sind nicht parallel gewesen. Daraufhin habe ich Endschalter verbaut und die V1 Firmware geflashed.

    Ist es möglich, Estlcam weiterhin mit den Endschalter zu verwenden? Ich bin mit Repertier-Host nicht sehr zufrieden und würde lieber nur ein Programm nutzen. Wie machen andere User das, die ebenfalls dual Endschalter verwenden?

    What a coincidence, I’m in the same situation right now. I have made an update from my Arduino Uno CNC-Shield to MKS Gen 1.4 with 5 Stepper driver. I used Estlcam before and even used an aluminum touch plate. I really liked Estlcam, but I had an inaccuracy and my rectangles weren’t parallel. Then I installed endstops and flashed the V1 firmware. Is it still possible to use Estlcam with dual endstops? I am not very satisfied with Repertier-Host and would rather use only one program. How do other users who also use dual endstops do this?

    #100792

    Ryan
    Keymaster

    We all use estlcam to make our gcode, then repetier/the LCD/or V1Pi to control it. There is no real benefit to having an all in one program. Estlcam control does not include dual endstops on any board, Estlcam’s CAM does support Dual endstops and homing, touch plates, edge finding, if you use everything as I have set out in the instructions.

    #100796

    Dario
    Participant

    So is it also possible to use the touch plate with the Marlin firmware in Estlcam? After I flashed the Marlin firmware, I can’t control the mpcnc in Estlcam anymore (that’s clear, because it probably only works with the firmware provided by estlcam).
    But how else can I scan a workpiece with a touch plate? I mean not only for z, but also for the corners. Unfortunately I did not find a tutorial for it.
    Many thanks for the quick answer, really a great forum. The mpcnc is also very good.

    #100798

    Ryan
    Keymaster

    So is it also possible to use the touch plate with the Marlin firmware in Estlcam?

    Yes, and also edge finding as well.

    After I flashed the Marlin firmware, I can’t control the mpcnc in Estlcam anymore (that’s clear, because it probably only works with the firmware provided by estlcam).

    correct.

    But how else can I scan a workpiece with a touch plate? I mean not only for z, but also for the corners. Unfortunately I did not find a tutorial for it. Many thanks for the quick answer, really a great forum. The mpcnc is also very good.

    This is an advanced feature, I do not have instructions on using it. G38 if you want to look into it but I can’t offer help with it at this time. I always have room on my work piece so this is a waste of time for me and never use it. I home the Z only when I need to do a tool change. I must use my CNC for different types of things.

    #100799

    Dario
    Participant

    But how can I use the touch plate if I can’t control the mpcnc with Estlcam? Sorry if I’m a little confused 😀 I can’t connect the mpcnc with estlcam anymore.

    #100802

    Ryan
    Keymaster

    Have a look at the milling basics page.

    #100828

    Jan Walter
    Participant

    Ich steige jetzt vom rambo aufs Uno um nur noch Estlcam zu nutzen. Um das Mittelteil rechtwinklig zu bekommen nutze ich einen  end stops auf der einen Seite und auf die andere Seite, habe ich einfach eine Schelle montiert. Wenn ich dann die Achsen Home sehe ich sofort ob es rechtwinklig ist oder nicht. Wenn nicht, schiebe ich eine Seite von Hand an die Schelle.

     

    #100879

    Dario
    Participant

    I would prefer that, but I prefer to use squareness instead of Estlcam, but I noticed that the Z height is not correct for a Repertier host. 10mm in Repertier-Host are much more than real 10mm. When I now start a program from Estlcam, z goes much deeper into the material. I have set the jumpers on all drivers on my MKS Gen 1.4. I use DRV8825 for X and Y Strepper. For Z I use an A4988, because one DRV8825 is broken.

    Does anyone know this problem or can tell me why?

    #100918

    Ryan
    Keymaster

    a49’s are 16th stepping, DRV’s are 32nd. So your Z axis is moving twice as far as it should, you need to edit the firmware to half as many Z steps.

    #100978

    Bernd Brettner
    Participant

    Hallo,

    erstmals ein Gedankenanstoß auf Deutsch:

    Meine MPCNC ist gerade im Aufbau und ich würde gerne Estlcam nutzen. Bei EstlCam gibt es eine Referenzfahrt, aber eben kein Autosquaring. Ich hab mir überlegt, einen zusätzlichen Arduino Nano zu nutzen, um 2 Endstops pro Achse abzufragen.

    Schema wäre in etwa so:

    Wenn X1 Endstop High und X2 Endstop Low, dann X1-Motor aus, X2-Motor an

    Wenn X1 Endstop Low und X2 Endstop High, dann X1-Motor an, X1-Motor aus

    Wenn X1 Endstop High und X2 Endstop High dann beide Motoren wieder an (damit Estlcam die Achsen wieder zurückfahren kann) und einen X-Ausgang auf High setzen, um dem Estlcam EINEN Endstop vorzugaukeln.

    Der Schaltplan (Verdrahtungsschema) und Arduino-Code ist soweit vorbereitet. Ich kann es nicht testen, weil ich bei meiner MPCNC noch auf die Motoren warte.

    Sollte meine Nano-Endstop-Schaltung funktionieren, werde ich es als externe Autosquaring posten.

    Hier soweit als Gedankenanstoß und Stand meiner Entwicklung.

    Viele Grüße,
    brettbrn

     

    Hi,

    here are some thoughts about an external autosquaring function.

    I am thinking about an Arduino Nano which has 2 endstops per axis.

    A possiple scheme would be:

    If X1 endstop is High and X2 endstop is Low, then X1-Motor off, X2-Motor on, X-out = Low

    If X1 endstop is Low and X2 endstop is High, then X1-Motor on, X2-Motor off, X-out = Low

    If both endstops are High, then  both motors an (that estlcam can drive axis backwards) and X-out is High (signals homing endstop to estlcam).

    My MPCNC still waits for its motors. Therefore I only have schematics and code for the Nano prepared but not tested in any way.

    When my MPCNC ist finished and the external endstop function works, I will post it here.

    Best Regards,
    brettbrn

    1 user thanked author for this post.
    #101027

    Dario
    Participant

    So einfach? Super danke! Das werde ich direkt umstellen. Genügt, es den Wert 800 auf 400 zu ändern?

    /**
    * Default Axis Steps Per Unit (steps/mm)
    * Override with M92
    * X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]]
    */
    #define DEFAULT_AXIS_STEPS_PER_UNIT { 200, 200, 800, 200 }

    @Bernd Brettner, die Idee hört sich gut an. Ich bin gespannt und würde es gerne bei mir testen. Hast du etwas mehr Informationen?

    That simple? Super thanks! I will convert that directly. Is it enough to change the value 800 to 400?

    /**
    * Default Axis Steps Per Unit (steps/mm)
    * Override with M92
    * X, Y, Z, E0 [, E1[, E2[, E3[, E4[, E5]]]]]
    */
    #define DEFAULT_AXIS_STEPS_PER_UNIT { 200, 200, 800, 200 }

    @Bernd Brettner, the idea sounds good. I am curious and would like to test it with me. Do you have any more information?

    #101044

    Bernd Brettner
    Participant

    Hi,

    Arduino-Code for possible arduino nano external auto-squaring:

    boolean x1min = 0;
    boolean x2min = 0;
    boolean y1min = 0;
    boolean y2min = 0;
    boolean x1mot = 0;
    boolean x2mot = 0;
    boolean y1mot = 0;
    boolean y2mot = 0;
    boolean xendstop = 0;
    boolean yendstop = 0;

    void setup() {

    //configure pin 2 as an input and enable the internal pull-up resistor
    pinMode(2, INPUT_PULLUP);
    pinMode(3, INPUT_PULLUP);
    pinMode(8, INPUT_PULLUP);
    pinMode(9, INPUT_PULLUP);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(10, OUTPUT);
    pinMode(11, OUTPUT);
    pinMode(12, OUTPUT);
    pinMode(13, OUTPUT);

    }

    void loop() {

    digitalWrite(13, LOW);
    // delay(500);

    x1min = digitalRead(2);
    x2min = digitalRead(3);

    if (x1min == HIGH && x2min == LOW) {
    x1mot = HIGH;
    x2mot = LOW;
    xendstop = LOW;
    }
    else if (x1min == LOW && x2min == HIGH) {
    x1mot = LOW;
    x2mot = HIGH;
    xendstop = LOW;
    }
    else if (x1min == LOW && x2min == LOW) {
    x1mot = LOW;
    x2mot = LOW;
    xendstop = LOW;
    }
    else {
    x1mot = HIGH;
    x2mot = HIGH;
    xendstop = HIGH;
    }

    digitalWrite(5, x1mot);
    digitalWrite(6, x2mot);
    digitalWrite(7, xendstop);

    digitalWrite(13, HIGH);
    // delay(500);

    y1min = digitalRead(8);
    y2min = digitalRead(9);

    if (y1min == HIGH && y2min == LOW) {
    y1mot = HIGH;
    y2mot = LOW;
    yendstop = LOW;
    }
    else if (y1min == LOW && y2min == HIGH) {
    y1mot = LOW;
    y2mot = HIGH;
    yendstop = LOW;
    }
    else if (y1min == LOW && y2min == LOW) {
    y1mot = LOW;
    y2mot = LOW;
    yendstop = LOW;
    }
    else {
    y1mot = HIGH;
    y2mot = HIGH;
    yendstop = HIGH;
    }

    digitalWrite(10, y1mot);
    digitalWrite(11, y2mot);
    digitalWrite(12, yendstop);

    }

     

    Pin 13 is only set and reset to get an idea, of how fast the loop run through. With all those digitalRead and digitalWrite operations I’ve got a square signal of around 16kHz (60µs). That is sufficient fast for this kind of endstop scheme, I think. It could be fasted up, if interupts are used for one axis (Nano has two interupt inputs, e.g. X1 and X2) or with direct port manipulation. Only I’m a not nearly good enough programmer to get this code written.

    I use an arduino mega with estlcam and wiring 5 DRV8825 directly to it. I’m planing to use the signals x1mot, x2mot, … and wire them to the enable pins of the DRV8825s.

    Do you know “fritzing”? I have the wiring sketched up in this software.

    @Dario,

    mit dem CNC Shield und drei Treibern würde es trotzdem nicht wirklich funktionieren, weil man mit dem Arduino Nano eigentlich nur die Treiber “disablen” kann. Dazu bräuchte man aber 5 Treiber. Wenn man eine Art allpolig schaltendes Relais direkt in die Leitung vom Treiber zum Stepper setzt, wäre der Stepper, der den Endstop zuerst erreicht sofort komplett stromlos und würde evtl. unkontrolliert rumgeschoben werden, weil das Haltemoment fehlt. Alles keine wirkich gute Lösung.

    Best regards,
    brettbrn

    #101108

    Martin
    Participant

    Ich steige jetzt vom rambo aufs Uno um nur noch Estlcam zu nutzen. Um das Mittelteil rechtwinklig zu bekommen nutze ich einen end stops auf der einen Seite und auf die andere Seite, habe ich einfach eine Schelle montiert. Wenn ich dann die Achsen Home sehe ich sofort ob es rechtwinklig ist oder nicht. Wenn nicht, schiebe ich eine Seite von Hand an die Schelle.

    Das finde ich eine sehr gute Lösung. Ich habe mittlerweile eine ähnliche Idee gehabt und auch verwirklicht. Ich habe auf beiden Rohren der X-Achse und auch auf beiden Rohren der Y-Achse eine solche Schelle montiert. Sobald ich die Fräse in Betrieb nehme, verfahre ich so lange bis einer der beiden X-Roller an der Schelle ansteht. Dann fahre ich mit Estlcam so lange (langsam) weiter, bis der zweite Roller ebenfalls an der Schelle ansteht. Das selbe mache ich mit der Y-Achse.

    Ich habe dazu mehrere Testfräsungen gemacht, welche absolut im rechten Winkel waren.

    Hallo,

    erstmals ein Gedankenanstoß auf Deutsch:

    Meine MPCNC ist gerade im Aufbau und ich würde gerne Estlcam nutzen. Bei EstlCam gibt es eine Referenzfahrt, aber eben kein Autosquaring. Ich hab mir überlegt, einen zusätzlichen Arduino Nano zu nutzen, um 2 Endstops pro Achse abzufragen.

    Schema wäre in etwa so:

    Wenn X1 Endstop High und X2 Endstop Low, dann X1-Motor aus, X2-Motor an

    Wenn X1 Endstop Low und X2 Endstop High, dann X1-Motor an, X1-Motor aus

    Wenn X1 Endstop High und X2 Endstop High dann beide Motoren wieder an (damit Estlcam die Achsen wieder zurückfahren kann) und einen X-Ausgang auf High setzen, um dem Estlcam EINEN Endstop vorzugaukeln.

    Der Schaltplan (Verdrahtungsschema) und Arduino-Code ist soweit vorbereitet. Ich kann es nicht testen, weil ich bei meiner MPCNC noch auf die Motoren warte.

    Sollte meine Nano-Endstop-Schaltung funktionieren, werde ich es als externe Autosquaring posten.

    Hier soweit als Gedankenanstoß und Stand meiner Entwicklung.

    Viele Grüße,

    brettbrn

    Das finde ich ebenfalls eine sehr, sehr gute Idee, vorallem eine viel sauberere Lösung als meine 🙂  Wäre es möglich, dass du mir den Schaltplan zukommen lässt, bzw. in diesem Thread postest, oder zumindest verlinkst.

    Danke und LG Martin

    #101109

    Martin
    Participant

    Meine MPCNC ist gerade im Aufbau und ich würde gerne Estlcam nutzen. Bei EstlCam gibt es eine Referenzfahrt, aber eben kein Autosquaring. Ich hab mir überlegt, einen zusätzlichen Arduino Nano zu nutzen, um 2 Endstops pro Achse abzufragen.

    Jetzt habe ich doch noch eine Frage zu deiner Idee. Wie möchtest du das umgehen, dass beide Stepper parallel zusammengelötet sind und nur an einem Treiber hängen. Somit kannst du auch über einen Arduino Nano nicht X1 oder X2 alleine fahren lassen. Das CNC Schield kennt die zwei Motoren ja nicht auseinander.

    LG Martin

    #101304

    Jan Walter
    Participant

    Meine MPCNC ist gerade im Aufbau und ich würde gerne Estlcam nutzen. Bei EstlCam gibt es eine Referenzfahrt, aber eben kein Autosquaring. Ich hab mir überlegt, einen zusätzlichen Arduino Nano zu nutzen, um 2 Endstops pro Achse abzufragen.

    Jetzt habe ich doch noch eine Frage zu deiner Idee. Wie möchtest du das umgehen, dass beide Stepper parallel zusammengelötet sind und nur an einem Treiber hängen. Somit kannst du auch über einen Arduino Nano nicht X1 oder X2 alleine fahren lassen. Das CNC Schield kennt die zwei Motoren ja nicht auseinander.

    LG Martin

    Die gleiche Frage stell ich mir auch.

     

    Is this an option for using dual endstops with just Estlcam ?

    https://www.amazon.com/Printer-Controller-Kit-Arduino-Upgraded/dp/B019TNELNU

Viewing 21 posts - 1 through 21 (of 21 total)

You must be logged in to reply to this topic.