Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login
    1. Home
    2. MaxGyver
    • Profile
    • Following 28
    • Followers 1
    • Topics 70
    • Posts 319
    • Best 40
    • Controversial 0
    • Groups 0

    MaxGyver

    @MaxGyver

    67
    Reputation
    49
    Profile views
    319
    Posts
    1
    Followers
    28
    Following
    Joined Last Online

    MaxGyver Unfollow Follow

    Best posts made by MaxGyver

    • RE: Duet3D at Formnext 2022

      Yesterday I visited the Duet3D booth and had the pleasure to meet the team and have a chat with David and Christian.

      It made me realize just how much is going on behind the curtains and how much work and passion those guys are pouring into the development of new features and constant improvement of the overall system.

      I am super excited about what's to come.
      I hope you guys have a great last day at Formnext!

      Max

      posted in General Discussion
      MaxGyverundefined
      MaxGyver
    • [Feature request] Support for constant surface speed (G96/G50)

      I would like to use the constant surface speed feature on my Duet based CNC-Lathe.

      I am using a generic Haas turning post Processor with some minor adjustments that I have tested with Fusion360 or Solidworks+HSMWorks.

      the constant surface speed GCode (G96) is defined on the Haascnc G-Code dictionary as follows:

      "G96 commands the control to maintain a constant cutting speed at the tip of the tool. The spindle RPM is based on the diameter of the part where the cut is taking place, and the commanded S value (RPM=3.82xSFM/DIA). This means the spindle speed increases as the tool gets closer to X0. When Setting 9 is set to INCH, the S value specifies Surface Feet Per Minute. When Setting 9 is set to MM, the S value specifies Surface Meters Per Minute.

      WARNING: It is safest to specify a maximum spindle speed for the Constant Surface Speed feature. Use G50 to set a maximum spindle RPM. Not setting a limit allows the spindle speed to increase as the tool reaches the center of the part. The excessive speed can throw parts and damage tooling."

      Cheers Max

      posted in Firmware wishlist
      MaxGyverundefined
      MaxGyver
    • Duet3 closed loop options

      Good morning!

      I know that this has been discussed several times already. I started this thread to collect the available closed loop options for the Duet3.

      I have two custom large format printers in the making. One with a build volume of 1000x1000x1000mm for printing architecture models and one with 500x500x1000mm for printing speaker enclosures. With a Build volume this large speed and reliability are essential. Therefore, a closed-loop motion system is a "must have" for my clients.

      For the Duet3 I have found the following options:

      1. Duet3 + Duet3 Expansion 1XD + external closed loop stepper drivers that accept step/dir signals

      2. @dc42 I am aware that there is a closed-loop extension board in the making for the Duet3. Is there already a rough estimate on the release date or beta test?

      3. Is there an alternative "of the shelve" closed loop solution available that support the CAN FD protocol?

      Cheers,
      Max

      posted in Duet Hardware and wiring
      MaxGyverundefined
      MaxGyver
    • RE: Automatic CNC dust shoe

      @T3P3Tony

      Indeed, I wrote a simple macro that sets the height of the dust shoe to the height of the spindle collet+ the current tool length. This macro is called after a toolchange or if one of the macros for mist cooling or dust extraction is called. Maybe I will add a demon later that updates the height of the dust shoe regularly during a job. But for now this will do.

      I made a short video while running a tool change. Not having to fiddle with the dust shoe during toolchanges is already so much more convenient.

      posted in CNC
      MaxGyverundefined
      MaxGyver
    • RE: Ask user to set bed temperature before bed mesh probing

      And with this start Gcode for PrusaSlicer the correct heightmap is loaded according to the temperature of the printbed.

      {if first_layer_bed_temperature[0] <=40}
      G29 S1 P"heightmap_roomtemp.csv"
      {elsif first_layer_bed_temperature[0] <=70}
      G29 S1 P"heightmap_60°.csv"
      {elsif first_layer_bed_temperature[0] <=90}
      G29 S1 P"heightmap_80°.csv"
      {elsif first_layer_bed_temperature[0] <=110}
      G29 S1 P"heightmap_100°.csv"
      {endif}
      

      Thanks everyone for your ideas and feedback. This is by far more elegant than my original idea. 🙂

      posted in Gcode meta commands
      MaxGyverundefined
      MaxGyver
    • RE: Dual Y-Motor gantry squaring with closed loop steppers

      @dc42 Thank you for your response.

      Yes, I am running RRF 3.4.4 (Sorry, I forgot to mention that!)
      With RRF 3.5beta1 on the EXP1HCL, the Y-axis motors now keep their position when closed loop mode is activated. 🙂 👍

      posted in Tuning and tweaking
      MaxGyverundefined
      MaxGyver
    • RE: Combined Smart Effector and tool board for delta printers

      With the release of the new Duet 3 Roto Toolboard I am not sure if a new smart effector is really needed. for me the main advantage of the smart effector was nozzle probing. But with the new Scanning Z-Probe Nozzle probing is already obsolete in my opinion. Of course you woul need to set the probe offset manually with a Scanning Z-Probe. To do this I use either a separate button style probe or I adjust the z height manually with baby stepping and run a simple macro to adjust the probe offset by the baby stepping amount and save the new probe offset in config-override.g.

      I would still be interested in buying multiple smart effectors if they support the following points. some of them are obvious but for the sake of completeness...

      • Scanning Z-Probe
      • onboard accelerometer
      • onboard motor driver
      • Io input for filament monitor
      • VZ style hotend mounting holes for Hotends like the Phaetus Rapido, VZ-Revo or Mellow Goliath Hotends.
      • Enough space for direct drive extruders.

      And lastly not necessarily a must but it is nice to have options.

      • A hotend mosfest that can handle <100 W (Mellow Goliath Hotend)

      Since I use CPAP style part cooling and watercooling for the hotend I do not require fanports on the tool board. But I recon This would be a no-go for most users.

      posted in Future Direction
      MaxGyverundefined
      MaxGyver
    • RE: Duet3/pi DCS is unavailable after wiring 24V

      @bearer @Phaedrux

      I have solved the issue by installing the unstable version (DSF Version: 2.1.3) of Duet Software Framework on Raspberry Pi. and also reverting back to RC11

      The guide links to the stable version of the DSF and latest version of the reprap firmware which, at least in my case is not compatible and will lead to the "DCS is unavailable" Error.

      cheers Max

      posted in Duet Hardware and wiring
      MaxGyverundefined
      MaxGyver
    • RE: The ULTIMATE RepRap Post-Processor for Fusion 360

      Hey @bruce

      Thank you so much for developing and sharing your post processor! I use it with the HSM-Works plugin directly in SolidWorks for my duet based CNC Mill.

      Any chance to also include a profile for turning as well? I am in the process of converting a Lathe to CNC using a Duet3 6HC board. With lathe support, it would really be the "one post processor to rule them all" 😁

      Cheers Max

      posted in CNC
      MaxGyverundefined
      MaxGyver
    • RE: Combined Smart Effector and tool board for delta printers

      @dc42

      That's a very good point.
      I am wondering if the effector tilt can be measured and actively compensated by software...but this is probably another topic...

      Ball spacing of 70mm between the ball centers should be sufficient for a compact direct extruder. It would need to be raised tough in order to clear the hotend collet. I have also tried fitting other hotends like the Voron-Revo and Pheatus Rapido/Goliath. The Voron-Revo does not work, but the Pheatus Rapido/Goliath might just work. The M3 mounting holes just clear the center hole of the effector, but I recon it will mess with the placement of the strain gauges. The threaded E3D-V6 and E3D-Revo Micro support a large range of hotend combinations. Maybe we should stick with those for the sake of simplicity.

      EDIT: and there is also the option to use an adapter like this

      E3D Revo-Micro
      Screenshot 2024-01-14 225726.png

      Top View of the effektor with a sherpa mini
      Screenshot 2024-01-14 231601.png

      Bondtech LGX Lite
      Screenshot 2024-01-14 231617.png

      VZ-Hextrudort
      Screenshot 2024-01-14 231636.png

      EDIT: The Orbiter 2.0 was missing
      Screenshot 2024-01-16 184320.png

      posted in Future Direction
      MaxGyverundefined
      MaxGyver

    Latest posts made by MaxGyver

    • RE: [3.6.0-rc.2] Code 3 move error

      @dc42

      I am sorry to report that the issue is not fixed with the latest Firmware binaries (3.6.0-rc.3+1)

      With input shaping set to 13Hz, the part prints without issues.

      With the latest binaries, the move 3 error is gone, but now my 1XD-Expansion board (YAxis) looses connection as soon as the printhead moves to print a couple of very short segments (Text) in the first layer.

      23.5.2025, 10:34:21 M122
      === Diagnostics ===
      RepRapFirmware for Duet 3 MB6HC version 3.6.0-rc.3+1 (2025-05-16 16:04:31) running on Duet 3 MB6HC v1.01 (SBC mode)
      Board ID: 0JD2M-999AL-D25S4-7J1D2-3SJ6K-T51V3
      Used output buffers: 1 of 40 (18 max)
      === RTOS ===
      Static ram: 137420
      Dynamic ram: 98756 of which 0 recycled
      Never used RAM 79416, free system stack 128 words
      Tasks: LASER(5,nWait 7,0.0%,155) SBC(2,nWait 7,0.9%,831) HEAT(3,nWait 6,0.0%,359) Move(4,nWait 6,0.2%,203) TMC(4,nWait 6,2.9%,375) CanReceiv(6,nWait 1,0.1%,768) CanSender(5,nWait 7,0.0%,327) CanClock(7,delaying,0.0%,350) MAIN(1,running,95.3%,500) IDLE(0,ready,0.6%,29) USBD(3,blocked,0.0%,149), total 100.0%
      Owned mutexes: HTTP(MAIN)
      === Platform ===
      Last reset 00:14:18 ago, cause: power up
      Last software reset details not available
      Error status: 0x00
      MCU temperature: min 24.0, current 28.4, max 29.0
      Supply voltage: min 23.3, current 23.5, max 23.6, under voltage events: 0, over voltage events: 0, power good: yes
      12V rail voltage: min 12.0, current 12.1, max 12.1, under voltage events: 0
      Heap OK, handles allocated/used 99/16, heap memory allocated/used/recyclable 2048/480/212, gc cycles 0
      Events: 168 queued, 168 completed
      Date/time: 2025-05-23 10:34:21
      Slowest loop: 54.73ms; fastest: 0.06ms
      === Storage ===
      Free file entries: 20
      SD card 0 not detected, requested/actual speed: 0.0/37.5MBytes/sec
      SD card longest read time 0.0ms, write time 0.0ms, max retries 0
      === Move ===
      Segments created 1186, maxWait 145617ms, bed comp in use: mesh, height map offset 0.000, hiccups added 3/0 (0.00/36.69ms), max steps late 0, ebfmin 0.00, ebfmax 0.00
      Pos req/act/dcf: 185328.00/185327/1.00 0.00/1/-1.00 803932.00/803931/0.97
      No step interrupt scheduled
      Driver 0: standstill, SG min n/a, mspos 8, reads 12143, writes 77 timeouts 6
      Driver 1: standstill, SG min n/a, mspos 8, reads 12143, writes 77 timeouts 6
      Driver 2: standstill, SG min n/a, mspos 8, reads 12143, writes 77 timeouts 6
      Driver 3: standstill, SG min n/a, mspos 8, reads 12143, writes 77 timeouts 6
      Driver 4: standstill, SG min n/a, mspos 8, reads 12143, writes 77 timeouts 6
      Driver 5: standstill, SG min n/a, mspos 8, reads 12143, writes 77 timeouts 6
      Phase step loop runtime (us): min=0, max=26, frequency (Hz): min=502, max=10273
      === DDARing 0 ===
      Scheduled moves 736, completed 736, LaErrors 0, Underruns [112, 0, 0]
      Segments left 0, axes/extruders owned 0x00000007, drives owned 0x00000007
      Code queue is empty
      === DDARing 1 ===
      Scheduled moves 0, completed 0, LaErrors 0, Underruns [0, 0, 0]
      Segments left 0, axes/extruders owned 0x00000000, drives owned 0x00000000
      Code queue is empty
      === Heat ===
      Bed heaters -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters 2 -1 -1 -1 -1 -1 -1 -1, ordering errs 0
      === GCodes ===
      Movement locks held by null, null
      HTTP* is doing "M122" 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 idle 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
      SBC is idle in state(s) 0
      Daemon is idle in state(s) 0
      Aux2 is idle in state(s) 0
      Autopause is idle in state(s) 0
      File2 is idle in state(s) 0
      Queue2 is idle in state(s) 0
      === Filament sensors ===
      Driver 31: no filament
      === CAN ===
      Messages queued 23076, received 56093, lost 0, ignored 0, errs 0, boc 0
      Longest wait 3ms for reply type 6060, peak Tx sync delay 450, free buffers 50 (min 39), ts 4068/4067/0
      Tx timeouts 0,0,0,0,0,0
      === SBC interface ===
      Transfer state: 5, failed transfers: 0, checksum errors: 0
      RX/TX seq numbers: 34620/34620
      SPI underruns 0, overruns 0
      State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x27a70
      Buffer RX/TX: 0/0-0, open files: 0
      === Duet Control Server ===
      Duet Control Server version 3.6.0-rc.3 (2025-04-30 10:29:48, 64-bit)
      HTTP+Executed:

      Executing M122
      File 0:/gcodes/pot.gcode is selected, paused
      Code buffer space: 4096
      Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0
      Full transfers per second: 39.05, max time between full transfers: 90.1ms, max pin wait times: 34.8ms/1.7ms
      Codes per second: 7.30
      Maximum length of RX/TX data transfers: 5404/1072

      On another note: It would be nice if serious errors like a CAN board disconnecting or mesh probe fail would trigger a print cancellation or at least a pause. Luckily, I was monitoring the print closely and noticed that the Y-Axis has stopped moving. So I only had to clean a small blob of death. 🙄

      posted in Beta Firmware
      MaxGyverundefined
      MaxGyver
    • RE: [3.6.0-rc.2] Code 3 move error

      @dc42

      I have a chance to test the new version tomorrow. I will let you know asap.

      posted in Beta Firmware
      MaxGyverundefined
      MaxGyver
    • RE: [3.6.0-rc.2] Code 3 move error

      @dc42 Yes, Input shaping was Set to 8.7Hz EI3.

      posted in Beta Firmware
      MaxGyverundefined
      MaxGyver
    • RE: [3.6.0-rc.2] Code 3 move error

      @dc42

      I finally had a chance to test the latest 3.6.0-rc.3. When the input shaping frequency is set below 12Hz I still have a code 3 movement error always at the same code line early in the first layer. When the IS frequency is >12Hz it is working. I have attached the test pot.gcode file that is causing the error.

      Error: Code 3 move error: new: start=335135293 overlap=3753 time now=335099122, existing: s=335096227 t=42819 d=20.49 u=8.1090e-4 a=-1.5526e-8 f=18
      
      M122
      === Diagnostics ===
      RepRapFirmware for Duet 3 MB6HC version 3.6.0-rc.3 (2025-04-30 14:43:53) running on Duet 3 MB6HC v1.01 (SBC mode)
      Board ID: 0JD2M-999AL-D25S4-7J1D2-3SJ6K-T51V3
      Used output buffers: 1 of 40 (19 max)
      === RTOS ===
      Static ram: 137420
      Dynamic ram: 98720 of which 0 recycled
      Never used RAM 107844, free system stack 130 words
      Tasks: LASER(5,nWait 7,0.0%,235) SBC(2,nWait 7,1.1%,813) HEAT(3,nWait 6,0.0%,368) Move(4,nWait 6,0.0%,209) TMC(4,nWait 6,3.0%,377) CanReceiv(6,nWait 1,0.1%,792) CanSender(5,nWait 7,0.0%,329) CanClock(7,delaying,0.0%,350) MAIN(1,running,83.7%,500) IDLE(0,ready,12.1%,29) USBD(3,blocked,0.0%,149), total 100.0%
      Owned mutexes: HTTP(MAIN)
      === Platform ===
      Last reset 00:02:34 ago, cause: software
      Last software reset at 2025-05-12 11:06, reason: User, Gcodes spinning, available RAM 82500, slot 1
      Software reset code 0x2003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task SBC Freestk 0 n/a
      Error status: 0x00
      MCU temperature: min 33.9, current 34.3, max 35.0
      Supply voltage: min 23.4, current 23.5, max 23.6, under voltage events: 0, over voltage events: 0, power good: yes
      12V rail voltage: min 12.0, current 12.1, max 12.1, under voltage events: 0
      Heap OK, handles allocated/used 99/16, heap memory allocated/used/recyclable 2048/320/52, gc cycles 0
      Events: 599 queued, 599 completed
      Date/time: 2025-05-12 11:08:41
      Slowest loop: 1545.84ms; fastest: 0.07ms
      === Storage ===
      Free file entries: 20
      SD card 0 not detected, requested/actual speed: 0.0/37.5MBytes/sec
      SD card longest read time 0.0ms, write time 0.0ms, max retries 0
      === Move ===
      Segments created 3, maxWait 68608ms, bed comp in use: none, height map offset 0.000, hiccups added 0/0 (0.00/0.05ms), max steps late 0, ebfmin 0.00, ebfmax 0.00
      Pos req/act/dcf: -464285.00/-463726/-0.50 0.00/0/0.00 804000.00/804000/0.00
      Next step interrupt due in 22 ticks, disabled
      Driver 0: standstill, SG min n/a, mspos 8, reads 47118, writes 11 timeouts 0
      Driver 1: standstill, SG min n/a, mspos 8, reads 47118, writes 11 timeouts 0
      Driver 2: standstill, SG min n/a, mspos 8, reads 47118, writes 11 timeouts 0
      Driver 3: standstill, SG min n/a, mspos 8, reads 47118, writes 11 timeouts 0
      Driver 4: standstill, SG min n/a, mspos 8, reads 47118, writes 11 timeouts 0
      Driver 5: standstill, SG min n/a, mspos 8, reads 47118, writes 11 timeouts 0
      Phase step loop runtime (us): min=0, max=40, frequency (Hz): min=1744, max=2358
      === DDARing 0 ===
      Scheduled moves 6, completed 5, LaErrors 0, Underruns [0, 0, 0]
      Segments left 0, axes/extruders owned 0x80000007, drives owned 0x80000007
      Code queue is empty
      === DDARing 1 ===
      Scheduled moves 0, completed 0, LaErrors 0, Underruns [0, 0, 0]
      Segments left 0, axes/extruders owned 0x00000000, drives owned 0x00000000
      Code queue is empty
      === Heat ===
      Bed heaters -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamber heaters 2 -1 -1 -1 -1 -1 -1 -1, ordering errs 0
      Heater 0 is on, I-accum = 0.0
      Heater 1 is on, I-accum = 0.0
      === GCodes ===
      Movement locks held by Trigger, null
      HTTP* is doing "M122" 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 idle in state(s) 0
      Trigger* is idle in state(s) 2 0 5 0, running macro
      Queue is idle in state(s) 0
      LCD is idle in state(s) 0
      SBC is idle in state(s) 0
      Daemon is idle in state(s) 0
      Aux2 is idle in state(s) 0
      Autopause is idle in state(s) 0
      File2 is idle in state(s) 0
      Queue2 is idle in state(s) 0
      === Filament sensors ===
      Driver 31: no filament
      === CAN ===
      Messages queued 1431, received 9757, lost 0, ignored 0, errs 0, boc 0
      Longest wait 4ms for reply type 6061, peak Tx sync delay 379, free buffers 50 (min 49), ts 734/733/0
      Tx timeouts 0,0,0,0,0,0
      === SBC interface ===
      Transfer state: 5, failed transfers: 0, checksum errors: 0
      RX/TX seq numbers: 6084/6084
      SPI underruns 0, overruns 0
      State: 5, disconnects: 0, timeouts: 0 total, 0 by SBC, IAP RAM available 0x27a24
      Buffer RX/TX: 208/256-0, open files: 0
      === Duet Control Server ===
      Duet Control Server version 3.6.0-rc.3 (2025-04-30 10:29:48, 64-bit)
      HTTP+Executed:
      > Executing M122
      Trigger:
      Buffered code: G1 H1 X-1205 F{global.homingspeed/2} ; move slowly to X axis endstop once more (second pass)
      Buffered code: G90 ; absolute positioning
      Buffered codes: 96 bytes total
      >> Doing macro trigger2.g, started by system
      >>> Doing macro homeall.g, started by G28
      >>> Suspended code: M98 P"homey.g"
      >>>> Doing macro homex.g, started by M98 P"homex.g"
      Code buffer space: 3840
      Configured SPI speed: 8000000Hz, TfrRdy pin glitches: 0
      Full transfers per second: 40.77, max time between full transfers: 1750.1ms, max pin wait times: 39.5ms/4.0ms
      Codes per second: 0.71
      Maximum length of RX/TX data transfers: 4468/904
      
      posted in Beta Firmware
      MaxGyverundefined
      MaxGyver
    • RE: Advise for wiring step/dir signals over long distance (4m)

      @ironhydroxide @dc42

      Thank you both for your feedback.
      I have some more questions:

      • Are the duet driver outputs ESD protected, or would it be advisable to add TVS diodes?
      • How, and where, should I ground the cable shield?
        -To the case/earth?
        -As close as possible to Duet?
        -I have read that the shield can be grounded to the electronics GND with a capacitor in between shield and GND?
      posted in Duet Hardware and wiring
      MaxGyverundefined
      MaxGyver
    • Advise for wiring step/dir signals over long distance (4m)

      I got my hands on some iCLD57-21 integrated closed loop stepper motors. I would like to use them in a BigrepONE printer that I am upgrading to a Duet 6XD. The longest signal path would be around 3-4m in length. Hence, I am looking for advice on good practice and maybe some tips and tricks to avoid signal distortion.

      The Duet 6XD does not support differential signal output, so I would go for single ended NPN. In the Wiki example, the +5V line is bridged at the Driver side.

      alt text

      I was wondering if bridging +5V at the duet side and running twisted pairs of +5V/ Step- and +5V/Dir- to the motor would improve the signal quality. I have also read that longer signal pulses can improve the signal quality, especially with long cables. What would be the best practice here? Set longer step pulse timings until the maximum desired speed of the axis is no longer reached, and back up from there?

      posted in Duet Hardware and wiring
      MaxGyverundefined
      MaxGyver
    • RE: [3.6.0-rc2+1] Code 7 move error

      @dc42

      Thank you for your efforts! Unfortunately, I don't have a chance to test the fix soon since the printer is being disassembled and moved right now. I will report back as soon as we have it back up and running.

      posted in Beta Firmware
      MaxGyverundefined
      MaxGyver
    • RE: [3.6.0-rc.2] Code 3 move error

      @dc42

      Here you go:
      LARGE SOFIA LAMPSHADE.gcode

      posted in Beta Firmware
      MaxGyverundefined
      MaxGyver
    • RE: [3.6.0-rc.2] Code 3 move error

      The issue is also present in 3.6.0-rc.1

      Error: Code 3 move error: new: start=651528999 overlap=5623 time now=651492690, existing: s=651491803 t=42819 d=20.46 u=8.0975e-4 a=-1.5504e-8 f=18
      
      posted in Beta Firmware
      MaxGyverundefined
      MaxGyver
    • RE: [3.6.0-rc.2] Code 3 move error

      @dc42

      Yes, I had the same Code 3 move error. I did not copy the error code tough.

      posted in Beta Firmware
      MaxGyverundefined
      MaxGyver