E1 extruding endless filament at full speed on 1st E1 command

Running repetier firmware V1.0.0dev on Ramps1.4, Repetier host, Windows 7, Cura 15.xxxx slicer.  
Running print from SDcard, no errors in Gcode, printer begins the behavior listed in the discussion title.  Programs can change and exhibit this behavior for all dual extrusion prints.  Extruders operate properly via LCD menu on V1.0.0dev and Repetier V.92xxxxx dual extrusion works fine on this machine.

Thanks!
Jared

Comments

  • What are the first E1 commands?
    Is E position reset with G92 E0 to ensure it extrudes the wanted amount?
  • edited January 10
    I am having a similar problem. E0 works exactly as expected, both in manual mode and while running a gcode script. E1 mostly works as expected in manual mode (i.e. when I change to extruder 2 using the T1 command and then send a single G1 Fxxx Exx command), though sometimes the motor gets 'stuck on' and continues to turn at the specified rate without ever stopping. I can't seem to figure out exactly what is different between the times that it works as expected and when it just keeps on turning.

    The real problem is when I try to run a gcode script containing the exact same commands for E1. The program ALWAYS stalls at the point of the T1 and subsequent G1 Fxxx Exx commands, and the E1 motor just continues turning until I cut the power. Interestingly the communication seems fine, and there are no 'X commands waiting' warnings; in other words it doesn't look as though there are firmware hangs.

    I've tried switching out motor drivers and using the E2 pins (with a firmware edit, of course). I observe the same exact behavior so I'm quite convinced it's a firmware/software issue.

    Any idea what could be going on and how to solve it?

    Here's my system info. I'm using a RUMBA board with Repetier Firmware v0.92.9, connected to Repetier-Host for Mac v1.0.2. I'm running OS X 10.11.6.

    Big thanks for the help!
    Kevin
  • Is endless > max. extrsion length set in firmware configuration? Normally 160mm I think. That is to protect such endless moves but still allow normal moves you normally have.

    I have several 2 extruder printers and never had the problem, so if it is a firmware issue (whcih it would if it extrudes more then allowed I think), it must be in combination with configuration you have. You could first upgrade to dev version since that is where I fix problems and see if still present. If so, what is your configuration so I can see what might have an influence on it.

    Since you said connectiuona and communication is still ok, what happens if you say to move extruder. Does it stop extrusion or move at all? At what speed does the contiunous extrusion happen? The one from the E move?
  • I set the max extrusion length to 700mm. The reason is because I'm not actually using an extruder, I'm just using the extruder pins and gcode commands to control a stepper motors for a different purpose. I was running E1 very slowly (gcode speed F50, which is 50mm/min, right?) so I killed the jobs before the 14 minutes it would have taken to run all 700mm.

    I'm not near the printer today so I can't try the dev version upgrade, but I can provide my configuration details. I can't seem to attach or paste the complete configuration.h file to this post because it's too long. Below is a snippet of the code relevant for setting up the extruders

    I'm not sure I understand your last question, but I never tried using the GUI buttons to move the extruder motors. I was only sending gcode commands. Interestingly the endless extrusion would always occur at the speed I specified in the gcode (i.e. F50), it just wouldn't stop when it should have.

    Configuration.h code is below. I didn't see a way to block it off like a quote.

    ----------

    #define DRIVE_SYSTEM 1
    #define XAXIS_STEPS_PER_MM 160
    #define YAXIS_STEPS_PER_MM 160
    #define ZAXIS_STEPS_PER_MM 400
    #define EXTRUDER_FAN_COOL_TEMP 50
    #define PDM_FOR_EXTRUDER 0
    #define PDM_FOR_COOLER 0
    #define DECOUPLING_TEST_MAX_HOLD_VARIANCE 20
    #define DECOUPLING_TEST_MIN_TEMP_RISE 0
    #define KILL_IF_SENSOR_DEFECT 0
    #define RETRACT_ON_PAUSE 2
    #define PAUSE_START_COMMANDS ""
    #define PAUSE_END_COMMANDS ""
    #define SHARED_EXTRUDER_HEATER 0
    #define EXT0_X_OFFSET 0
    #define EXT0_Y_OFFSET 0
    #define EXT0_Z_OFFSET 0
    #define EXT0_STEPS_PER_MM 400
    #define EXT0_TEMPSENSOR_TYPE 0
    #define EXT0_TEMPSENSOR_PIN TEMP_0_PIN
    #define EXT0_HEATER_PIN HEATER_0_PIN
    #define EXT0_STEP_PIN ORIG_E0_STEP_PIN
    #define EXT0_DIR_PIN ORIG_E0_DIR_PIN
    #define EXT0_INVERSE 0
    #define EXT0_ENABLE_PIN ORIG_E0_ENABLE_PIN
    #define EXT0_ENABLE_ON 0
    #define EXT0_MIRROR_STEPPER 0
    #define EXT0_STEP2_PIN ORIG_E0_STEP_PIN
    #define EXT0_DIR2_PIN ORIG_E0_DIR_PIN
    #define EXT0_INVERSE2 0
    #define EXT0_ENABLE2_PIN ORIG_E0_ENABLE_PIN
    #define EXT0_MAX_FEEDRATE 100
    #define EXT0_MAX_START_FEEDRATE 20
    #define EXT0_MAX_ACCELERATION 100
    #define EXT0_HEAT_MANAGER 0
    #define EXT0_WATCHPERIOD 1
    #define EXT0_PID_INTEGRAL_DRIVE_MAX 230
    #define EXT0_PID_INTEGRAL_DRIVE_MIN 40
    #define EXT0_PID_PGAIN_OR_DEAD_TIME 7
    #define EXT0_PID_I 2
    #define EXT0_PID_D 40
    #define EXT0_PID_MAX 255
    #define EXT0_ADVANCE_K 0
    #define EXT0_ADVANCE_L 0
    #define EXT0_ADVANCE_BACKLASH_STEPS 0
    #define EXT0_WAIT_RETRACT_TEMP 150
    #define EXT0_WAIT_RETRACT_UNITS 0
    #define EXT0_SELECT_COMMANDS ""
    #define EXT0_DESELECT_COMMANDS ""
    #define EXT0_EXTRUDER_COOLER_PIN -1
    #define EXT0_EXTRUDER_COOLER_SPEED 255
    #define EXT0_DECOUPLE_TEST_PERIOD 12000
    #define EXT0_JAM_PIN -1
    #define EXT0_JAM_PULLUP 0
    #define EXT1_X_OFFSET 0
    #define EXT1_Y_OFFSET 0
    #define EXT1_Z_OFFSET 0
    #define EXT1_STEPS_PER_MM 400
    #define EXT1_TEMPSENSOR_TYPE 0
    #define EXT1_TEMPSENSOR_PIN TEMP_2_PIN
    #define EXT1_HEATER_PIN HEATER_2_PIN
    #define EXT1_STEP_PIN ORIG_E2_STEP_PIN
    #define EXT1_DIR_PIN ORIG_E2_DIR_PIN
    #define EXT1_INVERSE 0
    #define EXT1_ENABLE_PIN ORIG_E2_ENABLE_PIN
    #define EXT1_ENABLE_ON 0
    #define EXT1_MIRROR_STEPPER 0
    #define EXT1_STEP2_PIN ORIG_E1_STEP_PIN
    #define EXT1_DIR2_PIN ORIG_E1_DIR_PIN
    #define EXT1_INVERSE2 0
    #define EXT1_ENABLE2_PIN ORIG_E1_ENABLE_PIN
    #define EXT1_MAX_FEEDRATE 100
    #define EXT1_MAX_START_FEEDRATE 20
    #define EXT1_MAX_ACCELERATION 100
    #define EXT1_HEAT_MANAGER 0
    #define EXT1_WATCHPERIOD 1
    #define EXT1_PID_INTEGRAL_DRIVE_MAX 230
    #define EXT1_PID_INTEGRAL_DRIVE_MIN 40
    #define EXT1_PID_PGAIN_OR_DEAD_TIME 7
    #define EXT1_PID_I 2
    #define EXT1_PID_D 40
    #define EXT1_PID_MAX 255
    #define EXT1_ADVANCE_K 0
    #define EXT1_ADVANCE_L 0
    #define EXT1_ADVANCE_BACKLASH_STEPS 0
    #define EXT1_WAIT_RETRACT_TEMP 150
    #define EXT1_WAIT_RETRACT_UNITS 0
    #define EXT1_SELECT_COMMANDS ""
    #define EXT1_DESELECT_COMMANDS ""
    #define EXT1_EXTRUDER_COOLER_PIN -1
    #define EXT1_EXTRUDER_COOLER_SPEED 255
    #define EXT1_DECOUPLE_TEST_PERIOD 12000
    #define EXT1_JAM_PIN -1
    #define EXT1_JAM_PULLUP 0

    #define FEATURE_RETRACTION 1
    #define AUTORETRACT_ENABLED 0
    #define RETRACTION_LENGTH 3
    #define RETRACTION_LONG_LENGTH 13
    #define RETRACTION_SPEED 40
    #define RETRACTION_Z_LIFT 0
    #define RETRACTION_UNDO_EXTRA_LENGTH 0
    #define RETRACTION_UNDO_EXTRA_LONG_LENGTH 0
    #define RETRACTION_UNDO_SPEED 20
    #define FILAMENTCHANGE_X_POS 0
    #define FILAMENTCHANGE_Y_POS 0
    #define FILAMENTCHANGE_Z_ADD  2
    #define FILAMENTCHANGE_REHOME 1
    #define FILAMENTCHANGE_SHORTRETRACT 5
    #define FILAMENTCHANGE_LONGRETRACT 50
    #define JAM_STEPS 220
    #define JAM_SLOWDOWN_STEPS 320
    #define JAM_SLOWDOWN_TO 70
    #define JAM_ERROR_STEPS 500
    #define JAM_MIN_STEPS 10
    #define JAM_ACTION 1

  • I think my last question was misunderstood.

    I meant if the long extrusion is running, would you be able to move x or y axis? Reason is if it's a long move in movement buffer that would not be possible. If it is some other function that somehow manages to toggle step signal it would be possible.

    An other test would be enabling echo for debugging. Then you see what firmware thinks it got. Repetier Host/server would always send checksum and line number so a error should be seen, but if a com error added a digit to length that would also explain the "sometimes" and not "always".
  • edited January 12
    OK, tested it again. I am not able to move the x or y axis while the long extrusion is running. Actually it does seem like a firmware hang or connection timeout, sorry for giving the opposite information before.

    I can also confirm that in manual mode extruder 2 works just fine using the GUI controls.

    Would you take a quick look at the gcode script I was running and the output feed? You'll notice that the temperatures are 25 degrees because I opted for the constant temp output so I could run the 'extruder' motors without a hotend.

    Here is the simple gcode script I am using to test the process. No idea why the text formatting isn't working.

    G21
    G90

    T0
    G92 E0

    T1
    G92 E0

    M106 S255

    T0
    G1 F3500 E190
    G1 F1000 Z290
    G4 P100

    G1 F2250 E450  

    T1
    G1 F50 E1
    G4 P100

    G1 F1000 Z300

    G4 P100
    G1 F50 E5

    T0
    G1 F3500 E0
    ----


    Here is the output feed, with echo.

    > 10:06:52 AM: N30 G21 *9
    < 10:06:52 AM: ok 29
    < 10:06:52 AM: T:25.00 /0 @:0 T0:25.00 /0 @0:0 T1:25.00 /0 @1:0
    < 10:06:52 AM: Echo:N29 M105 
    > 10:06:52 AM: N31 G90 *2
    < 10:06:52 AM: ok 30
    < 10:06:52 AM: Echo:N30 G21 
    > 10:06:52 AM: N32 T0 *43
    < 10:06:52 AM: ok 31
    < 10:06:52 AM: Echo:N31 G90 
    > 10:06:52 AM: N33 G92 E0.0000 *121
    < 10:06:52 AM: ok 32
    < 10:06:52 AM: SelectExtruder:0
    < 10:06:52 AM: FlowMultiply:100
    < 10:06:52 AM: Echo:N32 T0 
    > 10:06:52 AM: N34 T1 *44
    < 10:06:52 AM: ok 33
    < 10:06:52 AM: Echo:N33 G92  E0.0000
    > 10:06:52 AM: N35 G92 E0.0000 *127
    < 10:06:52 AM: ok 34
    < 10:06:52 AM: SelectExtruder:1
    < 10:06:52 AM: FlowMultiply:100
    < 10:06:52 AM: Echo:N34 T1 
    > 10:06:52 AM: N36 M106 S255 *112
    < 10:06:52 AM: ok 35
    < 10:06:52 AM: Echo:N35 G92  E0.0000
    > 10:06:53 AM: N37 T0 *46
    < 10:06:53 AM: ok 36
    < 10:06:53 AM: Fanspeed:255
    < 10:06:53 AM: Echo:N36 M106  S255
    > 10:06:53 AM: N38 G1 E190.0000 F3500.000 *62
    < 10:06:53 AM: ok 37
    < 10:06:53 AM: SelectExtruder:0
    < 10:06:53 AM: FlowMultiply:100
    < 10:06:53 AM: Echo:N37 T0 
    > 10:06:53 AM: N39 G1 Z290.000 F1000.000 *20
    < 10:06:53 AM: ok 38
    < 10:06:53 AM: Echo:N38 G1  E190.0000 F3500.00
    > 10:06:53 AM: N40 G4 P100 *120
    < 10:06:53 AM: ok 39
    < 10:06:53 AM: Echo:N39 G1  Z290.00 F1000.00
    > 10:06:53 AM: N41 G1 E450.0000 F2250.000 *58
    < 10:06:53 AM: ok 40
    < 10:06:57 AM: Echo:N40 G4  P100
    < 10:06:57 AM: ok 41
    < 10:06:57 AM: Echo:N41 G1  E450.0000 F2250.00
    > 10:06:57 AM: N43 T1 *44
    < 10:06:57 AM: ok 42
    < 10:06:57 AM: T:25.00 /0 @:0 T0:25.00 /0 @0:0 T1:25.00 /0 @1:0
    < 10:06:57 AM: Echo:N42 M105 
    > 10:06:57 AM: N44 G1 E1.0000 F50.000 *63
    < 10:06:57 AM: ok 43
    < 10:07:04 AM: SelectExtruder:1
    < 10:07:04 AM: FlowMultiply:100
    < 10:07:04 AM: Echo:N43 T1 
    < 10:07:04 AM: ok 44
    < 10:07:04 AM: Echo:N44 G1  E1.0000 F50.00
    > 10:07:04 AM: N46 G4 P100 *126
    < 10:07:04 AM: ok 45
    < 10:07:04 AM: T:25.00 /0 @:0 T0:25.00 /0 @0:0 T1:25.00 /0 @1:0
    < 10:07:04 AM: Echo:N45 M105 
    > 10:07:05 AM: N47 G1 Z300.000 F1000.000 *21
    < 10:07:05 AM: ok 46
      10:07:25 AM: Communication timeout - reset send buffer block
    -----

  • Just to be sure, I ran the same script using Repetier-Host in Linux and got the same result as on the Mac. Thus, I'm more confident this is a firmware issue.
  • Ok, and here is your error I think:

    G1 F2250 E450  

    T1
    G1 F50 E1

    top g1 sets E position to 450, then you switch to T1
    which inherits E450 so going to E1 means 449mm backwards at 50mm/s.
    Add G92 E0 after T1 like all slicers do and it should work.

    Thetimeout comes from using an old firmware version and running exceptional slow and long move.
    The dev version would send a busy signal preventing timeout and allowing timeout to go down to 3s.
    Requires latest host or server to work.
  • Great, thanks for the tip. I didn't realize the E position register was shared for multiple extruders.

    Regarding the firmware, I tried to update to the dev version but it won't compile on Arduino 1.8.1. I'll go ahead and start a new thread about that in the appropriate sub-forum.
  • Should complie with update from today if you had a problem with bedleveling during compilation. But you need to redownload including sources as some settings were added and removed.
  • Doh, sorry about my absence...I don't have Repetier forum configured to email me yet (will fix).  I will check the code for G92 E0 and see what happens if it's missing.
Sign In or Register to comment.