Dual Z-axis endstops

Avatar

By baballuci 6 February 2017 13:42

Member · 14 comments

Hi, i'm looking at replacing my RAMPS 1.4 to a more modern 32bit controller on my custom corexy.

My current setup has two Z motors using seperate drivers, two z-axis IR endstops for homing and an inductive prove for bed leveling.

Can anyone tell me if i can get the same setup using a DuetWifi?

Cheers
Charlie.

Avatar

By dc42 6 February 2017 13:54

Administrator · 2,256 comments

You can use two Z drivers and an inductive probe, but we currently support only one Z endstop. How do the two endstops work in your current setup?


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By baballuci 6 February 2017 14:08

Member · 14 comments

One endstop uses Z-min which is assigned to lets say the left motor (Z1), the other endstop uses Z-max which is assigned to the right motor (Z2). The end stops are only used for homing (making sure both motors are level), once the print starts it uses the probe (i'm using Y-max) to compensate for an uneven bed.

And because the endstops are IR, i can travel past without interfering.

Charlie.

Last edited by baballuci (6 February 2017 14:14)

Avatar

By dc42 6 February 2017 15:38

Administrator · 2,256 comments

I wasn't aware that any of the standard firmwares supported dual Z endstop switches. Which one is it?

We don't support that arrangement at present, although we probably will in future because we have an OEM interested in it. However, in the immediate future we have two developments planned. One is a firmware change to ensure that when you power the printer down and up again, dual motors on an axis stay in sync, provided you don't move them more than about 1 full step while they are powered down. This will probably be in the 1.18 firmware release. The second is to use the Z probe to perform bed levelling with 2, 3 or 4 independent Z motors.


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By baballuci 6 February 2017 16:18

Member · 14 comments

I'm using Marlin 1.1.0 - RC8.

Ah that's a shame, i was eying up the 7" Due Panel as well 😁 I'll just have to stay with what i have until you implement it. Either that or i might change to having the z axis belt driven using a single motor, but i didn't really what to go the the hassle of changing everything again, especially when it's working well at the moment. It's a shame there aren't any 32bit controllers that'll run the latest Marlin.

Well if you need any beta testers for it let me know.

Charlie.

Avatar

By dc42 6 February 2017 17:16

Administrator · 2,256 comments

If you do buy a Duet WiFi, then I can implement the change to keep the Z motors in sync within about 2 weeks. You could then run a macro to do 4-point mesh bed levelling when you power on to verify that the motors have remained in sync. The height map is displayed in the web interface, so this would be really easy to see. Supporting independent Z homing switches would take a little longer but I can try to get that in the 1.18 release too. I already know how I'd implement it, the main complication is implementing a new gcode to map endstop inputs (which someone else wanted for other reasons).


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By iDevelo 6 February 2017 18:23

Member · 182 comments
dc42 wrote

If you do buy a Duet WiFi, then I can implement the change to keep the Z motors in sync within about 2 weeks. You could then run a macro to do 4-point mesh bed levelling when you power on to verify that the motors have remained in sync. The height map is displayed in the web interface, so this would be really easy to see. Supporting independent Z homing switches would take a little longer but I can try to get that in the 1.18 release too. I already know how I'd implement it, the main complication is implementing a new gcode to map endstop inputs (which someone else wanted for other reasons).

Go for it 😁 I've got a FT-5 sat here so I can help test it out.

A bit off topic but I also suggested to Tony about using Jira for tracking features and bugs which would make keeping track a breeze. It's FOC for open source and very powerful.

Avatar

By iDevelo 6 February 2017 18:24

Member · 182 comments
baballuci wrote

I'm using Marlin 1.1.0 - RC8.

Ah that's a shame, i was eying up the 7" Due Panel as well 😁 I'll just have to stay with what i have until you implement it. Either that or i might change to having the z axis belt driven using a single motor, but i didn't really what to go the the hassle of changing everything again, especially when it's working well at the moment. It's a shame there aren't any 32bit controllers that'll run the latest Marlin.

Well if you need any beta testers for it let me know.

Charlie.

You should buy one without hesitation. If dc42 commits to a feature you know it's gonna get done 😁

Avatar

By baballuci 7 February 2017 13:30

Member · 14 comments

OK, i've convinced myself to take the plunge.

I see there is no stock available till the 13th. Is stock still limited or will there be plenty on hand if order later in the week?

Charlie.

Avatar

By dc42 7 February 2017 13:42

Administrator · 2,256 comments

There should be plenty of stock around that time because a new batch has been manufactured, but there might be a backlog of orders to work through.


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By nightpanda2810 13 March 2017 17:15

Member · 7 comments

Haven't ordered my board yet (still working on other parts of my D-Bot build) but I'm heavily leaning towards it.

Has this ability been implemented yet?

Avatar

By strips 14 March 2017 06:48

Member · 20 comments

Yes please. I would also see something like this. My reason for being able to sync the two Z-axis is because I can never know if one of my kids haven't been turning one of the Z axis 😯 Then how this is implemented, with dual Z-endstops (max/min) or using the Z-probe is not that important. I'll be ready to test this feature this week 😁

I have this setup my self and both Marlin (>=RC8) and Repetier development has this ability. I had mixed results, probably because of a combination of user error or bugs or both.

At the moment I have two IR slot switches at Z max that can easily be made to trigger at Z min as well. And then I have a IR probe by you David.


E3D Bigbox dual

Avatar

By nightpanda2810 17 March 2017 13:13

Member · 7 comments

My Duet is in the mail 😁

Any update on this?

Avatar

By dc42 17 March 2017 13:43

Administrator · 2,256 comments

I expect to implement multiple Z homing switches in firmware 1.19. In the meantime I think you can achieve the same thing as follows:

1. Put this command in config.g:

M584 X0 Y1 Z2:3 U3 E4

This assigns your second Z motor (connected to the E0 motor output) to both the Z and U axes.

2. In your homez.g file, do this:

M584 Z2
G1 S1 Zxxx Uxxx
G92 Zxxx
M584 Z2:3

This splits Z into the Z and U axes, homes them simultaneously, and then restores normal Z movement. Fill in the xxx values to suit your machine - see https://duet3d.com/wiki/Configuring_Rep … ming_files.

3. Change the Z homing section of homeall.g to do the same.

4. Connect the second Z endstop switch (the one you use for the U motor) to the E0 endstop input.

Test the above carefully, with low motor current and a hand on the power switch, in case I have forgotten something.


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By strips 17 March 2017 13:44

Member · 20 comments

Nice, will try if I can source another 12V step-down for my fans 😄 Then I'm ready to assemble the Bigbox.


E3D Bigbox dual

Avatar

By nightpanda2810 17 March 2017 14:36

Member · 7 comments

Awesome! Should have my board on Monday. Once I've got it all working normally I'll give this a shot and report back.

Thank you!

Avatar

By FailsafeJim 17 March 2017 17:27

Member · 23 comments
iDevelo wrote

A bit off topic but I also suggested to Tony about using Jira for tracking features and bugs which would make keeping track a breeze. It's FOC for open source and very powerful.

I love Atlassian tools, Jira makes it extremely easy to track bugs and features I have also used Confluence, Trello, and Hipchat. Great stuff for dev  and test teams.

Avatar

By FailsafeJim 17 March 2017 17:28

Member · 23 comments

my board will be here today , I had to order express shipping so I can have it for the weekend 😁

Avatar

By iDevelo 17 March 2017 17:58

Member · 182 comments
FailsafeJim wrote
iDevelo wrote

A bit off topic but I also suggested to Tony about using Jira for tracking features and bugs which would make keeping track a breeze. It's FOC for open source and very powerful.

I love Atlassian tools, Jira makes it extremely easy to track bugs and features I have also used Confluence, Trello, and Hipchat. Great stuff for dev  and test teams.

😁 wouldn't it be great to see a sprint for each release!

Avatar

By nightpanda2810 19 March 2017 06:31

Member · 7 comments

It works!

Disclaimer: I haven't printed with this yet. Still waiting on my bed.

Took some tweaking though.

I may or may not have had to make some of the changes I made. Someone else can confirm.

Added the following to config.g:

;DUAL Z
M584 X0 Y1 Z2:3 U3 E4

Wherever something for Z was defined, I added the same for U. (I'm unsure if this was necessary, as I did this during troubleshooting.)
Example:
This:  M350 X128 Y128 Z128 E16 I1 ; Configure microstepping with interpolation
Became: M350 X128 Y128 Z128 U128 E16 I1 ; Configure microstepping with interpolation

Added, as it was missing:
M569 P4 S1 ; Drive 4 goes forwards

Commented out the entirety of homez.g and added:
M584 Z2
G1 S1 Zxxx Uxxx
G92 Zxxx
M584 Z2:3

Pretty sure that was everything!

Avatar

By nightpanda2810 21 March 2017 23:06

Member · 7 comments

This me TWO days to figure out why my machine was grinding when homing. Then I realized on EVERY home move the right endstop hit before the left. If I moved the bed down 30MM or more this would happen.

While in this configuration, the motor hooked up to the original Z plug moves faster than the one in the U plug.

Any ideas on why this is happening?

Note: When tested with both motors in Z plug, homes and moves normally. I DID put the jumpers on as for a 1 Z motor hookup.

; Configuration file for Duet WiFi (firmware version 1.17)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool on Sat Mar 18 2017 20:32:40 GMT-0400 (Eastern Daylight Time)

; General preferences
M111 S0 ; Debugging off
G21 ; Work in millimetres
G90 ; Send absolute coordinates...
M83 ; ...but relative extruder moves
M555 P2 ; Set firmware compatibility to look like Marlin

;DUAL Z
M584 X0 Y1 Z2:3 U3 E4

M667 S1 ; Select CoreXY mode
M208 X0 Y0 Z0 U0S1 ; Set axis minima
M208 X300 Y300 Z320 U320 S0 ; Set axis maxima

; Endstops
M574 X1 Y2 Z1 U1 S1 ; Define active high microswitches
;M558 P1 X0 Y0 Z0 H5 F120 T9000 ; Set Z probe type to unmodulated, the axes for which it is used and the probe + travel speeds
;G31 P600 X0 Y0 Z0 ; Set Z probe trigger value, offset and trigger height
;M557 X15:285 Y15:285 S20 ; Define mesh grid

; Drives
M569 P0 S1 ; Drive 0 goes forwards
M569 P1 S0 ; Drive 1 goes forwards
M569 P2 S1 ; Drive 2 goes forwards
M569 P3 S1 ; Drive 3 goes forwards
M569 P4 S1 ; Drive 4 goes forwards

M350 X128 Y128 Z128 E16 I1 ; Configure microstepping with interpolation
M92 X800 Y800 Z3200 U3200 E138.4336 ; Set steps per mm
M566 X600 Y600 Z24 U24 E300 ; Set maximum instantaneous speed changes (mm/min)
M203 X30000 Y30000 Z300 U300 E1500 ; Set maximum speeds (mm/min)
M201 X2000 Y2000 Z100 U100 E4000 ; Set accelerations (mm/s^2)
M906 X800 Y800 Z800 U800 E800 I30 ; Set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout

; Heaters
M143 S260 ; Set maximum heater temperature to 260C
M305 P0 T100000 B4388 R4700 H0 L0 ; Set thermistor + ADC parameters for heater 0
M305 P1 T100000 B4138 C0 R4700 ; Set thermistor + ADC parameters for heater 1

; Tools
M563 P0 D0 H1 ; Define tool 0
G10 P0 X0 Y0 Z0 U0 ; Set tool 0 axis offsets
G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C

; Network
M550 PBlack Widow ; Set machine name
M552 P0.0.0.0 S1 ; Enable network and acquire dynamic address via DHCP

; Fans
M106 P0 S0.3 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
M106 P2 S1 I0 F500 H1 T45 ; Set fan 2 value, PWM signal inversion and frequency. Thermostatic control is turned on

; Custom settings are not configured
Avatar

By dc42 22 March 2017 08:39

Administrator · 2,256 comments

What do you have in your homez.g and homeall.g files? Perhaps you still have driver 3 assigned to Z as well as U when you are Z homing.

Edit: i just spotted that your M350 command doesn't set microstepping for the U axis.


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By nightpanda2810 22 March 2017 10:53

Member · 7 comments

I'm pretty sure I had it in there before I switched back to 1 Z for testing but I'll add back and test again tonight, just in case.

Here is homez.g. Homeall.g hasn't been updated yet.

;DUAL Z
M584 Z2
M854 U3
G1 S1 Z-320 U-320
G92 Z.04
M584 Z2:3
Avatar

By dc42 22 March 2017 17:20

Administrator · 2,256 comments

M854 in your homez.g file is not a valid gcode, I presume you meant M584.


Duet WiFi hardware designer and firmware engineer
http://www.escher3d.com
https://miscsolutions.wordpress.com

Avatar

By nightpanda2810 22 March 2017 19:06

Member · 7 comments

Good catch. I'll report back results.