Bed Leveling – 3 of N

The quest for a better bed leveling solution continues!


Now my hotend mount design is somewhere near where I want it (only took 8 versions!) I decided to start actually figuring out how to use it in smoothieware. Unfortunately smoothie is setup with the expectation that you don’t need to probe each print. Whilst this is probably fair for a lot of better built printers, I’m not confident that my glass + 3mm aluminum build plate is going to preserve the same (lack of) level between prints.

For this reason (or at least I think it’s this reason, maybe theres another one) Smoothie doesn’t let you use a Z-Probe as a z-endstop in the way that marlin, RRF etc do. Whilst this is a bit inconvenient it’s really not the end of the world. When using this type of sensor it’s actually a bit of an advantage, as you can have it set very sensitive (in which case it triggers from ordinary motion of the carriage). In a Marlin world that would be interpreted as hitting the endstop all the time.

There are 3 ways you can use to get somewhere approaching round this I can see:

  • Home to Z-Max instead. Although this takes longer it gives time for the bed to heat.
  • Use an optical end-stop for Z0 – this is useful as it allows for the possibility of storing the offset, but I’d worry about repeatability.
  • Don’t bother with homing Z at all since it’s not really necessary. (I don’t think, based solely on my reading of the docs, YMMV).

Since I often print at very different bed temps (PLA around 40C PETG at upto 100 depending on feature size, at least on the i3) I want to make sure that the bed is warm when testing. I therefore decided to switch to z-max homing.

I designed a pretty straightforward mount to site a Makerbot style endstop at Z Max.

your gamma endstop settings then need updating as follows:

gamma_min_endstop nc #1.28^! # for consistency with smoothie docs we'll use Zmin as the probe
gamma_max_endstop 1.29^! # enable zmax endstop
gamma_homing_direction home_to_max #
gamma_min 0 #
gamma_max 400 # this needs updating.

I also had to then enable the probe in the settings. This took a bit more fettling with:

zprobe.enable true # set to true to enable a zprobe
zprobe.probe_pin 1.28v # pin probe is attached to if NC remove the !
zprobe.slow_feedrate 5 # mm/sec probe feed rate
#zprobe.debounce_count 100 # set if noisy
zprobe.fast_feedrate 100 # move feedrate mm/sec
zprobe.probe_height 5 # how much above bed to start probe

The trick with this was getting the pin settings correctly. Although the piezo board looks like it should work like a NO Switch, the same as an endstop. So I initially used 1.28^! and proceeded to crash the nozzle a few times. Turns out the piezo board outputs an active high signal, and therefore you need to enable the pulldown resistor in order to allow the board to register the trigger. Hence 1.28v.

After making those changes and homing the printer, I jogged to the centre of the bed and sent a G30 command through pronterface. This then uses the probe to find the bed and returns to the previous position. I ended up with a Z-max of 404.3.

Next time, proper levelling!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s