Welcome! Log In Create A New Profile

Advanced

Dual Z motor configuration

Posted by SupraGuy 
Dual Z motor configuration
August 29, 2018 01:56PM
So just making sure that I've got a handle on this.

For this machine I will only have the single extruder, and 2 Z motors so I would like to use the (nominal) E1 drive for the second Z motor, instead of running them in series off of the single driver. If I'm reading this right, I need:
M584 Z2:4

Do I need to specify X0 Y1 E3 or will those be okay since they're default? I understand the M584 command must precede the M671 command in config.g.

My hardware is configured for the 2 Z motors 352mm separated. My nozzle is offset by +28mm from the center of this, so it is centered between the 2 at 153mm, and I want a printable width of 220mm. This puts the X coordinates of the drive centres at -43 and 309mm. Their Y offset is (Or had better be!) zero. Do I need to specify a Y axis location in my M671 Gcode configuration? The Duet wiki and the reprap gcode wiki both give examples using 3 Z motors which have a nonzero Y offset.

Example:
M671 X-43.0:309.0

Or should I just throw in an arbitrary Y coordinate (Like the centre of the bed)

Example:
M671 X-43.0:309:0 Y137.5:137.5

I'm under the assumption that these will go in the config.g file

For bed leveling, I assume that I can make it so that there will need to be zero Z compensation needed (At least at the points where I probe to adjust the Z motors) but I will still want to allow for a possible tilt along the Y axis, or a sag either in the bed or the rails. Bed leveling is still kind of new to me, so I'm less sure how this works.

Can I have the printer adjust the Z level without doing a complete probe map? say when it homes the Z axis? I see in the Duet wiki there's a section defining 3 probe points near the lead screws, and the last G30 has an S3 parameter to it, which doesn't seem to be documented in the Gcode wiki, but the comment seems to indicate that it adjusts the motors. Will it adjust the Z height accordingly if it moves? (I assume so.) So can this go in the homez.g or homeall.g file?

My understanding is that bed.g is the code routine used to update the bed map (Say from a G29 command) so I assume that I can start by determining/adjusting any tilt from the 2 Z motors, and then go on to do for example a mesh level of the whole bed. Does G29 only call the bed.g file, or will it home the other axes first?

I figure I might as well ask, so that I can get the most expedient/ efficient configuration built for my machine.

Edited 1 time(s). Last edit at 08/29/2018 01:58PM by SupraGuy.


MBot3D Printer
MakerBot clone Kit from Amazon
Added heated bed.

Leadscrew self-built printer (in progress)
Duet Wifi, Precision Piezo parts
Re: Dual Z motor configuration
August 30, 2018 04:01AM
Quote
SupraGuy
So just making sure that I've got a handle on this.

For this machine I will only have the single extruder, and 2 Z motors so I would like to use the (nominal) E1 drive for the second Z motor, instead of running them in series off of the single driver. If I'm reading this right, I need:
M584 Z2:4

Do I need to specify X0 Y1 E3 or will those be okay since they're default? I understand the M584 command must precede the M671 command in config.g.

You need to add E3 because the default is E3:4.

Quote
SupraGuy
My hardware is configured for the 2 Z motors 352mm separated. My nozzle is offset by +28mm from the center of this, so it is centered between the 2 at 153mm, and I want a printable width of 220mm. This puts the X coordinates of the drive centres at -43 and 309mm. Their Y offset is (Or had better be!) zero. Do I need to specify a Y axis location in my M671 Gcode configuration? The Duet wiki and the reprap gcode wiki both give examples using 3 Z motors which have a nonzero Y offset.

Example:
M671 X-43.0:309.0

Or should I just throw in an arbitrary Y coordinate (Like the centre of the bed)

Example:
M671 X-43.0:309:0 Y137.5:137.5

Use the same Y coordinates that you use for bed probing when levelling. I suggest the middle of the Y axis in case you have any Y axis twist.

Quote
SupraGuy
I'm under the assumption that these will go in the config.g file

Correct.

Quote
SupraGuy
For bed leveling, I assume that I can make it so that there will need to be zero Z compensation needed (At least at the points where I probe to adjust the Z motors) but I will still want to allow for a possible tilt along the Y axis, or a sag either in the bed or the rails. Bed leveling is still kind of new to me, so I'm less sure how this works.

Correct.

Quote
SupraGuy
Can I have the printer adjust the Z level without doing a complete probe map? say when it homes the Z axis? I see in the Duet wiki there's a section defining 3 probe points near the lead screws, and the last G30 has an S3 parameter to it, which doesn't seem to be documented in the Gcode wiki, but the comment seems to indicate that it adjusts the motors. Will it adjust the Z height accordingly if it moves? (I assume so.) So can this go in the homez.g or homeall.g file?

Yes, you can use those G30 commands in homeall.g and/or homez.g if you like; or you can put them in bed.g and then use G31 at the end of homeall.g and/or homez.g. You will need S2 on the last G30 command instead of S3. You may need to run the G30 sequence (or run G31 to call bed.g) more than once to reduce the errors to acceptable amounts, because the levelling model assumes perfectly gimballed joints between the leadscrews and the gantry but you won't have those.

Quote
SupraGuy
My understanding is that bed.g is the code routine used to update the bed map (Say from a G29 command) so I assume that I can start by determining/adjusting any tilt from the 2 Z motors, and then go on to do for example a mesh level of the whole bed. Does G29 only call the bed.g file, or will it home the other axes first?

G31 is the command the invokes the bed.g file. G29 runs mesh bed probing.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Dual Z motor configuration
August 30, 2018 11:43AM
Quote
dc42
Quote
SupraGuy
Do I need to specify X0 Y1 E3 or will those be okay since they're default? I understand the M584 command must precede the M671 command in config.g.
You need to add E3 because the default is E3:4.
I see. Perfect, that's exactly the info I was looking for.
Quote
dc42
Quote
SupraGuy
Can I have the printer adjust the Z level without doing a complete probe map? say when it homes the Z axis? I see in the Duet wiki there's a section defining 3 probe points near the lead screws, and the last G30 has an S3 parameter to it, which doesn't seem to be documented in the Gcode wiki, but the comment seems to indicate that it adjusts the motors. Will it adjust the Z height accordingly if it moves? (I assume so.) So can this go in the homez.g or homeall.g file?
Yes, you can use those G30 commands in homeall.g and/or homez.g if you like; or you can put them in bed.g and then use G31 at the end of homeall.g and/or homez.g. You will need S2 on the last G30 command instead of S3. You may need to run the G30 sequence (or run G31 to call bed.g) more than once to reduce the errors to acceptable amounts, because the levelling model assumes perfectly gimballed joints between the leadscrews and the gantry but you won't have those.
Well, I"m hoping that the adjustments needed won't be large ones, but I'll keep that in mind.
Quote
dc42
Quote
SupraGuy
My understanding is that bed.g is the code routine used to update the bed map (Say from a G29 command) so I assume that I can start by determining/adjusting any tilt from the 2 Z motors, and then go on to do for example a mesh level of the whole bed. Does G29 only call the bed.g file, or will it home the other axes first?
G31 is the command the invokes the bed.g file. G29 runs mesh bed probing.
I see. As I say, bed leveling is a new aspect of 3D printing for me. I'm still doing a bunch of reading on how this all goes together.


MBot3D Printer
MakerBot clone Kit from Amazon
Added heated bed.

Leadscrew self-built printer (in progress)
Duet Wifi, Precision Piezo parts
Re: Dual Z motor configuration
August 30, 2018 04:49PM
So, my bed.g file as follows:
; bed.g
; called to perform automatic bed compensation via G32
;
; generated by RepRapFirmware Configuration Tool on Tue Jun 26 2018 20:51:43 GMT-0600 (Mountain Daylight Time)
; Added DMG 08/30/2018 Leel 2 Z motors before mapping bed
G30 P0 X200.0 Y137.5 Z-99999 ; probe near right-hand leadscrew
G30 P1 X10 Y137.5 Z-99999 S2 ; probe near left-hand leadscrew and calibrate 2 motors
; Probe the bed at 3 points (Right on top of the piezo sensors for now, will change later)
M561 ; clear any bed transform
G30 P0 X35.0 Y137.5 H0 Z-99999
G30 P1 X185.0 Y82.5 H0 Z-99999
G30 P2 X185.0 Y192.5 H0 Z-99999 S

So the idea is supposed to be to fix the Z motors before mapping the bed. I'll probably do a full mesh level instead, but initially, these 3 points (right on top of the Piezo sensors) is what I want for testing. I expect the probe to go tap, tap (right, then left), and adjust the left motor, then probe the 3 locations where the sensors are.

config.g:
; Configuration file for Duet WiFi (firmware version 1.20 or newer)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool on Tue Jun 26 2018 20:51:43 GMT-0600 (Mountain Daylight Time)
; Modified by DMG 08/30/2018

; General preferences
G90                              ; Send absolute coordinates...
M83                              ; ...but relative extruder moves

; Custom configuration
M584 Z2:4 E3                     ; Set Z motors on drives 2 and 4 DMG 08/30/2018
M671 X-43.0:309:0 Y137.5:137.5   ; Set the Z motor relative locations DMG 08/30/2018

; Network
M550 PDMG3D01                    ; Set machine name
M552 S1                          ; Enable network
M587 S"FASTNFURIOUSWIFI" P"SupraGuy''sSuperSecurePassword" ; Configure access point. You can delete this line once connected
M586 P0 S1                       ; Enable HTTP
M586 P1 S1                       ; Enable FTP
M586 P2 S0                       ; Disable Telnet

; Drives
M569 P0 S1                       ; Drive 0 goes forwards
M569 P1 S1                       ; Drive 1 goes forwards
M569 P2 S1                       ; Drive 2 goes forwards
M569 P3 S1                       ; Drive 3 goes forwards
; DMG 08/30/2018 I think the following line need to be configured
M569 P4 S1                       ; Drive 4 goes forwards
M350 X16 Y16 Z16 E16 I1    ; Configure microstepping with interpolation
M92 X400 Y400 Z4000 E92.6        ; Set steps per mm
M566 X900 Y900 Z12 E120          ; Set maximum instantaneous speed changes (mm/min)
M203 X6000 Y6000 Z180 E1200      ; Set maximum speeds (mm/min)
M201 X500 Y20 Z250 E250          ; 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 X0 Y0 Z0 S1                 ; Set axis minima
M208 X220 Y275 Z190 S0           ; Set axis maxima

; Endstops
M574 X2 Y2 S0                      ; Set active low endstops

; Z-Probe
M574 Z1 S2                       ; Set endstops controlled by probe
M558 P1 H5 F120 T6000            ; Set Z probe type to unmodulated and the dive height + speeds
G31 P500 X0 Y0 Z2.5              ; Set Z probe trigger value, offset and trigger height
M557 X15:205 Y15:205 S20         ; Define mesh grid

; 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 B4138 C0 R4700   ; Set thermistor + ADC parameters for heater 1
M143 H1 S280                     ; Set temperature limit for heater 1 to 280C

; 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

; Tools
M563 P0 D0 H1                    ; 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

; Automatic saving after power loss is not enabled

; Custom settings are not configured
Wifi SSID and Password have been changed to protect the innocent. winking smiley

So some questions here, since the RRF configuration doesn't have a setting for more than one Z motor...

In the drives and steps/mm section (I set up P4 because that seems obvious to me) do I need to set up steps/mm for both Z drives? Configure microstepping? Set Currents? Basically do I need to add something for the second Z motor?

Also, I'm making an assumption here, but I'm assuming that it will know that Z0 is the one at X=-43.0 and that Z1 is the one at X=309.

homeall.g:
; homeall.g
; called to home all axes
;
; generated by RepRapFirmware Configuration Tool on Thu Aug 30 2018 14:11:29 GMT-0600 (Mountain Daylight Time)
G91                  ; relative positioning
G1 Z5 F6000 S2       ; lift Z relative to current position
G1 S1 X225 Y280 F900 ; move quickly to X and Y axis endstops and stop there (first pass)
G1 X-5 Y-5 F6000     ; go back a few mm
G1 S1 X225 Y280 F240 ; move slowly to X and Y axis endstops once more (second pass)
G90                  ; absolute positioning
; Added DMG 08/30/2018 Level 2 motors to home Z
G30 P0 X200.0 Y137.5 Z-99999 ; probe near right-hand leadscrew
G30 P1 X10 Y137.5 Z-99999 S2 ; probe near left-hand leadscrew and calibrate 2 motors

; Uncomment the following lines to lift Z after probing
G91                 ; relative positioning
G1 S2 Z5 F100       ; lift Z relative to current position
G90                 ; absolute positioning

And homez.g:
; homez.g
; called to home the Z axis
;
; generated by RepRapFirmware Configuration Tool on Tue Jun 26 2018 20:51:43 GMT-0600 (Mountain Daylight Time)
G91              ; relative positioning
G1 Z5 F6000 S2   ; lift Z relative to current position
G90              ; absolute positioning
; Added DMG 08/30/2018 Level 2 motors to home Z
G30 P0 X200.0 Y137.5 Z-99999 ; probe near right-hand leadscrew
G30 P1 X10 Y137.5 Z-99999 S2 ; probe near left-hand leadscrew and calibrate 2 motors

; Uncomment the following lines to lift Z after probing
G91             ; relative positioning
G1 Z5 F100 S2   ; lift Z relative to current position
G90             ; absolute positioning


MBot3D Printer
MakerBot clone Kit from Amazon
Added heated bed.

Leadscrew self-built printer (in progress)
Duet Wifi, Precision Piezo parts
Re: Dual Z motor configuration
August 30, 2018 05:06PM
Quote
SupraGuy
So, my bed.g file as follows:
; bed.g
; called to perform automatic bed compensation via G32
;
; generated by RepRapFirmware Configuration Tool on Tue Jun 26 2018 20:51:43 GMT-0600 (Mountain Daylight Time)
; Added DMG 08/30/2018 Leel 2 Z motors before mapping bed
G30 P0 X200.0 Y137.5 Z-99999 ; probe near right-hand leadscrew
G30 P1 X10 Y137.5 Z-99999 S2 ; probe near left-hand leadscrew and calibrate 2 motors
; Probe the bed at 3 points (Right on top of the piezo sensors for now, will change later)
M561 ; clear any bed transform
G30 P0 X35.0 Y137.5 H0 Z-99999
G30 P1 X185.0 Y82.5 H0 Z-99999
G30 P2 X185.0 Y192.5 H0 Z-99999 S

So the idea is supposed to be to fix the Z motors before mapping the bed. I'll probably do a full mesh level instead, but initially, these 3 points (right on top of the Piezo sensors) is what I want for testing. I expect the probe to go tap, tap (right, then left), and adjust the left motor, then probe the 3 locations where the sensors are.

The first two G30 commands are fine, they adjust the Z motors individually. You may need to repeat them if a single iteration of adjustment doesn't reduce the errors low enough.

The M561 and remaining G30 commands are old-style 3-point bed compensation. We recommend that you use G29 mesh bed compensation these days.

Quote
SupraGuy

So some questions here, since the RRF configuration doesn't have a setting for more than one Z motor...

In the drives and steps/mm section (I set up P4 because that seems obvious to me) do I need to set up steps/mm for both Z drives? Configure microstepping? Set Currents? Basically do I need to add something for the second Z motor?

No, the single values you specify in those commands will be applied to all Z motors, as long as those commands are after the M584 command.

Quote
SupraGuy
Also, I'm making an assumption here, but I'm assuming that it will know that Z0 is the one at X=-43.0 and that Z1 is the one at X=309.

You need to list the coordinates in M671 in the same order that you list the driver numbers in M584.



Large delta printer [miscsolutions.wordpress.com], E3D tool changer, Robotdigg SCARA printer, Crane Quad and Ormerod

Disclosure: I design Duet electronics and work on RepRapFirmware, [duet3d.com].
Re: Dual Z motor configuration
August 30, 2018 05:18PM
Perfect, thanks!

Just means that I need to plug in the X=-43 motor into the Z (drive 2) and the X=309 motor into the E1 (drive 4) plugs, as I have them configured here.

So long as my ability to mix up left and right doesn't go into overdrive, as I just noticed that I reversed the direction of where my piezo sensors are actually located. (2 at X=35, and the one at X=185)

So I think that I have the system configuration ready. Now I've just to to comb through all of the wires and get them connected to the board. Mechanical build of the printer is finished.


MBot3D Printer
MakerBot clone Kit from Amazon
Added heated bed.

Leadscrew self-built printer (in progress)
Duet Wifi, Precision Piezo parts
Sorry, only registered users may post in this forum.

Click here to login