Voron Build Updates

The Voron continues its slow march to functionality… here’s a little update on the journey so far, in the form of behind-the-scenes posts I made on the #3d-printing-committee channel.

TL;DR is that if you are an expert, your input is requested! Reach out!

Enjoy!

(The story actually begins long ago, when someone dropped off a few printed parts for a Voron, and somehow they ended up in a box labelled ‘Voron Project’, even though there wasn’t really a Voron in the box yet, at least not the important bits. Flash forward, a kit came available, thanks to @brianzhouzc , @xquared and I built up the mechanicals, @Soma helped out with the electrical, wiring, and a bunch of key decision points, and lately, it’s been me setting up klipper and getting the actual functionality started. We join our story about here, already in progress…)

On 10 September…

Voron update:
nozzle upgraded, it’s now forever (cuz it’s a diamond)
Z offset is working as an absolute value, no baby-stepping or user input
I will continue to dial it in as I calibrate the printing, but it’s now absolute which is killer!
I’ve ordered a new build plate since… I crashed just one time, but diamonds
I plan to return tomorrow to continue calibration

One week later, I poke my head up again…

Any klipper/voron setup wizards out there who can help…
I’m working on getting the bed mesh working on the Voron, but I can’t seem to get it to… work properly.

  1. Bed mesh data is not present on startup, and after calibration is visible in Mainsail, and it is not saved. This is working as expected.
  2. Only one Bed_Mesh_Calibrate macro exists, to my knowledge, and it’s the klippy one.
  3. First layer height is WIP and not yet for consideration; In this, I’m only looking for consistency, not perfection. The two calibrations are taking place in parallel.
  4. Mechanical bits have been tightened, belts tuned with shaketune, and everything should be within the parameters that a bed mesh can handle (I can’t remember the numbers, but they are reasonable for the bed size, somewhere between ∆ 0.1-0.2, which I believe to be both well within klipper’s capabilities and also normal for this larger bed size.)
  5. Probe_accuracy is very high, 0.02-0.03 mm or so (from memory, will double check later)
  6. Tested without bed calibration and it certainly seems to be applying something, as this was a terrible result, much worse than the poor results I’m showcasing.

So despite this prep, I am still getting very inconsistent layer heights across the bed, ranging from underextrusion from dragging really close (front edge, mostly) to non-connected extrusions where it’s a bit too high to properly adhere (back edge). Seems that the mesh is being applied.

Any ideas?



I put together a question for Reddit about the bed mesh issue, since I was getting little traction from my attempts. Not a lot came from it, sadly.

Also around then the extra PEI sheets arrive… they’re not needed until testing is done, though.

27 September, I update again.

### Voron update! ###

I have still not cracked the bed levelling issue, and it’s driving me mad. Looking for assistance if anyone has ideas, Adheesh stopped by but we didn’t manage any breakthroughs; I’ve done a lot of troubleshooting so far but no luck. Anyway.

Wednesday the printer still wasn’t levelling, so I decided to use the somewhat decent single-point offset instead of a whole mesh level and print a few parts, on the hope that I could fix a thing or two. It prints lovely, considering that there’s no tuning whatsoever on the actual printing so far. Good result! However, the printer at some point in the evening started to stop responding, no idea why, and I couldn’t log in to the pi. So no idea why and no way to see why …runs around space wildly pulling various cables and such … hook up to the hilariously large TV as a monitor, steal Dustie’s KB/M and… voilà! Seems that there was an issue that the MCU was causing it to hang when connected. Strange. How to fix it? Re-flash the firmware. Back to business, only took like 8h, and I know a few more things today than yesterday.

So on Monday, I’ll get back to the bed mesh levelling issue. In and amongst things the hamster in my brain has added an exhaust fan and chamber thermistor, we’re set to be able to add some bed cpap fans (do we have any? If anyone knows, can you add them to the project bin or just pop them in the printer? ) so we can get going on external exhausting, homing, nozzle cleaning and the whole Print_Start macro seems to work reliably, I’ve set up a github repo for its profiles (but still need to check some stuff in, ya know), it’s in pretty good shape, overall. I also made a hanging door for Brian, enjoy!*

(p.s. the photo is before I fixed the homing position, it’s centred on the pin again)*

(Also to read: I’m motivated and driving this, but if you’re knowledgeable and interested, pop on over!)

A few days later, on 3 October, I update following a great troubleshooting session with @ddq, where we definitively determine that the issue exists in the pi, not the psu nor after the pi.

Seeking consensus :

The Raspberry Pi is defective. Testing the power supply with @DaveM showed the fault to be on the Pi, not the supply, and every error is about the Pi being undervoltage or the effects of the related cpu throttling. I’ve swapped the Pi with my own and the problem is no longer present, so I’m seeking to get a replacement Pi for the Voron.

I can get this for C$58.75 shipped from Mouser, and I’m open to other (local?) options if you know better! I don’t know where our finances are at the moment, but hopefully it should be fine?

Immediately, @KittyCat steps up and leaves a replacement pi for then project. Yo, thanks!

Hola! A new Voron update has appeared!

First, a big thanks to @fish who donated a replacement pi for the beast, it was up and running in only moments. No failures to report.

The bed mesh is the only remaining issue. To test, I did a manual calibration and… voilà! A perfect print, but created in the least perfect of ways… manual bed meshing with paper. But it is progress since it shows: the printer is able to repeatably, reliably do all the things necessary with the exception of the mesh, and that the mesh, fundamentally, works. Right down to seeing the Z motors stepping slightly as it whizzed across the bed, as expected.

Where this leaves us is a bit unclear: the printer works, all the parts, including all the parts involved in getting a mesh. The Z endstop and klicky probe are both used in combination to generate an absolute z position, which is working well. The z endstop works on its own, as does the klicky probe, with high accuracy. The probe successfully performs the quad gantry levelling, and has repeatable results with a stddev of about 0.0055mm, which seems pretty okay. But for the life of things it cannot mesh the bed, or has a flaw which makes this not happen correctly; a mesh is generated, it’s ‘approximately’ the same shape as the manual-paper mesh, but it fails.

So, baby/bathwater approach (just get an eddy as a poor man’s beacon, for big meshes and small times and forget this whole ordeal), or the ‘flash the firmware’ approach of digging into the klicky’s failure until it ultimately works the way it’s supposed to ?


p.s. eddy’s as little as $23 landed so it’s not a huge problem… though it’s giving up a little since we’d then have 3 different ways to set the first layer height, which might be maximum overkiiilllllll!!!

3 Likes

For those who are interested, here’s the current testing version of the print_start macro. It’s doing a lot, and all of it is working, including the generating of an adaptive mesh. It is working, it’s that the mesh doesn’t match the bed, that is the only issue left. There’s a few stubbed out functions as well, as a chamber thermistor is coming.

[gcode_macro PRINT_START_DEV]
# modified from https://github.com/jontek2/A-better-print_start-macro
# and https://github.com/scheffield/nozzle-cleaner/tree/main
description: Starts the print
gcode:
  # This part fetches data from your slicer. Such as bed, extruder, and chamber temps and size of your printer.
  {% set target_bed = params.BED|int %}
  {% set target_extruder = params.EXTRUDER|int %}
  {% set target_chamber = params.CHAMBER|default("45")|int %}
  {% set x_wait = printer.toolhead.axis_maximum.x|float / 2 %}
  {% set y_wait = printer.toolhead.axis_maximum.y|float / 2 %}

  # Home the printer, set absolute positioning and update the Stealthburner LEDs.
  STATUS_HOMING                                         # Set LEDs to homing-mode
  G28                                                   # Full home (XYZ)
  G90                                                   # Absolute position
  #BED_MESH_CLEAR                                       # Clear old saved bed mesh (if any)

  # Check if the bed temp is higher than 90c - if so then trigger a heatsoak.
  {% if params.BED|int > 90 %}
    SET_DISPLAY_TEXT MSG="Bed: {target_bed}c"           # Display info on display
    STATUS_HEATING                                      # Set LEDs to heating-mode
    M106 S255                                           # Turn on the PT-fan
    Park                                                # Park the nozzle near the print area
    M190 S{target_bed}                                  # Set the target temp for the bed
    SET_DISPLAY_TEXT MSG="Heatsoak: {target_chamber}c"  # Display info on display
    # TEMPERATURE_WAIT SENSOR="temperature_sensor chamber" MINIMUM={target_chamber}   # Waits for chamber temp
    # G4 P300000                                        # Wait 10 min for the bedtemp to stabilize # reconfig once chamber thermistor added

  # If the bed temp is not over 90c, then skip the heatsoak and just heat up to set temp with a 5 min soak
  {% else %}
    SET_DISPLAY_TEXT MSG="Bed: {target_bed}c"           # Display info on display
    STATUS_HEATING                                      # Set LEDs to heating-mode
    Park                                                # Park the nozzle near the print area
    M190 S{target_bed}                                  # Set the target temp for the bed
    # SET_DISPLAY_TEXT MSG="Soak for 5 min"             # Display info on display
    # G4 P300000                                        # Wait 5 min for the bedtemp to stabilize # turned off for testing
  {% endif %}

  # Quad gantry level / QGL
  SET_DISPLAY_TEXT MSG="Leveling"                       # Display info on display
  STATUS_LEVELING                                       # Set LEDs to leveling-mode
  QUAD_GANTRY_LEVEL                                     # Level the printer via QGL
  #G28 Z                                                # Home Z again after QGL

  # Bed Mesh Calibration
  SET_DISPLAY_TEXT MSG="Bed mesh"                       # Display info on display
  STATUS_MESHING                                        # Set LEDs to bed mesh-mode
  BED_MESH_CALIBRATE ADAPTIVE=1                         # Start the bed mesh

  # Go to purge bucket, heat to target temp, purge, cool to 150, wipe nozzle
  Clean_Nozzle PURGE={target_extruder} CLEAN=150        # Run the Clean_Nozzle macro
  G28 Z                                                 # Home Z again after QGL
  CALIBRATE_Z
  SET_DISPLAY_TEXT MSG="Hotend: 150c"                   # Display info on display
  M109 S150                                             # Heat hotend to 150c

  # Heat up the hotend up to target via data from slicer
  SET_DISPLAY_TEXT MSG="Hotend: {target_extruder}c"     # Display info on display
  STATUS_HEATING                                        # Set LEDs to heating-mode
  Smart_Park                                            # KAMP Smart Park the nozzle near the print area
  M107                                                  # Turn off partcooling fan
  M109 S{target_extruder}                               # Heat the hotend to set temp

  # Get ready to print by doing a primeline and updating the LEDs
  SET_DISPLAY_TEXT MSG="Priming nozzle"                 # Display info on display
  STATUS_PRINTING                                       # Set LEDs to printing-mode
  Line_Purge
  SET_DISPLAY_TEXT MSG="Printer goes brr"               # Display info on display
  G90                                                   # Absolute position

1 Like

If something is worth doing, it’s worth overdoing!

On a more serious note, it sounds like there is a more fundamental problem that needs to be solved that may not be fixed by throwing a new sensor at it.

I don’t know how to actually help but just wanted to say thanks for all the work you and the other 3DPC people are doing to bring this beast to life!

1 Like