Remapping, changing settings

  • I would appreciate advice for the following…
    Duet3d 1.19 firmware 0.8.5 board

    1. Any way to reduce the microstepping to 1/4 or 1/8? I'm loosing too much force at 1/16

    2. How would I remap pins from the Z to the X and vice versa? I need this because shorted a pin and lost microstepping on one h bridge on the X so I'm sending it to z where it won't matter much.

    If the answer involves using a gcode, does that code make it permenant in flash memory?

    3. How do I get setting changes in the Json config to take? I'm trying to change motor time-out and resetting does nothing. M code?

    4. How would I approach the challenge of making a user friendly macro to extrude through an e3d Cyclops where two extruders are doing the exact same thing (so the gcode doesn't need to be changed except in preamble)

    5. Why is there a minimum feedrate limit and is there any way to lower this?

  • administrators

    1. You are not losing any significant amount of force by using 1/16 microstepping. Switching to lower microstepping will make very little difference if any to the amount of force you can get before the extruder skips steps. Most likely you are using an ungeared extruder with a motor that isn't powerful enough. But if you really want to reduce microstepping, there are two pairs of pads next to each driver chip with fine traces between them that you can cut.

    2. Look up M584 in the gcode page of the wiki.

    3. Settings have to be written into config.g to take effect. The json file is only used as an input to configtool.

    4. To extrude using more than one extruder driver, use M563 to define a tool that uses both extruders, then use M567 and M568 to define and enable mixing.

    5. The minimum feed rate in RRF is already very small, about 1mm/sec for the axes AFAIR. Do you need it to be even slower?

  • Hi DC42!

    1. This assumption started because I started out with Smoothieboard, and when using a Torque testing rig that I set up, the motor hold torque ratings matched exactly with the spec sheets as long as my chopping current was verified (it seems to always be 5-10% low on every system I try). When I switched to the Duet I lost 15-35% motor force, depending on the motor, and the only difference i see is Smoothie-board was operating on 1/4 step. Did some research and found some other seeing the same problem (With microstepping loosing force) Also a 0.9 degree motor has much less force than 1.8 degree step (figure that one out!). So I'm hunting for the cause of this loss and unsure where it came from -

    3. Still hunting this one down.
    All I could find in the config.g file was "M906 X1000 Y1000 Z1000 E800 I60 " > set idle current to 60. That weird because the system reports that it is at 30% idle current; Also can't find any reference to a timeout in the config.g
    The config.json reflects what i put into the web configurator and matches what I had initially > are you saying all this does it make pre-amble gcodes during startup? Are any setting saved in flash memory (sorry, bear with me as I used Ramps for the last ~7 years)

    2.4. thanks!

    5. This was more a housekeeping question. I wanted full control over the X axis for testing force at low speeds. Also I assume the limit doesn't apply in a coordinated multi axis more or to an extruder?

  • SOLVED: With one BIG suspicious discovery !

    The drivers have fundamentally very different performance.


    1. The motor forces are exactly the same at higher current., problem was the reference currents are calculated differently by the Firmware OR the driver chip. Some use a version of RMS to determine chopping current (or decay mode affected it). So i had to adjust by measuring current manually (isn't this what a digital current control is for?).
    2. At lower currents the A4982 simply gives more torque, and I can't completely understand why.

    At this point I believe its because of the weird way it drives the sine positioning wave truth table. At the Smoothieboard moves closer to the peak, it actually compacts movement towards it in the direction of motion, and even remembers how many "Fake" microsteps it took. It's hard to explain in words, but the driver intentionally makes the movement non-linear approaching the peak, possibly giving less accuracy and more force. The Duet A4982 system does NOT do this at all. Also I can't explain why there seems to be a clear break at 1A, below 1A the A4982 has LESS force with duet : (

    DATA (always max force, and max voltage/current, by microstepping to the peak of the sine wave):
    System, CurrentSet mA, Torque KG-cm, Actual Current mA
    Duet3D,1800,3.13, 1610

    So there is a HUGE discrepancy here. Even though current's are matched and maintained. The torques start to break away pretty strong at 1 amp and below:
    1.5A - Forces are the same
    1A - Forces are the same
    0.8A - 12% less force on duet : (
    0.5A - 30% less force on duet : (

    The motor is rated, btw, 40KG-CM at 1.5A (Seems to be a lie, I have this problem only with Stepperonline's ratings

    It's also worth noting, the Smoothieboard does NOT move the motor linearly. Maybe this is where the extra force comes from. The driver stepping seems to be intentionally non-sinnusoidal. It moves the motor through a linear path for a few steps, then jumps to the peak of the move, seemingly skipping 1/8th or even 1/4 of a full curve. You see the same effect by putting a long arm on the motor shaft visually. Duet also has a wider range of current control. I tried to draw what I see here.

  • administrators

    There are two factors at play here:

    1. It appears that according to your multimeter, the Duet 085 is giving you a little less peak current than you asked for, and the mksbase is giving you a little more. The difference is not as much as difference between RMS and peak. With 3D printers, the currents referred to are always peak.

    2. The mks is using the A4982 in its default decay mode. This is known to cause problems with low-current microstepping as explained on the A4982 data sheet, resulting in missed microsteps when the current is falling. The designers of the Duet were aware of this issue and chose to use mixed decay permanently. This avoids the artefacts you get as a result of missed microsteps, for example vertical banding on the side faces of a print on a delta printer.

    A side effect of the drivers missing steps on the MKS is that at some microsteps the current in one of the motor windings is higher than it should be, resulting in more torque.

    Regarding 0.9 vs. 1.8deg motors, if you look at the data for similarly sized and wound 0.9 and 1.8deg motors from the same manufacturer, you will see that the holding torque for the 0.9deg motor is a little less. For example, 59Ncm for the 1.8deg 17HS19-2004S vs. 46Ncm for the 0.9deg 17HM19-2004S.

  • Great answer! Thanks. We found the same thing at M3D with DRV8834 and use it in mixed decay mode also. It helps having gearing motors too. The Duet3D is going to make the best printer we've ever worked on : )

    can you comment on this issue?
    G0 Y0.02> Moves
    G0 Y0.01> Won't move.

    Is the firmware throwing away the error (instead of accumulating it)?

  • administrators


    Great answer! Thanks. We found the same thing at M3D with DRV8834 and use it in mixed decay mode also. It helps having gearing motors too. The Duet3D is going to make the best printer we've ever worked on : )

    can you comment on this issue?
    G0 Y0.02> Moves
    G0 Y0.01> Won't move.

    Is the firmware throwing away the error (instead of accumulating it)?

    What type of printer is it, and what is your steps/mm? If it's around 80 then 0.01mm is less than 1 microstep. What happens if you send G0 Y0.01 several times?


Looks like your connection to Duet3D was lost, please wait while we try to reconnect.