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

    Sovol SV08 Multiple Motion System Upgrade.

    Scheduled Pinned Locked Moved
    My Duet controlled machine
    8
    244
    27.7k
    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.
    • o_lampeundefined
      o_lampe @dwuk3d
      last edited by o_lampe

      @dwuk One point of concern is the tiny screw that connects the excenter with the servo. It has to hold the whole weight of the tool?
      There is also a big distance between tool-COG and the anchor point of the excenter, which adds the tendency to tilt the extruder rather than lift it. (risk of racking?)

      I just thought: worm gear! The smallest motor will be able to lift the tool and it comes with inbuild self locking.

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

        @o_lampe Good point - may have to strengthen that part up - I just wanted to make it slightly adjustable/easy to print a small extra bit.

        I can't get the servo any closer if I mount it on the side - but may be able to move it behind somewhere - especially if I attach it to the rail part rather than the extruder.

        The new design will be easier to take apart and put back together to try out different options.

        One of the motor options I bought - the linear stepper is worm/lead screw based so will try that out at some point.

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

          Managed to get proper G32 4x Z motor levelling to work

          G32
          Leadscrew adjustments made: -0.435 -0.410 -0.334 -0.474, points used 4, (mean, deviation) before (-0.421, 0.027) after (0.000, 0.000)

          Not sure why the adjustments are so large - but the Z height seems to be quite consistent across the bed now on Gantry A.

          I found the problem by looking at the code in GitHub and trying to work out the reasons for the 'Kinematics not supported' message coming out - in the end I found this line section - and thought numLeadscrews might not be set - and the condition of xSize not matching ySize was the problem - as I had specified a comma instead of a colon in my M670 for the lead screw positions.
          M671 X410:-60:-60:410 Y420:-10:420,-10

          I see now that M98 P"config.g" would have found this problem - so need to run that more often.

          if (seenX && seenY && xSize == ySize)
          	{
          		for (float& v : lastCorrections)
          		{
          			v = 0.0;
          		}
          		numLeadscrews = xSize;
          		reprap.MoveUpdated();
          		return false;							// successful configuration
          	}
          
          o_lampeundefined 1 Reply Last reply Reply Quote 0
          • T3P3Tonyundefined
            T3P3Tony administrators @dwuk3d
            last edited by

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

            servo lifter

            Just as a potentially useful datapoint. the very first iterations of e3d toolchanger used a metal gear hobby servo (not that one, I think more powerful one), as the tool lock motor. They quickly swapped to a small servo motor because of longevity. If this is doing Z hops then it will probably have several orders of magnitude more activations per print than a tool change in a toolchanger so I would look carefully as the service life of those servos.

            www.duet3d.com

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

              @T3P3Tony Thanks - I am mainly just initially using the hobby servo to get the 2nd print head level with the first one - so I can do my first print, plus for some initial tests with z hopping and mesh levelling.

              I've got a couple of small geared stepper motors that I think are going to work better in terms of the gcode at least - as I should be able to assign them to axis and get the movement to better synchronise with the X & Y movements. But the point about longevity might apply to those too.

              I've also got some bigger ones - a Nema8 and Nema14 pancake to try too - but will need a lead screw with them probably as they are not geared.

              Will have a look into what Servo Motors they used for the e3d tool changer too - so thanks.

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

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

                Not sure why the adjustments are so large

                It's just the difference between the configurated tool offset and trigger point of the probe.
                Since they are all pretty close (-0.4ish), your bed level looks fine.

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

                  Servo based z hopper working quite well now with the revised linear rail setup - so far only used for Z height adjustment on the 2nd Gantry - and managed to get them both to print ok.

                  To get 2nd gantry to print I created a tool T1 - that is offset 100,100 away from the main gantry -
                  ; Tools
                  ;Tool T1 - 2nd Gantry as X and Y
                  M563 P1 D1 H2 X3 Y4 F1
                  G10 P1 X0 Y0 U-100 V-100 S0 R0

                  And it worked ok - had to slow speeds down on U and V axis - as 2nd gantry motors not as good as first gantry at the moment.

                  Now trying to get both tools printing at the same time - and can't quite figure out how to make it work - keep getting the gantries crashing in to each other - so will probably leave it until the morning.

                  ; T2. - duplicate mode
                  M563 P2 D0:1 H1:2 X0:3 Y1:4 F0:1
                  G10 P1 X80 Y100 U-80 V-100 S0 R0
                  <<< Update - found problem - I was specifying P1 on G10 instead of P2 - so G10 now reads:
                  G10 P2 X0 Y0 U-80 V-100 S0 R0

                  From first gantry
                  39D0A701-F304-424D-B2B9-D94B9BFB0192_1_105_c.jpeg

                  From 2nd Gantry
                  IMG_6880.JPG

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

                    First successful Duet Dual Gantry IDEX test. - ( Phase 1 part 3)

                    https://youtu.be/A485TMKhmV4?si=gRNhVj0sPUrHJKw3

                    First layers not perfect and running a bit slow for some reason - but overall a big step forward.

                    64621B0D-202B-4FD8-BB3F-3972F152E3D8_1_102_o.jpeg

                    Next step - multiple motion system...

                    T3P3Tonyundefined 1 Reply Last reply Reply Quote 3
                    • dwuk3dundefined
                      dwuk3d
                      last edited by

                      Next Z hopper option that I am going to try - this time using a linear stepper motor with 8N strength which should hopefully be enough.

                      Will have to run the 4 wires to it from the Mini5+ board as the tool board can only support one stepper (unless there is a clever way to wire in another driver).

                      Will combine it with an optical end stop - so will if I don't fix the stepper at the bottom be able to use the
                      vertical linear rail as a 'Voron Touch' probe too.

                      05C651FE-535F-40B5-963D-6CCB9159AEF8.png

                      Shown in this picture with the servo option too for comparison - the linear motor is close to the centre and the linear rail too - although bending doesn't seem to be an issue despite the servo be a fair way off of the rail.

                      863D6A7A-4127-46F3-9B96-B0C9B4108D67.png

                      The servo motor looks quite good quality - and specs are as follows. - cost about £17 each including shipping.

                      Will only need to use about 2mm of the 8mm range.

                      A02BF09E-D7D5-45D5-B8E5-3126C5DEC4AD.png

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

                        Wired up two types of z-hopper steppers - on the Mini5+ board

                        They both seem to move ok - but the Geared stepper looks very small and I don't have a mA rating for them - but they are only £5 from PiHut.

                        The linear motor seems to work quite well - but it is a bit noisy on idle - so need to investigate that.

                        Relevant settings below - I put them on B and C axis for now - need to adjust the steps per MM for the the smaller geared motor - as it needs about 50mm movement for the spindle to turn.

                        ; 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 P1.2 S1 D2 ; driver 1.2 goes forwards (A axis)
                        M569 P1.3 S1 D2 ; Z-hopper 1
                        M569 P1.4 S1 D2 ; Z-hopper 2
                        M569 P121.0 S0 D2 ; driver 121.0 goes backwards (extruder 0)
                        M569 P122.0 S0 D2 ; driver 122.0 goes backwards (extruder 1)
                        
                        ; 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 A1.2 B1.3 C1.4; set axis mapping
                        M350 X16 Y16 Z16 U16 V16 A16 B16 C16 I1 ; configure microstepping with interpolation
                        M906 X800 Y800 Z800 U800 V800 A800 B50 C50 ; set axis driver currents
                        M92 X80 Y80 Z533.33 U100 V100 A533 B629 C629 ; configure steps per mm
                        M208 X0:300 Y-5:295 Z0:300 U0:300 V0:300 A0:300 B0:3 C0:3 ; set minimum and maximum axis limits
                        M566 X12000 Y12000 Z3000 U6000 V6000 A3000 B1000 C1000 ; set maximum instantaneous speed changes (mm/min)
                        M203 X42000 Y42000 Z3000 U21000 V21000 A3000 B1000 C1000 ; set maximum speeds (mm/min)
                        M201 X500 Y500 Z20 U250 V250 A20 B20 C20 ; set accelerations (mm/s^2)
                        
                        

                        I carried on using the configuration tool for as long as I could - but it seems to keep losing the !'s on my end stops - so switched to just editing config.g.

                        One thing I have noticed that I really like about Duet without RPI as how quick it boots up / restarts vs how long the Klipper based board that came with the SV08 took.

                        Also looking forward to be able to start prints much quicker than my X1Cs - which take about 7 or 8 minutes calibration before they start anything.

                        BB65F456-DFDB-405D-BE04-DF5F5BD1E7A2_1_102_a.jpeg

                        Specs for smaller geared stepper (pictured on right) attached below
                        BBEA89D5-4876-4CE6-987F-EF876BA06A1B.png

                        1 Reply Last reply Reply Quote 1
                        • T3P3Tonyundefined
                          T3P3Tony administrators @dwuk3d
                          last edited by

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

                          Next step - multiple motion system...

                          Fantastic work Dave. I am really looking forward to the first dual independent print!

                          www.duet3d.com

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

                            Linear stepper looks fairly neat and hardly adds anything to the width - but can't test it properly until another MGN9C linear carriage arrives in a few days.
                            With the current plastic carriage it needs a little bit of help to lift at 150ma - but lowers very nicely.
                            There is always to option to add spring assist too if it struggles once it has the proper linear rail setup arrives.

                            54860314-C1B8-4298-96DC-234B8230F737.jpeg E77AAF4D-A676-4746-8AA3-63D81F9EE934_1_102_o.jpeg

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

                              @dwuk Those motors are nice findings...but the small one might be too slow for anything? (15-20PPS @18degree/step divided by 100/1 gearbox) If my math is correct, it'll take 50 seconds for half a turn (outputshaft acting like hobby servo excenter)
                              You will also need a way to fix the tool in both directions. Otherwise the extruded filament will push it up.

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

                                Just ordered two more 1LC tool boards and another mini5+ board.

                                That combination should allow for 6+7+5=18 axis drivers - z8, x4, y4 = 16 so should be enough for now - with the option to go up to 20 with another mini5 expansion.

                                Bad news is that my current mini5+ board is v1.02 - not sure what version E3D will send me for the 2nd board - their listing says 1.01 - so looks like some desoldering of terminator resistors on one of the boards is going to be required.

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

                                  Added MGN9C carriage and Z lifter works quite well now.
                                  See -
                                  https://youtube.com/shorts/JexMhHyFkvI?si=BZMB12EFMrDNep2B

                                  C8C10414-9797-4E2E-809E-4615A403E04B_1_102_a.jpeg F51AD39F-9F6B-4632-91D5-CFC676D2F838_4_5005_c.jpeg

                                  Next challenge after this is how to get a ball probe working with RepRap firmware to align the two heads - as per this Klipper add-on.

                                  https://github.com/viesturz/NozzleAlign

                                  21F5EE4C-F74C-40E3-9384-2C4AB17B7E4E_1_105_c.jpeg

                                  I may have to do some maths in a macro to get this to work.

                                  Am going to try one of the Ember Prototypes Camera based aligners too.

                                  T3P3Tonyundefined 1 Reply Last reply Reply Quote 0
                                  • T3P3Tonyundefined
                                    T3P3Tony administrators @dwuk3d
                                    last edited by

                                    @dwuk i beleive @Sindarius has this concept working, hopefully he will be able to chime in.

                                    www.duet3d.com

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

                                      Added optical limit switch to front gantry linear Z hopper - and it is working pretty well.

                                      The limit switch triggers at about -1.6 below the Z height of the other gantry, and the Z hopper can drop down by a further around 0.5mm.

                                      So the 2.1mm difference also allows 'Voron Tap' type Z height detection to also work if the extruder is lowered down - although haven't yet implemented this in homeX.

                                      I changed the M569 definition of the stepper from D2 to D3 and I think that has made it quieter - but it is staying a little hot on idle - so I need to add some switching off of IDLE's somewhere into the macros (M84 B) - however this does mean it loses it homing status. Maybe lowering the current percentage might work instead.

                                      Next step tomorrow is to try some tests with the ball probe - I think I will just print something that I can place 4 magnets around it to hold it in a fixed place on the build plate for stability - and see what I can create in terms of macro code to accurately locate it on one gantry, then get the other gantry to do the same probing to get the two aligned.

                                      Would be interesting to see what @Sindarius has developed for this too.

                                      In terms of where the place the probe on the build plate.

                                      It the short term I think I will just manually place it somewhere - bet ideally I would like to make the alignment fully automated. Am wondering whether it might be feasible to cut a small hole in the build plate and create a mechanism to lift the probe up from below when required.

                                      Any prints over this area could potentially just bridge over the hole.

                                      26BA78FF-073E-40E8-9049-5BF2406BA18F.jpeg

                                      Haven't yet added any magnets to hold the front gantry extruder down - but I think something at 45 degrees like the voron tap can be added later once I get to some high speed printing tests.

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

                                        Good progress made on Ball Probe

                                        Demo of first attempt at Macro here - which I have initially done on the front Gantry

                                        Video show G32 first, followed by Ball Probe alignment Macro
                                        https://youtube.com/shorts/uPcV3BAuwyc?si=bT-t0YxPR4qDQWoo

                                        IMG_7008.jpeg

                                        Held in place for now by Magnets - but I would like to automate the deployment and stowing of the Probe.

                                        4EBAB014-D448-4484-B1D3-7EF719DD179E_1_105_c.jpeg

                                        The 4 magnets at the edge are for basic positioning, with the larger one near the probe to hold it in place.

                                        probe.g Macro - Currently just front Gantry

                                        G90
                                        G1 U150 V290 F20000
                                        G1 Z50 F5000
                                        G1 X235 Y179 F10000
                                        M574 Z1 S2 K3; Set Z to Ball Probe
                                        
                                        ; Find basic Z position
                                        
                                        
                                        
                                        G1 H4 Z-10 F300
                                        echo "Z", {move.axes[2].userPosition}
                                        G1 Z50 F300
                                        G1 H4 Z-10 F300
                                        echo "Z", {move.axes[2].userPosition}
                                        G1 Z48 F300
                                        G1 H4 Z-10 F100
                                        echo "Z", {move.axes[2].userPosition}
                                        var ZP = move.axes[2].userPosition
                                        
                                        G1 Z50 F5000
                                        
                                        M574 Z1 S2 K0; configure Z axis endstop
                                        
                                        ; Now find X middle
                                        
                                        G91
                                        G1 X-10 F5000
                                        G90
                                        G1 Z{var.ZP-0.2} F300
                                        
                                        
                                        G91
                                        M574 X1 S2 K3
                                        G1 H4 X+10 F300
                                        
                                        echo "X1", {move.axes[0].userPosition}
                                        
                                        G1 X-5
                                        G1 H4 X+10 F300
                                        
                                        echo "X1", {move.axes[0].userPosition}
                                        
                                        G1 X-5
                                        G1 H4 X+10 F300
                                        
                                        echo "X1", {move.axes[0].userPosition}
                                        var X1 = move.axes[0].userPosition
                                        
                                        G1 Z5 F300
                                        G1 X10  F5000
                                        G1 Z-5 F300
                                        
                                        G1 H4 X-10 F300
                                        echo "X2", {move.axes[0].userPosition}
                                        
                                        G1 X5
                                        G1 H4 X-10 F300
                                        echo "X2", {move.axes[0].userPosition}
                                        
                                        G1 X5
                                        G1 H4 X-10 F300
                                        echo "X2", {move.axes[0].userPosition}
                                        var X2 = move.axes[0].userPosition
                                        
                                        G1 Z5
                                        
                                        G90
                                        var XM = (var.X1+var.X2)/2
                                        G1 X{var.XM}
                                        
                                        M574 X1 S3 ; configure X axis endstop
                                        
                                        ; Now Y
                                        G91
                                        
                                        G1 Y-10 F5000
                                        G1 Z-5 F300
                                        M574 Y1 S2 K3
                                        
                                        G1 H4 Y+10 F300
                                        echo "Y1", {move.axes[1].userPosition}
                                        
                                        G1 Y-5 F5000
                                        
                                        G1 H4 Y+10 F300
                                        echo "Y1", {move.axes[1].userPosition}
                                        
                                        G1 Y-3 F5000
                                        
                                        G1 H4 Y+10 F100
                                        echo "Y1", {move.axes[1].userPosition}
                                        var Y1 = move.axes[1].userPosition
                                        
                                        G1 Z5 F300
                                        G1 Y10 F5000
                                        G1 Z-5 F300
                                        
                                        G1 H4 Y-10 F300
                                        echo "Y2", {move.axes[1].userPosition}
                                        
                                        G1 Y5 F5000
                                        G1 H4 Y-10 F300
                                        echo "Y2", {move.axes[1].userPosition}
                                        
                                        G1 Y2 F1000
                                        G1 H4 Y-10 F100
                                        echo "Y2", {move.axes[1].userPosition}
                                        var Y2 = move.axes[1].userPosition
                                        
                                        var YM = (var.Y1 + var.Y2) / 2
                                        
                                        
                                        
                                        G1 Z5 F300
                                        
                                        G90
                                        G1 X{var.XM} Y{var.YM} F2000
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        
                                        G90
                                        
                                        M574 Y1 S3 ; configure Y axis endstop
                                        
                                        
                                        

                                        Results from test - to show level of consistency
                                        19/02/2025, 22:32:59 Y2 182.625
                                        19/02/2025, 22:32:57 Y2 182.625
                                        19/02/2025, 22:32:56 Y2 182.625
                                        19/02/2025, 22:32:53 Y1 174.275
                                        19/02/2025, 22:32:51 Y1 174.300
                                        19/02/2025, 22:32:49 Y1 174.288
                                        19/02/2025, 22:32:44 X2 243.038
                                        19/02/2025, 22:32:42 X2 243.038
                                        19/02/2025, 22:32:40 X2 243.038
                                        19/02/2025, 22:32:37 X1 234.812
                                        19/02/2025, 22:32:35 X1 234.812
                                        19/02/2025, 22:32:32 X1 234.812
                                        19/02/2025, 22:32:28 Z 45.645
                                        19/02/2025, 22:32:26 Z 45.647
                                        19/02/2025, 22:32:23 M98 P"0:/macros/Probe.g"
                                        Z 45.647

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

                                          Impressive demo of SV08 toolchanger (phase 3 for me) here.

                                          https://youtu.be/tg2vRfqMXYU?si=3NB5lVxPEerKP82u

                                          One thought that that did occur is that it would work a lot faster if the tool rack had its own independent Z axis - so that the tools could be brought down much closer to the current build height, and then moved up as the print grows.

                                          So yet another axis to add to my design - will probably do it with dual lead screws - as it doesn't need to be quick.

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

                                            Got ball probes alignment macros (with loops and variables) working on the UV axis as well as the XY axis - both with the ball probe, plus also with an Ember Prototypes CXC - which is a camera pointing up at the nozzle.

                                            Also created macros to search for the ball probe when it isn't quite where it is expected to be.

                                            Alignment though is not that accurate yet.

                                            The first problem that the camera has identified is backlash - which I am mainly getting on the UV axis, and more noticeably in the V direction. - its only about 0.1mm - but it does mean that if for example you move 10mm in the V direction and back you don't end up in the same spot. But if you move back another 10mm and then forward you get back pretty close to where you started.

                                            Have tried removing the Phase2 IDEX carriage as I thought that might be impacting the movement - but that hasn't helped, plus have also tightened up the belts a fair bit - but am still getting the issue.

                                            I guess it might be that my print head is not rigid enough - or it might be the motors.

                                            Will try training the camera on other parts of the mechanism next to see if I can see where the backlash is coming from.

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