Arduino Uno; CNC-Shield V3; Dual endstops

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.

 

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

1 Like

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

1 Like

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

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 Like

i will do!

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?

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.

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.

Yes, and also edge finding as well.

correct.

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.

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

Have a look at the milling basics page.

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.

 

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?

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.

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 Like

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?

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

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.

Das finde ich ebenfalls eine sehr, sehr gute Idee, vorallem eine viel sauberere Lösung als meine :slight_smile: 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

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 ?