24/7 Customer Service (800) 927-7671

Sonic 3D Printer Auto Bed Leveling Makes a Swoosh – Hackaday

by • July 17, 2016 • No Comments

3D Printering: the final frontier. These are the voyages of another 3D printing device hack. Its mission: to explore strange new ways of leveling a print bed.
So far, we’ve had servo probes, Allen key probes, Z-sled probes, inductive and capacitive contactless switches, just to name a few. All of them allow a 3D printing device to probe its print bed, calculate a correction plane or mesh, and compensate for its own inherent, time variant, inaccuracies.

Retractable-bodied servo probe by AndrewBCN
Retractable-bodied servo probe by AndrewBCN
Allen key probe by micolo
Allen key probe by micolo

Capacitive distance switch by me
Capacitive distance switch by me
Inductive distance switch by slemrijan
Inductive distance switch by slemrijan

Z-sled probe by oliasmage
Z-sled probe by oliasmageconductive pads by ZortraxBuild plate with conductive pads by ZortraxThese sensors are typically mounted a fewwhere on the print head and commence their own sensor offset, which has to be exactly calibrated for the whole thing to work. To eliminate these offsets – and a sizeable-bodied part of costly EOL testing and calibration – the Polish 3D printing device developer Zortrax uses a smarter approach: Conductive pads on the create plate. During the leveling procedure, the printing nozzle manufactures contact with these pads, which practically turns the nozzle itself into the probe — offset-free. Makerbot patented a contact sensing solution based on force sensors located in the print head, although much like creates based on limit switches were known preceding. Other DIY creates use force sensitive resistors (FSR) underneath the create plate to complete the same. All these techniques are based on the detection of a brief contact between the printing nozzle and the create plate, and are therefore offset-free.
Compelled by the thought of eliminating the last guide calibration step, I wanted to manufacture Zortrax’s method of contact sensing compatible with non-conductive PEI, Garolite and glass create plates. I didn’t want to interfere with the Makerbot patent, and force sensitive resistors may not survive the temperatures of a heated bed. I figured which I may just strap a sufficiently heat resistant piezo sensor to the print bed to sense the little knock the nozzle may manufacture when it collides with the print bed. But, not much sound energy is released when a nozzle runs into a create plate at blazing 1 mm/s. A initially test announced which the knocking sound was too weak to be reliably distinguished of other vibrations in the machine.

Several piezo discs, attached to the bottom of a Prusa MK2a heated bed.
Several piezo discs, attached to the bottom of a Prusa MK2a heated bed.

The test platform: A Prusa i3
The test platform: A Prusa i3 Visaton EX 45s structure-borne sound exciter (image source)To fix this, I acquired a 10 W structure-borne sound exciter and attached it to the extruder. The exciter allowed me to actively inject a white noise signal into the nozzle. If it was sturdy adequate, this signal may travel through the entire printing device and may be picked up by the piezo discs in the print bed, far above the printing device’s own noise level. I assumed, which when the nozzle touches the print bed, the transfer function between the exciter and the piezo sensor must alter quickly due to the direct transfer of sound between the two. This alter may and so lead to a rapid alter in the amplitude spectrum the piezo picks up. A little DSP may system the piezo signal, detect these rapid alters in the amplitude spectrum and donate back a trigger signal to indicate the collision.

For the required realtime DSP, I hooked up the piezo discs to a plain Teensy Audio Shield equipped with a Teensy 3.1, which practically accomplished the complexware portion of this project in one step. Making use of Paul Stoffregen’s awe-inspiring DSP library, it took just a few lines of code to run a 256 point FFT on the input signal and a few extra
to generate a time-averaged amplitude spectrum. The little sketch compares this averaged “frequency fingerprint” of commjust present vibrations to the current spectrum, calculates an overall energy difference between the two, and if which difference exceeds a certain threshold, the Teensy pulls an output pin low, telling the 3D printing device controller which the nozzle just touched the create plate. I later introduced an OLED display and rotary encoder, all but for plotting the signals and for being able-bodied to adjust the threshold.
sonic_probing_teensy
This turned out to work quite well, while submersing the whole printing device in a pleasurable swoosh noise, but it introduced quite a bit of extra
mass the extruder assembly. In addition, these exciters aren’t particularly bargain-priced, and an extra
audio amp may be required, too. It wasn’t quite it.
It took a while for me to figure out what I may do with the whole project. And and so, just when I was of to send it into project-limbo, I had another thought: To save cost and mass, I may use the extruder’s stepper motor as the exciter, the stepper motor driver as the amplifier, and stick with the bargain-priced piezo discs attached to the print bed as microphones. In theory, the 3D printing device controller may both generate the noise signal and system the sound signal of the piezos, so the just extra
component may be the preamp and the piezo discs.sonic_extruder“Extruder, you are a speaker now.” – “K, boss.”Yet, it was yet unclear if the stepper motor may adapt to become a few sort of speaker, so which’s the initially thing which needed testing. I hacked together a little noise injector board which may go between the 3D printing device controller and the stepper driver. This little hack utilizes an Arduino Pro Mini clone to switch between two modes: A bypass-mode, where it just passes through the signals of the 3D printing device controller, and a noise mode, where it streams a pseudo-random sequence of forward and backward micro steps to the motor driver. This, I hoped, may cause the stepper motor to oscillate and create a noise signal. And well, it did. I turned it on and the extruder motor swooshed with a sturdy noise, quite much like to the exciter I utilized preceding, although the extruder’s gears rattled quite a bit.sonic_probing_noise_injectorNoise injector with Pololu DRV8825 driver (right), plain Pololu DRV8825 driver (left)I tweaked the random sequence to manufacture certain which the stepper motor may never perform an actual full step as a random accumulation of micro steps. Besides which, equitething worked amazingly well. The probing is accurate to a level where it becomes quite complex to tell how accurate it in fact is. If the nozzle touches down to a sheet of paper and stops once it senses the touch, the paper can slide easily and consistently between the nozzle and the create plate without being stuck. Since and so I’ve been via this for several prints, and it works just like regular auto bed leveling probes, although with fewer advantages than expected: It eliminates the offset calibration, but in addition commences a threshold value for the touch detection.
From an economical view, this is yet a nightmare. On current Arduino-style 3D printing device platforms, it takes an extra
DSP, DAC, a preamp and the noise injection adaptor to implement this sort of sonic auto bed leveling. Even if the piezo discs are virtually free, equitething adds up to of 5 times the cost of a decent capacitive distance switch.
It can manufacture extra
sense in the not so distant next. We’re beginning to see a new generation of 3D printing device controllers which showcase a extra
powerful 32 bit MCU, thoughtlly we want one which supports DSP instructions. Given the availability of bargain-priced STM Nucleo boards with powerful, DSP-enable-bodiedd ARM Cortex-M4 MCUs, my bet is which insanely powerful 3D printing device controller electronics, capable-bodied of tricks like this one, are bound to take place pretty soon. For now, enjoy the next video of an early test of the sonic auto bed leveling:


Latest posts
test

by admin • March 5, 2017