Core XY with dual gantries using a duet wifi
-
I presume you would
partpark one gantry at one end of the Y axis while you use the other one. Just as on an IDEX machine you park one X carriage at the end of the X axis while you use the other one. The printable length of the Y axis for each head would be reduced by the amount of space taken up by one gantry, and the printable length accessible to both heads would be reduced by the amount of space taken up by both gantries. -
Yes, it would be interesting to support 2 moving gantries. In effect, each tool would be a separate CoreXY machine except that they would share the Z axis. We'd need to map the Y axis to the V axis on the second tool, and define the U and V positions as being defined by the U and V motors in the same way as X and Y. It doesn't sound difficult.
Yes, that is exactly what I'm thinking of! Time to start setting it up in cad then!
I still can't get my head around the mechanics of how this would work. I can't see how you could have the gantry's on the same plane without one interfering with the other. Unless, the gantry's are stacked one above the other? But then you'd have to somehow deploy one hot end to move in Z by the thickness of one of the gantry's. I just can't picture it in my mind - be interesting to see a design.
I am in fact working on a stacked gantry design but that's a just a way of trying to mount 3 extruders above a diamond hot end whilst keeping the footprint small and the Bowden tubes short. In this case, both gantries will be active at the same time and the second gantry would probably be passive - i.e. linked to the lower gantry but without any motors or belts of it's own.
Like dc42 said, I'm thinking of dual gantries. A bcn3d sigma for example uses one Y-gantry where two X-carriages live. Imagine instead two independent Y-gantries with one X-carriage each. Each gantry+carriage is controlled by its own set of steppers.
-
I presume you would
partpark one gantry at one end of the Y axis while you use the other one. Just as on an IDEX machine you park one X carriage at the end of the X axis while you use the other one. The printable length of the Y axis for each head would be reduced by the amount of space taken up by one gantry, and the printable length accessible to both heads would be reduced by the amount of space taken up by both gantries.Yes that was the idea, ie parking a complete gantry each end was forming in my mind. The original Dbot is a 300(x)x300(Y) corexy printer but its made from openbuilds 2040 so its easy to re-dimension (cut). My original idea was to build something big enough to print my own storm trooper armour parts in one piece (to save glueing) for that I need 500~550mm in one dimension of X or Y and 450~500mm high and then maybe cut it back to something more physically manageable later if need be.
Being lazy the 2040s come in 1500mm lengths so I just chopped up 2 lengths and ended up with 4 x 750mm pieces and did the same for Z and there is the frame https://ibb.co/dtCE35. I just added the HGR15 Linear rail on top yesterday giving an absolute max stoke of 670mm, or around 600mm~630mm NET stroke. So the linear rails came with x2 boggies each anyway so I have added these both to the top rail since two were spare. https://ibb.co/bKvqbQ The second gantry will cost me 75~100mm at most if I hand and overhand them so on Y so I think I'm still OK for 550mm, Worst case I have to buy a bit more 2040 (4 x 1m), about $40US worth, that is not going to break the bank.
So structurally I am set, linear rail I am set, next and biggest nightmare is somehow running 2 sets of belts, hello fusion 360 and some evenings not to hard, its the multi-dimensional curves that drive me nuts. The last part will be the firmware to allow it to work. Would there be anything else Ive missed?
As an aside unlike the wanhao pile of crap mainboard that lasted 3 months (that would have cost me $165US to replace and they are dying like flies due to bad relays) v the duetwifi at $200US has well proven itself, its quiet and the web gui is just nice.
-
Hello im also thinking of dual extruders
i like this ide
http://www.thingiverse.com/thing:1446731
that way you dont need extra steppers motors
only need a way to power 2 magnets in the tool change script
is there a way to send a signal to the magnet to turn on/offfor example the tool script will do something likt this
->move left turn of magnet #1 (park extruder1)
->move right turn on magnet #2 (get extruder2)
->printsee here
https://www.youtube.com/watch?v=FiTmRHkiEUgsounds simple …
-
@Mrblom, you still carry the weight/mass of both from the looks of it, the whole idea is to have as low mass as possible consistent with rigidity etc.
Steppers are very cheap, like $6~11US so to have 4 instead of 2 is no biggee. The real cost is the headache of the design and the mainboard and, well is it worth it?
My original idea was to have a quick swap hotend, I might still do that if I cant get the belt layout sane. A job to investigate over the winter (I am in New Zealand) me thinks.
Thanks for input all…..it looks interesting and possible.
-
hello
it will be only a lite extra mass
it will only carry one extruder at the time
the extra mass will be the center "item" where the belts are connectedcheck this video
https://www.youtube.com/watch?v=FiTmRHkiEUg -
I drew up the original top end in Fusion360 and the only way I can see to make it work is to swap out the 2040 rail for 2080 and the gantries will be tiered slightly, otherwise you just cant get the belts to pass through each other! No biggee and not that hard to print either.
-
hello
it will be only a lite extra mass
it will only carry one extruder at the time
the extra mass will be the center "item" where the belts are connectedcheck this video
https://www.youtube.com/watch?v=FiTmRHkiEUgYou are doing this on a Prusa i3 type printer? in effect the Z moves slowly so mass isnt an issue so for this design architecture having 2 hotends might be OK as Y is the bed.
Extra mass hardly seems small as it would be in the order of 300~500grammes, hardly small unless using a bowden which isnt any good for flexibles.
For a core XY on the other hand I am moving X and Y and rapidly not just X. Everything I read says keep mass so low I just dont see the point of putting 2 complete moving hotends on Y's gantry as Y's mass is then increased which is what I wish to avoid.
With 2 gantries I avoid carrying the 2nd hotend's mass around when I dont need it. In terms of complexity I need 2 more stepper motors and 2 sets of belts and idlers in the order of $30US. I will need to print 4 parts at about 7hours each part. Then the 2080 rail but since I need to buy more 2040 anyway its only a marginal cost to upgrade to the 2080 for me, I can then cut up the 2040 I have for where I am short.
-
Just a thought but 2080 is twice the weight of 2040. Can you not tier the gantries by changing the mount and still use 2040? I still can't picture how this is going to work so maybe you can't but it was just a thought..
-
The gantries are still 2040 they are not changed at all from the original design and yes they are tiered. Its the frame that needs to be 2080 as the double set of belts need to be stacked to pass each other. So this mass does not matter, except the printer's frame at 780mm(Y)x550mm(X)x760mm high is already getting big and heavy. I am trying to see if I can get 2060 to work by having steppers at opposite ends but I suspect not. I am drawing it up in Fusion360 and have the original in front of me….
-
Ah OK. Out of interest, what is the range of movement on each of the 3 axes for that frame size?
-
this is what i mean
https://www.youtube.com/watch?v=3UE9jU6RDP8
(the video is of a early "dry run")
have been running this for 2 weeks now
works grate and no extra mass also make it posible to add more tools -
Any updates on this?
Long term I'm thinking the project at work would be best served by adaptive slicing with a large nozzle for solid infill and a small nozzle for detail. While calibration is easier if the two nozzles are on one head I don't like the idea of a second nozzle dragging over the print. Perhaps I'm just being over cautious there.
-
Does the duetwifi support 2 completely separate XY - UV gantries yet?
I have the mechanical / structural bit done just sorted the belt alignments a bit.
https://www.thingiverse.com/thing:2557431
So I am now starting on the mechanical parts and other small stuff to support the cabling to the hotend.
If not yet I guess I can jsut run one gantry for now.
-
Yes it does, and has done so for about a year AFAIR.
-
…............and here is video of my Duet powered CoreXYUV homing. https://www.youtube.com/watch?v=ILRsEt4ExYM. Slightly different configuration as my axes are stacked one above the other but you get the idea.
-
My ones are stacked but by using 2080 and not 2 lots of 2040s…OMG that's huge is all I can say.
-
Could I see your config.g please?
-
Could I see your config.g please?
Here it is but you need to be aware of a couple of things because the printer configuration is probably a bit different to yours.
Basically I use Diamond hot ends which have have multiple inputs (3 or 5) and so I have 5 E3D Titan extruders. Because I wanted to keep the Bowden tubes tubes, the extruders are mounted on their own XY gantry which sits above the hot end gantry. For normal printing, the upper and lower motors are mapped together so as far as the Duet is concerned, it acts like a singly CoreXY with the U and V axes hidden. However, when the printer is turned off, it is possible to move each gantry independently so it would be easy for one to be offset from the other. For that reason, each gantry needs to be homed individually so that they are both correctly positioned in relation to each other. The way it works is that the upper motors are mapped to U and V for homing, then re-mapped to X and Y for printing and the U and V axes are hidden. I've included my homeall.g as well to illustrate.
Oh, and it's a Duet Ethernet, not WiFi.
; ******************* 5 TOOLCONFIGURATION ***********************
; General preferences
M111 S0 ; Debugging off
G21 ; Work in millimetres
G90 ; Send absolute coordinates…
M83 ; ...but relative extruder moves; Network
M550 PTallCoreXY ; Set machine name
M551 Preprap ; Machine password (used for FTP)
M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED ;MAC addressM552 S1 ;Turn networking on
M552 P0.0.0.0; acquire dynamic address via DHCP (or put IP address here )
;M552 P192.168.1.14 ;IP Address
;M554 P192.168.1.255 ;Gateway
;M553 P255.255.255.0 ; NetmaskM555 P2 ; Set firmware compatibility to look like Marlin
M669 K8 ; Select CoreXYUV mode
; Endstops
M574 Z0 S0 ; Define active low and unused microswitches
M574 X1 Y1 S1 ; Define active high microswitches
M574 U1 V1 S1 ; active high switches for when temporary U and V axes are employed during homing the upper XY
M558 P1 X0 Y0 Z1 F180 T6000 I0 ; use this for metrol Switch
;M558 P1 X0 Y0 Z1 H5 F240 T6000 ; Set Z probe type to modulated, the axes for which it is used and the probe + travel speeds
;G31 P500 X0 Y0 Z2.2 ; Set Z probe trigger value, offset and trigger height.
G31 P700 X0 Y0 Z-0.5; Use this for Metrol switch. Use less negative to move closer to bed, more to move further away.; Drives
M584 X0:3 Y1:4 Z2 U10 V11 E5:6:7:8:9 P3; U and V are additional axes only for homing. Made invisible by using P3
;M584 X0:3 Y1:4 Z2 E5:6:7:8:9
M569 P0 S0 ; Drive 0 goes backwards - Lower left XY
M569 P1 S0 ; Drive 1 goes backwards - Lower Right XY
M569 P2 S1 ; Drive 2 goes forwards - Z
M569 P3 S0 ; Drive 3 goes backwards - Upper left XY
M569 P4 S0 ; Drive 4 goes backwards - Upper right XY
M569 P5 S0 ; Drive 5 goes backwards - Extruder 0
M569 P6 S0 ; Drive 6 goes backwards - Extruder 1
M569 P7 S0 ; Drive 7 goes backwards - Extruder 2
M569 P8 S0 ; Drive 8 goes backwards - Extruder 3
M569 P9 S0 ; Drive 9 goes backwards - Extruder 4;M350 X16 X16 X16 X16 X16 X16 I0 ; Configure microstepping without interpolation - this is what the configuator generated and is wrong
M350 X16 Y16 U16 V16 Z16 E16:16:16:16:16 I1; Configure XYUVZ and 3 extruders microstepping with interpolation
M92 X80 Y80 U80 V80 Z3200 E393:397:403:400:401 ; Set steps per mm
M566 X600 Y600 U600 V600 Z100 E600:600:600:600:600 ; Set maximum instantaneous speed changes (mm/min)
M203 X50000 Y35000 U50000 V35000 Z600 E1800:1800:1800:1800:1800 ; Set maximum speeds (mm/min)
M201 X1000 Y1000 U1000 V1000 Z100 E1000:1000:1000:1000:1000 ; Set accelerations (mm/s^2)
M204 P500 T1000; set print accel to 500, non print to 1000
M906 X1800 Y1800 U1800 V1800 Z1800 E600:600:600:600:600 I20 ; Set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout;axis limits - must come after U ad V have been defined
M208 X0 Y0 U0 V0 Z0 S1 ; Set axis minima
M208 X360 Y364 U360 V364 Z760 S0 ; Set axis maxima; Heaters
M143 S280 ; Set maximum hot end heater temperature to 280C
M143 H0 S100 ; Set max bed temp to 100 deg C
M570 S420 ; Set maximum heating time to 420 secs (7 minutes)
M570 H1 P30 T10 ; set time anomoly to 30 secs and temp deiviation to 10 degrees
;M305 P0 T100000 B3988 C0 R4700 L0 H0 ; Set thermistor + ADC parameters for heater 0
M305 P1 T100000 B4725 C7.06e-8 R4700 L0 H0 ; Set thermistor + ADC parameters for heater 1 Hot end
M305 P0 X200 ; Set Bed to use PT 100 (1st channel is 200)
;M305 P1 X201 ;Set Hot end to use PT 100 (2nd channel is 201)
M305 P103 X2 S"Duet\Duex" T100000 B4725 R4700; Set thermistor + ADC parameters for heater 2 - this is used to measure stepper chip temperature on Duet
M305 P104 X3 S"Z Stepper" T100000 B3950 R4700; Set thermistor + ADC parameters for heater 3 - this is used to measure stepper chip temperature on Duex5
M305 P105 X4 S"LeftLowerXYStepper" T100000 B3950 R4700; Set thermistor + ADC parameters for heater 4 - this is used to measure left XY stepper temperature
M305 P106 X5 S"RightLowerXYStepper" T100000 B3950 R4700; Set thermistor + ADC parameters for heater 5 - this is used to measure right XY stepper temperature
M305 P107 X6 S"LeftUpperXYStepper" T100000 B3950 R4700; Set thermistor + ADC parameters for heater 6- this is used to measure right XY stepper temperature
M305 P108 X7 S"RightUpperXYStepper" T100000 B3950 R4700; Set thermistor + ADC parameters for heater 7 - this is used to measure right XY stepper temperature; use the following with 0.5mm diamond hot end and new heater cartridge
;M307 H1 A645.7 C190.4 D6.4 S1.00 B0; Diamond 5 colour with 80W heater. NB COULD REACH 647 degC ! ! Auto tune 270717
;M307 H1 A350.4 C194.8 D5.2 S0.6 ; Diamond 5 colour 80W heater PWM set to 0.6 - no warning at this.
;M307 H1 A339.4 C192.1 D4.0 S1.00 B0 ; Diamond 5 colour 40W heater tuned 17-08-17
M307 H1 A241.6 C163.8 D4.4 S1.00; Diamond 5 colour 40W heater 60mm 27cfm fan;M307 H0 A198.7 C1205.5 D30 B0; Derived from auto tune 14/09/16 M303 H0 P0.5 S140
; dead time was calculated at 4.8 seconds but gves a slow heater fault error.
M307 H0 A283.6 C2745.9 D16.4 S1.00 B0 ; Auto tuned 17-08-2017 M303 H0 S60; Tools
M563 P0 D0:1:2:3:4 H1 ; Define tool 0
G10 P0 X0 Y0 ; Set tool 0 axis offsets
G10 P0 R0 S0 ; Set initial tool 0 active and standby temperatures to 0C
M568 P0 S1 ; Enable mixing for tool 0
M567 P0 E1.00:0.00:0.00:0.00:0.00 ; Set mixing ratios for tool 0
M563 P1 D0:1:2:3:4 H1 ; Define tool 1
G10 P1 X0 Y0 ; Set tool 1 axis offsets
G10 P1 R0 S0 ; Set initial tool 1 active and standby temperatures to 0C
M568 P1 S1 ; Enable mixing for tool 1
M567 P1 E0.00:1.00:0.00:0.00:0.00 ; Set mixing ratios for tool 1
M563 P2 D0:1:2:3:4 H1 ; Define tool 2
G10 P2 X0 Y0 ; Set tool 2 axis offsets
G10 P2 R0 S0 ; Set initial tool 2 active and standby temperatures to 0C
M568 P2 S1 ; Enable mixing for tool 2
M567 P2 E0.00:0.00:1.00:0.00:0.00 ; Set mixing ratios for tool 2
M563 P3 D0:1:2:3:4 H1 ; Define tool 3
G10 P3 X0 Y0 ; Set tool 3 axis offsets
G10 P3 R0 S0 ; Set initial tool 3 active and standby temperatures to 0C
M568 P3 S1 ; Enable mixing for tool 3
M567 P3 E0.00:0.00:0.00:1.00:0.00 ; Set mixing ratios for tool 3
M563 P4 D0:1:2:3:4 H1 ; Define tool 4
G10 P4 X0 Y0 ; Set tool 3 axis offsets
G10 P4 R0 S0 ; Set initial tool 3 active and standby temperatures to 0C
M568 P4 S1 ; Enable mixing for tool 3
M567 P4 E0.00:0.00:0.00:0.00:1.00 ; Set mixing ratios for tool 4
M563 P5 D0:1:2:3:4 H1 ; Define tool 5
G10 P5 X0 Y0 ; Set tool 3 axis offsets
G10 P5 R0 S0 ; Set initial tool 3 active and standby temperatures to 0C
M568 P5 S1 ; Enable mixing for tool 3
M567 P5 E0.20:0.20:0.20:0.20:0.20 ; Set mixing ratios for tool 5M912 P0 S-9.1 ; calibration for cpu temperature reading
T0 ; Select tool0
; Fans
M106 P0 S0.0 I0 F10 H-1 ; Set print cooling fan (3) value, PWM signal inversion (off)and frequency (10 hz). Thermostatic control is turned off
M106 P1 S255 I0 L125 F250 H1 T60:140; Set hot end fan (1) value, PWM signal inversion(off) and frequency. Thermostatic control is turned on
M106 P2 S255 I0 F250 H103 T40:50; Set fan 2 value (Duet and Duex fans), PWM signal inversion and frequency. Thermostatic control is turned on (P106 virtual)
M106 P3 S255 I0 F250 H104 T40:50; Set fan 3 (Z Stepper fan) to work thermostatically on P104 virtual temp
M106 P4 S255 I0 F250 H105 T40:50; Set fan 4 (Left XY stepper fan) to work thermostatically on P105 virtual temp
M106 P5 S255 I0 F250 H106 T40:50; Set fan 5 (Right XY stepper fan) to work thermostatically on P106 virtual temp
M106 P6 S127 I0 F250 H107 T40:50; Set fan 6 (Left Upper XY stepper fan) to work thermostatically on P107 virtual temp
M106 P7 S127 I0 F250 H108 T40:50; Set fan 7 (Right XY stepper fan) to work thermostatically on P108 virtual temp; Custom settings
M207 S5.0 R0 F4800 T3600 ;set firmware retraction S=amount in mm, F=Feed rate mm/min(/60 to get mm/sec), R = additional length, Z = additional Z lift in mm
M572 D0 S0.00 ; set pressure advance coefficient
M572 D1 S0.00
M572 D2 S0.00
M572 D3 S0.00
M572 D4 S0.00; Emergency stops
M581 E2 S1 T0 C0 ; E0 is emergency stop button, S1 = rising edge, T0 is emergency stop like M112, C0 means any time
M581 E3 S1 T0 C0 ; E1 is axes limits; homeall.g
; called to home all axes; start by warming the hot end so that any oozed filament is molten
TO; select a tool - any one will do
M104 S140; heat to 140 but don't waitM584 X0 U3 Y1 V4 P5; temporarily map drives to U and V axes - have to map both axes even though only U is being used due to both motors being employed per axis
M906 X400 U400 Y400 V400 Z1200 ; reduce motor currents
G91 ; set to use relative coordinates
G1 Z5 F600 ; move bed down 5 mm
G1 X-380 U-380 Y-380 V-380 F4800 S1; move all 4 axes fairly quickly until one or other triggers a switch
G1 X-380 U-380 F4800 S1; now move just X and U fairly quickly left until one or other triggers a switch
G1 X-380 S1; course home X
G1 U-380 S1; course home UG1 X10 U10 F600 ; Go back a few mm
G1 X-380 U-380 F360 S1; Move slowly to X and U axis endstops once more and stop when one triggers
G1 X-380 F360 S1 ; fine home X
G1 U-380 F360 S1 ; fine home UG1 Y-380 V-380 F4800 S1; now move Y and V fairly quickly left until one or other triggers a switch
G1 Y-380 S1; course home Y
G1 V-380 S1; course home VG1 Y10 V10 F600; Go back a few mm
G1 Y-380 V-380 F360 S1; Move slowly to Y and V axis endstops once more and stop when one triggers
G1 Y-380 F360 S1 ; fine home Y
G1 V-380 F360 S1 ; fine home V;M584 X0:3 Y1:4 ; put motor mapping back to normal so that X uses drives 0 and 3, Y uses 1 and 4
M584 X0:3 Y1:4 Z2 U10 V11 E5:6:7:8:9 P3;G90; set to absolute coordinates
G1 X180 Y180 F12000; move to more or less the centre of the bed
M109 S140 ; continue heating bed to 140 but this time wait
G30 ; Home Z
G91 ;relative
G1 Z5 F300; Lower bed 5mm
G90 ; back to absoluteM906 X1800 U1800 Y1800 V1800 Z1800 ; set motor currents back to defaults
M104 S0; set hot end temp back to zero