Need Help Core XY
-
I have a M3D Promega Core XY. I replaced the maestro with a duet wifi. I also converted the print head to single extruder and mounted a BL touch.
The end stops on this machine are X and Y in the TOP back right corner (micro switches). The Z endstop is at the BOTTOM of the machine and I am using an opto sensor instead of the original micro switch.
It was necessary to basically start over with this machine since the maestro blew up and I replaced/added some user mods for the Z rails and belt tension.
So without much help, I have been stepping through this process and have been able to make it fine to homing X Y and Z. Homing Z to the opto sensor that is.
I've been using the original config file as a guide while using the Duet configurator to create a new file. What is throwing me off, and this doesn't seem to be mentioned in any tutorials I'm following, is what is the proper way to set up the coordinates. This machine was originally set up where x=0, y=0 is the front left and the end stops are the back right. And Z=0 is at the nozzle and Zmax is at the bottom. Is this normal for Core XY machines because the info I'm getting is that everything on this machine is intentionally reversed.
Now I have the BL Touch connected and working and was able to do a G30 command successfully. But when I used the home z command it slammed against the bottom. S
The problem I am having right now is trying to understand what needs to be changed/configured to get my bed (Z) to behave properly. Adding the BL touch is producing some bad behavior. When I added these lines and used the home z command it slammed against the bottom
; Use this if you have BL Touch
M574 X2 Y2 S0
M574 Z1 S2So I changed it to
M574 Z2 S2
and the bed races towards the nozzle with apparently no intention of stopping so I need to hit emergency stop. The BL touch does not deploy during any of this. But I'm not even sure as to what to expect.Do I need to start over? Redefine the bed coordinates? Does someone want to look at my files? Please indicate which ones as I don't want to clutter up this post with nonsense. I feel like I'm almost there but am missing some information that if I had a few minutes of talk time with someone, I could have a beter understanding as to what is supposed to happen here.
-
the direction of the homing moves are defined in the homing scripts homez and homeall.
post your config.g your deploy and retract scripts and your overwrite.
however. there are several post on this forum about the bad build quality of the M3D Promega. Apparently it requires extensive modifications to produce acceptable prints.
-
@jdjeff58 said in Need Help Core XY:
This machine was originally set up where x=0, y=0 is the front left and the end stops are the back right. And Z=0 is at the nozzle and Zmax is at the bottom. Is this normal for Core XY machines
Yes that is the normal arrangement for 3D printers. This matches with the coordinate system used by slicers so that your parts don't come out mirrored.
The behaviour of the axis is defined by a combination of the motor direction, the defined endstop positions, and then the movement directions in the homing files.
https://duet3d.dozuki.com/Wiki/ConfiguringRepRapFirmwareCoreXYPrinter
This is a good document to use when setting up a corexy printer.And please post your files.
-
Here's what I have up to this point. Can I have the optical Z switch and the BL touch working so the bed can be repositioned at the bottom without slamming the stop? The other thing that happens with my bed which did not happen before is if the bed is raised and I reboot the board, the bed freefalls to the bottom....same thing on emergency stop. This didn't do this before. I did change the Z rail sliders with bigger and better ones (3D printed) so I'm not sure if it was friction that kept the bed from free falling or not. But this free fall is what burned out my maestro due to the back feeding into the driver chips.
So now that I know I have the coordinates correct for core XY, I just want to comment that I changed the 0 limits to keep from hitting the frame of the printer with the carriage. As I'm using the advertised print volume. Is this acceptable I have been wondering.
The original microstepping setting was 1/32 (and I don't understand what that means). If I use those numbers on the new board, I don't get full travel when manually moving the bed. It only moves half the distance. So I just kept trying didferent setting from the configurator which ended up being the 1/16 with interpolation (again not know what that means)
Yes Veti...this was a crowd sourced stinker....and I may have posted one of those gripes about this machine. There have been some updates by the community of people that got stuck with this machine. Mine was printing pretty well from one of the dual extruders. But I'm finding an opportunity to learn something here and it was cheaper than buying a new machine. I have $1.3k already invested in this and I'm not ready to throw it in the trash just yet
retractprobe.g homez.g homey.g homex.g homeall.g deployprobe.g config.g bed.g
-
@jdjeff58 said in Need Help Core XY:
Can I have the optical Z switch and the BL touch working so the bed can be repositioned at the bottom without slamming the stop?
by default no.
you will need to reconfigure the endstop configuration when you want to use the z endstop switch and reconfigure the probe afterwards. -
@Veti said in Need Help Core XY:
@jdjeff58 said in Need Help Core XY:
Can I have the optical Z switch and the BL touch working so the bed can be repositioned at the bottom without slamming the stop?
by default no.
you will need to reconfigure the endstop configuration when you want to use the z endstop switch and reconfigure the probe afterwards.So it looks like auto bed leveling before each print will mean my Z endstop is disabled for good..yes? So how do you move the bed back down to bottom without it crashing?
-
@jdjeff58 said in Need Help Core XY:
So how do you move the bed back down to bottom without it crashing?
i dont understand your question.
if you define the maxium axis movement in your config it wont move past that point. -
@jdjeff58 said in Need Help Core XY:
The original microstepping setting was 1/32 (and I don't understand what that means).
your numbers look ok for 1/16 microstepping. for the duet wifi stay with x16 microstepping and interpolation unless there is a very specific reason for using a different setting.
-
@Veti said in Need Help Core XY:
@jdjeff58 said in Need Help Core XY:
So how do you move the bed back down to bottom without it crashing?
i dont understand your question.
if you define the maxium axis movement in your config it wont move past that point.I guess because I don't understand the answer. You make it look like I can use one or the other but not both. Please assume I don't know what I'm doing and learning as I go. "Reconfigure this/that" is a little too vague for me at this point.
-
@jdjeff58 I think what @Veti was referring to is that if you define the axes minima and maxima using M208 in your config.g, then once the printer has been homed any moves will respect those axis limits. So for example if your Z axis maximum is say 300, then you can always move 300mm in the positive direction and it will stop at Z=300 regardless of where it started. It won't go beyond Z=300 once it has been homed so you don't need a Z max limit switch.
-
@jdjeff58 said in Need Help Core XY:
The end stops on this machine are X and Y in the TOP back right corner (micro switches). The Z endstop is at the BOTTOM of the machine and I am using an opto sensor instead of the original micro switch.
Does the machine have the bed or the gantry moving in the Z direction? It's all very well saying that the Z endstop is at the bottom, but without knowing whether the bed or the gantry moves, that doesn't tell is whether it is a Zmin or Zmax endstop switch.
So it looks like auto bed leveling before each print will mean my Z endstop is disabled for good..yes? So how do you move the bed back down to bottom without it crashing?
You can have both a Z endstop and a Z probe.
-
i would suggets you start of using the probe for now.
you only need a zmax endstop instead of a probe for power failure recovery.
i would consider that an advanced topic. focus on getting the basics up and running. -
@dc42 said in Need Help Core XY:
@jdjeff58 said in Need Help Core XY:
The end stops on this machine are X and Y in the TOP back right corner (micro switches). The Z endstop is at the BOTTOM of the machine and I am using an opto sensor instead of the original micro switch.
Does the machine have the bed or the gantry moving in the Z direction? It's all very well saying that the Z endstop is at the bottom, but without knowing whether the bed or the gantry moves, that doesn't tell is whether it is a Zmin or Zmax endstop switch.
So it looks like auto bed leveling before each print will mean my Z endstop is disabled for good..yes? So how do you move the bed back down to bottom without it crashing?
You can have both a Z endstop and a Z probe.
It's the bed that moves on the Z axis. I'm pretty sure I said somewhere that my bed does a free fall when rebooting the board or hitting emergency stop. This bed has a single motor using 4 belts.
-
@Veti said in Need Help Core XY:
i would suggets you start of using the probe for now.
you only need a zmax endstop instead of a probe for power failure recovery.
i would consider that an advanced topic. focus on getting the basics up and running.That's just it, I am trying to do that. I uploaded my files and I'm not really getting any feedback other than microstepping looks ok.
The original question is HOW do I get this configured correctly? Maybe I am not being clear?? My bed is RACING toward the probe when I home Z. The probe does not deploy on home Z. It looks like the bed will not stop when homing Z as THE BED moves toward the BL Touch. I hit emergency stop because THE BED appears like it is going to crash into the gantry because it is RACING in the up direction while the BL touch remains retracted.
-
@deckingman said in Need Help Core XY:
@jdjeff58 I think what @Veti was referring to is that if you define the axes minima and maxima using M208 in your config.g, then once the printer has been homed any moves will respect those axis limits. So for example if your Z axis maximum is say 300, then you can always move 300mm in the positive direction and it will stop at Z=300 regardless of where it started. It won't go beyond Z=300 once it has been homed so you don't need a Z max limit switch.
Thank you...let me try a couple of things with that info.
-
I hate to say this, but the Promega config file arrangement is needlessly complex and confusing. It's almost as if they intentionally made it extra difficult to keep people from making changes. You've got your work cut out for you, but it can be tamed.
Let me address your issues one at a time and see if we can make some progress.
Firstly, the bed falling issue. This one is going to be down to mechanics. If the bed is heavy enough and the lead screw pitch is steep enough, the weight of the bed will auto rotate the lead screws. that's just physics. Without a mechanical break to hold it in place, or friction to keep it from spinning, it will fall once the motors are deenergized. Your best bet in the short term is to install some sort of rubber or foam bumpers that can cushion the fall. Long term, I would suggest switching out the lead screws for once with a flatter pitch angle, like 1mm lead. That should help keep it from auto rotating. Beyond that it will be up to you to make sure the bed is safely at the bottom before powering it off. And for power outages, maybe time to get a battery backup?
Now as for using a Z max endstop and a probe, yes that is possible. RepRapFirmware is configured by gcodes and you can configure it in real time. All the homing macros are just a series of gcode commands as well. so you can actually configure your endstops or probe in the same homing macro.
However, a z max endstop won't stop it from traveling past that endstop during a normal move, or during an uncontrolled move (like the bed falling). As deckingman pointed out, the axis limits are enforced in software. So once the printer is homed, it won't normally allow you to move beyond those limits. Endstops are not active at all times, only when you specifically command a homing move. That's how the homing macros work. You tell the axis to move in a direction until the endstop is hit and then stop, and set the current position to whatever the axis limit is.
Now the config files and homing macros from promega are a little convoluted but most of the homing is occuring in homex and homez. And it's currently configured to use endstop switch, not the probe.
At this point, your options are to go through those two files line by line and understand what the commands are telling it to do, and then modifying it to try and do what you want. Or, and this is probably the better option, use the reprap configurator website and generate a new config file set using the details you know about the printer. It's just a corexy printer afterall. The resulting macros are a lot easier to understand and modify yourself. You can select the zprobe you have and it will build the homing files to use it. You can use the link I posted earlier to help test the new config files to make sure everything is setup properly for corexy.
-
@Phaedrux said in Need Help Core XY:
I hate to say this, but the Promega config file arrangement is needlessly complex and confusing. It's almost as if they intentionally made it extra difficult to keep people from making changes. You've got your work cut out for you, but it can be tamed.
Let me address your issues one at a time and see if we can make some progress.
Firstly, the bed falling issue. This one is going to be down to mechanics. If the bed is heavy enough and the lead screw pitch is steep enough, the weight of the bed will auto rotate the lead screws. that's just physics. Without a mechanical break to hold it in place, or friction to keep it from spinning, it will fall once the motors are deenergized. Your best bet in the short term is to install some sort of rubber or foam bumpers that can cushion the fall. Long term, I would suggest switching out the lead screws for once with a flatter pitch angle, like 1mm lead. That should help keep it from auto rotating. Beyond that it will be up to you to make sure the bed is safely at the bottom before powering it off. And for power outages, maybe time to get a battery backup?
Now as for using a Z max endstop and a probe, yes that is possible. RepRapFirmware is configured by gcodes and you can configure it in real time. All the homing macros are just a series of gcode commands as well. so you can actually configure your endstops or probe in the same homing macro.
However, a z max endstop won't stop it from traveling past that endstop during a normal move, or during an uncontrolled move (like the bed falling). As deckingman pointed out, the axis limits are enforced in software. So once the printer is homed, it won't normally allow you to move beyond those limits. Endstops are not active at all times, only when you specifically command a homing move. That's how the homing macros work. You tell the axis to move in a direction until the endstop is hit and then stop, and set the current position to whatever the axis limit is.
Now the config files and homing macros from promega are a little convoluted but most of the homing is occuring in homex and homez. And it's currently configured to use endstop switch, not the probe.
At this point, your options are to go through those two files line by line and understand what the commands are telling it to do, and then modifying it to try and do what you want. Or, and this is probably the better option, use the reprap configurator website and generate a new config file set using the details you know about the printer. It's just a corexy printer afterall. The resulting macros are a lot easier to understand and modify yourself. You can select the zprobe you have and it will build the homing files to use it. You can use the link I posted earlier to help test the new config files to make sure everything is setup properly for corexy.
Thanks for looking things over. There are no lead screws...just one motor and 4 belts to push each corner. The bed doesn't slam too bad, it's just how the whole board lights up because of the motors backfeeding into the board. I have learned that can burn out drivers chips.
This is where I'm at now. I've been following this tutorial https://betrue3d.dk/bltouch-on-duet-wifi-configuratio-and-usage/
I've gotten it to slam into the nozzle once. I've taken out one line that was copied from the tutorial and it stopped slamming the nozzle. So now it homes on the probe. But something is still wonky. When the X or Y homes, the Z bed attempts to move down and when it's already on the bottom, it grinds the belt gears because it thinks it has to get out of the way.
Seems that when I hit Z home from anywhere other than the bottom of the machine, it's position is screwed up. I need help setting this up correctly like in a block diagram form. Ok...I know to set axis limits...but WHEN? I know I need to zero the Bed on the nozzle, but my zero is -300 and something. Here's some updated Gcode and yes...some of it is M3D like the Xhome and Yhome files because it was the only way I could get X and Y to home by just copying the files and commenting out lines that were giving errors. Here's my most recent config file followed zhome.
; Configuration file for Duet WiFi (firmware version 2.03)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v2.1.2 on Sat Nov 09 2019 21:10:45 GMT-0500 (Eastern Standard Time); General preferences
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"My Printer" ; set printer nameM669 K1 ; select CoreXY mode
; Network
M552 S1 ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S0 ; disable FTP
M586 P2 S0 ; disable Telnet; Drives
M569 P0 S0 D2 ; Drive 0 goes forwards, CoreXY_1
M569 P1 S1 D2 ; Drive 1 goes forwards, CoreXY_2
M569 P2 S1 D2 ; Drive 2 goes forwards, Z Motor
M569 P3 S0 D2 ; Drive 3 goes forwards, Extruder
M584 X0 Y1 Z2 E3 ; set drive mapping
;M350 X32 Y32 Z32 E128 ; configure microstepping with interpolation
M350 X16 Y16 Z16 E16 I1
M92 X79.80 Y79.80 Z282.70 E830.00 ; set steps per mm (.9 deg extruder motor)
M566 X420.00 Y420.00 Z39.60 E120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X4200.00 Y4200.00 Z2298.00 E2500.00 ; set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z75.00 E250.00 ; set accelerations (mm/s^2)
M906 X800 Y800 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
M208 X28 Y100 Z-357.54 S1 ; set axis minima
M208 X375 Y365 Z-8.5 S0 ; set axis maxima; Endstops Mechanical Z
;M574 X2 Y2 Z1 S0 ; set active low and disabled endstops; Use this if you have an optical Z endstop
;M574 X2 Y2 S0 ; Set xy end-stops types (S0 is active low, applied to XY)
;M574 Z2 S1 ; Set z end-stops types (S1 is active high, applied to Z) Optical Z Bottom; Use this if you have BL Touch
M574 X2 Y2 S0
M574 Z1 S2 ; Define Z to use Probe. Home to Min (BL Touch Nozzle); Z-Probe
M307 H3 A-1 C-1 D-1 ; disable heater on PWM channel for BLTouch
M558 P9 H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds
G31 P500 X28.9 Y0 Z5.069 ; set Z probe trigger value, offset and trigger height
M557 X50:350 Y125:340 S75 ; define mesh grid; Heaters
M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit
M305 P0 T100000 B4138 C7.060000e-8 R4700 ; set thermistor + ADC parameters for heater 0
M143 H0 S120 ; set temperature limit for heater 0 to 120C
M305 P1 T100000 B4725 C7.060000e-8 R4700 ; set thermistor + ADC parameters for heater 1
M143 H1 S280 ; set temperature limit for heater 1 to 280C; Fans
M106 P0 S1 I0 F500 H-1 ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off
M106 P1 S0 I0 F500 H1 T45 ; set fan 1 value, PWM signal inversion and frequency. Thermostatic control is turned on; Tools
M563 P0 D0 H1 F0 ; define tool 0
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C; Custom settings
M572 D0:1 S0.07 ; Extruder Pressure Advance; Miscellaneous
M501 ; load saved parameters from non-volatile memory
M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss; homez.g
; called to home the Z axis
;
; generated by RepRapFirmware Configuration Tool v2.1.2 on Sat Nov 09 2019 21:10:46 GMT-0500 (Eastern Standard Time)
;G91 ; relative positioning
;G1 H2 Z5 F6000 ; lift Z relative to current position
;G1 H1 Z-382 F1800 ; move Z down until the endstop is triggered
;G92 Z0 ; set Z position to axis minimum (you may want to adjust this); Uncomment the following lines to lift Z after probing
;G91 ; relative positioning
;G1 H2 Z5 F100 ; lift Z relative to current position
;G90 ; absolute positioning; Homez.g
G1 H2 Z-350 F3000 ; lift Z relative to current position
G30 ; Do a single probe to home our Z axis
G90 ; Make sure we are in absolute mode
;G1 Z10 F6000 ; Rapidly move the Z axis to Z=10 -
@jdjeff58 said in Need Help Core XY:
There are no lead screws...just one motor and 4 belts to push each corner. The bed doesn't slam too bad, it's just how the whole board lights up because of the motors backfeeding into the board. I have learned that can burn out drivers chips.
My condolences.
When the X or Y homes, the Z bed attempts to move down and when it's already on the bottom, it grinds the belt gears because it thinks it has to get out of the way.
Yes, that's part of the homing macro, it tries to lift the nozzle/lower the bed out of the way before moving the X and Y axis. It's unfortunately not able to know it's at the bottom of the printer when it does this. Eventually when conditioning Gcode is implemented this may be able to be detected and mitigated, but for now the only option is to either remove the move out of the way portion, or ensure that it's never truly at the physically bottomed out position.
My own printer is a corexy and I also use a z max endstop and a probe. I rarely ever lower it the entire way down though (just power outage recovery) and the lead screws don't allow the bed to fall, so I'm able to ensure there is always enough physical movement passed the Z max optical endstop to allow it to drop slightly. Part of your end solution is going to have to figure out something for that.
Seems that when I hit Z home from anywhere other than the bottom of the machine, it's position is screwed up.
This is because of this:
; Axis Limits
M208 X28 Y100 Z-357.54 S1 ; set axis minima
M208 X375 Y365 Z-8.5 S0 ; set axis maximaLogically you should be able to tell there is something off about a minimum values of -357 and a maximum value of -8.5. You can't get to 0 from there.
Your minima Z value should be 0. Or even just slightly less than 0. Like -0.5 just to give you some wiggle room when trying to get your first layer baby stepping right. And your maximum value should be 300 or whatever the maximum travel distance you can safely do on the Z axis is.
M208 X28 Y100 Z-0.5 S1 ; set axis minima M208 X375 Y365 Z350 S0 ; set axis maxima
Then your home z needs some changes.
; Homez.g
G1 H2 Z-350 F3000 ; lift Z relative to current position
G30 ; Do a single probe to home our Z axisSo your first move is going to rapidly move the bed towards the nozzle. Don't do that. Then your using G30 to actually probe the bed. What you actually want to do is first position the probe in X and Y and then use G30 which will deploy the pin and slowly move the bed towards the probe.
G1 X150 Y150 F3000 G30
-
I really strongly recommend you go through the web configurator and generate a new config life set by filling out as much of the information as you can and then looking at that SANE config life and see how it does things and compare it to what your current files are doing. It will really help you get things sorted out.
-
also this should prevent your bed from falling.
https://www.thingiverse.com/thing:3601545. plus you gain true z leveling using multible motors.