Homing Z in wrong direction on first power cycle
Jaran last edited by Jaran
Hello there! After making some changes on my printer I have been having an issue where the bed is moving to the bottom of the printer when the probe is triggered.
I have a HyperCube Evolution. Lately I changed out the TR8 rods and re-aligned the Z axis which made the bed drop once the power shuts off. This causes the bed to be at the bottom of the printer on every power up(planning to make the bed stay on power off, just waiting for some parts). On the first power on cycle the bed moves to the probe and then starts to move all the way to the bottom again. If I power off the printer at this point and start the homing again once its powered back in it homes the Z axis like normal.
I can't figure out whats causing it!
; Configuration file for Duet WiFi (firmware version 2.03) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Wed Mar 25 2020 15:23:24 GMT+0100 (sentraleuropeisk normaltid) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Jarans HEVO" ; set printer name M667 S1 ; 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 S1 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M569 P4 S1 ; physical drive 4 goes forwards M584 X0 Y1 Z2 E3 ; set drive mapping M671 X0:323 Y0:0 S0.5 ; leadscrews at left (connected to Z) and right ????? M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E2688.70 ; set steps per mm Z396.08 ;M92 X80.00 Y80.20 Z404.04 E2688.70 11.05: M92 X80.33 Y80.94 Z394.1853 E2688.70 M566 X480.00 Y480.00 Z24.00 E40.00 ; set maximum instantaneous speed changes (mm/min) M566 X480.00 Y480.00 Z24.00 E40.00 M203 X6000.00 Y6000.00 Z400.00 E10000.00 ; set maximum speeds (mm/min) M201 X3000.00 Y3000.00 Z200.00 E120.00 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X267 Y267 Z250 S0 ; set axis maxima ; Endstops and stalldetection M915 X Y S3 F0 H300 R0 M574 X1 Y1 S3 M574 Z1 S2 ; set endstops controlled by probe ; 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 P25 X28.00 Y3.00 Z3.305 ; set Z probe trigger value, offset and trigger height 2.20 M557 X30:260 Y30:260 S40.4 ; define mesh grid 20 M557 X30:260 Y30:260 S30 ; Heaters M305 P0 T100000 B4138 C0 R4700 ; set thermistor + ADC parameters for heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M305 P1 T100000 B4725 C7.06e-8 R4700 ; set thermistor + ADC parameters for heater 1 M143 H1 S280 ; set temperature limit for heater 1 to 280C M307 H3 A-1 C-1 D-1 ; Fans ;M106 P0 S0 I0 F500 H-1 ; set fan 0 value, PWM signal inversion and frequency. Thermostatic control is turned off M106 P1 S1 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 are not defined M579 X1.00267 Y1.00840 Z1.0 ;M501
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v2.1.8 on Wed Mar 25 2020 15:23:24 GMT+0100 (sentraleuropeisk normaltid) G90 ; absolute positioning G1 X0 Y0 F6000 ; go to first probe point G30 ; home Z by probing the bed ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z5 F100 ; lift Z relative to current position ;G90 ; absolute positioning
; homeall.g ; called to home all axes ; M400 ; make sure everything has stopped before we make changes M913 X50 Y50 ; reduce motor current to 50% to prevent belts slipping G91 ; use relative positioning G1 S1 X-400 F3600 ; move back 400mm, stopping at the endstop G1 X5 ; move away from home G1 S1 Y-400 F3600 ; move back 400mm, stopping at the endstop G1 Y5 ; move away from home G1 S1 X-400 F3600 ; move towards axis minimum G1 S1 Y-400 F3600 ; move towards axis minimum G1 X5 Y60 ; move away from home G92 X0 Y0 ; set coordinates to 0,0 M400 ; make sure everything has stopped before we reset the motor currents M913 X100 Y100 ; motor currents back to normal ;G90 ; absolute positioning ;G1 X0 Y60 F6000 ; go to first bed probe point and home Z ;G30 ; home Z by probing the bed
Video showing the problem: https://streamable.com/ild3we
Does anyone have any idea whats causing this?
If your bed already has a tendency to auto rotate to the bottom when power is removed, perhaps after probing and it drops the bed back down by the dive height it just keeps rolling down.
Your Z motor current is 800ma. Is that ~80% of the rated maximum?
For heavy beds it's a good ideal to use a lead screw with a shallower angle of attack on the threads to remove the tendency to auto rotate. 8mm lead is quite steep. 2mm or 1mm lead single start lead screws work very well to resolve this.
I can clearly hear the motors getting current and spinning when its dropping down after the first homing. This also only seems to happen when the bed is at the lower part of the printer. If I start homing it at about 100mm down from the top it homes like it should.
Yes, the motor is running at 80% of the rated current.
Thanks for the tip! I might give that a shot. I was planning to remove one of the Z motors and run the bed with a single motor and a closed loop belt like this: https://www.thingiverse.com/thing:2761562 The parts I need should be close ish in the post
@Jaran Please send M115 (firmware versions) to the Duet and post the response. Please can you also describe the exact steps you're taking. I think its:
- Power on printer (runs config.g)
- Run homeall.g (homes only X and Y)
- Run homez.g (homes Z then descends)
- Turn off printer
- Turn on printer
- homing works?
Also, do you have two Z motors? Are they both connected to Z (ZA and ZB)? If they are connected to separate drivers, you need to define that in you M584, eg:
M584 X0 Y1 Z2:4 E3 ; set drive mapping
FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 2.05.1 ELECTRONICS: Duet WiFi 1.02 or later FIRMWARE_DATE: 2020-02-09b1
Yes, thats about right, except I don't run the homing files manually, I just hit the "Home all" button on the duet touch display.
I am using two Z motors and they are wired to ZA and ZB now. I did try to run them on seperate drivers earlier but everything should be reverted back to using ZA and ZB.
The homing has always been working fine, until I straightend up the Z axis which caused the bed to drop when its powered off. Im starting to belive this has always been an issue as its only happening when the bed is at the bottom. I can't confirm that for sure as the bed never dropped down to that point earlier and I have never printed anything that big in the Z axis.
All in all the homing works just fine as long as the bed is not dropped down to the lower part of the printer
I made a little video of the issue. Please excuse the mess
I don't run the homing files manually, I just hit the "Home all" button on the duet touch display.
When you run homeall it starts with homeall.g and if it has any remaining unhomed axis when it's done (in your case the z axis) it runs the homez file.
Since you're running 2.05.1 you should probably update your homeall o use H1 instead of S1 for your homing G1 moves.
Also, you can increase your Z axis probing speed substantially and still get good accuracy by setting up a double homing routine in your homez by replacing your single G30 with this:
M558 A1 F400 ; Set single probing at faster feed rate G30 ; Do a single probe to home our Z axis M558 A10 F120 ; Set multi probing at slower feed rate G30 ; Probe again to get a more accurate position
Not a solution to your problem, but should drastically speed up your initial homing from the bottom of the bed.
It's also preferable to move the probe to the center of the bed.
I also notice that you're using G92 in your homeall to reset the homed XY position to 0. If the 0,0 point is off the edge of the bed, it might be best to modify the M208 minima to use a slightly negative value such that 0,0 is the corner of the bed. That way the full travel size of the axis is allowed, but the location of the printable area is still preserved.
Hehe, I should indeed speed it up! Thanks for the little snippet
I am going to home in the middle of the printer once im done making changes. Been struggling with the printed parts and lining up the belt so I have taken it all apart quite a few times now. The last setup I had the extruder never moved outside the buildplate, but the new parts allows it to move out of it in the Y axis. Thanks for the tip. At the moment the extruder can only move within its buildplate, but I am going to allow it to move out of it later on to make some sort of nozzle wiping brush.
I have just updated my firmware to 3.1.1 so here is my new config file. Im still having the same issue on this firmware. For what its worth I sat up the setup with the online generator.
; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.1.4 on Fri Aug 14 2020 12:18:48 GMT+0200 (sentraleuropeisk sommertid) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"Jarans HEVO" ; set printer name M669 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 S1 ; physical drive 0 goes forwards M569 P1 S1 ; physical drive 1 goes forwards M569 P2 S1 ; physical drive 2 goes forwards M569 P3 S1 ; physical drive 3 goes forwards M584 X0 Y1 Z2 E3 ; set drive mapping M350 X16 Y16 Z16 E16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 Z400.00 E2771.50 ; set steps per mm M566 X480.00 Y480.00 Z24.00 E40.00 ; set maximum instantaneous speed changes (mm/min) M203 X6000.00 Y6000.00 Z400.00 E10000.00 ; set maximum speeds (mm/min) M201 X500.00 Y500.00 Z200.00 E120.00 ; set accelerations (mm/s^2) M906 X1200 Y1200 Z800 E800 I30 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X267 Y267 Z250 S0 ; set axis maxima ; Endstops M574 X1 S3 ; configure sensorless endstop for low end on X M574 Y1 S3 ; configure sensorless endstop for low end on Y M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Stall Detection M915 X Y S3 F0 H100 R0 ; Z-Probe M950 S0 C"exp.heater3" ; create servo pin 0 for BLTouch M558 P9 C"^zprobe.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds G31 P25 X28 Y3 Z3.636 ; set Z probe trigger value, offset and trigger height M557 X30:260 Y30:260 S40.4 ; define mesh grid ; Heaters M950 H3 C"nil" ; Disable heater H3 to free up pin M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S120 ; set temperature limit for heater 0 to 120C M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 R4700 ; configure sensor 1 as thermistor on pin e0temp M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1 M307 H1 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. 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 are not defined ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue
I still think this is an issue of the bed weight causing the bed to auto rotate down, perhaps from lack of torque.
Can you try the following:
Temporarily increase the Z motor current to the max rated for the motor.
Reduce the max speed and acceleration for the Z motor.
Reduce microstepping on Z to x8.
You can add this code right below your current drive block and then delete it after testing.
See if that makes a difference.
If that doesn't help, leave that block in place and then change the Z motor wiring so that one motor goes to your spare extruder driver. Then alter your M584 command to map the Z axis to both drivers as droftarts describes above.
M584 X0 Y1 Z2:4 E3 ; set drive mapping
@Jaran I just watched the first video and agree that the bed is powered on the downward movement; it’s not slipping. The only thing I can think of is that the first move, from the bottom of Z to probe, is more than the 250mm set in M208:
M208 X267 Y267 Z250 S0
So my suggestion is to try setting this larger than the Z movement, eg 400, and see if it still does the same thing.
I don’t know why it would be doing this, though. But please test and see if it makes a difference.
Jaran last edited by Jaran
@Phaedrux I will for sure give this a shot, but im 99% sure its not due to the weight. The weight has never been an issue before, its only when the bed is at the bottom. If I try to "hold" the bed with my finger below it when it has no current I can simply hold my finger there without giving any preassure and it stays.
@droftarts This sounds like the solution! After changing parts on the printer lately I have for sure gained more Z travel and I intentinally set that limits to be lower earlier as the bed struggled when going all the way down(slightly skewed Z rods).
I will post back in a couple of minutes with an edit
Edit: It was the Z axis limit that caused this. Now it works as intended even at the lowest point it can reach. I did not think about this at all until I read out your message
Thanks alot to both of you! Im starting to get close to a result I can be happy with
@Jaran Great! Glad that sorted it. Can you let me know how much travel you have on Z, from bottom to top? I don't know if there's a limit set in the firmware that aborts G30 if the distance travelled is greater than the M208 Z value + [some value], but this behaviour is not expected or documented, so may be a ... (drum roll) ... bug!
@droftarts I have about 290-300mm travel in total on the Z axis. I sat the new limit to 280mm which works fine.
Hehe yeah, it looks like it. As long as you set the limits to match the travel length you will never experience this, but if someone for some reason put the limits on 50% of the travel length I belive you would.
A couple more questions; on the first home, did the probe actually trigger, or did it stop short and reverse? Also when it did reverse to the bottom, did it stop, or just keep going and grind the motors when it got to the bottom?
@droftarts Aha, I see.
The probe did trigger. The bed kept moving until it hit the probe no matter how far down it was. It did not stop at the bottom, it kept on going and grinding the motors.