2 in 1 out Problem



  • I have changed over to a 2 in 1 out hotend and am having trouble getting the second extruder to print. I don't know what im doing wrong.
    Here is my tfree0 and tpost0. The tfree1 and tpost1 are similar.

    ; tfree0.g
    ; called when tool 0 is freed
    ;

    M116 P0 ; wait for temperature
    M83 ; relative extruder mode
    G1 X0 Y0 F6000 ; move the head away from the print
    G1 E-50 F180 ; retract 50mm up to the Y neck @3mm/s

    ; tpost0.g
    ; called after tool 0 has been selected
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)

    M116 P0 ; wait for tool 0 to reach operating temperature
    G1 X0 Y0 F6000 ; move the head away from the print
    M83 ; relative extruder mode
    G1 E55 F180 ; feed filament

    When the firmware encounters a T1 in the gcode the hot end moves to X0 Y0 and retraction takes place as in the tfree0.g but the hotend then just sits there forever.

    Im on RRF3 RC3 with SBC.

    Can anyone help please?



  • @chas2706 We probably need to see you tool definitions - in fact if you post your entire config.g file that might help. Have you set the active and standby temperatures somewhere? If not in config.g then in the slicer start gcode. Ideally you should use the format G10 Pn Rnn Snn.



  • I have the temperatures set in the slicer. The tools show correctly in DWC and the temperatures are ok.

    Here's my config:

    ; Configuration file for Duet 3 (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)

    ; General preferences
    M555 P2 ; Set Marlin-style output
    G21 ; Set dimensions to millimetres
    G90 ; send absolute coordinates...
    M83 ; ...but relative extruder moves
    M550 P"Duet3" ; set printer name
    M558 P0 S1 ; Enable http
    M586 P1 S1 ; Enable FTP
    M586 P2 S1 ; Enable Telnet
    M669 K1 ; select CoreXY mode

    ; Drives
    M569 P0 S1 ; X physical drive 0.0 goes forwards
    M569 P1 S1 ; Y physical drive 0.1 goes forwards
    M569 P2 S0 ; Z0 physical drive 0.2 goes backwards
    M569 P3 S0 ; Z1 physical drive 0.3 goes backwards
    M569 P4 S0 ; E0 physical drive 0.4 goes backwards
    M569 P5 S0 ; E1 physical drive 0.5 goes backwards

    ; Set drive mapping
    M584 X0 Y1 Z2:3 E4:5 ; Dual Z make sure drive 2 is left hand Z and 3 is right hand
    M92 X80.00 Y80.00 Z400.00 E96.00:137.00 ; set steps per mm
    M350 X16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation

    ; Accelerations, speed and jerk
    M98 P"print_scripts/default_settings.g"

    M906 X1000 Y1000 Z1000 E1100:1100 I30 ; set motor currents (mA) and motor idle factor in per cent
    M84 S30 ; Set idle timeout

    ; Leadscrew positions: The measurement is taken from X=0, Y=0. Therefore X will be negative, Y positive and middle of bed = 160
    M671 X-100:415 Y160:160 S2.0

    ; Axis Limits
    ;M208 X-15 Y-12 Z0 S1 ; Set axis minima (adjust to make X=0 and Y=0 the edges of the bed)
    M208 X0 Y0 Z0 S1 ; Set axis minima (adjust to make X=0 and Y=0 the edges of the bed)
    M208 X336 Y330 Z380 S0 ; set axis maxima

    ; Endstops
    M574 X1 S1 P"!io0.in" ; configure active-low endstop for low end on X via pin io0.in with internal pull-up
    M574 Y1 S1 P"!io1.in" ; configure active-low endstop for low end on Y via pin io1.in with internal pull-up

    ; create e-stop microswitch
    ;M950 J2 C"!io2.in" ; Input 2 uses io2 pin, inverted
    ;M581 P2 S1 T0 C0 ; configure enstop as e-stop

    ; Create push buttons
    ; filament unload button
    M950 J4 C"!io4.in" ; Input 4 uses io4 pin, inverted
    M581 P4 S1 T2 C0 ; configure button for filament unload

    ; filament load button
    M950 J5 C"!io5.in" ; Input 5 uses io5 pin, inverted
    M581 P5 S1 T3 C0 ; configure push button for filament load

    #M581 P"!io6.in" T0 C0 ; configure active-low endstop to perform an e-stop (on panel)
    ; e-stop button
    M950 J6 C"!io6.in" ; Input 6 uses io6 pin, inverted
    M581 P6 S1 T0 C0 ; configure push button for e-stop

    ; bed levelling button
    M950 J7 C"!io7.in" ; Input 7 uses io7 pin, inverted
    M581 P7 S1 T4 C0 ; configure push button for Bed Levelling

    ; shutdown button
    M950 J8 C"!io8.in" ; Input 8 uses io8 pin, inverted
    M581 P8 S1 T5 C0 ; configure push button to shutdown SBC's

    ; Filament Run Out Sensor
    ;M591 D0 P1 C4 S1 ; Code requires conversion Filament runout Sensor for Extruder E0 P1 = signal HIGH.

    ; Z-Probe
    M558 P1 C"io3.in" H5 F120 T6000 ; set Z probe type to unmodulated and the dive height + speeds
    ; G31: the P is the reported Z value when triggered. X,Y are offset coordinates. Z is trigger height, you can decrease value if nozzle is too close
    ; or increase if too far away.
    G31 P500 X-30 Y-5 Z2.40 ; set Z probe trigger value, offset and trigger height

    ; Mesh Grid
    ; The following M557 commands are not needed if you are using a bed.g file to perform bed compensation
    ;*** Adjust the XY coordinates in the following M557 commands to suit your build and the position of the Z probe
    M557 X10:280 Y20:280 S50 ; Define small mesh grid
    ;M557 X10:280 Y10:280 S20 ; Define large mesh grid

    ; Bed thermistor/heater
    M308 S0 P"temp0" Y"thermistor" T100000 B4138 ; bed thermistor
    M950 H0 C"out0" Q20 T0 ; bed heater H = heater no. C = output Q = PWM frequencyT = temperature sensor no. defined above.
    M143 H0 S120 ; set temperature limit for bed heater 0 to 120C
    M307 H0 A108.4 C735.4 D1.4 S1.00 V12.5 B0 ; Autotune result for bed
    M140 H0 ; map heated bed to heater 0

    ; Extruder thermister/heater

    M308 S1 P"temp1" Y"thermistor" T100000 B4138 ; extruder thermistor
    M950 H1 C"out1" T1 ; ext heater H = heater no. C = output T = temperature sensor no. defined above.
    M143 H1 S250 ; set temperature limit for extruder heater 1 to 250C
    M307 H1 A299.8 C109.4 D4.0 S1.00 V12.3 B0 ; Autotune result for hotend

    ;CPU Temperature Calibration
    M912 P0 S-10.0

    ; Fans
    M950 F0 C"out7" Q500 ; create fan 0 on pin out7 and set its frequency (parts fan)
    M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
    M950 F1 C"out8" Q500 ; create fan 1 on pin out8 and set its frequency (ext fan)
    M106 P1 S0 H1 T45 ; set fan 1 value. Thermostatic control is turned on
    M950 F4 C"out5" Q100 ; create fan 2 on pin out5 (bed cooling)
    M106 P4 S0 H-1 ; set fan 2 value. Thermostatic control is off

    ;Re-assigned fan pins
    ;CPU fan
    M950 F2 C"out9" ; create fan 2 (CPU fan)
    M308 S3 Y"mcutemp" A"mcutemp" ; set up a virtual sensor for cpu fan
    M106 P2 T30 H3 ; set fan 2 value. Fan comes on when cpu temp is above 30 degrees (Cool the pi as well!)
    ;Led Lighting
    M950 F3 C"out4" Q500 ; create a fan 3 output to use for led lighting control on pin out4
    M106 P3 S0 ; set output default to off

    ; Tools

    ; Define dual extruder setup
    M563 P0 S"Colour1" D0:1 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

    M563 P1 S"Colour2" D0:1 H1 F0 ; 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

    ; Custom settings
    ;M572 D0 S0.800 ; Pressure advance = 0.8
    ;M42 P2 S255 ; Turn led lighting on full
    ;M98 P"LevelLeadscrews.g" ; Option to perform leadscrew levelling
    ;M98 PEnable Mesh Levelling ; Option to enable on start up
    T0 ; select first tool

    Thanks in advance.



  • @chas2706 I'm not exactly sure what your set up is so I'm a bit confused. When you say "2 in 1" hot end, that implies a hot end that has 2 filaments going in. But the comment in your tool change macro says " retract 50mm up to the Y neck @3mm/s" which implies that it's a single input hot end using a "Y" splitter. Your tool definitions are for a true 2 in 1 out hot end which can feed either or both filaments but they lack any mixing ratios to make that happen. If you are using a Y splitter, then each tool should only use one extruder, not both. So you either need to add something like M567 P0 E1.00:0.00 and M567 P1 E0.00:1.00 if it's a 2 in 1 out hot end, or you need to change M563 P0 from D0:1 to D0 and M563 P1 from to D0:1 to D1 if it's a Y splitter (although I think you could use M567 with a Y splitter as long as you never use anything other than 0:1.00 and 1.00:0 for the mixing ratios). Also both tools share the same heater (H1) so there is no need for the M116 wait for the temperature because it's the same.

    It might also be that you need to explicitly set both the active and standby temperatures. You say that you have set the temperatures in the Slicer but very few slicers use G10 S and R. Are using something like in the slicer start gcode?
    G10 P0 Snnn Rnnn
    G10 P1 Snnn Rnnn



  • @deckingman Thanks for your feedback.
    The hot end is fitted with a "Y" splitter on top. I thought 2 in 1 out was another name for it lol.
    I took on board what you said about the slicer active and standby temperatures and placed G10 P0 S200 R200 and G10 P1 S200 R200 in the start gcode.
    I will change the rest of my config to suit a "Y" splitter and see how it goes.

    Many thanks



  • @chas2706 Thanks for clearing that up - I guess a Y splitter is also a 2 in 1 out design so the terminology can be confusing. But I needed to know if you had both filaments loaded into the hot end at all times or not. So you tool definitions should be

    M563 P0 S"Colour1" D0 H1 F0 ; define tool 0
    and
    M563 P1 S"Colour2" D1 H1 F0 ; Define tool 1

    Take out the M116 from your tfree and tpost as they aren't needed with a single, common, heater .

    Ohh, and add G10 P0 S0 R0 and G10 P1 S0 R0 to your slicer end gcode to turn off the heaters. Actually that just sets the temperatures to zero but works. If you really want to turn off (as in de-activate) the heaters use -273.1 instead of zero.



  • @deckingman

    I will try this out later and again thanks for your help.



  • @deckingman

    I have made all the changes you suggested.

    T0 is set as default extruder in my config.g so if I set the temperature for PLA in DWC and click on T1 should the tool change macro's then execute?
    I expected them to but nothing happens and I don't really want to start another dual colour print to find it still not working.



  • @chas2706 said in 2 in 1 out Problem:

    @deckingman

    I have made all the changes you suggested.

    T0 is set as default extruder in my config.g so if I set the temperature for PLA in DWC and click on T1 should the tool change macro's then execute?
    I expected them to but nothing happens and I don't really want to start another dual colour print to find it still not working.

    I don't use the tool change macros myself so can't say for sure. Maybe they are only effective when printing from an SD card which would make sense because otherwise, they would be invoked every time you clicked a tool using the console, which might not be desirable. Suggest you try a "quick and dirty" simple print. It can be anything like a simple cube or cylinder. Slice it then use a text editor like notepad++ and look for the layer changes in the gcode file which will be G1 Znn. After the first G1 Znn, insert T0 on a new line. After the second, insert T1, and repeat for a few layers. Save that file and print it. It should change tools every layer.



  • @deckingman said in 2 in 1 out Problem:

    I don't use the tool change macros myself so can't say for sure. Maybe they are only effective when printing from an SD card which would make sense because otherwise, they would be invoked every time you clicked a tool using the console, which might not be desirable. Suggest you try a "quick and dirty" simple print. It can be anything like a simple cube or cylinder. Slice it then use a text editor like notepad++ and look for the layer changes in the gcode file which will be G1 Znn. After the first G1 Znn, insert T0 on a new line. After the second, insert T1, and repeat for a few layers. Save that file and print it. It should change tools every layer.

    Update:
    In my config.g I had T0 ; select first tool (with no reference to T1).
    Then I added T1 below the T0, this just made T1 the default tool!
    So then I changed the order to:
    T1
    T0 ; select first tool.
    I can confirm that with this config I can manually change tools in DWC and observe that my tfree and tpost files work correctly.
    However when printing, upon changing from T0 to T1 the print soon fails because the heat setting for T1 is somehow turned off!! The print moves continue but without extrusion and I get an error message relating to extruder heater temperature not met.
    At this time the set temperature in DWC is 0 degrees!



  • @chas2706 Hmmmm. I don't use the tool change macros but I do use multiple tools. Are you sure that you are settling the active and standby temperatures in the slicer start gcode for both tools and also that you use the same value for both the active and standby temperatures?



  • @deckingman said in 2 in 1 out Problem:

    Hmmmm. I don't use the tool change macros but I do use multiple tools. Are you sure that you are settling the active and standby temperatures in the slicer start gcode for both tools and also that you use the same value for both the active and standby temperatures?

    Yes I have G10 P0 S200 R200 and G10 P1 S200 R200 in the slicer start gcode.
    I am going to check my hot end heater later just to rule out any electrical issues with it.



  • @chas2706 You said that after changing tool during printing, the set temperature displayed in DWC was zero. Which indicates that something made that change, so I doubt that you have an electrical problem. It also seems odd that you seem to be able to change from T1 to T0 but not from T0 to T1. Which would indicate that something might be amiss with your tool change macros. Can you post them all just to see if I can spot anything. It might be an idea to post your config.g too just in case you've made a typo that you haven't spotted yourself (we all do it from time to time).



  • @deckingman You are right, there's no electrical issue. I just tried another print. Initially both tools show their heat settings at 200 degrees and all is well until T1 is activated. The tool change takes place but with immediate effect the heat setting for tool1 sets to zero and the print shortly fails.

    My config.g is displayed in my second post.
    Here's my tool change macros:

    ; tfree0.g
    ; called when tool 0 is freed
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)

    M83 ; relative extruder mode
    G1 X0 Y0 F6000 ; move the head away from the print
    G1 E-50 F180 ; retract 50mm up to the Y neck @3mm/s

    ; tfree1.g
    ; called when tool 1 is freed
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)

    M83 ; relative extruder mode
    G1 X0 Y0 F6000 ; move the head away from the print
    G1 E-50 F180 ; retract 50mm up to the Y neck @3mm/s

    ; tpost0.g
    ; called after tool 0 has been selected
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)

    G1 X0 Y0 F6000 ; move the head away from the print
    M83 ; relative extruder mode
    G1 E55 F180 ; feed filament

    ; tpost1.g
    ; called after tool 1 has been selected
    ;
    ; generated by RepRapFirmware Configuration Tool v2.1.1 on Mon Nov 04 2019 16:21:57 GMT+0000 (Greenwich Mean Time)

    G1 X0 Y0 F6000 ; move the head away from the print
    M83 ; relative extruder mode
    G1 E55 F180 ; feed filament

    Thanks for your help in all of this.



  • In DWC if I change the temperature setting for tool 1 it just turns the heater off.
    So it is like the shared heater set up in config.g for Tool1 is being ignored.

    ; Define dual extruder setup
    M563 P0 S"Colour1" D0 H1 F0 ; 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

    M563 P1 S"Colour2" D1 H1 F0 ; 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

    T1.jpg



  • @chas2706 That's kind of expected. It's not ignoring the heater because in your screen shot, it's showing the current temperature for both tools and it's the same 106.7 deg C. The 195 is the active temperature (setting) for tool 1 and changing that won't change the active temperature (setting) for tool 0. From the screen shot, it looks like Tool 0 is currently selected (so it's active) but it's active temperature is set to 0, therefore the temperature is falling. If you were to set the active temperature for T0 to be say 180 and the active temperature for T1 to be say 195. Then if you send T0 from the console, (or highlight the tool by clicking on it) it should make Tool 0 active and the temperature should get to 180, Then if you send T1, it should make Tool 1 active and so the temperature should rise to 195. Try that and report back what happens.

    Can you also put the gcode that you are trying to print somewhere and post a link to it. Maybe the slicer is doing something to override the G10 S200 R200 commands that you have in your start gcode. What should happen, when you start a print is that the active and standby temperatures for both tools get set to 200, and they should stay like that for the duration of the print, regardless of which tool is being used. There is nothing in your tool change macros which will alter those settings.

    Edit - so if those numbers change from 200, then there must be something in the sliced gcode that is changing them. Slicers don't tend to use G10 much so what to look for would be M104 or M109 commands.



  • @deckingman I did the different temperature settings for T0 and T1 and they worked exactly as you predicted! So I started to look at my slicer settings. I have been using both prusa slicer and cura.
    In both slicers I had set the layer temperatures to 0 assuming that these will be ignored because of the G10 commands in start.g.
    Obviously not so, I changed them to 200 and now in cura I can do two colour printing.
    Prusa slicer is a different matter though but at least I know it is a slicer issue.

    Thank you so much for your help.



  • @chas2706 Glad to see that we are getting there. I use Prusa SliC3r sometimes with my 5 input Diamond hot end and setting the temperature to zero should work. Essentially that's what I do. I call a macro from my start gcode but that's no different from putting the commands directly into the start gcode section. Among other things, this macro uses G10 as described to set the active and standby temperatures for all tools. Setting the temperatures to zero in the Slicer itself results in the slicer putting no temperature commands in the gcode file, which is what we want to happen. So double check your Prusa SliC3r settings - it should work (unless something has changed in the very latest version that I am not using).



  • @deckingman In Prusa Slic3r I have found this:

    Untitled.gif

    I find it confusing because its called single extruder multi material but hovering over it it says the printer multiplexes filaments into a single hot end!

    Do you know if I need this enabled, currently it is not.

    Many thanks



  • @chas2706 No - leave that unticked. It's for a mixing hot end such as I have but I set mixing ratios by other means, so I have it unticked as well. For info, this is what I have in my version of Prusa Slic3R (1.40) and which gives me gcode with no temperature commands in it.
    Capture1.PNG


Log in to reply