Extruder motor won't go

I have a Prusa i3 and a Melzi with a MEGA1284p. I made it from a kit and it came with Repetier 0.9 firmware. I have upgraded this to the latest version using the online configuration tool to copy my original file. Upgrading had no effect on my problem. 

Everything works except the Extruder motor and the problem seems to be somewhere in the firmware. I'm hoping its a configuration problem and that there is something fundamentally wrong with my settings. From the Repetier Host I can see that a G1 command is sent whenever I press the Extruder up/down buttons and given that everything else works this not a Comms problem.

I have decided its the firmware because I wrote a Sketch (see below) which sends a stream of pulses out the PB1 pin (in my case this is pin 41) which is connected to the Extruder motor driver and the motor turned continuously. So this means the PCB, processor, motor driver and motor aren't the problem and that leaves the firmware. Here is the Sketch...

void setup()
{
  pinMode(1, OUTPUT);
}

void loop()
{
    digitalWrite(1, LOW);
    delayMicroseconds(100);
    digitalWrite(1, HIGH);
    delayMicroseconds(100);
}

I'm hoping someone else has had this problem. My next option is to somehow debug what is happening.

«1

Comments

  • Here's my config I couldn't fit it in the original post...

    #define DRIVE_SYSTEM 0
    #define XAXIS_STEPS_PER_MM 100
    #define YAXIS_STEPS_PER_MM 100
    #define ZAXIS_STEPS_PER_MM 407
    #define EXTRUDER_FAN_COOL_TEMP 50
    #define EXT0_X_OFFSET 0
    #define EXT0_Y_OFFSET 0
    #define EXT0_STEPS_PER_MM 95
    #define EXT0_TEMPSENSOR_TYPE 12
    #define EXT0_TEMPSENSOR_PIN TEMP_0_PIN
    #define EXT0_HEATER_PIN HEATER_0_PIN
    #define EXT0_STEP_PIN E0_STEP_PIN
    #define EXT0_DIR_PIN E0_DIR_PIN
    #define EXT0_INVERSE 1
    #define EXT0_ENABLE_PIN E0_ENABLE_PIN
    #define EXT0_ENABLE_ON 1
    #define EXT0_MAX_FEEDRATE 50
    #define EXT0_MAX_START_FEEDRATE 20
    #define EXT0_MAX_ACCELERATION 5000
    #define EXT0_HEAT_MANAGER 3
    #define EXT0_WATCHPERIOD 1
    #define EXT0_PID_INTEGRAL_DRIVE_MAX 230
    #define EXT0_PID_INTEGRAL_DRIVE_MIN 40
    #define EXT0_PID_P 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 RETRACT_DURING_HEATUP true
    #define PID_CONTROL_RANGE 20
    #define SKIP_M109_IF_WITHIN 2
    #define SCALE_PID_TO_MAX 0
    #define TEMP_HYSTERESIS 0
    #define EXTRUDE_MAXLENGTH 160
    #define NUM_TEMPS_USERTHERMISTOR0 0
    #define USER_THERMISTORTABLE0 {}
    #define NUM_TEMPS_USERTHERMISTOR1 0
    #define USER_THERMISTORTABLE1 {}
    #define NUM_TEMPS_USERTHERMISTOR2 0
    #define USER_THERMISTORTABLE2 {}
    #define USE_GENERIC_THERMISTORTABLE_1
    #define GENERIC_THERM1_T0 25
    #define GENERIC_THERM1_R0 100000
    #define GENERIC_THERM1_BETA 3950
    #define GENERIC_THERM1_MIN_TEMP -20
    #define GENERIC_THERM1_MAX_TEMP 300
    #define GENERIC_THERM1_R1 0
    #define GENERIC_THERM1_R2 10000
    #define GENERIC_THERM_VREF 5
    #define GENERIC_THERM_NUM_ENTRIES 33
    #define HEATER_PWM_SPEED 0
  • Newer firmware versions have several tests that can prevent extrusion. For extrusion to work, you need
    - All thermistors connected
    - Extruder must be higher the min. extrusion temperature
    - Dry run mode disabled

    So check first if all conditions are met.
  • Thank you, are these conditions active even in manual mode from the Repetier-host?

    I have checked anyway and I meet the conditions you suggest but still no go. If I manually push the PLA into the extruder I see a thread (o.3mm) of plastic exiting but not when I press the manual buttons inside the Host software.

    I've gone back to the original firmware code to be sure there isn't any variations in 0.91 that are incompatible.

  • For motor control these values are responsible:

    #define EXT0_STEP_PIN E0_STEP_PIN
    #define EXT0_DIR_PIN E0_DIR_PIN
    #define EXT0_INVERSE 1
    #define EXT0_ENABLE_PIN E0_ENABLE_PIN
    #define EXT0_ENABLE_ON 1
    whitch match the default settings for first extruder stepper and I guess this is the one connected and the same set in your working version.

    So at the moment I don't see what is missing or what you didn't tell and would be important (always difficult to know:-) You might compare the 2 configs to see if something old is different. Also compare pins.h section for your printer. Sometimes there are corrections that invalidate working older versions.  
  • Hi Repetier,

    I am experiencing the same problem. Extruder 0 does not respond to manual control in Repetier host.
    My system uses a Azteeq X3 controller. Panucatt supplied test firmware works, so Extruder motor is wired correctly. Repetier firmware does "activate" the Extruder motor (gets warm when on and motor locked when not "idle") just will not move in any direction when manual control is used.

    Here is a listing of the Config...h for EXT0

    #define EXTRUDER_FAN_COOL_TEMP 50
    #define EXT0_X_OFFSET 0
    #define EXT0_Y_OFFSET 0
    #define EXT0_STEPS_PER_MM 370
    #define EXT0_TEMPSENSOR_TYPE 1
    #define EXT0_TEMPSENSOR_PIN TEMP_0_PIN
    #define EXT0_HEATER_PIN HEATER_0_PIN
    #define EXT0_STEP_PIN ORIG_E1_STEP_PIN
    #define EXT0_DIR_PIN ORIG_E1_DIR_PIN
    #define EXT0_INVERSE 1
    #define EXT0_ENABLE_PIN E1_ENABLE_PIN
    #define EXT0_ENABLE_ON 1
    #define EXT0_MAX_FEEDRATE 50
    #define EXT0_MAX_START_FEEDRATE 20
    #define EXT0_MAX_ACCELERATION 5000
    #define EXT0_HEAT_MANAGER 3
    #define EXT0_WATCHPERIOD 1
    #define EXT0_PID_INTEGRAL_DRIVE_MAX 230
    #define EXT0_PID_INTEGRAL_DRIVE_MIN 40
    #define EXT0_PID_P 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 5
    #define EXT0_EXTRUDER_COOLER_SPEED 255

    This is originally from the .91 firmware online config tool.

    Any Ideas of how to enable a directional movement on the Extruder motor?

    Thanks,
    Brian
  • The development version 092 has now a command to allow cold extrusion

    M302 S0

    so only dry run could then prevent extruder from moving.
    Also check eeprom if steps per mm is set there correct. If it is 0 it would prevent extrusion as well as too low extruder temp.
  • Hi Repetier,

    I am still.... experiencing the same problem.

    I have upgraded to 0.92 firmware and V1.06 host. Extruder 0 does not respond to manual control in Repetier host.
    My system uses a Azteeq X3 controller. Panucatt supplied test firmware works, so Extruder motor is wired correctly. Repetier firmware does "activate" the Extruder motor (gets warm when on and motor locked when not "idle") just will not move in any direction when manual control is used.

    I suspect something is not correct behind one of the following:
    #define EXT0_STEP_PIN ORIG_E1_STEP_PIN
    #define EXT0_DIR_PIN ORIG_E1_DIR_PIN
    #define EXT0_INVERSE 1
    #define EXT0_ENABLE_PIN E1_ENABLE_PIN
    #define EXT0_ENABLE_ON 1

    I have checked the eeprom and steps per mm is 370.

    I have attempted a test print.  x,y,z,bed heater and extruder heater, extruder fan all work. Everything except the extruder stepper motor works.

    in order to check hardware function, I have moved the Extruder stepper to the Z axis driver on the X3. The manual control of the Extruder stepper via the Z axiz driver manual control in Repetier works so Extruder stepper is wired correctly and is functional.

    I moved the y axis stepper to the Extruder driver, and used the Repetier manual Extruder control to attempt to move it. Manual control via the Repetier extruder "manual" control does not work.

    Any Ideas of how to enable a directional movement on the Extruder motor?

    Thanks,
    Brian
  • Hi Brian,

     why do you have all pins connected to E1 pins instead of E0 ?

    (ORIG_E1_STEP_PIN instead of  ORIG_E0_STEP_PIN
     etc.)

    George

  • HI Repetier,

     I am facing the same problem as my predecessors.

    Everything works with Marlin 1.0.0 running on Arduino 2560 with RAMPs and Repetier host 1.0.6.

    With Repetier firmware 0.92 on that hardware only XYZ movements and heaters works.

    M302 S0 command has no effect

    I have .

    #define EXT0_ENABLE_ON 0

    as I expect it has the same meaning as 

    #define E_ENABLE_ON 0 // For all extruders 

    in Marlin's Configuration.h

    Am I right?

    What the problem could be in?


    George

  • edited October 2014
    Maybe you have dry run enabled in host. Then all extruder commands inclusive heaters get ignored.

    enable on i sthe same meaning as on marlin and should also be the same as for xyz motors if you use same stepper drivers.

    Also note that cold extrusion is only supporte don 0.92 version.
  • No, Dry run was carefully switched off, and even enable pin on RAMPs stayed on +5V all the time.

    On other motors with the same setting of enable pin it was 0.

    I had installed the 0.92 firmware version all the time but cold run was not working.

    But even with heated extruder it was not running although it stayed in proper state only for short time as the heating was possible only with Dry run switched on. When I switched it off it switched off also extruder heating enable.

  • Hi George,

    I used E1 pins instead of E0, just as another attempt to get around the extruder (not functioning) problem.just moved the Extruder stepper cable to E1 from E0 to see if it made a difference.Hi Repetier,
    I guess I will need to raise this issue as an official technical support request. I don't mind paying for support, just need to get this issue solved. Azteeq X3 controller is very common, so I would expect that this issue can be solved. I like the Repetier firmware and software, user interface is well done. I have run test "dry" prints and software slice and print sections appear to work fine (all x-y-z motors move and heaters work); Just no Extruder function on either control channel.
    I find it strange that I can hear the Extruder motor click on software (X3) startup, but the motor will not move on software (Extruder) manual control. Motor just sits there getting quite warm when on the E0 or E1 connector of X3 (with appropriate changes in config...) When Extruder motor moved to X-axis connector of X3, Extruder motor works normally under Repetier manual X axis control.Any help and comments are appreciated.Regards, Brian

    Hi Brian, why do you have all pins connected to E1 pins instead of E0 ?(ORIG_E1_STEP_PIN instead of  ORIG_E0_STEP_PIN
     etc.)George

  • I just checked pin numbers and they seem to be ok. Just as a test could you configure x to use E0 and vice versa. So if X works on E0 we know that the pin numbers are correct. At least the enable pin is, since it got enabled.

    I hope you always have the log visible to see if firmware disables extruder for some reason? Especially after start it might go into dryrun for some error reason without th ehost noticing it.
  • I have the some problem. 
    all work fine but extruder.. I have 0.92 firmware with the extruder stepper motor connected on E0, dryrun is not selected.

    M302 S0 command has no effect (What should it do?)

    My configuration is that (Why EXT0_STEP_PIN ORIG_E0_STEP_PIN:) ORIG??

    #define EXT0_X_OFFSET 0
    #define EXT0_Y_OFFSET 0
    #define EXT0_STEPS_PER_MM 370
    #define EXT0_TEMPSENSOR_TYPE 1
    #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 E0_ENABLE_PIN
    #define EXT0_ENABLE_ON 0
    #define EXT0_MAX_FEEDRATE 50
    #define EXT0_MAX_START_FEEDRATE 20
    #define EXT0_MAX_ACCELERATION 5000
    #define EXT0_HEAT_MANAGER 3
    #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

       MArco
  • its not your brand of board. i am having the issue as well. i have an at mega 2650 and a Rambo, i have seen everyone trying to correct it with all manner of bad advice from rewiring pins and replacing mosfets to burning boot loaders etc. its in the firmware.
    i hope they fix it soon. in the meantime its plan b (which i hate) 
    i want auto level with fsr's so i have to go with a newer firmware. i will install the reprap FW to double check everything, but i know it will work, even though i would prefer to use the repeitier FW for direct edits of the eprom etc.
    and i will have to tune the config all over again. spending more time messing with configs than printing :(
  • there should be some clear bypasses for dry run and cold extrude etc. mu delta has a remote extruder and i have to cal its extrude rate as well as feed a LONG run of filament when i change/load . i know the cold extrusion inhibit is supposed to protect you, but its not much good if you have to do all this mucking about 
  • M302 S1
    allows cold extrusion. Extrusion length still keeps bound to maximum extrusion length defined in configuration.h
  • Hello all,

    I just wanted to say that I have the same problem with the new firmware.

    S302 S1   does not work. We clearly need an unconditioned command that will move extruder motor regardless of cold, hold, dry-run or what ever other conditions.

    For the record I have done the same troubleshooting as above, etc:

    - Able to move extruder motor when connected as a normal drive stepper
    - Not able to move normal drive stepper when connected as extruder
    - M302 S1, enable dry mode and vice versa. 
    - Letting it actually heat up
    - And more. 
  • edited January 2015
    I had almost the same problem, but the sprinter firmware worked fine
    but in repetier firmware extruder was not running I swapped pin round (x = E0 and E1 = x) so then the extruder worked
    in sprinter i uncomment #define RAMPS_V_1_3 in pin.h under mega so i tryed the same in repetier.

    ****************************************************************************************
    * Arduino Mega pin assignment
    *
    ****************************************************************************************/
    #if MOTHERBOARD == 33
    #define MOTHERBOARD 3
    #define RAMPS_V_1_3
    #elif MOTHERBOARD == 34
    #define MOTHERBOARD 3
    #define RAMPS_V_1_3
    #define AZTEEG_X3
    #elif MOTHERBOARD == 35
    #define MOTHERBOARD 3
    #define RAMPS_V_1_3
    #define AZTEEG_X3_PRO
    #endif
    #if MOTHERBOARD == 3
    #define KNOWN_BOARD 1
    //////////////////FIX THIS//////////////
    #ifndef __AVR_ATmega1280__
    #ifndef __AVR_ATmega2560__
    #error Oops! Make sure you have 'Arduino Mega' selected from the 'Tools -> Boards' menu.
    #endif
    #endif
    // uncomment one of the following lines for RAMPS v1.3 or v1.0, comment both for v1.2 or 1.1
    // #define RAMPS_V_1_3 THIS LINE HERE
    // #define RAMPS_V_1_0
    #ifdef RAMPS_V_1_3
    #define ORIG_X_STEP_PIN 54
    #define ORIG_X_DIR_PIN 55

    then repetier firmware .91 rev8 worked in default setup (x,y,z,E0)
    itś maybe somthing to try i dont know
    one other thing in repetier firmware setup guide under user interface if "printer name" and "printer company" is the same is it was impossible to upload firmware to the mega in my setup.
    hope it helps :)
    cheers
  • M302 S1 works only in 0.92!

    The upload problem may be the ! sign. Getting !!! in binary code in a row prevents any file from uploading (bad design of bootloader protocol on arduinos). So if text position is !! and then you have a ! it will not upload.
  • Hello kreto

    Just wanted to say thank you. Swapping to E1 (by downloading with the firmware configurator for that) did it finally for me. I still don't know whats wrong with E0. I tried to put a scope on it and I have no signal out ,so I am guessing it is software.  Uncommenting the line you mentioned unfortunately did not help regarding E0. 

    Regardless I don't see any problems for me using E1 so I am happy. 
  • edited February 2015
    hi
    when i was running sprinter firmware
    when uploading from "pc1"(w7 intel) with arduino ide 1.0.6 it worked fine when using "pc2"(w7 amd) to upload then it´s "skipped x steps" at the same line in print, three times in a row on same object then i uploaded with "pc1" same object was printed fine.
    pc1 and 2 seems to be running fine........so if you have problems maybe try upload firmware form other pc
    hope it´s helps :D
    cheers


  • edited February 2015
    sorry wrong buttom


  •    I would love to use Repetier firmware, .92, with Repetier software. Unfortunately, my application, printing with metal clay, does not require any temperature control, and the printer I'm using, the Mini Metal Maker, has no temperature control or temperature measurement capabilities.
       When I use Sprinter firmware everything work fine, but Sprinter is not maintained and Repetier firmware, .92, has capabilities I would love to use. With the Repetier firmware everything but extrusion works fine. There is no extrusion even after issuing an  M302 S1 command. The printer does return the text indicating that cold extrusion is allowed, however.
       Could you tell me when this will be fixed, or better yet, send an email to william.struve at gmail.com.
    Live well and have fun,
    Bill
  • Hi guys,

    It seems to me that I solved this problem. In config file there is a line

    EXT0_ENABLE_PIN E0_ENABLE_PINIt must be replaced with EXT0_ENABLE_PIN  ORIG_E0_ENABLE_PINIn my case it helpedSimon
  • Sorry for my previous post.  I typed the commands in separate lines, but after posting they all vere merged.

                Simon

  • Hi all,

    i am also facing the same problem. Dry Run Deactivated in the host. The Extruder will not move. But I see that the motor is locked, meaning it has got the sufficient voltage and current but just that the signal is not being sent.

    Has anybody been able out to figure out the solution for the above problem? I am using 0.92x version and the M302 command claims "Cold Extrusion Allowed". 

    @terzyans, i tried what you suggested above but still didnt work for me.!

    Thanks in advance
    Ajit
  • Hi all,

    I receive this message as soon as I connect the printer.

    "extruder 0 : temp sensor defect"
    "Error: printer set into dry mode until restart"

    After this the command M302 does not work i suppose?

    Thanks in advance
    Ajt
  • Try setting thermistor type to

    // 0 is no thermistor/temperature control

    if you have no working extruder with thermistors. That should prevent the error message. Then M302 should work.
  • Can you please help me where I should make the required change in the Configuration.h file 


    #define PDM_FOR_COOLER 0
    #define DECOUPLING_TEST_MAX_HOLD_VARIANCE 20
    #define DECOUPLING_TEST_MIN_TEMP_RISE 1
    #define KILL_IF_SENSOR_DEFECT 0
    #define RETRACT_ON_PAUSE 2
    #define PAUSE_START_COMMANDS ""
    #define PAUSE_END_COMMANDS ""
    #define EXT0_X_OFFSET 0
    #define EXT0_Y_OFFSET 0
    #define EXT0_STEPS_PER_MM 426.67
    #define EXT0_TEMPSENSOR_TYPE 1 //<-- is it here??
    #define EXT0_TEMPSENSOR_PIN TEMP_0_PIN
    #define EXT0_HEATER_PIN HEATER_0_PIN
    #define EXT0_STEP_PIN ORIG_E1_STEP_PIN
    #define EXT0_DIR_PIN ORIG_E1_DIR_PIN
    #define EXT0_INVERSE 1
    #define EXT0_ENABLE_PIN E1_ENABLE_PIN
    #define EXT0_ENABLE_ON 1
    #define EXT0_MAX_FEEDRATE 100
    #define EXT0_MAX_START_FEEDRATE 20
    #define EXT0_MAX_ACCELERATION 5000
    #define EXT0_HEAT_MANAGER 3
    #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 NUM_TEMPS_USERTHERMISTOR0 0
    #define USER_THERMISTORTABLE0 {}
    #define NUM_TEMPS_USERTHERMISTOR1 0
    #define USER_THERMISTORTABLE1 {}
    #define NUM_TEMPS_USERTHERMISTOR2 0
    #define USER_THERMISTORTABLE2 {}
    #define GENERIC_THERM_VREF 5
    #define GENERIC_THERM_NUM_ENTRIES 33
    #define HEATER_PWM_SPEED 0
Sign In or Register to comment.