Jump to content
  • 0

Parse Error - Fixed (sort of). Now nozzle bed heating issue.


7milesup

Question

Well, here I go again. 🙄

Thanks to @mvdveer and @smirk help, I was able to get my printer to print, however, there was a big issue with how it went about heating the bed and nozzle, with the nozzle heating up to print temp, then cooling off to probe temp (150C) and then back up to print temp.  After searching a bit, I found that some G-code in my slicer (Superslicer) needed to be added. 

I added the following to my Slicer start G-code (in red).

; M190 S0
; M109 S0 ; uncomment to remove set&wait temp gcode added automatically after this start gcode
print_start EXTRUDER={first_layer_temperature[initial_extruder] + extruder_temperature_offset[initial_extruder]} BED=[first_layer_bed_temperature] CHAMBER=[chamber_temperature]

Then I had parsing issues related to the bed (M104 S and M109 S) that would halt the printer.  After researching some more, I added in the code you see for the M140 and M190 and commented out the existing code..  Now the bed heater does not start until after all of the routines are done, which is a while and the extruder is sitting there cooking at print temp. 

Obviously I have this messed up, but not sure how to correct it.  If I delete the g-code out of the slicer the sequence is correct but then I have that funky hotend heating up, cooling down to 150 then back up to print temp. 

I also have another question(s) about QGL and mesh bed leveling.  Do you have your printer do a QGL for every print?  What about mesh bed leveling.  I am assuming that the mesh bed is done once and saved, then recalled by the g-code.  I can start a different thread for those two questions instead of muddying this thread up.

 

 

 Use PRINT_START for the slicer starting script - please customize for your slicer of choice
[gcode_macro PRINT_START]
gcode:
    #G32                            ; home all axes
    #G90                            ; absolute positioning
    #G1 Z20 F3000                   ; move nozzle away from bed
    BED_MESH_CLEAR
    G90                             ;Absolute positioning
    M117 Homing...
    G28                             ;Homes all the axis
    M117 Heating bed ......
    M140   {% set BED_TEMP = params.BED_TEMP|default(0)|float %}
##M140 S{params.BED_TEMP}         ;Heats the bed to the temperature obtained from the slicer
    ##M190 S{params.BED_TEMP}         ;Waits for the bed to reach temperature before running any other commands
    M190 {% set BED_TEMP = params.BED_TEMP|default(0)|float %}
    M109 S150                       ;Heats the nozzle to 150 in order to use TAP
    M117 Leveling Gantry ........
    QUAD_GANTRY_LEVEL               ;Levels the gantry
    ##BED_MESH_CALIBRATE              ; does a bed mesh and saves it as default for the current session
    M117 Loading Mesh ........
    ##BED_MESH_PROFILE Load=default   ;Loads the mesh - now has to be done explicitly, not automatically loaded anymore
    G0 X150 Y150 Z30 F3600          ;Moves to the centre of the bed
    M117 Heating Toolhead
    M104 {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(0)|float %}
    ##M104 S{params.TOOL_TEMP}        ;Heats the toolhead to the temp obtained from the slicer
    M109 {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(0)|float %}
    ##M109 S{params.TOOL_TEMP}        ;Waits for the toolhead to reach temperature before starting the print
#    M117 Prime Line ..........     ;Prints a Prime Line
#    G92 E0.0                       ;reset extruder distance position
#    G1 X10 Y10 Z0.3 F3000          ;move to prime line position
#    G1 X60 E10.0 F1000             ;intro line 1
#    G1 X200 E30 F500               ;intro line 2
#    G92 E0.0                       ;reset extruder distance position
    G90                             ;Absolute positining
    M117 Starting Print .......

 

 

printer.cfg klippy(2).log

Link to comment
Share on other sites

Recommended Posts

  • 0
3 hours ago, 7milesup said:

What about mesh bed leveling

Dont use it, asume your bed is level enough to just print on the same "height"

3 hours ago, 7milesup said:

Do you have your printer do a QGL for every print

You dont have to, but for sure in beginnings of a new printer, building experience, I would, it takes a minute, dont be hasty 😉 a print takes hours..

My PRINT_START - take from it what you like, I should add chamber temp, to wait for it, but I been lazy.. I turn it on and just start 10 minutes later with printing

[gcode_macro PRINT_START]
#   Use PRINT_START for the slicer starting script - please customise for your slicer of choice
gcode:
   # Parameters
    {% set bed_temp = params.BED|int %}
    {% set extruder_temp = params.EXTRUDER|int %}
    {% set chamber_temp = params.CHAMBER|default(0)|int %}
  {% set x_wait = printer.toolhead.axis_maximum.x|float / 2 %}
  {% set y_wait = printer.toolhead.axis_maximum.y|float / 2 %}
   CHAMBER_LED_ON
    G28                            ; Home the printer
    G90                            ; Use absolute coordinates
    M83
    M117 Heating..
    M140 S{bed_temp}               ; Start bed heating
    M190 S{bed_temp}               ; Wait for bed to reach temperature
    #M109 S150                      ; Set and wait for nozzle to reach temperature
    #CLEAN_NOZZLE
    QUAD_GANTRY_LEVEL              ; QGL
    M109 S{extruder_temp}          ; Set and wait for nozzle to reach temperature
    CLEAN_NOZZLE
    SET_FAN_SPEED FAN=exhaust_fan SPEED=0.40
    ADAPTIVE_PURGE

 

  • Like 1
Link to comment
Share on other sites

  • 0

@BuurmanWhat slicer are you using?  Initially I had a simple PRINT_START command but then due to some changes in my cofig, I then had to add this line " print_start EXTRUDER={first_layer_temperature[initial_extruder] + extruder_temperature_offset[initial_extruder]} BED=[first_layer_bed_temperature] CHAMBER=[chamber_temperature] " to my slicer.  I was using Cura but will probably be going to SuperSlicer, which is where this code currently resides.

Also, do you have TAP?  

Link to comment
Share on other sites

  • 0

Superslicer and NO, not using TAP, I think @mvdveer or other TAP users can help you with his start macro there.

Only thing really is looking and the order so your hotend is not heating up during the G28 or QGL, only at last moment, so it doesnt leak and make inaccurate readings.

Also add a retract to your END macro, so you retract a little more than usual, again, to force a clean nozzle for the next print.

Not much to it.

This is in my superslicer:

;M190 S[first_layer_bed_temperature]
;M109 S{first_layer_temperature[initial_extruder] + extruder_temperature_offset[initial_extruder]} ; uncomment to remove set&wait temp gcode added automatically after this start gcode
print_start EXTRUDER={first_layer_temperature[initial_extruder] + extruder_temperature_offset[initial_extruder]} BED=[first_layer_bed_temperature]

Again, need to add the chamber part to it.

Stop using Cura 😉

  • Like 1
Link to comment
Share on other sites

  • 0

My start and end macros are quite simple. Here they are for reference:

[gcode_macro PRINT_START]
gcode:
    STATUS_READY
    BED_MESH_CLEAR
    G90      #Absolute positioning
    STATUS_HOMING
    M117 Homing...
    G28
    STATUS_CLEANING
    M117 Clean nozzle ......
    CLEAN_NOZZLE
    STATUS_HEATING
    M117 Heating bed ......
    M140 S{params.BED_TEMP}
    M190 S{params.BED_TEMP}
    M109 S150
    M117 Leveling Gantry ........
    STATUS_LEVELING
    QUAD_GANTRY_LEVEL
    STATUS_MESHING
    M117 Adaptive Bed Mesh .....
    BED_MESH_CALIBRATE
   # M117 Loading Mesh ........
   # BED_MESH_PROFILE Load=HotMesh
    G0 X150 Y150 Z30 F3600
    STATUS_HEATING
    M117 Heating Toolhead
    M104 S{params.TOOL_TEMP}
    M109 S{params.TOOL_TEMP}
    STATUS_BUSY
    STATUS_CLEANING
    M117 Purging .........
    #ADAPTIVE_PURGE
    M117 Prime Line ..........
    G92 E0.0            #reset extruder distance position
    G1 X10 Y10 Z0.3 F3000       #move to prime line position
    G1 X60 E10.0 F1000  #intro line
    G1 X200 E30 F500   # intro line
    G92 E0.0      #reset extruder distance position
#    STATUS_CLEANING
#    M117 Clean nozzle .....
    #CLEAN_NOZZLE
    G90
    M117 Starting Print .......
    STATUS_PRINTING


[gcode_macro END_PRINT]
gcode:
    STATUS_BUSY
    # Move nozzle away from print while retracting
    G91    #Relative positioning
    G1 X-5 Y-5 E-3 F300    #move toolhead away from print
    G1 E-10 F800   # retract filament from meltzone
    G1 Z20 F3000   # Raise nozzle by 20mm
    G90   # Absolute positioning
    G1 X30 Y270  #Move toolhead to park position
    # Turn off bed, extruder, and fan
    M140 S0
    M104 S0
    M106 S0
    # Disable steppers
    # M84
    STATUS_READY

 

And my superslicer start print G-Codes:

 

M117
SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]
M140 S0
START_PRINT tool_temp=[first_layer_temperature] bed_temp=[first_layer_bed_temperature] CHAMBER=[chamber_temperature]

It works for me

  • Like 1
Link to comment
Share on other sites

  • 0

My print_start has gotten a bit involved, but I follow a similar sequence as others & take nozzle, bed, nad chamber temps as parameters. 

  1. Heat soak the printer, setting nozzle to 170C, bed to passed parameter.
  2. Home if needed
  3. Clean nozzle
  4. Z_TILT_ADJUST (or QGL for V2).
  5. Adaptive mesh (using KAMP macros)
  6. Clean nozzle (again)
  7. Purge (KAMP)
  8. Print

In print-end I do a longer retract. I've always had it because of Revo--pulling the filament back to allow cold nozzle swaps. It also happens to help with Tap.

  • Like 1
Link to comment
Share on other sites

  • 0
5 hours ago, claudermilk said:

In print-end I do a longer retract.

Was wondering how far the retract should be. I think I went on the Revo Voron recommended settings but may be wrong. I have seen retract settings up to 18mm. When doing this, I just got to remember to adjjust the Purge Blob/Prime Line to compensate for this retraction.

Link to comment
Share on other sites

  • 0

@mvdveer  So, I am still ending up with weird heating process at print start.  The tool head heats first, then followed by the bed. 

I literally copied and pasted your code, including the slicer code.  What I also am wondering is the differences between your slicer start print g-code vs @Buurman's g-code.  Sorry, I am still trying to wrap my head around this. 

7milesup "why me" Neil

Link to comment
Share on other sites

  • 0
3 minutes ago, 7milesup said:

What I also am wondering is the differences between your slicer start print g-code

I have some extra commands in my slicer G-Code as I display the layer progress on Klipperscreen. You'll see the last line is the same as @Buurman For some reason the slicer needs aG-Code command before the layer progress command thus the M117 (Set LCD message) at the start. Then the layer command and M140 S0( Set bed to 0 and don't wait.) The last line is START_PRINT that starts the macro, similar to @Buurman. You will see he has commented out the M190 and M109 commands with a ; in front, thus they are ignored.

M117
SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]
M140 S0
START_PRINT tool_temp=[first_layer_temperature] bed_temp=[first_layer_bed_temperature] CHAMBER=[chamber_temperature]

 

  • Like 1
Link to comment
Share on other sites

  • 0
11 minutes ago, 7milesup said:

So, I am still ending up with weird heating process at print start.  The tool head heats first, then followed by the bed. 

If you want the bed to heat first, then comment out the M140 S0 in the slicer profile

M117
SET_PRINT_STATS_INFO TOTAL_LAYER=[total_layer_count]
; M140 S0
START_PRINT tool_temp=[first_layer_temperature] bed_temp=[first_layer_bed_temperature] CHAMBER=[chamber_temperature]

I would suggest you only have the following in your slicer profile:

START_PRINT tool_temp=[first_layer_temperature] bed_temp=[first_layer_bed_temperature] CHAMBER=[chamber_temperature]

and adjust your START_PRINT / PRINT_START macro by commenting out the M109 S150

[gcode_macro PRINT_START]
gcode:
    STATUS_READY
    BED_MESH_CLEAR
    G90      #Absolute positioning
    STATUS_HOMING
    M117 Homing...
    G28
    STATUS_CLEANING
    M117 Clean nozzle ......
    CLEAN_NOZZLE
    STATUS_HEATING
    M117 Heating bed ......
    M140 S{params.BED_TEMP}
    M190 S{params.BED_TEMP}
    #M109 S150                       # <------- Comment this out
    M117 Leveling Gantry ........
    STATUS_LEVELING

M140 will heat the bed to the value specified in the slicer profile (bed_temp=[first_layer_bed_temperature]) and M190 will make the printer pause untill this temp is reached. I do this is a probe on a hot bed/bed at temperature.

Hope I did not ramble on too much

  • Like 1
  • Thanks 1
Link to comment
Share on other sites

  • 0

Could you guys take a look at my printer config again? 

When I start a print I get an error that Home needs to be done first.  It appears to be in my g-code, but I have to do it manually and then restart the print. 

Also, the hot end is still heating up first.

I was super tired last night when I was working on this so I am sure I made mistakes. 

My print start is as follows in SuperSlicer...

START_PRINT tool_temp=[first_layer_temperature] bed_temp=[first_layer_bed_temperature] CHAMBER=[chamber_temperature]

Attached is my printer config file (ignore the (1) in it, that is just how I downloaded it).

 

printer(1).cfg

Link to comment
Share on other sites

  • 0

Two things:

In the slicer you are calling START_PRINT but your macro is called PRINT_START. This means the macro is not executed when the print starts.

Secondly you commented out the incorrect M109 command in the macro.

I have corrected those for you in the attached printer.cfg file. Replace this with your current printer.cfg file. This should now work as expected. (I hope)

Leave your slicer as is or you can add the M104 S0 command bac before the START_PRINT line.

M140 S0
START_PRINT tool_temp=[first_layer_temperature] bed_temp=[first_layer_bed_temperature] CHAMBER=[chamber_temperature]

printer.cfg

Link to comment
Share on other sites

  • 0
4 minutes ago, 7milesup said:

As usual, thank you @mvdveer.   When I get home from work I will give it a try.

Always a pleasure - before you know it this will be printing as well as that aircraft of yours is flying.

  • Like 1
Link to comment
Share on other sites

  • 0

Hot Diggity Dog!  It's ALIVE!

Well, a couple of weeks ago I said in another thread on here that it was printing.  Then it wasn't.  BUT, now it is!  And it is doing cool stuff, like the macro for the Stealthburner LED's that @ken226 gave me is actually working.  @mvdveer was correct in the fact that I had the START_PRINT syntax backwards.  In fact, when my first print completed it came up with an error of "unknown command; PRINT_END", and of course I went 'hmmmmm. I bet the syntax of my slicer and my g-code don't match.  Sure enough, that was the problem.'

So now I can finish this thing and start printing.  I have a backlog of projects, including door hinges for this thing, panel clips, Ken's new exhaust housing with side entry for the filament. 

I do have another question though....

1.)  It appears that my g-code is going to have the printer do a QGL AND a bed mesh routine at the beginning of every print.  How can I do a bed mesh and save it in the config and not have the printer do it every single time?

Don't worry though guys, I am sure I will be back tomorrow with more questions! 😉

 

  • Like 1
Link to comment
Share on other sites

  • 0

In your start macro, change the following:

   STATUS_LEVELING
    QUAD_GANTRY_LEVEL
    STATUS_MESHING                   
   #M117 Adaptive Bed Mesh .....   ## Comment this out
   #BED_MESH_CALIBRATE             ## Comment this out
    M117 Loading Mesh ........     ## Un-Comment or ADD this and 
    BED_MESH_PROFILE Load=default  ## Un-comment or ADD this

 

  • Like 1
Link to comment
Share on other sites

  • 0

Unfortunately klipper does not automatically load a bed mesh anymore and this needs to be specified. Once you have done a Bed Mesh, SAVE_CONFIG to save it as default.

Than load this mesh in the start macro with     BED_MESH_PROFILE Load=default    . If you have saved your mesh under a different name, then put that in the place of default.

e.g. mesh saved as hotMesh will translate to    BED_MESH_PROFILE Load=hotMesh

Happy printing

Link to comment
Share on other sites

  • 0

Sorry did not answer the question.

1.To do a bed mesh, issue the following in the command line

BED_MESH_CALIBRATE

2, After the mesh is done, tyoe

SAVE_CONFIG

This will save the mesh to the file with name of       default

3. Now you need to load the mesh every time you do a print.

BED_MESH_PROFILE Load=default

This is where the start macro changes as described before come in.

  • Like 1
Link to comment
Share on other sites

  • 0

So, I have had my printer running for a while now and wanted to follow up with something I discovered.

As you guys know, I had a problem getting my printer to start the heating process in the correct order (bed then nozzle) before doing a QGL and then waiting for the nozzle to get to print temp.  With your help, that was solved.

I was trying to use Cura when this was all taking place but switched over to SuperSlicer on your recommendations.  This morning I decided to try Cura again, but with a better understanding of the G-code required.  So, I entered the exact gcode from SuperSlicer into Cura (M117
START_PRINT tool_temp=[first_layer_temperature] bed_temp=[first_layer_bed_temperature] CHAMBER=[chamber_temperature]).
  It is back to its same old tricks.  I did change the brackets [ ] to { } because that seemed to be what Cura used, but no dice.  I then changed them back to [ ], and it still did not work.

With this information, it appears that a lot of initial frustrations revolved around Cura.  For some reason, SuperSlicer works, but Cura does not.  I find this perplexing.  I like how Cura is laid out, its functionality, and how Ulitimaker continually improves it.  It does not seem the SuperSlicer has the same support.  Is this an issue?  Maybe not.  ??

Link to comment
Share on other sites

  • 0
42 minutes ago, 7milesup said:

and it still did not work.

Cura uses different naming for most of the print parameters. Here is what I was able to get working for my setup:

START_PRINT tool_temp={material_print_temperature_layer_0} bed_temp={material_bed_temperature_layer_0} material={material_type}

I don't know what to use for the chamber temperature but it is worth looking through this page to find all of the Cura parameters. The list looks like it was prepared by ahoeben linked from here.

  • Like 1
Link to comment
Share on other sites

  • 0
3 minutes ago, atrushing said:

Cura uses different naming for most of the print parameters. Here is what I was able to get working for my setup:

START_PRINT tool_temp={material_print_temperature_layer_0} bed_temp={material_bed_temperature_layer_0} material={material_type}

I don't know what to use for the chamber temperature but it is worth looking through this page to find all of the Cura parameters. The list looks like it was prepared by ahoeben linked from here.

That's is awesome @atrushing .  Thank you.  My concern is that I will be dead by the time I get done studying and understanding the document in your first link 😜  J/K 

It appears that if I add the "_0" to my start gcode it might fix the issue.  I am in the process of printing my pressure advance tower for calibration, but when that is done I will give that a try.  Thanks again. 

Man, so much to learn...

  • Haha 1
Link to comment
Share on other sites

  • 0
21 hours ago, 7milesup said:

With this information, it appears that a lot of initial frustrations revolved around Cura.  For some reason, SuperSlicer works, but Cura does not.  I find this perplexing.  I like how Cura is laid out, its functionality, and how Ulitimaker continually improves it.  It does not seem the SuperSlicer has the same support.  Is this an issue?  Maybe not.  ??

From my understanding SuperSlicer is one guy doing development of his fork of Prusa Slicer (in turn a fork of Slic3r). Prusa Slicer, and I presume Cura both have full development teams working on them. That is why Super Slicer seems to go dormant at times. The was a post I think on the SuperSlicer GitHub that he took a short break from development while working on some other projects, but will be doing updates soon. This mostly to fix Arachne and to incorporate the latest Prusa Slicer 2.6 additions. Super Slicer is a good utility and overall works well. It's just a matter of do you feel you need the extra settings controls over Prusa or not.

  • Like 3
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...