Error: Driver 5 does not support x1 microstepping
-
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, M350It'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
OlafHere'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
-
@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 interlaceJust leave out the M350 E1. You can't set microstepping on an external driver.
-
@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_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. -
@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.
-
@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.
-
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.