Duet2 + Breakout Board with external stepper driver
-
Hey guys,
i´m pretty new when it comes to duets and building printers in general but I´m currently working on a project that uses a dual z axis motors (Nema23 , 4,2A) with external stepper drivers (DM542T).
I have problems to make the motors run. I tried it with an Arduino setup and wired all neg inputs in parallel and connected it to the Arduino (also the ENA+) and it worked just fine. Sadly i cannot manage to get the integration of the drivers in the config.g file.What is the output voltage of the breakout boards PUL+ signal? The driver demands a 2k Ohms resistor with 24V signals.
Also what is the max current and e steps I should set for an external driver in the config.g ?
I used the guide of a dude named betrue3d.dk to set the z axis up, but it didn´t work.
Do i need to use things like "Taa:bb:cc:dd (firmware 1.21 and later) Minimum driver step pulse width, step pulse interval, direction setup time and direction hold time, in microseconds" value when setting up an external driver? I don´t seem to understand the instructions there.
It would be nice to get your help. Thanks! -
@Steppenleguan said in Duet2 + Breakout Board with external stepper driver:
What is the output voltage of the breakout boards PUL+ signal? The driver demands a 2k Ohms resistor with 24V signals.
From the documentation:
The Duet Expansion Breakout Board uses a differential output signal of -3.6V to +3.6V. The differential outputs help the LEDs in the optocouplers in most drivers turn off faster. Also they are compatible with drivers that accept RS485 signal levels instead of 5V. Most external drivers are quite happy with the 3.6V differential signals. However, for those few drivers that really do need 5V, you can achieve this by connecting STEP+ from your driver to +5V, which is available on the H6_PWM and/or H7_PWM pin headers (see wiring diagram above), and STEP- for your driver to STEP- on the expansion board. Similarly for DIR and ENA.
Depending on the driver, your ENA input may be a Disable input, not an Enable input. You can fix this by swapping the ENA+ and ENA- wires.
Also what is the max current and e steps I should set for an external driver in the config.g ?
You don't set the current for an external driver in config.g.
The steps/mm set in config.g depends on the settings of the external driver and your hardware.
For my printer with 20 tooth pulleys on the stepper and the stepper driver set to 8192 steps per revolution the steps/mm in config.g was 204.75. That value was computed based on a 20 tooth pulley creating 40 mm of movement per revolution - 8192 / 40 = 204.75.
Do i need to use things like "Taa:bb:cc:dd
Start with these values: T2:2:10:10
-
@Steppenleguan Your driver uses 0-5V signalling; see https://www.omc-stepperonline.com/download/DM542T.pdf
Pulse signal: In single pulse (pulse/direction) mode, this input represents pulse signal, each rising edge active; 4-5V when PUL-HIGH, 0-0.5V when PUL-LOW.
To set 0-5V signalling, see https://duet3d.dozuki.com/Wiki/Duet_Expansion_Breakout_Board#Section_Notes
Section 9 of the pdf shows the signalling; it looks like it should be T2.5:2.5:5:5, but YMMV.
Ian
-
@Steppenleguan said in Duet2 + Breakout Board with external stepper driver:
Also what is the max current and e steps I should set for an external driver in the config.g ?
Max current and microstepping are set by the DIP switches on the external driver; you don't have to set them in config.g. You will have to set the steps per mm (M92), so the Duet knows how many steps to send to the driver to move it 1mm.
I used the guide of a dude named betrue3d.dk to set the z axis up, but it didn´t work.
Do you mean this one? https://betrue3d.dk/duet-wifieth-use-m584-to-autolevel-or-sync-z-axis-using-2-or-more-motors/
I can see quite a lot of issues and errors with that guide. If you have your Z motors connected to different stepper motor drivers, then use our guide: https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motorsIf that doesn't help, please post your config.g and relevant bed/homing files, and send M122 to the Duet and post response, to show firmware version and diagnostics.
Ian
-
Do you mean this one? https://betrue3d.dk/duet-wifieth-use-m584-to-autolevel-or-sync-z-axis-using-2-or-more-motors/
I can see quite a lot of issues and errors with that guide. If you have your Z motors connected to different stepper motor drivers, then use our guide: https://duet3d.dozuki.com/Wiki/Bed_levelling_using_multiple_independent_Z_motorsYes, i was using this guide. At least his guide was understandable for a non gcode and native english speaker
I know i have a lot of finetuning to do, but you can find the config.g for this project here:; Configuration file for Duet WiFi (firmware version 3) ; executed by the firmware on start-up ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sun Feb 28 2021 15:17:04 GMT+0100 (Mitteleuropäische Normalzeit) ; General preferences G90 ; send absolute coordinates... M83 ; ...but relative extruder moves M550 P"R2-3D2" ; set printer name M669 K1 ; select CoreXY mode ; Network M552 S1 ; enable network M586 P0 S1 ; enable HTTP M586 P1 S0 ; disable FTP M586 P2 S0 ; disable Telnet ; Define Drives ; Physical Drive connection M569 P0 S1 ; Drive 0 X M569 P1 S1 ; Drive 1 Y ; M569 P2 S0 ; Left z-motor (original Z) M569 P3 S0 ; Drive3 [Extruder 1] - new Extruder 1 [ENABLED] M569 P4 S0 ; Drive4 [Extruder 2] - new Extruder 2 [ENABLED] M569 P5 R1 T2:2:10:10 S0 ; Extruder0 - BreakoutBoard_Driver5 - new Z Axis Left M569 P6 R1 T2:2:10:10 S0 ; Extruder1 - BreakoutBoard_Driver6 - new Z Axis Right ;Pnnn Motor driver number ;Snnn Direction of movement of the motor(s) attached to this driver: 0 = backwards, 1 = forwards (default 1) ;Rnnn Driver enable polarity: 0 = active low, 1 = active high, -1 = driver is always disabled and is not monitored (default 0) ;Tnnn (firmware 1.14 and later) Minimum driver step pulse width and interval in microseconds ;Taa:bb:cc:dd (firmware 1.21 and later) Minimum driver step pulse width, step pulse interval, direction setup time and direction hold time, in microseconds ;Dnn (firmware 2.0 and later, only applies to TMC2660, TMC22xx, TMC2160, TMC5160 and TMC5161 stepper drivers) Driver mode: 0=constant off time, 1=random off time, 2=spread cycle, 3=stealthChop or stealthChop2 ;mode 3 for TMC22xx/TMC2160/TMC516x only). The default is spreadCycle for TMC2660, TMC2160 and TMC516x drivers, and stealthChop2 for TMC22xx. ;In stealthChop mode the drivers will switch over to spreadCycle automatically at high speeds, see the V parameter. ;Fnn (firmware 2.02 and later) Off-time in the chopper control register, 1 to 15 ;Cnnnn (firmware 2.0 and later, only applies to TMC2660, TMC22xx, TMC2160 and TMC516x stepper drivers) Lowest 17 bits of the chopper control register value. ;Bnn (firmware 2.02 and later) Blanking time (tbl) in the chopper control register, 0 to 3. See the TMC driver datasheet. ;Hnn (firmware 2.02 and later) thigh parameter for those stepper driver chips that support it, e.g. TMC5160 and TMC2160. Send M569 P# (where # is the driver number) with no additional parameters to see how this ,translates into mm/sec. See also the V parameter. ;Yaa:bb or Yaa:bb:cc (firmware 2.02 and later) Hysteresis start, end and decrement values in the chopper control register. See the TMC driver datasheet for the meaning. ;Vnnn (firmware 2.02 and later) tpwmthrs parameter for those stepper driver chips that support it. This is the interval in clock cycles between 1/256 microsteps below which the drivers will switch from stealthChop ;to to spreadCycle mode. Only applies when the driver is configured in stealthChop mode. Typical value are from 100 (high speed) to 4000 (low speed). Send M569 P# (where # is the driver number) with no additional ;parameters to see how this translates into mm/sec. ; M569 P7 S1 ; Extruder2 - Physical Tool 2 ; M569 P8 S1 ; Extruder3 - Physical Tool 3 ; M569 P9 S1 ; Extruder4 - Physical Tool 4 M584 X0 Y1 Z5:6 E3:4 P3 ; set drive mapping Driver 0 For X, 1 for Y, Z=5:6, Extruder 3:4 ; M671 X-20:220 Y0:0 S0.5 ; leadscrews at left (connected to Z) and right (connected to E1) of X axis ; copied from guide M350 X16 Y16 E16:16 I1 ; configure microstepping with interpolation M92 X80.00 Y80.00 M92 Z800:800 ; set steps per mm E92 E400:400 M566 X6000.00 Y6000.00 Z60.00:60.00 U60.00 E120.00:120.00 ; set maximum instantaneous speed changes (mm/min) M203 X30000.00 Y30000.00 Z1000:1000 U1000 E1800.00:1800.00 ; set maximum speeds (mm/min) M201 X5000.00 Y5000.00 Z250:00:250.00 U250.00 E250:250 ; set accelerations (mm/s^2) M906 X2000 Y2000 I0 ; set motor currents (mA) and motor idle factor in per cent M906 E800:800 I50 M84 S30 ; Set idle timeout ; Axis Limits M208 X0 Y0 Z0 S1 ; set axis minima M208 X800 Y800 Z760:760 S0 ; set axis maxima ; Endstops M574 X1 S1 P"xstop" ; configure active-high endstop for low end on X via pin xstop M574 Y1 S1 P"ystop" ; configure active-high endstop for low end on Y via pin ystop M574 Z2 S1 P"e0stop" M574 Z1 S2 ; configure Z-probe endstop for low end on Z ; Z-Probe M950 S0 C"exp.heater7" ; create servo pin 0 for BLTouch M558 P9 C"^zprobe.in" H5 F120 T6000 ; set Z probe type to bltouch and the dive height + speeds G31 P500 X0 Y0 Z2.5 ; set Z probe trigger value, offset and trigger height M557 X15:785 Y15:785 S20 ; define mesh grid ; Heaters M308 S0 P"bedtemp" Y"thermistor" T100000 B4138 ; configure sensor 0 as thermistor on pin bedtemp M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0 M307 H0 B0 S1.00 ; disable bang-bang mode for the bed heater and set PWM limit M140 H0 ; map heated bed to heater 0 M143 H0 S180 ; set temperature limit for heater 0 to 180C M308 S1 P"spi.cs1" Y"rtd-max31865" ; configure sensor 1 as thermocouple via CS pin spi.cs1 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 S400 ; set temperature limit for heater 1 to 400C M308 S2 P"spi.cs2" Y"thermocouple-max31856" ; configure sensor 2 as thermocouple via CS pin spi.cs2 M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2 M307 H2 B0 S1.00 ; disable bang-bang mode for heater and set PWM limit M143 H2 S400 ; set temperature limit for heater 2 to 400C ; Fans M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency M106 P1 S1 H1 T45 ; set fan 1 value. Thermostatic control is turned on M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency M106 P2 S1 H2 T45 ; set fan 2 value. Thermostatic control is turned on ; Tools M563 P1 D0 H1 F0 ; define tool 1 G10 P1 X0 Y0 Z0 ; set tool 1 axis offsets G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C ; Custom settings are not defined ; Miscellaneous M575 P1 S1 B57600 ; enable support for PanelDue M911 S10 R11 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
and here the bed.g
; bed.g ; called to perform automatic bed compensation via G32 ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sun Feb 28 2021 15:17:04 GMT+0100 (Mitteleuropäische Normalzeit) M561 ; clear any bed transform G29 ; probe the bed and enable compensation ;G28 ; home ;M401 ; deploy Z probe (omit if using bltouch) ;G30 P0 X20 Y100 Z-99999 ; probe near a leadscrew, half way along Y axis ;G30 P1 X180 Y100 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors ;M402 ; retract probe (omit if using bltouch) ;also copied from instructions
I don´t think the gcode in your guide is too easy to understand. Maybe you have some tips for me. For now, BL Touch is disabled, as i am missing some resistors to getting the 3.3V Signal output.
-
@Steppenleguan Okay...
First, firmware version? Send M115 or M122 and post reply.
M569 P5 R1 T2:2:10:10 S0 ; Extruder0 - BreakoutBoard_Driver5 - new Z Axis Left
M569 P6 R1 T2:2:10:10 S0 ; Extruder1 - BreakoutBoard_Driver6 - new Z Axis RightThese timings are still too fast. Is the problem that the Z doesn't move at all? Once you have the signal voltage correct (0 to 5V), increase the first two numbers. Try T2.5:2.5:10:10 and if that doesn't work T5:5:10:10.
M671 X-20:220 Y400:400 S0.5
You need this line to level the bed. Your M208 is M208 X800 Y800 Z760:760 S0, so I guess your leadscrews are at something like
M671 X-50:850 Y0:0 S0.5
But make sure the motor on the left (at X-50) is plugged into stepper driver 5, and the motor on the right is plugged into stepper driver 6 (defined by M584 ... Z5:6 ... ).M92 X80.00 Y80.00
M92 Z800:800 ; set steps per mm
E92 E400:400
M566 X6000.00 Y6000.00 Z60.00:60.00 U60.00 E120.00:120.00 ; set maximum instantaneous speed changes (mm/min)
M203 X30000.00 Y30000.00 Z1000:1000 U1000 E1800.00:1800.00 ; set maximum speeds (mm/min)
M201 X5000.00 Y5000.00 Z250:00:250.00 U250.00 E250:250 ; set accelerations (mm/s^2)A few errors here. E92 is not a valid gcode command. for M566, M203, and M201, each axis only takes ONE value, except E which takes a value for each E axis. Remove the U values. Try this instead:
M92 X80.00 Y80.00 Z800 E400:400 ; set steps per mm M566 X6000.00 Y6000.00 Z60.00 E120.00:120.00 ; set maximum instantaneous speed changes (mm/min) M203 X30000.00 Y30000.00 Z1000 E1800.00:1800.00 ; set maximum speeds (mm/min) M201 X5000.00 Y5000.00 Z250.00 E250:250 ; set accelerations (mm/s^2)
M906 X2000 Y2000 I0 ; set motor currents (mA) and motor idle factor in per cent
M906 E800:800 I50Be aware that setting M906 I0 will mean motors turn off after the idle timeout period, and will need to be rehomed or will lose position.
For the bed.g, change the probing points to the size of your bed. You shouldn't need the M401 and M402 commands:
M561 ; clear any bed transform ; G29 ; probe the bed and enable compensation (I would comment out this line, and do mesh compensation separately) G28 ; home G30 P0 X15 Y400 Z-99999 ; probe near a leadscrew, half way along Y axis G30 P1 X785 Y400 Z-99999 S2 ; probe near a leadscrew and calibrate 2 motors
For now, BL Touch is disabled, as i am missing some resistors to getting the 3.3V Signal output.
What board version is you Duet 2 WiFi, and what version BLTouch? Because it's only early Duet 2 WiFi boards that can't cope with higher voltages on the Probe.In, and only early versions of BLTouch that don't work happily on 3.3V or 5V. It's unlikely you have early versions of both, so probably no need for resistors, or cutting the trace. See https://duet3d.dozuki.com/Wiki/Connecting_a_Z_probe#Section_For_all_Duet_2_WiFi_Ethernet_boards_prior_to_version_1_Num_04
I would try the BLTouch on 3.3V and see if it works.Ian
-
@droftarts Sorry, here, the M122. The system is moving by now. I just left out the resistor on the PUL+ and it worked. The speed is a bit lackluster and the homing doesn´t yet work, but ill find out tomorrow. Up until now, thanks a lot for your help!
You will also find homeall.g and homez.gM122 === Diagnostics === RepRapFirmware for Duet 2 WiFi/Ethernet version 3.2.2 running on Duet WiFi 1.02 or later Board ID: 08DJM-9178L-L2MS8-6J9DJ-3S46S-TVHUN Used output buffers: 3 of 24 (20 max) === RTOS === Static ram: 23460 Dynamic ram: 73604 of which 24 recycled Never used RAM 14992, free system stack 191 words Tasks: NETWORK(ready,217) HEAT(blocked,322) MAIN(running,449) IDLE(ready,20) Owned mutexes: WiFi(NETWORK) === Platform === Last reset 00:01:06 ago, cause: power up Last software reset at 2021-03-04 15:53, reason: User, GCodes spinning, available RAM 14992, slot 1 Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0xe000ed38 SP 0x00000000 Task MAIN Freestk 0 n/a Error status: 0x00 Aux0 errors 8,8,8 MCU temperature: min 29.0, current 31.4, max 31.8 Supply voltage: min 23.9, current 24.0, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes Driver 0: position 0, standstill, SG min/max not available Driver 1: position 0, standstill, SG min/max not available Driver 2: position 0, standstill, SG min/max not available Driver 3: position 0, standstill, SG min/max not available Driver 4: position 0, standstill, SG min/max not available Driver 5: position 0 Driver 6: position 0 Driver 7: position 0 Driver 8: position 0 Driver 9: position 0 Driver 10: position 0 Driver 11: position 0 Date/time: 2021-03-04 19:58:05 Cache data hit count 79494073 Slowest loop: 7.99ms; fastest: 0.21ms I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0 === Storage === Free file entries: 10 SD card 0 detected, interface speed: 20.0MBytes/sec SD card longest read time 10.2ms, write time 0.0ms, max retries 0 === Move === DMs created 83, maxWait 0ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = 0 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 === GCodes === Segments left: 0 Movement lock held by null HTTP is idle in state(s) 0 Telnet is idle in state(s) 0 File is idle in state(s) 0 USB is idle in state(s) 0 Aux is assembling a command in state(s) 0 Trigger is idle in state(s) 0 Queue is idle in state(s) 0 LCD is idle in state(s) 0 Daemon is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === Network === Slowest loop: 30.24ms; fastest: 0.00ms Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions HTTP sessions: 1 of 8 - WiFi - Network state is active WiFi module is connected to access point Failed messages: pending 0, notready 0, noresp 0 WiFi firmware version 1.25 WiFi MAC address 98:f4:ab:d1:e4:90 WiFi Vcc 3.40, reset reason Turned on by main processor WiFi flash size 4194304, free heap 25784 WiFi IP address 192.168.2.125 WiFi signal strength -59dBm, mode 802.11n, reconnections 0, sleep mode modem Clock register 00002002 Socket states: 0 0 0 0 0 0 0 0
Homeall
; homeall.g ; called to home all axes ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sun Feb 28 2021 15:17:04 GMT+0100 (Mitteleuropäische Normalzeit) G91 ; relative positioning M584 Z2 ; Split Z into 2 (Z+U) G1 Z250 U250 F2000 H1 ; Move up to 250mm in the +Z direction. S1 to stop if endstop is triggered G1 H1 X-805 Y-805 F3600 ; move quickly to X or Y endstop and stop there (first pass) G1 H1 X-805 ; home X axis G1 H1 Y-805 ; home Y axis G1 X5 Y5 F6000 ; go back a few mm G1 H1 X-805 F360 ; move slowly to X axis endstop once more (second pass) G1 H1 Y-805 ; then move slowly to Y axis endstop ; G90 ; absolute positioning G1 Z-2 U-2 F600 H2 ; Move 2mm in the -Z direction - (I'm not sure what S2 is for?) G1 Z+3 U+3 F100 H1 ; Move slowly 3mm in the +Z direction, stopping at the homing switch M584 Z5:6 ; Join U to Z again (pay attention to drive numbers used) G1 Z-5 F3000 ; Move back again 5mm in the -Z direction G90 ; Back to absolute mode ; Uncomment the following lines to lift Z after probing ;G91 ; relative positioning ;G1 Z5 F100 ; lift Z relative to current position ;G90 ; absolute positioning
Homez
; homez.g ; called to home the Z axis ; ; generated by RepRapFirmware Configuration Tool v3.2.3 on Sun Feb 28 2021 15:17:04 GMT+0100 (Mitteleuropäische Normalzeit) G91 ; Relative mode M584 Z2 ; Split Z into 2 (Z+U) G1 Z250 U250 F2000 H1 ; Move up to 250mm in the +Z direction. S1 to stop if endstop is triggered G1 Z-2 U-2 F600 H2 ; Move 2mm in the -Z direction - (I'm not sure what S2 is for?) G1 Z3 U3 F100 H1 ; Move slowly 3mm in the +Z direction, stopping at the homing switch M584 Z5:6 ; Join U to Z again (pay attention to drive numbers used) G1 Z-5 F3000 ; Move back again 5mm in the -Z direction G90 ; Back to absolute mode
It also says it couldn´t find 0:/filaments , does this mean i should add a folder on the SD card with that name?