I could use some help
-
@mac Assuming you don't want to rewire the machine, or turn it around, the first thing you need to do is define the endstops as 'high end' or 'maximum' endstops. Change the following two M574 lines from X1 to X2 and Y1 to Y2:
; Endstops
M574 X1 S1 P"io5.in" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin io5.in
M574 Y1 S1 P"io6.in" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin io6.inNow when the nozzle homes against the endstops, it will set X and Y to the maximum value set by M208, rather than the minimum:
; Axis Limits
M208 X0 Y0 Z0 S1 ; set axis minima
M208 X220 Y220 Z240 S0 ; set axis maximaBut at the moment, your homing files will make the X and Y axis move towards the LOW end, rather than the HIGH end, so we need to flip these. In homex.g you currently have:
G1 H1 X-225 F1800 ; move quickly to X axis endstop and stop there (first pass)
G1 H2 X5 F3600 ; go back a few mm
G1 H1 X-225 F360 ; move slowly to X axis endstop once more (second pass)These need to change to:
G1 H1 X225 F1800 ; move quickly to X axis endstop and stop there (first pass) G1 H2 X-5 F3600 ; go back a few mm G1 H1 X225 F360 ; move slowly to X axis endstop once more (second pass)
So that the X carriage goes to the maximum end of the axis, hits the X homing switch, backs off 5mm, then moves to touch it again.
You need to make the same changes to homey.g and homeall.g.
If you need to adjust where X0 Y0 is, you change the bed area in the M208 commands. Do the above first, and if you need more help with this part, let me know.
Ian
-
6/24/2022, 2:08:29 PM M208 X-8;200 Y0;202 ; set axis limits Error: M208: X axis maximum must be greater than minimum
-
@mac it should be a colon : between values, not a semicolon ;
Ian
-
@alankilian thanks, man, childhood dyslexia strikes again
-
@droftarts okay, so, now we're talking hard-core editing of the actual config files, correct? Versus using RRF to "edit" them, correct?
So I'm guessing I can just "look" at the files, and high light what I want to change, or delete, and hit ENTER, and that will make the change, then "SAVE" and that will save the whole file with the changes?
And the changed file will become the instructions used? (There's no reloading that needs to happen?)
A little confirmation (or correction), will go a long ways right about now.
Mark
-
@mac Yes, you can edit the files in DWC. Sorry, I should have made that clear. Make sure you make a backup, as any changes will only exist on the SD card.
Alternatively, now that you know you have maximum endstops on X and Y, you could go back to the Configuration tool and change it there.
Did you know you can load the config.json file from a previously created configuration back into the Configuration Tool, and all the settings you made previously will be applied? That can help if you have a lot of changes to do.
Ian
-
@alankilian nice clarification, Alan Killian
-
@droftarts I did not! but I think that's how i'll approach this humongous job-a-rooney.
Mark
-
@mac actually, that's what I've been doing all along (the line says / shows Square, config.json GRAPHIC with SQUARE with ARROW in it edit via config tool.
That's what I'm assuming your referring to.
Let's get started!
Mark
-
@droftarts so really, the only problem was the Endstop locations for x and y were low end when they should have been set to High end.
Once again, getting high wins the day!
Mark
-
@droftarts HERE'S AN UPDATE
X Y and Z performed MUCH BETTER. However, when I HOME ALL'd X hit the Endstop 3 or 4 times before stopping. Then the print head, accompanied by the BLTouch, qhich sensed the bed, and that was that.
So, should I post all of the config files again to see what's causing X to want to go further left than it should? What I'm seeing is the nozzle's pointed right at the very edge of the bed.
-
@drofarts Actually, I spoke too soon. I just tried to Home All again. The Print Head came to the X-endstop, and pounded on it until I turned the printer off.
Then, I turned the printer back on and Home All-d the printer to see what would happen. The Print Head came forwards, beyond the front edge of the bed, and then started to land in the empty space in front of the bed, where nothing would stop the BLTouch.
So, the Print Head is not honoring the X-endstop, and (it's possible) that the Y-axis is crushing the y-endstop at the rear of the machine.
(Actually, I have this extender on the Y-stop to move the bed FORWARDS. I think I'll remove that. It was put there to "correct" a problem with the original mystery firmware, which refused to take the bed all the way to the back."
Hmmmmm.
Mark
-
-
@droftarts I'm posting what's above this because the language says the end stops are "high end," but the code ends with S1, not S2?
-
@mac here’s a picture that I think is where the print head thinks Home is?
Mark
-
@mac said in I could use some help:
@droftarts I'm posting what's above this because the language says the end stops are "high end," but the code ends with S1, not S2?
Hey mac,
The number after the letter (X, Y or Z) specifies where the endstop is located - high end or low end of axis.
The S parameter specifies the type of endstop. From the docs for M574:
M574 Parameters
Xnnn Position of X endstop: 0 = none, 1 = low end, 2 = high end.
Ynnn Position of Y endstop: 0 = none, 1 = low end, 2 = high end.
Znnn Position of Z endstop: 0 = none, 1 = low end, 2 = high end.P"pin_name" Defines the pin name(s) that the endstop(s) for the specified axis are connected to, see Pin Names. Needed when S=1. May need ! before pin name to invert signal, or ^ to enable the pullup resistor, for example on the Duex expansion board.
Snnn 1 = switch-type, 2 = Z probe (when used to home an axis other than Z), 3 = single motor load detection, 4 = multiple motor load detection
This command must be later in config.g than the M584 command that creates additional axes, or axes that have multiple motors and endstops.
You may already know this but I will include just to be safe.
When you execute a G1 H1 command it stops when it activates an endstop sensor.
At that point the logical position of the axis is set to axis min or max (see M208) depending on the declared position of the endstop (high or low).
There is nothing that insures that physical position at that point matches the logical position.
If you have an endstop at the low end and the axis min is 0 but the endstop activates at 5 the logical position will be set to 0 but that physical position will be 5.
To keep the logical and physical positions in sync you can:
- insure the point at which the endstop activates matches the min/max for the axis (as appropriate)
- adjust the logical position using a combination of G1 moves and G92 set logical position commands.
Frederick
-
@mac said in I could use some help:
@droftarts I'm posting what's above this because the language says the end stops are "high end," but the code ends with S1, not S2?
Yes, sorry, I was wrong (and have since edited it), it should be X2 and Y2, with S1. X1 is for low end, X2 for high end, and the S parameter is for the endstop type, where S1 is switch, which is what you have. See https://docs.duet3d.com/en/User_manual/Reference/Gcodes/M574
To get the homing where you want it, it's a process of editing the M208 limits. So that when it's homed at the maximum, eg X210 might be the endstop and where it's on the edge of the bed on the right side, if you move it back to X0, it's on the edge of the bed on the left (or wherever you want it). Then the same with Y.
Ian
-
@fcwilt I didn't know any of that, like, What language is this?
But mostly I couldn't answer the questions at the end, as in, I can't even see what this is saying.
But I have a feeling that I'm going to understand this, at some point. Hopefully I have enough time left to get there.
-
@droftarts I'm going to have to read that a lot slower, I guess. I think you're suggesting that I have to enter some gcode via the console, and physically move the print head to, for instance, where I'd like it to be on each corner, I'll say, of the bed. Is that correct?
I was under the impressive that this board, with this code on it, and the information it has about the size of the bed, would already know that. But now that I'm thinking really hard about it, sure, it knows the size of the bed, but the end-stops? Where they are, it don't know 'nuthin.'
Great, just, amazingly, great.
But I'll get there.
-
@mac said in I could use some help:
I think you're suggesting that I have to enter some gcode via the console, and physically move the print head to, for instance, where I'd like it to be on each corner, I'll say, of the bed. Is that correct?
No, nothing like that.
Obviously the firmware only knows what you "tell" it about the limits of axis travel for X, Y and Z.
Unfortunately it currently assumes that the endstop for each axis activates at the min or max for that axis depending on the endstop being declared to be at the high or low end of the axis.
The size of the bed does not usually have any fixed relationship to the axis travel. The bed may be, say 300 x 300 but the X axis may be able to travel 350 and the Y axis 400. It depends on how the printer is designed.
And the endstop sensors may or may not be all the way at one end of the axis or the other. Again it depends on how the printer is designed.
One thing you generally do as you figure out the settings for the M208 and M574 commands is jog the axes back and forth and figure out things like the maximum travel for each axis and where the printable area of the bed falls in the space delimited by the max travel of each axis.
Example of how this might be done:
- execute a M564 H0 S0 - this allows jogging of the axes even if they are not homed and they can be jogged anywhere along the axis regardless of any limits set by M208
- jog the X axis all the way to the low end
- execute G92 X0 - this sets the logical position as X = 0
- jog the X axis all the way to the high end being carefully to not slam into the end the axis but just touch it gently
- read the X axis position off the DWC - you now know that maximum travel of the X axis
Then you do the same for the Y axis.
Now at this point you can edit your M208 command, in config.g, to specify the initial values of min/max for both the X and Y axis. Reboot/reset the printer and you will now not be able to travel beyond the limits of the X and Y axes, if the axis limits are enabled, which is typically the case. They would be enabled by M564 S1 which I believe is the default state after reboot/reset.
Does any of that make sense?
Once it does I can move on to the next steps.
Frederick