Sovol SV08 Multiple Motion System Upgrade.
-
@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.
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-endstopsI 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.
-
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-999Step 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 -
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
-
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.
-
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
-
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.
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.
-
@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
-
@_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.
-
@dwuk Basic rigid Cam version created for first test.
Will then experiment with adding springs as suggested by @_MRT_
Need however to limit the width as much as possible to avoid clashes with the other head on the same gantry. I guess I could move the servo and cam onto the other side and reposition the X end stop.
The Cam is offset 0.75mm from the centre of the shaft - so I am guessing this means about 1.4mm of movement within the range of about 140 degrees of the servo.
Will add in screw height adjustment and end stop later.
-
@dwuk Servo wired up and tested. On the 1LC board io_0.out, with an LM2596 DC to DC convertor to bring down the 24V input to 5V for the servo.
Prototype parts printed - just need to install them and test them - might be a few days due to other commitments.