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

    Sovol SV08 Multiple Motion System Upgrade.

    Scheduled Pinned Locked Moved
    My Duet controlled machine
    8
    232
    25.4k
    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.
    • dwuk3dundefined
      dwuk3d @dc42
      last edited by

      @dc42 Thanks will try that out this afternoon - will use sensorless just for testing purposes - and move over to switches at some point.

      o_lampeundefined 1 Reply Last reply Reply Quote 0
      • dwuk3dundefined
        dwuk3d
        last edited by

        Good progress made on wiring up first extruder.

        Main issues I faced were:

        1. Sizes of connectors - 95% of the Sovol connectors are tiny 1.25mm Female, and most of the Duet are 2mm Female. So made up some adaptors 1.25mm Male to 2mm Female - found a nice kit with pre-crimped 1.25mm wires and sockets and plugs.

        Didn't want to cut off existing connectors as may want to go back, plus wires a bit short to reach board too.

        1. Inductive Probe 24V power - ended up splicing in an extra plug on the VIN power feed - but not ideal as it means two plugs to disconnect

        2. Blower fans - The extruder has two - one of which is 3 pin and the other 2 pin - so wired them together, and - with VOUT and Tacho In on Out_2. and GND from unused IO1.

        3. Heater power is a 2mm Female - whereas the 1LC is a screw connector. Didn't have any 2 way Male Sockets - so cut down 5 way temporarily - have order some pre-crimped from the same place as the 1.25mm ones as a more permanent solution. Also had trouble getting the crimped cable to fit into the screw connector.

        Overall though - ready for a test this afternoon.

        Wiring still a bit messy - and adaptors longer than they need to be - but not 100% where I am going to end up placing the 1LC board - so left them long for now.

        0466238B-41BA-46A1-8B65-8F9E8F856DC7.jpeg A6BB9C7C-8480-4FDB-8BE4-52D1A4F30ADB_1_102_o.jpeg

        1 Reply Last reply Reply Quote 0
        • dwuk3dundefined
          dwuk3d @dc42
          last edited by

          @dc42 Thanks tried firmware but couldn't get it to work. I got a message about changing to StealthChop - which I did for the two drivers on the Mini5+ - everything else is on Spreadcycle.

          Then it just kept saying that my speed was either too fast or too slow.

          Reread the documentation here a few times - but can't really figure out what I need to change to get it to work.

          Current relevant settings are:

          ; Smart Drivers
          M569 P0.0 S1 D2 ; driver 0.0 goes forwards (Z axis)
          M569 P0.1 S1 D2 ; driver 0.1 goes forwards (Z axis)
          M569 P0.2 S0 D2 ; driver 0.2 goes backwards (Z axis)
          M569 P0.3 S1 D2 ; driver 0.3 goes forwards (X axis)
          M569 P0.4 S0 D2 ; driver 0.4 goes backwards (Y axis)
          M569 P0.5 S0 D2 ; driver 0.5 goes backwards (Z axis)
          M569 P1.0 S0 D3 V2000 ; driver 1.0 goes backwards (U axis)
          M569 P1.1 S0 D3 V2000 ; driver 1.1 goes backwards (V axis)
          M569 P121.0 S1 D2 ; driver 121.0 goes forwards (extruder 0)

          ; Motor Idle Current Reduction
          M906 I30 ; set motor current idle factor
          M84 S30 ; set motor current idle timeout

          ; Axes
          M584 X0.3 Y0.4 Z0.1:0.2:0.0:0.5 U1.0 V1.1 ; set axis mapping
          M350 X16 Y16 Z16 U16 V16 I1 ; configure microstepping with interpolation
          M906 X800 Y800 Z800 U800 V800 ; set axis driver currents
          M92 X80 Y80 Z533.33 U80 V80 ; configure steps per mm
          M208 X0:200 Y0:200 Z0:200 U0:200 V0:200 ; set minimum and maximum axis limits
          M566 X900 Y900 Z12 U900 V900 ; set maximum instantaneous speed changes (mm/min)
          M203 X6000 Y6000 Z180 U6000 V6000 ; set maximum speeds (mm/min)
          M201 X500 Y500 Z20 U500 V500 ; set accelerations (mm/s^2)

          ; Endstops
          M574 X2 S3 ; configure X axis endstop
          M574 Y1 S3 ; configure Y axis endstop
          M574 Z1 S4 ; configure Z axis endstop
          M574 U2 S3 ; configure U axis endstop
          M574 V1 S3 ; configure V axis endstop

          ; Custom settings
          M915 X Y U V R0 F0

          ; homeu.g
          ; called to home the U axis
          ;
          ; generated by RepRapFirmware Configuration Tool v3.5.10 on Thu Jan 23 2025 15:02:10 GMT+0000 (Greenwich Mean Time)
          M913 U40 V40
          M400

          ; increase Z
          G91 ; relative positioning
          G1 H2 Z5 F12000 ; move Z relative to current position to avoid dragging nozzle over the bed
          G90 ; absolute positioning

          ; home U
          G91 ; relative positioning
          var maxTravel = move.axes[0].max - move.axes[0].min + 5 ; calculate how far X can travel plus 5mm
          G1 H1 U{var.maxTravel} F2000 ; coarse home in the +U direction
          G1 U-5 F6000 ; move back 5mm
          G1 H1 U{var.maxTravel} F700 ; fine home in the +U direction
          G90 ; absolute positioning

          ; decrease Z again
          G91 ; relative positioning
          G1 H2 Z-5 F6000 ; move Z relative to current position
          G90 ; absolute positioning

          M400
          M913 U100 V100
          M400

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

            @dwuk please read https://docs.duet3d.com/en/User_manual/Connecting_hardware/Sensors_stall_detection. The TMC2209 drivers on the Mini5+ are quite finicky as regards getting stall detection to work. You need to at least reduce the M569 V parameter to a lower value (at least during stall homing) to avoid the "too slow" error message,

            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

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

              @dwuk said in Sovol SV08 Multiple Motion System Upgrade.:

              will use sensorless just for testing purposes

              Mirror or copy mode should work OK, but optical sensors are the best.

              1 Reply Last reply Reply Quote 0
              • dwuk3dundefined
                dwuk3d
                last edited by dwuk3d

                Progress update.

                Upgraded Axis with proper Pulley Posts and Proper Linear Rail Carriage on the UV gantry.
                Just need to upgrade UV gantry pulley posts.
                The 5mm linear rail for the pulley posts was pretty hard to cut - had to use angle grinder.

                All Axis working and Homing working on X,Y & Z.

                I will pursue getting sensorless homing working on U & V - but will also install switches or optional sensors on X,Y,U & V before going too much further.

                Z Inductive probe working with logic shifter - but waiting to see if there is a better solution.

                Heated bed, Extruder and 2 of 3 fans all working - but I haven't done any heater tuning yet.

                Next step tomorrow is to work out how to do Z Offets - as I followed the commissioning instructions - but it keeps setting Z to zero at the trigger height.

                Will then do some distance and extrusion length calibration before hopefully trying my first print on the XYZ gantry tomorrow.

                Next step after that and end stops is the upgrades to the 2nd Extruder on the UV gantry - which is currently still connected to the Klipper board. IMG_6630.JPG

                IMG_6631.JPG

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

                  @dwuk One thing I noticed in an earlier picture was some scratching belts:
                  belts.jpg

                  I thought it was just temporary, but it still seems a problem.

                  dwuk3dundefined 1 Reply Last reply Reply Quote 0
                  • dwuk3dundefined
                    dwuk3d @o_lampe
                    last edited by

                    @o_lampe Well spotted - yes it is due to the extra IDEX carriage I left on the rear gantry.
                    If I take off the plastic coupler from the carriage there is a risk of the carriage falling off the end of the rail and I think it is that which is clashing with the belts.

                    For the IDEX phase I am going to need to move the pulley positions slightly forward to avoid the problem you spotted - but in the meantime I don't think it is causing any great issues other than limiting travel - but will find out when I do some more testing.

                    I am starting to think about Reprap IDEX kinematics -

                    I was pleasantly surprised to find that CoreXYUV seems to support two CoreXY gantries ok - but for IDEX on top of CoreXYUV I think I am going to have to work out how you define completely new Kinematics (if thats possible) otherwise it is going to end up with loads more fairly complicated post-processing.

                    I think what I would really need is to be able to have an X and 'x' axis for each gantry that I can specify both coordinates for in G0-G3 commands (or Macro replacements) I.e. For mirror mode / duplicate mode etc.- Rather than using a command to change the mode between Toolchange/Duplicate and Mirror - it should be fairly easy to work out and send two X coordinates in the same G0-G3 command to achieve the desired effect.

                    So what I will be looking for is something like CoreXxYUuV for dual gantry IDEX.
                    With .Zabcd - for the Z hoppers, and then finally. CoreXxYUuVy - for the occasionally moving bed phase (5).

                    My current thinking on IDEX too is that I will stick with the Ratrig VCore4 approach of two extra Y motors per gantry initially (although it would be nice to reduce this down to one extra per ganty) - but I think I will try putting them at the front rather than the back to help balance the weight on my flying gantries.

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

                      @dc42 Have spent a fair bit of time trying to get this sensorless homing on the tool board Mini5+ to work - I reduced V right down to 100 - but I still can't get it to accept a speed - it just keeps saying too slow or too fast - so will give up on this for now - and go back to adding switches.

                      I think I will add some switches directly on the extruder for the U/X Axis - to take advantage of the inputs available on the 1LC boards.

                      Have applied the Io1.in Z probe change to both extruders now and tidyed up the wiring on the two extruders a fair bit.

                      I think I need to get U & V end stops working properly - then 4 Z bed levelling working properly before I attempt my first print - as at present the rear axis seems to droop a bit - probably due to the 4 motors on it at the back.

                      7723258E-2AF3-4E3D-A80D-06D107E3ADFB_1_102_o.jpeg

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

                        @dwuk said in Sovol SV08 Multiple Motion System Upgrade.:

                        I think I will try putting them at the front

                        "Goodby toolchanger" then? Isn't there a way to distribute the steppers to the left and right, keeping the front available for extra tools? Steppers aren't exactly lightweight and you'll need some beefy motors to overcome the friction of the idler pulley-orgy.

                        I mentioned it before, but my hashPrinter only needed 4 motors for 4 semi-independent toolheads. The super simple gantry was the reason why I built it.

                        dwuk3dundefined 1 Reply Last reply Reply Quote 0
                        • dwuk3dundefined
                          dwuk3d @o_lampe
                          last edited by

                          @o_lampe Yes would be good if I could get down to 4 motors for 4 heads.

                          May well explore other multi head options at some point - I guess the disadvantage of a hash printer is not easily being able to move heads not in use out of the way.

                          I think it will be easier though in terms of belt paths to keep with the double Y axis approach - with belts just going between the front and back.

                          Trying to keep to one extra motor per gantry would I think need the belts to run around both sides and either across the back or across the gantry.

                          I'm not thinking of putting motors side by side at the front - just on top or below - so I don't think it will affect tool changing.

                          On look at it a bit more closely I think on the bottom isn't going to work - so will just put one motor on the front top on each gantry - with the other two at the back.

                          1 Reply Last reply Reply Quote 0
                          • dwuk3dundefined
                            dwuk3d
                            last edited by

                            End stops now working on U & V axis - so the next thing I need to work out is how to home Z - I have 2 x Z probes and depending on how the Flying Gantry has settled either one or the other triggers first.

                            Ideally I would like a way of Z homing where it tries to home - and stops if either of the probes are triggered, perhaps with one gantry right at the front and the other at the back.

                            I tried specifying both as switches in a M574 - but it didn't like it.

                            Then I guess what I would like to do is then joggle around the front and rear Z axis motors until both probes trigger very close to each other.

                            I can't work out how to do this at the moment, so in the meantime I think I will Z home on the rear probe, but move it is close to the front probe first - so that the front gantry doesn't hit the bed if it is lower.

                            Will then try 4 Z motor adjustment.

                            Probably also need to put in some basic method of avoid the heads or gantries being able to move in to each other in normal ad hoc moves if that's possible.0ED2B512-DD71-4717-BD68-681C8F556816.jpeg IMG_6638.JPG

                            U & V end stops both put in the 1LC driver board - which saves on wiring - but does mean U has to be homed first - otherwise the V end stop won't hit the plate I setup for it.

                            dwuk3dundefined 1 Reply Last reply Reply Quote 0
                            • dwuk3dundefined
                              dwuk3d @dwuk3d
                              last edited by

                              @dwuk Upgrade PSU to a meanwell one - I can see why people seem to like them - its almost silent, rather than being really noisy like the previous one.

                              D9C4EA59-ED3E-473B-AAD0-37D47E4675EC_1_105_c.jpeg

                              I think I might be getting somewhere with my homing

                              Based on here
                              https://docs.duet3d.com/User_manual/Connecting_hardware/Z_probe_auto_levelling#axis-levelling-using-endstops

                              I think I might have to split my 4xZ motors in to 2 separate AXIS (back and front), then move the two gantries to the back and front, then allocate the two probes to the two separated Z Axis, and then move down on both axis down at the same time - and hopefully it will move down until both probes are triggered.

                              1 Reply Last reply Reply Quote 0
                              • dwuk3dundefined
                                dwuk3d
                                last edited by

                                Think I have figured a way to get the Z motors level.

                                Step 1 - Define an extra AXIS A in Config.g with same parameters as Z - but set to a dummy drive and switch.

                                Step 2 - Align Back and Forward.
                                Move front gantry to near front centre and rear gantry to near rear centre
                                ;Set Z axis to Probe 0 - front gantry
                                M574 Z1 S2 K0
                                ;Set A axis to Probe 1 - rear gantry
                                M574 A1 S2 K1
                                ;Split Gantries - front and back
                                M584 Z2:5 A0:1 P6
                                ;Move both gantries down until they hit their probes
                                G91
                                G1 H1 Z-999 A-999

                                Step 3 - Align Left and Right

                                ; Now Move Gantries close to each other in the centre of the bed,
                                ; Plus move rear gantry print head to near to the left and front to near to the right

                                ; Resplit Axis - with A left and Z right
                                M584 Z1:5 A0:2 P6

                                ; Now Move down to end stops again
                                G91
                                G1 H1 Z-999 A-999

                                ; Now all 4 z's are I think closer to alignment.

                                Step 4 - Re Merge Z
                                M584 Z1:2:0:5 P5

                                1 Reply Last reply Reply Quote 0
                                • dwuk3dundefined
                                  dwuk3d
                                  last edited by

                                  Homing working -

                                  See short video demo

                                  https://youtube.com/shorts/oHtVsdHTPQc?si=w-lnOgmzNzxqfvRK

                                  Lots of refinements to do - but basic homing and 4 AXIS levelling done

                                  1 Reply Last reply Reply Quote 2
                                  • dwuk3dundefined
                                    dwuk3d
                                    last edited by

                                    Tuned heaters today. The heads worked ok, got this from the print bed

                                    28/01/2025, 11:29:21 Warning: heater behaviour was not consistent during tuning
                                    Auto tuning heater 0 completed after 3 idle and 25 tuning cycles in 4667 seconds. This heater needs the following M307 command:
                                    M307 H0 R0.527 K0.163:0.000 D5.70 E1.35 S1.00 B0
                                    Edit the M307 H0 command in config.g to match this. Omit the V parameter if the heater is not powered from VIN.

                                    Will try using it anyway to see what happens.

                                    Also decided to try backing up settings today - tried various methods and ended up using FTP with VSCODE. Annoyingly I some how ended up losing my HomeX,Y,Z and All settings - so had to re do them.
                                    Improved the Z homing as part of this.

                                    Now ready to try some mesh levelling.

                                    1 Reply Last reply Reply Quote 0
                                    • dwuk3dundefined
                                      dwuk3d
                                      last edited by

                                      Gradually getting there with bed levelling.
                                      Found my two probes trigger at slightly different heights, plus the nozzles are also at different heights too - so will add some manual adjustment capability in before trying first print.

                                      I can't get auto 4 axis calibration to work - it keeps saying it is not supported for the kinematics. I've tried coreXY too and it still says the same thing.

                                      So I have settled for now on probing and a level of auto adjustment in bed.g that seems to work.

                                      My HomeZ does still seem to mess up the gantry levelling, and I am getting some issues with probes getting stuck on in the software.

                                      But I think with this bed.g I now have a pretty flat Z axis after a few iterations.

                                      M671 X410:-60:-60:410 Y420:-10:420,-10
                                      M400
                                      
                                      while true
                                          G1 X300 Y200 F20000
                                          G30 P0 X300 Y200 Z-99999 ; probe near a leadscrew
                                      
                                          var adjust1 = (sensors.probes[0].lastStopHeight)
                                      
                                      
                                      
                                          G1 X20 Y20 F20000
                                      
                                          G30 P1 X20 Y20 Z-99999 ; probe near a leadscrew
                                      
                                          var adjust2 = (sensors.probes[0].lastStopHeight)
                                      
                                      
                                          G1 X20 Y200 F20000
                                          G30 P2 X20 Y200 Z-99999 ; probe near a leadscrew
                                      
                                          var adjust0 = (sensors.probes[0].lastStopHeight)
                                      
                                      
                                          G1 X300 Y20 F20000
                                          G30 P3 X300 Y20 Z-99999 S-1 ; probe near a leadscrew and calibrate 4 motors
                                       
                                      
                                          var adjust5 = (sensors.probes[0].lastStopHeight)
                                      
                                          echo var.adjust1, var.adjust2, var.adjust0, var.adjust5
                                      
                                          if (abs(var.adjust1) < 0.01 && abs(var.adjust2) < 0.01 && abs(var.adjust0) < 0.01 && abs(var.adjust5) < 0.01)   || iterations > 6
                                              break
                                      
                                      
                                          G91
                                      
                                          if abs(var.adjust1) < 1
                                              set var.adjust1 = var.adjust1 * 2
                                          if abs(var.adjust2) < 1
                                              set var.adjust2 = var.adjust2 * 2
                                          if abs(var.adjust1) < 1
                                              set var.adjust0 = var.adjust0 * 2
                                          if abs(var.adjust1) < 1
                                              set var.adjust5 = var.adjust5 * 2
                                          
                                      
                                      
                                      
                                          M584 A1 P6
                                          G1 A{var.adjust1}
                                          M584 A2 P6
                                          G1 A{var.adjust2}
                                          M584 A0 P6
                                          G1 A{var.adjust0}
                                          M584 A5 P6
                                          G1 A{var.adjust5}  
                                      
                                      
                                      
                                      M400
                                      G1 Z0 F2000
                                      G92 Z2.55
                                      

                                      Screenshot 2025-01-29 at 08.33.40.png

                                      1 Reply Last reply Reply Quote 0
                                      • dwuk3dundefined
                                        dwuk3d
                                        last edited by dwuk3d

                                        Current thinking on first Z Hopper prototype

                                        an MG90S servo - for Z offset, first layer meshing and Z hopping only for other layers.

                                        The mechanism will unfortunately add another around 10mm to the depth of the extruder due to the tiny MGN7 linear rail.

                                        2BDA9EF1-342D-4820-8456-7B5FD34E9120.png D1CA5A25-C00F-4BFF-81DA-76EC4FCB5BDE.png FEAB4F20-409C-4963-A9C1-9C96E1B9334D.png
                                        1E8AF8C0-8C94-4AB0-9B4B-26D8099AAAAF.png

                                        I don't think the 1LC board 5V can handle the stall current of about 700ma - so will add a buck convertor onto the 24v input supply. Will put the servo on IO-0.out on the 1LC.

                                        _MRT_undefined 1 Reply Last reply Reply Quote 0
                                        • _MRT_undefined
                                          _MRT_ @dwuk3d
                                          last edited by

                                          @dwuk Hi David,

                                          I did a quick sketch to show you the cam concept. I can't upload a photo, so I put the link below. You should erase the spaces.

                                          I tried to use arrows to explain which part is which.

                                          You should add a mechanical switch to limit the lower Z position of the extruder. When the extruder reaches the lower Z limit, the spring should have slight tension—this will likely provide sufficient accuracy.

                                          Additionally, if you add a screw to adjust the lower Z limit, you can fine-tune the adjustment to ensure both extruders are on the same plane.

                                          https :// freeimage . host / i/2Qk9jcl

                                          dwuk3dundefined 1 Reply Last reply Reply Quote 0
                                          • dwuk3dundefined
                                            dwuk3d @_MRT_
                                            last edited by

                                            @_MRT_ Thanks very clever- like it.

                                            Especially the fact that is should allow more precision and also the servo motor will not need to take the full weight in its rotational axis. Will add limit switch in too as you suggest.

                                            Have added a screenshot of your photo below.
                                            Screenshot 2025-01-29 at 20.25.55.png

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