Duplicate Extruder Signal



  • Hey guys,

    I would like to use the second extruder stepper driver to send a duplicate signal from the first extruder to an additional one to reduce the tension/influence on my x&y drives (it's a direct drive extruder). So this would be like a combo bowden-dd setup. Can this be done with a Deut2 Wifi?

    Thanks!
    Matt



  • @matteo2u You wouldn't be the first to use a sort of push-pull extruder configuration which is what I think you want to do.

    The way to do is firstly configure both extruder drives like so
    M584 En:n+1 (where n is the driver number)

    These will then become extruder 0 and extruder 1. You need to set micro-stepping, steps per mm, instantaneous speed, acceleration, motor currents for the second extruder.

    Then configure a tool to use both extruders. e.g.
    M563 P0 D0:1 H1 ; Define tool 0 to use both extruders 0 and 1, and heater1

    then you set the mixing ratio for both extruders to 1. Like so
    M567 P0 E1.00:1.00 ; set mixing ratio for tool 0 so that both extruders feed 100%.

    HTH



  • Thanks Ian. I will give this a try! I take it this gcode is to be implemented in the config.g file, or is it better suited to a macro on startup (which I have never done before). I'm a noob.

    Thanks again!
    Matt



  • @matteo2u short answer: yes that should be in config.g

    Long answer...

    Generally anything that is a machine setting and doesn't really change should be in config (e.g. motor mapping in normal circumstances, geometry type etc), anything that you might want to run/change any time, would be a macro (e.g. I have a macro that runs homing then bed autolevelling 3 times which I call before I print).

    You can put some machine settings in a macro that gets called from the config.g file like you said. The advantage if this is that you can recall the macro at any point in time to reset it if things have changed. I do this for motor currents and acceleration as I drop them during homing, then can reset them and still only have one place if I change things as I tune my printer.
    Having said that, the disadvantage is that it becomes a lot more difficult to work out what is going on if things go wrong with different macros/files being called from different places.
    Macros are powerful tools to use (and aren't that difficult when you get into them), but there's no point adding complexity unless you need/want it 🙂



  • @matteo2u In addition to what @engikeneer has said, the easiest way is to edit your existing config.g file because all the commands related to speed, acceleration, steps per mm etc, already exist. So all you have to do is add the second extruder motor onto the end of those lines. You'll already have a tool definition, so all you to do is add the colon D1 after the existing D0. The only new line you have to create is to set the mixing ratio - everything else is just editing what already exists.



  • Thanks for the great help guys. I have yet to implement this, but thinking ahead, how might I implement stall detection on the new pusher stepper? the idea being that if the roll is cross wound or twisted or something, the print could pause until it could be manually cleared. This has happened to me a number of times and part of why I want to implement the push-pull.



  • @matteo2u IMO, it's just better to never let that happen. Just design a filament spool holder that allows the reel to rotate freely, and when you unload filament, never let go of the end until you can tuck it into the holes provided for that purpose, or tape it to the side.



  • @matteo2u alternative suggestion and possibly off topic, but what about going for a Magnetic Filament Monitor? I've got one on my machine and its been pretty good at detecting lost extruder steps and filament out scenarios.
    Think there might be issues with stock at the moment, but with any luck the Duet guys will have them back soon...



  • @deckingman

    Here is my config.g after making these edits you've suggested. I need to calibrate for the differences in the stepper and gear wheel of the new push extruder (not sure yet how to do that), but i just duplicated the E0 values to start. I did not have an M584 before, so I added it also. Anything look bad?

    Also, this may or may not make any difference, but i have not got my M911 Automatic power loss state saving working yet, and neither of my tool-end fans work (hot-end nor part-cooling, lesser problems to solve later).

    Thanks again for all the help!
    Matt

    ; Configuration file for Duet WiFi (firmware version 1.21)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v2 on Sun Jul 21 2019 14:27:44 GMT-0700 (Pacific Daylight Time)

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

    ; Network
    M550 P"Stevens3D1" ; Set machine name
    M552 S1 ; Enable network
    ;*** Access point is configured manually via M587
    M586 P0 S1 ; Enable HTTP
    M586 P1 S0 ; Disable FTP
    M586 P2 S0 ; Disable Telnet

    ; Drives
    M584 E0:1 ;duplicates extruder drive
    M569 P0 S0 ; Physical drive 0 goes reverse
    M569 P1 S0 ; Physical drive 1 goes reverse
    M569 P2 S1 ; Physical drive 2 goes forwards
    M569 P3 S1 ; Physical drive 3 goes forwards
    M350 X16 Y16 Z16 E16:16 I1 ; Configure microstepping with interpolation
    M92 X80.40 Y80.40 Z800.00 E94.75:94.75 ; Set steps per mm
    M566 X900.00 Y900.00 Z12.00 E120.00:120.00 ; Set maximum instantaneous speed changes (mm/min)
    M203 X6000.00 Y6000.00 Z180.00 E1200.00:1200.00 ; Set maximum speeds (mm/min)
    M201 X500.00 Y500.00 Z20.00 E250.00:250.00 ; Set accelerations (mm/s^2)
    M906 X1000.00 Y1000.00 Z1000.00 E1000.00:1000.00 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 X200 Y200 Z175 S0 ; Set axis maxima

    ; Endstops
    M574 X1 Y1 Z1 S0 ; Set active low and disabled endstops

    ; Filament Runout
    M591 D0 P1 C3 S1

    ; Z-Probe
    M558 P0 H5 F120 T6000 ; Disable Z probe but set dive height, probe speed and travel speed
    M557 X15:195 Y15:195 S40 ; Define mesh grid

    ; Heaters
    M307 H0 B0 S1.00 ; Disable bang-bang mode for the bed heater and set PWM limit
    M305 P0 T100000 B4138 R4700 ; Set thermistor + ADC parameters for heater 0
    M143 H0 S120 ; Set temperature limit for heater 0 to 120C
    M305 P1 X200 ; Configure PT100 for heater 1
    M143 H1 S260 ; Set temperature limit for heater 1 to 260C

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

    ; Tools
    M563 P0 D0:1 H1 ; Define tool 0 to use both extruders 0 and 1, and heater1
    M567 P0 E1.00:1.00 ; set mixing ratio for tool 0 so that both extruders feed 100%
    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 power saving
    M911 S22 R50 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; Set voltage thresholds and actions to run on power loss

    ; Custom settings are not configured



  • @matteo2u
    Yes that isn't going to work because you'd assigned the two extruders to the first drives which, by default are the X and Y axes respectively. So you have a conflict.

    I'm a bit surprised that you didn't have an M584 but that's possibly a default position. Personally, I never like to trust in defaults to never change, so I always like to explicitly define them. For that reason, I would change M584 to this:
    M584 X0 Y1 Z2 E3:4 (assuming that's how the stepper motors are connected to drivers)

    The next thing you need to do is set the second extruder direction with an M569
    So add M569 P4 S1 - assuming the second extruder is connected to driver 4 - and you might need to change the "S1" to "S0" if it turns the wrong way.

    Other than that, I didn't see anything that was glaringly wrong.

    Edit. One thing that often confuses people is the extruder number vs driver number. Your configuration is fine in that respect (well it will be after you change M584) but for future reference, when you have multiple extruder motors, the physical driver is the one that you define in M584 - so in your case that would be drivers 3 and 4. From then on, the first extruder in that M584 is extruder 0, and the second (after the colon) is extruder1 etc. So in your tool definition (M563), the "D" refers to the extruder, not the physical driver. In you case the "D0" in M563 refers to the driver associated with the first extruder which is physical driver3 and the D1 refers to physical driver 4.



  • @deckingman Thanks for this great help. I got it up and running and all seems to be working fine with the exception of something strange. When I increase the slider for extruder 1 (the new pusher) it seems to slow down. Inversely, when i drag it below the setting for Extruder 0, it speeds up. Is there a good explanation for this?

    Thanks again,
    Matt



  • @matteo2u said in Duplicate Extruder Signal:

    @deckingman Thanks for this great help. I got it up and running and all seems to be working fine with the exception of something strange. When I increase the slider for extruder 1 (the new pusher) it seems to slow down. Inversely, when i drag it below the setting for Extruder 0, it speeds up. Is there a good explanation for this?

    Thanks again,
    Matt

    Just thinking out loud but one possibility for that behaviour is this. Essentially, the firmware doesn't "know" that you have two extruders in a push-pull configuration. In a way we've tricked it by saying that there are two extruders feeding one hot end (similar to a two in, one out hot end) but we've set the mixing ration to 1:1 giving an overall extrusion percentage of 200%. That's what we would be getting if we used a two in, one out hot end with the extruders is parallel rather than in series. Normally, with any sort of multi input, single hot end, that mixing ratio would always add up to unity (or 100%). So it's likey that the firmware is reacting in such as way as to maintain the sum of the mixing ratios. So that if a multiplier is applied to one extruder (which is what yo are doing by using the slider), then the other extruder would need to be reduced to maintian the overall extrusion amount. i.e. If we define a mixing ratio of 1.00:1.00 using M569 to give an overall extrusion amount of 200%, then we apply a multiplier to the first extruder of (say) 10% then the second extruder would need to be reduced by 10% to maintain the overal total of 200% and maybe that's the behaviour that you are seeing.

    Just guessing. But in any case, we've used a sort of trick to fool the firmware into taking a normal mixing hot end type of extruder configuration and using it to control extruders that are actually in a push-pull arrangement. So strange things might happen if you then try to control each extruder independently (which is what the sliders do). For that reason, it's probably better if you don't mess with the sliders. If you have to make adjustments to one extruder with respect to the other, it might be better to adjust the steps per mm for that extruder.


Log in to reply