kiwi!

"kiwi!' is an accelerometer-based z-probe for 3D printers. As an experiment, I played with the idea of using an accelerometer on the toolhead to act as a probe. The sensors are cheap, easy to mount onto an existing printer, and built-in tap detection seemed like a simple way to detect the nozzle tapping on the printing surface.

A common problem in desktop fused filament fabrication (FFF) 3D printing is tramming the bed, often mistakenly referred to as "leveling" the bed. This process involves calibrating the printer such that the toolhead moves parallel to the print surface. Many FFF 3D printers have their print surfaces attached with screws that allow the user to adjust the angle of the bed. While this is an effective way to tram the bed, the process is tedious and intimidating to inexperienced users.

Now, printers of the deltabot-design, like my RepRap, often do not have adjustable beds. While some mechanical adjustments can be made on this type of printer, it is not uncommon for the tramming adjustments to be made in software. Various software solutions for automatically tramming the bed have already been developed by the open source 3D printing community. In order to do this, one needs some sort of sensor to detect the height of the bed at different points. I prefer the use of pressure sensors underneath the bed, as they make use of the toolhead's nozzle for the probe. This way, there is no offset between the nozzle and the probe point.

To implement the z-probe, I chose the LIS3DHTR - a common accelerometer for wearable applications. To configure the accelerometer and output the trigger signal to the printer's control board, I chose to use an ATTINY AVR microcontroller, since I had some laying around and they are easy to work with.

It works! One unfortunate quality of 3D printers is the inherent vibrations in the motion of the stepper motors. The accelerometer is prone to picking up these vibrations, which can result in false triggers. One solution could be to measure the vibrations of a particular printer and design a filter that minimizes the noise. However, that would be very dependent on the printer and speed of the steppers - hardly a universal solution.

Another solution is to tap the probe harder so that the tap is of a noticeably greater magnitude than the noise. This works fairly well - the false triggers are greatly reduced. Repeatability is decent as well, less than 30 microns. However, many 3D printers rely on a leadscrew to move the z-axis - not suitable for the relatively high-speed pecking required for this probing technique.

"kiwi!" was a fun experiment, but I will stick with force-sensors under the bed! The higher level of integration with the printer is worth it for their reliability and precision.