Under-bed piezo force sensing
-
Is it possible to add piezo "speaker" that emits high frequency sound (over 20 KHz) to effector or bed and the same piezo "microphone" that receives this sound on other end?
-
Someone did something like this. They created a system that detected the nozzle touching the bed by how it changes the transmitted or resonant frequencies, by injecting white noise with something (I don't think it was a piezo) and then they had piezo sensors attached to the frame. They did Fourier analysis to the waveforms using a DSP chip to detect touch vs non-touch positions.
They said it was "simple" because there are libraries available to do the waveform analysis, but I think their definition of simple and mine are a bit different. Still, very cool, just more involved than I want to try to tackle right now.
-
Maybe it's possible to detect high frequency digital (0\1) signal of predefined fequency without using such complex things as resonant frequencies, DSPs and other?
In this case it will be slightly simpler task - all that you need is just one "speaker" piezo on effector side and one "microphone" piezo on bed side. No need to use force then touching bed by nozzle to generate high quality signal. Also signal modulation will provide better selectivity of touching/contact.
UPD: maybe it's possible to update firmware to produce just few impulses for "speaker" between each motor step then nozzle going to bed in bed probing function? In this case it's possible to "listen" for received data between steps.
-
Hi guys, I'm the piezo hot end guy. I based my ideas on this work http://forums.reprap.org/read.php?1,635075,page=1 by Leadinglights and Moriquendi. They document an under bed piezo system with some 6-9months of testing behind it. The issue they had was a little with heat, and the response of the piezo element changing with temperature, and a small amount of tilting the bed on contact causing one piezo to cancel another out (one being bent upwards and one downwards). This is why I decided to move the piezo to above the hotend where it is cool, and where only one piezo is required. All the benefits of nozzle based probing with none of the drawbacks of other systems.
When it comes to z-probes no perfect one has yet been made, but I am willing to bet that right now the closest thing is the piezo hot end (and I'm not trying to sell them). The IR sensor is very accurate and on cartesian/corexy machines where effector-tilt is not a factor its very suitable, if you're happy that you can't always probe all of the bed as it's offset. However the search continues, I am keen to see what you can come up with.
As for sound my microdelta has a Deltaprintr Mini Hotend on it with a very noisy 25mm fan which spins fast. To manually calibrate it I bring the nozzle down till it touches the bed where the sound distinctly changes, perhaps a mic of some sort could pick this up. A piezo attached to the bed however would overheat, this is the problem with underbed piezo's or FSR's they don't tolerate 110 deg C, so you have to come up with either a simple (not very firm bed) mount or an elaborate mount for them.
-
Thanks for the input. I plan to have air circulation under the bed, so even with a bed heater, I'm assuming (perhaps incorrectly) that the temperature will not get anywhere near 100C.
With respect to the piezos offsetting each other, can't a diode or something very simple deal with this? In other words, assume we are only interested in positive voltages and filter negative ones (or vice versa).
-
Well Moriquendi's latest piezo signal conditioning board has inputs for 3 piezo's so I presume it handles this. He's sending me one but I cannot see any reason to put 3 under my bed, when the one in the hot end does the job better than any other sensor I;ve used so far. I will have a play with it, I was thinking about using two sensors to have a degree of fail safe in the event of a wire break. PM him on reprap if you want one, they're going fast this seems to be gaining some traction.
The two technologies which might be even more promising are accelerometers, to detect contact and what ultimaker seem to be using on the UM3 a capactive-type sensor under the sprung glass bed detects the nozzle pressing onto the glass.
-
Regarding accelerometers it's worth reading Michael Hackney's experience with accelerometers here:
http://forum.seemecnc.com/viewtopic.php?f=112&t=11286&start=25#p102553
-
Yeah I've read that thread they do seem to conclude that currently its difficult to make it reliable. I'd say the opposite were true with the piezo hotend sensor, that seems to be very reliable.
In other exciting news (https://www.duet3d.com/forum/thread.php?id=940) it sounds small at first but this will save hundreds if not thousands of hours of printing time, in avoiding first layer problems. I'm nicknaming it auto first layer calibration as this is what it basically amounts to.
-
The point made by James in the first posting on this thread is not quite true for piezo disks - although perhaps I spread this about a bit with an early posting on the RepRap forum http://forums.reprap.org/read.php?1,635075,635164#msg-635164 which is a load of doggy-doo.
There is very little variability at different positions on the bed as long as the piezos are fairly closely matched - within batches of no-name piezos there has been less than 3% variability of output or of capacitance. The reason that this is true is that the charge generated on each disk is fairly proportional to applied force. Simply paralleling three discs will give the correct output even if one of them gets a negative output - think of a three legged table with the legs bolted to the floor, the sum the compressive forces on the three legs equals the weight put on the table even if you sit on an unsupported corner causing the opposite leg to be under tension
Mike
-
-
There is now a wiki page addressing the underbed piezo sensors at http://reprap.org/wiki/Underbed_Piezo-electric_sensors
Mike
-
I found the reference for the person who used a DSP chip with FFT to sense bed contact:
http://hackaday.com/2016/07/18/sonic-3d-printer-auto-bed-leveling-makes-swoosh/
-
In theory this should work well. How it copes with softer surfaces such as painter's tape or PEI I am not sure, but hard surfaces like glass, aluminium, printbite etc… should work.
-
Note that the author of the above-mentioned article (http://hackaday.com/2016/07/18/sonic-3d-printer-auto-bed-leveling-makes-swoosh/) opines that:
We’re beginning to see a new generation of 3D printer controllers that feature a more powerful 32 bit MCU, ideally we want one that supports DSP instructions. Given the availability of cheap STM Nucleo boards with powerful, DSP-enabled ARM Cortex-M4 MCUs, my bet is that insanely powerful 3D printer controller electronics, capable of tricks like this one, are bound to happen rather soon.
Do you think this is accurate, or perhaps is the Duet processor potentially already capable of this?
I know that dc42 has suggested that such calculations be carried out on a separate chip to separate the Duet firmware from "aftermarket" functions like this, so I know that right now using a separate chip is the way to do it. I'm mainly curious as to whether such functions might become a standard part of the firmware in the future.
-
@DjDemonD – I would bet that there are substantial changes to the waveform even for softer surfaces, but they might be different changes than a harder surface. It would be interesting to see how generalizable the technique is. Maybe it's easy to program it for "if the waveform changes substantially in any way, activate the endstop", or maybe you have to have a better idea of what the changes look like and so you could do some machine (or human) learning on multiple surfaces, different types of bed suspension, different hot ends, different placement of the white noise generator, etc.
-
I can't imagine the processing required to do any type of z probing is taxing the duet controller if it can generate step pulses at 350Khz. Whether you want to integrate this type of thing is another issue. If you fit an accelerometer it processes it doesn't require the controller to process its raw data that's happening on board, its outputting the results.