Exploring TTP223 Sensor as a Potential Alternative to BLTouch

Basic Information:

Printer Model: Ender3 - swichwire
MCU / Printerboard: SKR mini v3.1

I wanted to share an interesting idea I’ve been pondering recently. You might be familiar with the TTP223 sensor - primarily used as an inductive switch. I’ve been thinking about how this sensor could potentially serve as an innovative solution or even an alternative to the commonly used BLTouch.

For those who might not be familiar, the TTP223 sensor is typically employed as a touch-sensitive switch, often found in various applications. However, I believe its capabilities might extend beyond just touch sensitivity.

I’ve delved into some connection documentation, and it appears that there’s potential here. By strategically configuring the TTP223 sensor, we might be able to achieve similar outcomes to what the BLTouch offers.

https://github.com/klich3/klipper-ttp223-z-probe-sensor

Now, I know what you might be thinking - can a touch sensor really stand up to the well-established BLTouch? It’s a valid concern, and that’s exactly what I’m hoping to discuss with all of you. Sharing thoughts, experiences, and insights on this idea could help us uncover its viability.

Have you ever experimented with the TTP223 sensor in unconventional ways? Do you think it could be tweaked to provide reliable results akin to the BLTouch? Or perhaps you foresee certain limitations that might hinder its performance in this role?

This is where the beauty of our forum community comes into play. Our collective knowledge and innovative spirit could shed light on whether this idea holds water or if it’s better left as a conceptual experiment. So, let’s open the floor to discussions. What are your thoughts on repurposing the TTP223 sensor for auto bed leveling? Could it be a worthy contender to the BLTouch? Your insights could potentially reshape how we approach 3D printing.

Looking forward to hearing your valuable opinions!

Best regards.

https://github.com/klich3/klipper-ttp223-z-probe-sensor

It’s an interesting idea to try this - I think a better understanding of the theory behind the chip’s operation as well as a lot more testing needs to be done to quantify the practicality of using the sensor. I do think that this investigatory work is warranted as it’s an interesting idea with promise.

Here’s the datasheet for the TTP223 chip:

First off, I should point out that this is not a conductivity sensor as described in the GitHub - the chip detects changes in capacitance at a sensor. Placing your finger over the sensor results in the nominal capacitance of the sensor changing and the chip detects this and its output changes.

Secondly, you’re comparing it to a BL touch and I don’t agree with that as it does not require the serial communications that a BL Touch does. From a high level perspective, it’s closer to an inductive sensor in terms of operation with the difference being that the TTP223 has the ability to detect any object that’s not air whereas an inductive sensor detects metal. Using the TTP223 should be a lot simpler than a BL Touch (and is shown in your sample printer.cfg arguments in the GitHub page).

From your images, I’m guessing your testing it with a glass plate with something like an Ender 3. Looking at GitHub: probe test results I would call it’s performance “Fair”.

In the Klipper docs, the recommended standard deviation is less than 0.025mm (Repeatability Check). You’re reporting 0.043mm and a range of detections of 0.145mm seems high. I believe the BL Touch’s standard deviation is generally reported at being in the range of 0.01 to 0.02mm. I’m using Super Pinda’s over steel/PEI right now and the reported standard deviation is 0.0025mm over three printers.

When I look at different TTP223 modules available on the market, they are priced at around $5.00 which is good for a Z axis sensor and there are a lot of them available. This is a big positive.

My biggest negative is that they tend to be quite large: usually taking up 20mm x 20mm in area. Along with this, I don’t see any information on what can be literally called “corner cases”. What happens in terms of sensitivity when you are probing at an end or a corner of the build plate? I’m asking because you have to be cognizant of that with an inductive sensor.

Along with understanding any differences in measurement when it comes to edges and corners, I’d be interested in seeing the results of testing involving different bed materials (aluminum bed and PEI sheets) including different surface coverings including kapton tape, 3M blue painter’s tape, Elmer’s glue stick, etc. I’m not sure what happens with a metal plate and I think there will be very minor (if any) differences due to different surface coverings.

All in all, thank you for posting this as it’s interesting and definitely worth pursuing. I would like to see how the TTP223’s accuracy/repeatability could be improved and how it works with different bed types and covering materials.

Could you elaborate on where you see the advantages of this sensor over dedicated capacitive proximity sensors?

Generally speaking (my personal opinion) and from looking at the datasheet:

  • This sensor is meant to be a simple on/off trigger as a replacement for a regular button, not a dedicated proximity sensor → There might be subtle differences in the internal signal conditioning, e.g. how precise, fast, whatever they respond, etc.
  • I’m not a fan of these sensors at all. They are most sensitive to materials with high density (e.g. metal) or high dielectric constant (e.g. water) → Without careful validation, you typically never know what such a sensor is actually sensing:
    • Is it the PEI sheet or the underlying spring steel?
    • Would it detect a small bubble in the PEI or just pass through it?
    • etc.

Unless there is a significant advantage over existing sensors, I do not think it is worth the effort.