Bjoern's firmware esteps/extruder speed

Hi,

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.

/R
Björn

Thank you for the reply,

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

Good luck
Björn

Hi Bjoern,

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

I restarted the printer, but the same thing happened (and it also beeped for something like 20 times). Is there anything I can do to get it to print?

  1. Check your filament runout switches.
  2. 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.
  1. 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?
  2. 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?

But it was trying to heat up and use the wrong extruder. So of course it had no filament.

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:

Single Mode 01:

;SV04 start
M140 S{material_bed_temperature};
M104 S{material_print_temperature};
M280 P0 S160;
G4 P100;
G28;
T0;
M420 S1;
M190 S{material_bed_temperature};
M109 S{material_print_temperature};
G92 E0;
G1 X10.1 Y20 Z0.28 F5000.0;
G1 X10.1 Y200.0 Z0.28 F1500.0 E15;
G1 X10.4 Y200.0 Z0.28 F5000.0;
G1 X10.4 Y20 Z0.28 F1500.0 E30;
G92 E0 ;Reset Extruder
G1 Z2.0 F3000;

Single Mode 02;

;SV04 start
M140 S{material_bed_temperature};
M104 S{material_print_temperature};
M280 P0 S160;
G4 P100;
G28;
T1;
M420 S1;
M190 S{material_bed_temperature};
M109 S{material_print_temperature};
G92 E0;
G1 X10.1 Y20 Z0.28 F5000.0;
G1 X10.1 Y200.0 Z0.28 F1500.0 E15;
G1 X10.4 Y200.0 Z0.28 F5000.0;
G1 X10.4 Y20 Z0.28 F1500.0 E30;
G92 E0 ;Reset Extruder
G1 Z2.0 F3000;

And the test failed: the printer still tried using the right extruder instead of the left one. What I did up until now:

  1. Used a clean install of Cura 5.7.1 instead of 5.5.0.
  2. Added the instruction above to the start Gcode, so that the correct extruder is picked.

Is reverting back to stock firmware my only option at this point?

Here’s the current code:
SSSM01_cube (2).txt (87.8 KB)

I had a test with my current firmware v1.14.3 & your last cube gcode:

  1. 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.
  2. 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.
  3. 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…

  1. Well, it tried to run on the right extruder… :slight_smile: I can move the T0; command up, of course.
  2. It was supposed to run on the left extruder. The printer is in Single Mode 01, and so was the slicer.
  3. Looking forward to it :slight_smile: Any other changes in it one should be aware of?

As for the options:

  • what should be corrected in the code, other than moving up the T0 command?
  • Single Mode 01 profile was used in the slicer and was selected on the printer, but it tried using the second (right) extruder instead.
  • Patience? Patience??? Patience??? What is this patience you speak of? I have none of that!

Hi again,
first of all, the new firmware release v1.14.4 is available in my GitHub repository.

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.