Homing Z in wrong direction on first power cycle



  • 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!

    My config.g:

    ; 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:

    ; 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:

    ; 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?


  • Moderator

    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 ๐Ÿ™‚


  • Moderator

    @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:

    1. Power on printer (runs config.g)
    2. Run homeall.g (homes only X and Y)
    3. Run homez.g (homes Z then descends)
    4. Turn off printer
    5. Turn on printer
    6. 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
    

    Ian



  • @droftarts

    M115:

    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 ๐Ÿ™‚

    https://streamable.com/ild3we


  • Moderator

    @Jaran said in Homing Z in wrong direction on first power cycle:

    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
    
    
    

  • Moderator

    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.

    M350 Z8
    M906 Z1000
    M203 Z200
    M201 Z60

    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


  • Moderator

    @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.

    Ian



  • @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 ๐Ÿค 


  • Moderator

    @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!

    Ian



  • @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.


  • Moderator

    @Jaran I asked @dc42 if this was a bug, but it isnโ€™t. He said โ€œmax travel is 1.1 * the total Z axis lengthโ€ so your Z was limited to 275mm with M208 Z250.

    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?

    Ian



  • @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.


Log in to reply