Issue with secondary extruder drive on CAN bus with Mini5plus
-
@DIY-O-Sphere I think @WolfMc3 is just trying to get the motor to move, which is why only D3 is in M563.
Ian
-
Thanks a lot for your help so far! Even though I’ve made the adjustments you suggested, the motor still isn’t turning. I’ve fixed some issues in the config.g and cleaned it up, but the problem persists.
Here’s what I’ve done:
I’ve corrected the config.g file, as there were some things that needed fixing, and took the opportunity to tidy it up. I’m attaching the updated version.
; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"hypercube" ; set printer name M669 K1 ; select CoreXY mode M81 C"pson" M80 M98 P"/sys/_global_vars.g" G4 S3 ; wait for expansion boards to start ; Accelerometers M955 P20.0 I20 ; configure accelerometer on board #20 M955 P21.0 I20 ; configure accelerometer on board #21 M955 P22.0 I20 ; configure accelerometer on board #22 ; Drives M569 P0.2 S1 ; Z POST M569 P0.3 S1 ; Z DX M569 P0.4 S1 ; Z SX M569 P0.0 S0 D2 ; Y M569 P0.1 S1 D2 ; X M569 P1.0 S1 ; V1 (tools gantry motor LEFT) M569 P1.1 S0 ; V2 (tools gantry motor RIGHT) M569 P1.2 S0 ; C (cleaner deployer) M569 P20.0 S1 ; E0 (T0 PUSH) M569 P30.0 S1 ; E3 (T0 PULL) M569 P21.0 S1 ; E1 (T1 PUSH) M569 P30.1 S1 ; E4 (T1 PULL) M569 P22.0 S1 ; E2 (T2 PUSH) M569 P30.2 S1 ; E5 (T2 PULL) M584 X0.1 Y0.0 Z0.4:0.3:0.2 E20.0:21.0:22.0:30.0:30.1:30.2 C1.2 V1.0:1.1 ; set drive mapping M350 X16 Y16 Z16 E16:16:16:16:16:16 I1 C32 V16 ; microstepping M92 X107.655 Y107.655 Z800 C67.556 E397:397:397:415:415:415 V1600 ; set steps per mm (Hemera x16 397) M566 X900 Y900 Z60 E800:800:800:800:800:800 P1 C1000 V12 ; set maximum instantaneous speed changes (mm/min) M203 X20000 Y20000 Z1200 E3000:3000:3000:3000:3000:3000 C15000 V3000 ; set maximum speeds (mm/min) M201 X4000 Y4000 Z200 E12000:12000:12000:12000:12000:12000 C8000 V80 ; set accelerations (mm/s^2) M906 X1400 Y1400 Z1000 E800:800:800:800:800:800 I30 C700 V900 ; set motor currents (mA) and motor idle factor in per cent M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z-1 C0 V0 S1 ; set axis minima M208 X261 Y292 Z290 V240 C122 S0 ; set axis maxima ; Endstops M574 X2 S1 P"^!io2.in" ; hall effect endstop X high end M574 Y2 S1 P"^!io1.in" ; hall effect endstop Y high end M574 Z1 S2 ; Z-probe endstop for low end on Z M574 C1 S1 P"1.io0.in" ; endstop for low end on C (cleaner deployer) M574 V2 S1 P"1.io3.in+1.io4.in" ; endstop for hign end on V (1.0:1.1) ; Z-Probe M950 S0 C"io4.out" ; create servo pin 0 for BLTouch M558 P9 C"^io4.in" H3.5 F1900:360 S0.03 A3 T30000 R0.25 ; set Z probe type to bltouch and the dive height + speeds G31 P25 X0 Y27.1 Z3.23 ; <---- - away | + closer ; set Z probe trigger value, offset and trigger height M671 X{global.centerX-160,global.centerX+160,global.centerX} Y{global.centerY-160,global.centerY-160,global.centerY+160} S7 ; Z pivot points M280 P0 S60 ; BLTouch alarm release G4 P300 ; delay for BLTouch M280 P0 S160 ; BLTouch alarm release & push pin up G4 P300 ; delay for BLTouch M280 P0 S90 ; Force retract ; Sensors M308 S0 P"temp0" Y"thermistor" A"Heated Bed" T100000 B4138 ; configure sensor 0 as thermistor on pin temp0 M308 S1 P"20.temp0" Y"thermistor" A"NozzleT0" T100000 B4725 C7.06e-8 ; configure sensor #1 M308 S2 P"21.temp0" Y"thermistor" A"NozzleT1" T100000 B4725 C7.06e-8 ; configure sensor #2 M308 S3 P"22.temp0" Y"thermistor" A"NozzleT2" T100000 B4725 C7.06e-8 ; configure sensor #3 M308 S4 Y"mcu-temp" A"6HC" M308 S5 Y"drivers" A"6HC DRV" M308 S6 Y"mcu-temp" P"1.dummy" A"3HC.1" M308 S7 Y"drivers" P"1.dummy" A"3HC.1 DRV" M308 S8 Y"mcu-temp" P"20.dummy" A"1LC.20" M308 S9 Y"drivers" P"20.dummy" A"1LC.20 DRV" M308 S10 Y"mcu-temp" P"21.dummy" A"1LC.21" M308 S11 Y"drivers" P"21.dummy" A"1LC.21 DRV" M308 S12 Y"mcu-temp" P"22.dummy" A"1LC.22" M308 S13 Y"drivers" P"22.dummy" A"1LC.22 DRV" M308 S14 P"1.temp0" Y"pt1000" A"Chamber" ; configure sensor 2 as thermistor on pin temp2 M308 S15 Y"mcu-temp" P"30.dummy" A"M5+.30" M308 S16 Y"drivers" P"30.dummy" A"M5+.30 DRV" ; Heaters M950 H0 C"out0" T0 Q1 ; create bed heater output on out0 and map it to sensor 0 M307 H0 B1 S1 V24.2 ; enable bang-bang mode for the bed heater and set PWM limit M140 H0 P0 ; map heated bed to heater 0 M143 H0 P0 T0 C0 A0 S100 ; set temperature limit for heater 0 to 100C M950 H1 C"20.out0" T1 ; create heater #1 M143 H1 P0 T1 C0 S300 A0 ; configure heater monitor #0 for heater #1 M307 H1 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #1 M950 H2 C"21.out0" T2 ; create heater #2 M143 H2 P0 T1 C0 S300 A0 ; configure heater monitor #0 for heater #2 M307 H2 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #2 M950 H3 C"22.out0" T3 ; create heater #3 M143 H3 P0 T1 C0 S300 A0 ; configure heater monitor #0 for heater #3 M307 H3 R2.43 D5.5 E1.35 K0.56 B0 ; configure model of heater #3 M950 H4 C"1.out0" T14 Q1 ; create bed heater output on 1.out0 and map it to sensor 14 M570 H4 P3000 T40 ; Increase the fault time to 3000 seconds with a tolerance of 40°C M307 H4 B1 S1 R0.06 D10 ; enable bang-bang mode for the bed heater and set PWM limit M141 H4 P0 ; map heated chamber to heater 0 M143 H4 P0 S60 A0 C0 ; set temperature hard limit for heater 4 to 60C M143 H4 P1 S50 A2 C0 ; set temperature soft limit for heater 4 to 50C ; Fans M950 F0 C"20.out1" Q25; create fan #0 M106 P0 C"T0 TOOL FAN" S0 L0 X1 B0.1 ; configure fan #0 M950 F1 C"20.out2+out2.tach" ; create fan #1 M106 P1 C"T0 NOZZLE FAN" S0 B0.1 H1 T55 ; configure fan #1 M950 F2 C"21.out1" Q25; create fan #2 M106 P2 C"T1 TOOL FAN" S0 L0 X1 B0.1 ; configure fan #2 M950 F3 C"21.out2+out2.tach" ; create fan #3 M106 P3 C"T1 NOZZLE FAN" S0 B0.1 H2 T55 ; configure fan #3 M950 F4 C"22.out1" Q25; create fan #4 M106 P4 C"T2 TOOL FAN" S0 L0 X1 B0.1 ; configure fan #4 M950 F5 C"22.out2+out2.tach" ; create fan #5 M106 P5 C"T2 NOZZLE FAN" S0 B0.1 H3 T55 ; configure fan #5 M950 F6 C"out4+out4.tach" Q15 ; create fan 6 (BOARD FAN) on pin out3 and set its frequency M106 P6 S1 C"Board FAN" M950 F7 C"out5+out5.tach" Q15 ; create fan 7 (CHAMBER FAN) on pin out5 and set its frequency M106 P7 S0 C"Chamber FAN" ; Illumination M950 P3 C"io5.out" Q100 M98 P"/macros/LIGHT OFF" ;Servos M950 S1 C"io7.out" ; Chamber Fan servo M280 P1 S40 ; (40 Closed, 180 Opened) ; button and sensors M950 C"!^io3.in" J0 ; Start Button M950 C"!io8.in" J1 ; Stop Button M950 C"!io6.in" J2 ; Emerg Button M950 C"^!20.io2.in" J3 ; T0 Tool park sensor M950 C"^!21.io2.in" J4 ; T1 Tool park sensor M950 C"^!22.io2.in" J5 ; T2 Tool park sensor ; Triggers M581 P0 S0 R0 T2 ; Start Button M581 P1 S1 R0 T6 ; Stop Button M581 P2 S0 R0 T0 ; Emerg Button M581 P4 S1 T4 R0 M581 P4 S0 T5 R0 M98 P"0:/sys/defaults.g" ; Revo tool config ;M98 P"revo/config.g" D{0,3} H1 F0 T0 J3 X0 Y0 Z0 ;M98 P"revo/config.g" D{1,4} H2 F2 T1 J4 X0 Y0 Z-0.08 ;M98 P"revo/config.g" D{2,5} H3 F4 T2 J5 X0 Y0 Z0.10 M563 P0 D3 S"Test driver 3" ;M563 P1 D4 S"Test driver 4" ;M563 P2 D5 S"Test driver 5" ;Input shaping ;M593 P"zvd" F43 S0.02 M593 ; Miscellaneous M404 N1.75 D0.4 ; set filament width and nozzle width M302 S180 R75 M501 ; load saved parameters from non-volatile memory M42 P4 S1 ; TODO to check if sensors.gpIn[2].value == 1 ; if emerg button is normal M98 P"/sys/pwr_on.g" G28 C ; Home cleaner ;G28 V M557 X{ global.PrintAreaXmin,global.PrintAreaXmax } Y{ global.PrintAreaYmin,global.PrintAreaYmax } P5 ; Set Z probe point or define probing grid ;M98 P"select-tool.g" ;if (state.currentTool != -1) ; M703 ; load filament config T0 P0
I also appreciate the tip about reducing the microstepping to x16 and removing the curly brackets from the tool name.
As for the Mini5plus board, here’s the result of the M122 B30 command:
Diagnostics for board 30: RepRapFirmware for Duet 3 Mini 5+ version 3.5.3 (2024-09-18 11:25:48) running on Duet 3 Mini5plus WiFi Last reset 00:02:37 ago, cause: software Driver 0: 415.0 steps/mm,, SG min 0, read errors 0, write errors 3, ifcnt 11, reads 11402, writes 32, timeouts 0, DMA errors 0, CC errors 0 Driver 1: 415.0 steps/mm,, SG min 0, read errors 0, write errors 3, ifcnt 11, reads 11398, writes 36, timeouts 0, DMA errors 0, CC errors 0 Driver 2: 415.0 steps/mm,, SG min 0, read errors 0, write errors 3, ifcnt 14, reads 11398, writes 35, timeouts 0, DMA errors 0, CC errors 0 Driver 3: 80.0 steps/mm,, SG min 0, read errors 0, write errors 3, ifcnt 11, reads 11403, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 4: 80.0 steps/mm,, SG min 0, read errors 0, write errors 3, ifcnt 11, reads 11405, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 5: 80.0 steps/mm,, SG min 0, read errors 0, write errors 3, ifcnt 11, reads 11405, writes 30, timeouts 0, DMA errors 0, CC errors 0 Driver 6: 80.0 steps/mm,, SG min 0, read errors 0, write errors 3, ifcnt 11, reads 11404, writes 30, timeouts 0, DMA errors 0, CC errors 0 VIN: 24.3V, MCU temperature: min 31.2C, current 31.9C, max 32.1C Peak sync jitter -7/5, peak Rx sync delay 188, resyncs 0/0, no step interrupt scheduled
Updates:
The "Extrude" and "Retract" buttons in DWC are not greyed out, so they’re active. When I send an extrude command, the driver powers up, but the motor still doesn’t move, even after fixing the config.
The Mini5plus secondary config.g only has the command to set the CAN address to 30 (M954 A30).
I’ve simplified the tool definition in the main config.g to remove extra variables. I know I’ll need to add M567 for tool mixing later, but for now, I just want to get the motor moving.I’m also attaching a diagram showing how the boards are connected on the CAN bus for further clarity and photo.
Thanks again for all the support! If you have any other ideas, I’m happy to try them out.
-
Hi,
As a follow-up to my previous post where I performed all the suggested tests, I’ve now tried a few more things:
I removed the definitions for all other extruders, leaving only the one that’s not working, but it still won’t move.
I redefined the problematic extruder as the W axis (a movement axis), and the motor worked fine in that configuration (skipping homing, of course).
What’s the difference between defining an extruder and a regular axis? Could this be a firmware bug or some configuration limitation I’ve overlooked? -
@WolfMc3 it sounds to me like a firmware bug. It may already be fixed in the 3.6.0-beta.1 release.
-
-
@WolfMc3 thanks for the feedback. @droftarts please log a Github issue for this.
-
@dc42 said in Issue with secondary extruder drive on CAN bus with Mini5plus:
@droftarts please log a Github issue for this.
For the next 3.5.x release? The user says it is fixed in 3.6.0-beta.1. Also, could it be related to https://github.com/Duet3D/RepRapFirmware/issues/1019, which is reported to not work in 3.5.3?
Ian
-
@dc42 and @droftarts,
Just to clarify, I believe my problem might not be related to the GitHub issue mentioned by @droftarts. During my tests, when the extruder wasn’t moving, I had the motor on the bench and noticed it held its position firmly. After the 30-second timeout, the tension would reduce slightly, but the motor remained powered and enabled. Sending another command would make the motor return to a firm hold.
I hope I’ve been at least as helpful to you as you’ve been to me!
-
@droftarts if it turns out to be a simple coding error then I'll attempt a fix in 3.5.x. I doubt that it is related to the idle current issue, which AFAIR has been reported in 3.6 too.
-
@dc42 @WolfMc3 Belatedly, I have created this Github issue: https://github.com/Duet3D/RepRapFirmware/issues/1058
Ian