Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Error: Driver 5 does not support x1 microstepping

    Scheduled Pinned Locked Moved
    Duet Hardware and wiring
    2
    7
    497
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • o_lampeundefined
      o_lampe
      last edited by

      Hi Gents,
      I try to connect an external driver to my Duet2WiFi on P5 (E2 on extension port), but I get the above error
      I got that error even without the tool setting, just by modifying M584, M569, M350

      It's aDuet2WiFi with RRF3.3b2, FWIW.

      Do I have to C"nil" something, before using it as external drive? I couldn't find it in the Wiki.
      Thx for reading
      Olaf

      Here's a short config summary regarding the external stepper

      M584 X0 Y1 Z2 E5                                   ; set drive mapping
      M569 P5 S1  T25:25:25:25                           ; physical drive 5 is external (DUE)
      M350 E1 			; no microsteps, no interlace
      ...
      ; Tools
      M563 P0 D0 H1 S"nozzle04" F0                     ; define tool 0:     ?? E5 should be D0??
      G10 P0 X0 Y0 Z0                                    ; set tool 0 axis offsets
      G10 P0 R0 S0                                       ; set initial tool 0 active and standby temperatures to 0C 
      
      

      Here's the full version

      ; Configuration file for Duet WiFi
      ; test-setup for DC-encoder stappers
      ;
      ; 
      
      ; General preferences
      G90                                                ; send absolute coordinates...
      M83                                                ; ...but relative extruder moves
      M550 P"DuetQDE"                                     ; set printer name
      
      M584 X0 Y1 Z2 E5                                   ; set drive mapping
      ; Network
      M552 S1                                   ; enable network and acquire dynamic address via DHCP
      M586 P0 S1                                         ; enable HTTP
      M586 P1 S0                                         ; disable FTP
      M586 P2 S0                                         ; disable Telnet
      ;M918 P1 E4									; enable 12864
      
      ; Drives
      M569 P0 S1                                         ; physical drive 0 goes forwards
      M569 P1 S1                                         ; physical drive 1 goes forwards
      M569 P2 S1                                         ; physical drive 2 goes forwards
      M569 P5 S1  T25:25:25:25                           ; physical drive 5 is external (DUE)
      
      M350 E1 			; no microsteps, no interlace
      
      M350 X16 Y16 Z16 I1                            ; configure microstepping with interpolation
      M92 X80.00 Y80.00 Z400.00 E74.00                   ; set steps per mm
      M566 X900.00 Y900.00 Z60.00 E100.00                ; set maximum instantaneous speed changes (mm/min)
      M203 X6000.00 Y6000.00 Z180.00 E2800.00            ; set maximum speeds (mm/min)
      M201 X1500.00 Y1500.00 Z200.00 E1500.00            ; set accelerations (mm/s^2)
      M906 X300 Y300 Z300 I50                       ; set motor currents (mA) and motor idle factor in per cent
      M84 S10                                            ; Set idle timeout
      
      ; Axis Limits
      M208 X-40 Y0 Z0  S1                              ; set axis minima
      M208 X198 Y210 Z200 S0                        ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"xstop"									; optical endstop for low end on X
      M574 Y0 S1                                         ; configure sensorless endstop for low end on Y
      
      M950 F1 C"fan2" Q5000                               ; create fan 1 on pin fan1 and set its frequency
      M106 P1 S0 H-1
      
      M308 S1 P"e0temp" Y"thermistor" T100000 B4138      ; configure sensor 1 as thermistor on pin e0temp
      M950 H1 C"e0heat" T1                               ; create nozzle heater output on e0heat and map it to sensor 1
      M307 H1 B0 S1.00                                   ; disable bang-bang mode for heater  and set PWM limit
      M143 H1 S280 
      
      ; Z-Probe
      M558 P0 H5 F120 T6000                              ; disable Z probe but set dive height, probe speed and travel speed
      M557 X-25:215 Y15:195 S20                          ; define mesh grid
      
      ; Tools
      M563 P0 D0 H1 S"nozzle04" 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 
      
      ; Custom settings are not defined
      
      ; Miscellaneous
      M911 S20 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
      
      T0
      M302 P1	; allow cold extrusions
      
      
      1 Reply Last reply Reply Quote 0
      • dc42undefined
        dc42 administrators
        last edited by

        @o_lampe said in Error: Driver 5 does not support x1 microstepping:

        M584 X0 Y1 Z2 E5 ; set drive mapping
        M569 P5 S1 T25:25:25:25 ; physical drive 5 is external (DUE)
        M350 E1 ; no microsteps, no interlace

        Just leave out the M350 E1. You can't set microstepping on an external driver.

        Duet WiFi hardware designer and firmware engineer
        Please do not ask me for Duet support via PM or email, use the forum
        http://www.escher3d.com, https://miscsolutions.wordpress.com

        o_lampeundefined 1 Reply Last reply Reply Quote 0
        • o_lampeundefined
          o_lampe @dc42
          last edited by o_lampe

          @dc42
          Thanks David,
          I can read the step pulses, but the motor doesn't change direction. I tried to poll the dir-pin in the main loop, but it didn't work.
          Using ISRs for both now.
          Is there a time table diagram, where I can see what's the best strategy to write the interrupt service routines for the receiving Arduino Due?
          I've tried M569 T25:25:25:25 timing, the step signal also works with T5:5:

          I ignore the enable signal ATM. The driver (TB6612 is always enabled)

          My current ISR-setting

          // Falling edge for both
            attachInterrupt(digitalPinToInterrupt(steps_in), step_in, FALLING);
            attachInterrupt(digitalPinToInterrupt(dir_in), directions, FALLING);
          ...
          // ISRs:
            void step_in(){ //  read steps from Duet
               in_Steps += 1;  
               }
          
            void directions(){
              dir = digitalReadDirect(dir_in);
              }
          
          o_lampeundefined 1 Reply Last reply Reply Quote 0
          • o_lampeundefined
            o_lampe @o_lampe
            last edited by o_lampe

            @o_lampe
            OK, I figured out I have to set the dir-interrupt to "CHANGE",.
            Now I can run the DC-encoder motor with M569 T3:3:3:3 timing. 😬

            But it's a bit disapointing how raw the motor moves although there are 8344 QDE-pulses per turn of the output shaft.
            One motor turn delivers 28 QDE pulses and I want to use a 16 tooth gt2 pulley, so the QDE pulses melt down to 8344 / 28 / 32mm= 9.3125 steps/mm. And I can only use full steps, I guess. 😞

            dc42undefined 1 Reply Last reply Reply Quote 0
            • dc42undefined
              dc42 administrators @o_lampe
              last edited by

              @o_lampe said in Error: Driver 5 does not support x1 microstepping:

              But it's a bit disapointing how raw the motor moves although there are 8344 QDE-pulses per turn of the output shaft.
              One motor turn delivers 28 QDE pulses and I want to use a 16 tooth gt2 pulley, so the QDE pulses melt down to 8344 / 28 / 32mm= 9.3125 steps/mm. And I can only use full steps, I guess.

              You can use whatever microstepping your external driver supports. The Duet doesn't need to know what microstepping that is, it just needs to know the microsteps/mm.

              Duet WiFi hardware designer and firmware engineer
              Please do not ask me for Duet support via PM or email, use the forum
              http://www.escher3d.com, https://miscsolutions.wordpress.com

              o_lampeundefined 1 Reply Last reply Reply Quote 0
              • o_lampeundefined
                o_lampe @dc42
                last edited by

                @dc42
                Got it, but this driver is a simple dual H-bridge with two inputs for each half. (forward/backwards/break/idle are the options)
                It drives a DC motor, and they don't offer a concept of microstepping. There is only one coil 'active' in a DC motor at a time...

                I thought, the 298:1 gearbox and 28 pulses per motor turn would give plenty of steps/mm, but the motor doesn't stop immediately although the driver has a break mode, where it shorts the motor coils.
                So I have to let the motor run for 28 QDE pulses per incoming step pulse. (that's one motor turn)
                I already have a PWM ramp_down internally to keep overshooting at an acceptable level. But the faster it runs, the more overshooting I see, which makes it hard to eliminate it.
                A simple backlash-correction doesn't help, unless I'd run the motor at constant speed. Which wouldn't be a big issue for feltpen-drawing....

                I have to build a real test rig and see what I can achieve.

                1 Reply Last reply Reply Quote 0
                • o_lampeundefined
                  o_lampe
                  last edited by

                  Just to report my new findings,
                  I totally underestimated the crunching power of the Arduino Due. It is very well able to follow every step pulse from Duet, without using internal 'gear ratio'.
                  I can use 256 steps/mm now, which makes it run smoother, but the varying overshoot still persists.

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post
                  Unless otherwise noted, all forum content is licensed under CC-BY-SA