Skip to content

Modular, opensource, high performance G-code interpreter and CNC controller written in Object-Oriented C++

Notifications You must be signed in to change notification settings

glennswest/Smoothieware

 
 

Repository files navigation

626Pilot's Delta Calibration

This firmware includes an advanced auto-calibration system for Delta printers. See comments at the top of src/modules/tools/zprobe/ComprehensiveDeltaStrategy.cpp for more info.

At this time, you MUST compile the firmware yourself. The firmware.bin in this repo is outdated and I haven't got around to fixing it yet! Instructions for compiling & flashing the firmware are further down.

The calibration section of this firmware consumes enough RAM to crash your controller if you have LCD controllers, etc. turned on. If you can't calibrate without the controller locking up, disable that in config. Reducing memory usage is on the list of things to do, and is already in progress!

The auto-calibration system requires either a Z-probe, or a print surface resting on force-sensitive resistors (FSRs) that have been hooked up to your controller to serve as "min endstops." If you need a Z-probe, this is the one I designed, which can be built for about $15 + some 3D-printed parts: http://www.thingiverse.com/thing:161753

You will need to add some settings to your config file - see the Azteeg X5 and Smoothieboard ".delta" directories under ConfigSamples. I put all the settings you need near the top.

The recommended way to use this on a Delta printer is:

  • G29 (calibrate your probe)
  • G31 O P Q R S (simulated annealing - corrects for errors in X, Y, and Z - it may help to run this multiple times)
  • G31 A (depth mapping - corrects errors in Z, but not X or Y - benefits from simulated annealing, though)
  • G32 (iterative calibration - gets endstops/delta radius correct)

It's a good idea to run G29 first, to get an idea of how repeatable your probe is. You want 30 microns (0.03mm) or less, ideally zero. If your probe's repeatability is worse than that, you may have printed it too loosely (not enough filament flow) or you may have "delta arm blues" or some other slop in the printer that should be corrected before trying any sort of calibration..

After your probe is calibrated, you can run G32, which will perform a standard "GeneB"-style calibration, in which delta radius and endstops are adjusted. That will get your printer a little closer to its optimal configuration. (If you already have an existing sorta-good calibration, you can skip this step.)

Then, you can run the simulated annealing calibration. Type G31 OPQRS. If you want to completely start from scratch, you can run G31 OPQRSY (the Y means "reset all offsets to 0"). The printer will go down and tap the print surface in a grid, and then start the simulated annealing process. It should take a minute or so, and you'll see one of the LEDs on the controller flash on and off slowly to indicate that it's working.

After the annealing is finished, you can run G31 Z to depth-map the print surface and report the values. If all the numbers are less than 0.1mm, you're in good shape. You may want to run G31 OPQRS (not OPQRSY, which would lose all the progress it made before) to see if you can get an improved calibration. I usually run G31 OPQRS 1-4 times, depending on whether the successive runs show improvement. Usually, one run is enough.

G31 OPQRS fixes errors in X, Y, and Z, assisting greatly with dimensional accuracy. However, it may be that you want an even better calibration. After G31 OPQRS, you can run G31 A. That will tap the bed in a grid as before, but instead of adjusting the calibration, it will store a depth map of the print surface and use this to correct Z in real time. This ONLY fixes errors in Z, not X or Y, so you should only run it AFTER you do the annealing. Afterwards, you can run G31 Z again, and it'll show you the final corrected depths - they should be within a few microns of zero!

When you're satisfied with your calibration, type M500 to save everything. If you turn the printer off and then on again, it WON'T lose its configuration, so you only have to do this calibration once. Run it again if the printer is moved, or a heavy object or person collides with it.

This is beta-quality code. I don't think it will crash your probe, but keep your hand near the power switch anyway, and DON'T walk away while it's probing!

Overview

Smoothie is a free, opensource, high performance G-code interpreter and CNC controller written in Object-Oriented C++ for the LPC17xx micro-controller ( ARM Cortex M3 architecture ). It will run on a mBed, a LPCXpresso, a SmoothieBoard, R2C2 or any other LPC17xx-based board. The motion control part is a port of the awesome grbl.

Documentation can be found here : http://smoothieware.org/

NOTE it is not necessary to build Smoothie yourself unless you want to. prebuilt binaries are availble here http://builds.smoothieware.org/

Quick Start

These are the quick steps to get Smoothie dependencies installed on your computer:

  • Pull down a clone of the Smoothie github project to your local machine.
  • In the root subdirectory of the cloned Smoothie project, there are install scripts for the supported platforms. Run the install script appropriate for your platform:
    • Windows: win_install.cmd
    • OS X: mac_install
    • Linux: linux_install
  • You can then run the BuildShell script which will be created during the install to properly configure the PATH environment variable to point to the required version of GCC for ARM which was just installed on your machine. You may want to edit this script to further customize your development environment.

Building Smoothie

From a shell, switch into the root Smoothie project directory and run:

make clean
make all

To upload you can do

make upload

if you have dfu-util installed.

Alternatively copy the file LPC1768/main.bin to the sdcard calling it firmware.bin and reset.

About

Modular, opensource, high performance G-code interpreter and CNC controller written in Object-Oriented C++

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 55.2%
  • C 41.1%
  • HTML 1.1%
  • Makefile 1.0%
  • Perl 0.6%
  • Shell 0.4%
  • Other 0.6%