FS-Touch Bed Levelling Tool

65,789

423

75

Introduction: FS-Touch Bed Levelling Tool

About: I'm programmer and an electronics hobbyist. I try to find that point where software meets hardware meets art. "Necessity is the mother of all creation, but laziness is the father." "The best way…

Tired of trying to get the perfect levelled 3D printer bed? Frustrated with guessimating the proper resistance between nozzle and paper? Well, FS-Touch will help you measure this pinching force quantitatively and achieve quick and accurate bed levelling in no time.

Features of this bed levelling(proper term is tramming) tool:

  • Works with all types of beds: metal, glass, magnetic
  • Allows measuring the force and comparing against a reference force value.
  • The reference value can be set to new value with press of a button.
  • Indicates direction to rotate levelling knobs, because everyone gets confused which direction is up and which is down!
  • Shows how much more to turn the knob to hit the sweet spot through rotation speed.
  • Detachable force sensor which can be replaced quickly.

Step 1: How It Works

To get a perfect print, your 3D printer bed needs to be levelled(correct term is trammed). A properly levelled bed is equidistant from the nozzle tip over whole of its surface. This is usually done by taking a piece of paper and putting it between the bed and nozzle when the hot-end is at zero height(Z=0). Then the paper is slid around and levelling knobs are used to adjust bed height till the paper gets pinched between the two. This is repeated for all the corners.

While in theory it sounds easy, doing it practically is a pain. The friction between the nozzle and paper is not on/off(digital) but gradual(analog) over a large range of levelling knob positions. It gets really frustrating trying to find the point where to stop because even when pinched between the nozzle and bed, the paper can move if you apply even slightly more force. So it is really a hit-and-trial game and going by feeling whether the pinching force is enough or not. I created FS-Touch to help measure this pinching force objectively instead of subjectively going by feeling and rough estimates, to get perfectly levelled bed every time.

For this a Force Sensitive Resistor(FSR) and an Arduino Pro Micro is used to measure the pinching force and displayed using a 7-segment display. The FSR changes its resistance to the amount of force applied to it and we can measure that using an Arduino by treating the FSR as part of a voltage divider. It is then compared against a value store in Arduino's EEPROM and the 7-segment displays the info. The direction of rotation shows the direction to rotate the levelling knobs. Its rotation speed shows how much it is off from the required value.

Step 2: Stuff Required

  1. Arduino Pro Micro
  2. 7 segment display
  3. Force Sensitive Resistor
  4. Custom PCB
  5. 3D printed case
  6. Push Button
  7. 2.2K Resistors x8
  8. 100K Resistor x1
  9. Male and Female Headers
  10. Blu-Tack

Step 3: Fabricating PCB: CNC Milling

Download the Eagle file and make the PCB. It is a double sided design and does not require PTH. So it is home fabrication friendly. Iron transfer method can be used to create this PCB.

Since I have a CNC Router with me, I created this PCB using it.

Step 4: Fabricating PCB: Soldermask

This was my first time working with soldermask for a project. Initially I drilled the holes and applied soldermask paste but then it clogs up the holes and makes soldering difficult instead of easy. So the second time around, I applied soldermask paste before drilling the holes.

Printed out the soldermask layer on transparent sheets and layered 3 per side. This was aligned and taped to the milled PCB. Then soldermask paste was applied and the transparent sheets was placed on top. This was repeated for the other side of PCB as well. Then it was cured with a UV lamp. This didn't cure it well enough even after hours so I put them in the sun for a while and that did the trick.

After that, the transparencies were removed and the board washed with alcohol while being scrubbed slightly with a brush. This removed all the uncured soldermask paste and revealed the pads. Some parts which were supposed to have soldermask but didn't, had a bit of the paste applied and cured. Some parts which shouldn't have soldermask but did, were carefully scraped with a blade.

Finally the board was drilled and milled out of copper blank. The end result is a beautiful looking board.

Step 5: Solder Components

First solder all the vias. Once done, the resistors are to be soldered to the bottom side of the PCB in a vertical position as shown in image. Next solder the 7-segment display and button in place. Finally solder the male headers in place. Also cut solder female headers to size and solder to the Arduino Pro Micro.

Step 6: Fabricate Interface PCB

Make the Interface PCB which is simply a board to break out 2 of the pads from the main board to another position for FSR. It has 2 wires from the board connected to 2 male header pins to which the FSR's female pins connect.

After soldering the male headers to the interface board, solder 2 wires from interface board to FSR pins on the main board. Attach the main board atop the Arduino, attach FSR to interface board and our hardware is ready!

Step 7: Upload Code

Download the attached Arduino sketch. Connect arduino to PC with USB cable. Upload sketch.

The 7-segment should show a line going around in circles. Try squeezing the FSR with your fingers and the display's rotation speed should change.

Step 8: 3D Print Enclosure

I have provided the STL files along with Fusion360 design files.

Slice them in your slicer of choice(mine is Cura) into gcode. Upload to 3D printer and print away.

Step 9: Assembly

In the enclosure bottom, first set the Arduino Pro Micro so its USB port fits nicely in the hole for it.

Then insert the interface PCB. It snap fits at an angle so the FSR sensor is tilted downwards towards the bed and ends up as near to bed as possible at rest position. This removes any little upwards flex force exerted by sensor when pressed down by nozzle.

Next attach the PCB to the top of Arduino. There will be wires going from PCB to interface PCB which needs to be folded in the available space.

Lastly add the top lid of enclosure which will snap fit to the bottom and FS-Touch is fully assembled.

Step 10: Time to Level

To use it, we will need to save reference value of force between nozzle and bed. Unfortunately, for the first time use, it can only be recorded from a levelled bed. But once the reference is set, it is a breeze to re-level the bed.

  1. Roughly level the bed using the paper trick if it isn't levelled with a heated bed and nozzle.
  2. Allow the bed and nozzle to cool down completely to room temperature.
  3. Make sure the nozzle is at Z=0 by auto-homing the printer. The bed and nozzle should not be heated.
  4. Then move nozzle over a levelling knob's screw, either using jog controls or using automatic levelling option available in some printers(such as Creatlity CR-10S which I use).
  5. Place FS-Touch's sensor between the nozzle and bed. You might have to slightly push down on the bed to make room for it to slide in. This shouldn't affect the bed levelling as all beds have springs which will bring them back to levelled position as soon as released.
  6. Now hold down the button on FS-Touch for 2 seconds till countdown begins. This provides you a 5 second window to release the button(and any extra pressure due to your finger) and allow the bed to return to levelled position. When counter reaches zero, the reference force value is saved in the EEPROM and you probably won't have to save it again unless the sensor is changed.
  7. You can now move the nozzle to next levelling screw and again insert FS-Touch between nozzle and bed.
  8. This time, you can match the levelling to the reference levelling you just saved. Rotate the knob in the direction the LED is spinning. The slower it spins, the closer you are to reference value. When it changes direction, that means you went a bit too far and need to dial it back a bit. The perfect position is when the LED keeps changing the position repeatedly. The DP LED of the 7-segment blinks faster and brighter the better the value matches.
  9. Repeat this for the remaining leveling knobs and you have all the knobs at the same level.
  10. Try printing first layer and it should come out well. If the distance is too much or too less, you can adjust the Z-offset too.

The next time you want to level, just insert FS-Touch and quickly bring all levelling knobs to the reference value.

Step 11: Drawbacks?

A drawback of FS-Touch is that it can only be used on a cool bed and nozzle. Heating them up can melt the sensor. As the bed warps and the metal of nozzle expands upon heating, the distances change and so levelling should be done when both are hot. It can be mostly remedied by calibrating with paper once in heated condition and then letting it cool down. Then storing the reference for FS-Touch. This will include the expansions in the reference value and help mitigate any changes in values due to heating. So when the nozzle and bed heat up again, they should reach back to the levelled distance.

Applying Blu-Tack to the back of FS-Touch helps it to stick to the bed pretty well and keeps it from shifting around due to the USB cable. It also ensures that the pull/push forces are not propagated from the USB cable to the sensor which can affect the values.

One thing to ensure before using FS-Touch is that the nozzle should be completely clean. Any filament goop on the nozzle tip will increase its height and hence yield wrong force values for the sensor.

Overall, it is a handy tool to save time and headache when levelling a 3D printer bed.

2 People Made This Project!

Recommendations

  • Organization Challenge

    Organization Challenge
  • Make it Glow Contest

    Make it Glow Contest
  • Game Design: Student Design Challenge

    Game Design: Student Design Challenge

75 Comments

0
blackman.richard
blackman.richard

2 months ago

I see problem for beginners. The pictures in the project show the decimal point near the micro-switch. The schematic and Eagle PCB show the opposite. The Eagle file is correct.

0
HaSch
HaSch

Question 4 months ago on Step 8

"Box Bottom.stl" and "Box Top.stl" doesn't belong to this project! "Bed Trammer v18.f3d" is only the upper case, lower case is missing, please provide a link to it.

0
Antzy Carmasaic
Antzy Carmasaic

Answer 3 months ago

Hi HaSch. Both the top and bottom STL files are linked in Step 8. Are you facing difficulty in opening the files? I downloaded them and both top and bottom STL files open up just fine.

Also, I downloaded the Fusion file (Bed Trammer v18.f3d) and I can see components for both top and bottom parts in it.

0
HaSch
HaSch

Reply 3 months ago

That's what I get if I download the files. Top and Bottom are from another thing and Bed Trammer.. contains only the top case.

Edit: You are right! The download is ok. It's only the 3D view that is faulty and produces wrong pictures like the ones I uploaded.

Bildschirmfoto 2022-10-06 um 16.37.41.pngBildschirmfoto 2022-10-06 um 16.37.54.pngBildschirmfoto 2022-10-06 um 16.38.32.png
0
HaSch
HaSch

5 months ago

Very nice project but it would be great if you post a link to the FSR you used on AliExpress. I noticed that it has >1MOhm and a force of up to 10kg but which one of the many different models is it?

0
HaSch
HaSch

Reply 5 months ago

OK, thank you for the information. It seems to be a FSR402 like this one: https://de.aliexpress.com/item/33040018043.html?sp...

Can you check the box files for 3D printing please. The bed trammer file seems to be only the upper box, the lower is missing. The other files seem not to be for this project.

0
imW2
imW2

Question 5 months ago

Can this be made with the $5 Raspberry Pi Pico, rather than the $20 Pro?

0
Antzy Carmasaic
Antzy Carmasaic

Answer 5 months ago

Raspberry Pi do not have ADC pins on them. So reading analog values from force sensor and converting them is not possible on a stock Raspberry Pi. An extra ADC board is required to use it. I chose the pro because it is small. You can use any available Arduino for cheap.

0
imW2
imW2

Reply 5 months ago

ADC is pin 31-35 on the Pico

raspberry_pi_Pico-R3-Pinout-narrow.png
0
Antzy Carmasaic
Antzy Carmasaic

Reply 5 months ago

I wasn't aware of Pico models having ADC pins. Then you can certainly use it. You'll just have to convert the code for the Pi.

0
HaSch
HaSch

5 months ago

The Box Bottom seems NOT to fit the Bed Trammer enclosure and what is the Box Top? The file for the lower part of Bed Trammer seems to be missing.

1
HolodG
HolodG

2 years ago

Hello ! Thanks for the project! Could you make the top and bottom . I am a beginner and do not understand the eagle program.

0
KarloHorcicka
KarloHorcicka

Reply 5 months ago

I suggest ypu give it a try, it's really powerful. I can help with any questions you might have and components are easely available

0
imW2
imW2

Reply 5 months ago

I have a question, what are the 13 smaller dots? As in 2 above "D1" one on the left of the "8"...ect.

1
Antzy Carmasaic
Antzy Carmasaic

Reply 5 months ago

Are you referring to the board design(black background)? If so, I think the dots you could be referring to might be vias(smaller green circles), which connect the top and bottom layers.

0
imW2
imW2

Reply 5 months ago

I don't remember all of them, but here's 4 of them

F10LVTMK0R1MX3L.jpg
0
KarloHorcicka
KarloHorcicka

Reply 5 months ago

Yellow ones, right?

0
imW2
imW2

Reply 5 months ago

Yes, the ones that are circled in yellow

0
Antzy Carmasaic
Antzy Carmasaic

Reply 5 months ago

Those are "vias". They are used to connect the top and the bottom copper layer connections.
Usually the boards from professional PCB shops are "through plated", which means all the holes are coated and connect top and bottom layers.
But for home fabrication, it's not possible(or extremely difficult). So additional vias are added and then wire is passed through the vias and soldered on both sides to connect top and bottom layers.

If you're ordering from a PCB maker, then you can ignore the vias. They won't affect the functioning of the circuit.