I upgraded to Bjoern’s firmware v.1.14.3, the features are too good to pass on. However, I’m having the same issue I had when I tried it last. When I try to calibrate esteps, I only get it to feed about 75-80mm out of 100. Setting the esteps higher yields the same result. When I look at the filament, it has the grinding signs. I didn’t have this issue with the stock firmware.
It also looks like all speeds are up: XYZ axis movement speeds as well as the extruder gear speed. The latter might be what’s causing this issue. Am I on the right track? Has anyone experienced the same issue? If so, how did you solve it? Was it just by reducing the extruder gear speed, or am I missing something entirely?
Hi akholic,
thanks a lot for your feed-back. You are right - speed & feed rates are different from Sovol’s stock firmware:
Movement speeds are higher for bed leveling (as there a four times more bed points to measure).
Default and maximum feedrates are lower in order to ensure prints accuracy. I’ll bring back the maximum rates to the stock settings in my next release.
However, e-steps have remained unchanged. Additionally, changing e-steps is intended to adjust the number of steps per mm movement - this will have a low impact on speed rates, but a disastrous impact on accuracy…
Maximum feedrates can be adjusted using g-code M203 instructions. The current feedrate of each G0/G1 instruction could be adjusted using [g-code M220 instruction](https://M220 - Set Feedrate Percentage).
The grinding sings are caused by the pressure at the extruder wheel. This can be adjusted manually.
I got confused though: if the default and max feed rates are reduced (which is fine by me),wouldn’t the extruder feed the filament slower? I’m seeing the opposite when I use the change filament screen to feed 100mm of filament when calibrating esteps. This is where the issue is: the extruder gear rotates too fast and grinds filament. So I’d imagine the default and max feed rates are increased, not reduced. What am I missing here?
The feedrate in the refill screen is 6 mm/s. It is intended for filament change, not for calibration.
This is what you can do to get lower extrusion feedrate for calibration:
Connect your SV04 via USB using Printrun/Pronterface or put the following g-code instructions in a file named “first_calibration_100mm.gcode” & run it from SD-card.
; -- E-STEP CALIBRATION SCRIPT FOR LEFT EXTRUDER - FIRST STEP --
; NOTE: >>S200<< is for temperature of 200°C. Change this value in all lines according to your current filament type.
; NOTE: >>T0<< is for the left extruder. Change this value to >>T1<< in all lines for the right extruder.
; NOTE: >>F100<< is for the extrusion feed rate.
M18 S120; keep the steppers alive for 2 minutes after last move
; send info text to display
M117 Heating up...
M104 S200 T0 ; nozzle heatup
M109 S200 T0 ; wait for nozzle heatup
M117 Homing...
G28 ; Home all axes
T0 ; Select extruder
G4 S1 ; wait a second
M117 Positioning...
G0 X150 F2000 ; Move extruder in the middle of print area
G0 Z100.0 F2000 ; Move Z-axis up in order to keep the nozzle clean
M83 ; set extrusion to relative
G4 S1 ; wait a second
M117 Feeding 100mm in next 60 sec...
G1 E100 F100; extrude 100 mm of filament at a rate of 100 mm per minute
;feeding will take 60 seconds
G4 S1 ; wait a second
M117 Done!
G4 S10 ; wait 10 second before finishing
The following script is intended to adjust E-steps: Calculate the E-steps by measuring the extruded length in last run as described here. Use the script via Printrun/Pronterface console or put the g-code instructions in a file named “next_calibration_100mm.gcode” & run it from SD-card::
; -- E-STEP CALIBRATION SCRIP FOR LEFT EXTRUDER - NEXT STEP --
; NOTE: >>S200<< is for temperature of 200°C. Change this value in all lines according to your current filament type.
; NOTE: >>T0<< is for the left extruder. Change this value to >>T1<< in all lines for the right extruder.
; NOTE: >>F100<< is for the extrusion feed rate.
; NOTE: >>E415.0<< is for the number extrusion step per mm feed rate. Adjust this value as follows:
; new value E###.# = 415.0 steps x 100 mm / length extruded in mm during previous run
M18 S120; keep the steppers alive for 2 minutes after last move
; send info text to display
M117 Heating up...
M104 S200 T0 ; nozzle heatup
M109 S200 T0 ; wait for nozzle heatup
T0 ; Select extruder
M117 Positioning...
G0 X150 F2000 ; Move extruder in the middle of print area
M83 ; set extrusion to relative
M92 E415.0 T0; Set extruder to 415.0 steps/mm
M500; save the value in EEPROM
G4 S1 ; wait a second
M117 Step saved! Now feeding 100mm sec...
G1 E100 F100; extrude 100 mm of filament at a rate of 100 mm per minute
;feeding will take 60 seconds
G4 S1 ; wait a second
M117 Done!
G4 S10 ; wait 10 second before finishing
Thanks, I used the G-code to calibrate esteps for the extruders, that went fine. Finished the rest of the calibrations and moved on to the calibration prints. Got an issue at the first one:
The left extruder moved to the middle and homed in, then the right extruder temp was being raised and the refill screen appeared. So apparently it tried to use the right extruder instead. I cancelled the job, and 3 out of 4 icons on the main screen got blocked: Print, Temp, and Mode. Only the Settings one is accessible.
Needless to say, the chose mode was Single Mode extruder 1 and the same was used in Cura. I use Cura 5.5.
P.S.: had to restart the printer to get access to the blocked icons. Tried printing again, the same thing happened.
Hi akholic,
thanks for your feed-back - it seems there are some variables not cleaned-up properly after a print-job in my current firmware version. Restarting the printer will ensure a safe starting point. This issue is on my To-Do-List for the next release.
/R
Björn
If there is no difference at all, even with disconnected runout-sensors: Please upload that .gcode-file here - you might need to alter the extension into “.txt”. It would be interesting to find out what’s going wrong.
What should I check there? Nothing’s changed with them since I ran the stock firmware. The issue was that it tried to use the right extruder instead of the left one. Do filament runout switches affect it?
Here’s the file, it’s a simple flow calibration shape. SSSM01_cube (2).txt (105.4 KB)
Ensure that there is filament inserted into the runout sensor & that the sensor led it lit. The difference is that the filament change screen will pop up when the current sensor reports missing filament & the program won’t proceed until the sensor switch changes its status…
I’ll check the file & have a look if I can reproduce the issue on my SV04.
First impressions:
Lines 32 & 36 contain text variables that have not been resolved.
There is no tool selection in the program. A clean Single Mode start script should contain a T0 (or T1) instruction.
The program will try to print a top side in the air between hollow walls that will highly likely collect filament waste…
At what phase of execution did this program run into the filament change? After heating up & before drawing the first line from the start script?
Well, I can add the instruction, but this was never the issue before. I just used whatever Cura generated. Actually, scratch that, this was an issue once before, but with a different SV04 and a different version of Cura (and stock firmware). When I upgraded to Cura 5.3 or 5.4, the one that included an SV04 printer profile in the distribution, I had a similar issue with it trying to use the wrong extruder. They must’ve fixed it in later versions, as the upgrade to 5.5 solved this issue.
The filament change happened like this:
I start the print;
The left extruder homes in;
Then it starts heating up the right extruder;
As the right extruder is at about 170-180C, I get that filament change notification.
P.S.: believe it or not, it never tried to print the top part. It’s a flow calibration model from Teaching Tech.
So I modified the start gcode in Cura for both single mode profiles to be the follows (just added extruder selection to each). Gonna test and see how it works:
I had a test with my current firmware v1.14.3 & your last cube gcode:
This gcode will always run on the left extruder, because toolhead 0 is selected in line 20.
Placing the toolhead selection before setting the nozzle target temperature would be smarter - this could avoid heating up the wrong extruder.
Selecting toolhead 1 instead of toolhead 0 would run the print on the right extruder. This would also have been done if the correct Single Mode 02 printer profile had been selected in the the slicer.
Anyhow, there is an issue in my current firmware v1.14.3 & I found it: The code should be able to run on the extruder selected by the print mode in case there is no toolhead selection in the code at all. I already fixed that issue & will provide an update this weekend.
To answer your question: There are more options - correcting your code, working with the matching printer profile in your slicer or just having a bit of patience until the next update is available…
After having fixed the toolhead selection issue & several tests this is my explanation for the observations: Toolhead selection via gcode T0/T1 is stored into the EEPROM. Changing the print mode did not affect the selected toolhead. Therefore all g-code instructions were executed by the extruder that has been stored as in the EEPROM until the next T0/T1 instruction did overwrite it, no matter how often the printer had been powered on & off.
What has changed in v1.14.4:
The toolhead selection issue has been fixed: Chosing print modes “Single Mode 1” or “Single Mode 2” on the display screen will select the corresponding toolhead by executing T0 / T1.
The colors of filenames & directories were not always consistent in v1.14.3, e.g. filenames longer than 33 chars have displayed as directories. This has been cleaned up.
There were some variables missed set to a definied value after finishing or stopping prints. Now all variables should be covered in order to avoid user interface deadlocks.
M423 “X Twist Compensation” has been merged basically: The compensation process is currently not supported via the display screen. M423 g-code instruction can be called via host console. Display implementation will be implemented in a later release…
/R
Björn
PS: Moving up T0/T1 in the start code of both Single Mode profiles should be sufficient.