Load Cell Design

I‘ll make a quick static fem to see how the load distributes :+1:

1 Like

AFAIK, Prusa uses the load cell also as clogging indicator.

Hey, so I did two quick fem-analyses, one of a standard loadcell beam and one integrated, in sizes that I felt comfortable with (the normal one is bigger than just the top part of the other one).

This is the strain of the parts made in aluminum with 10kg applied on the right.

About the integrated design - I still don’t know if it has advantages over the standard beam. As you can see, the side with the load applied tends to bend and displace the nozzle in x/y. The standard beam tends to keep the nozzle straight and just displace it in z, because it acts like a parallelogram. The integrated design looks like a parallelogram but acts different, because the upper and lower beam do not have the same strength.
It doesn’t really matter which design: We have the fixed left side and a load on the right side. Our part basically conducts the load to the fixed mount, and that “stream” of force stretches the material. With the design, we can control where the force is flowing and with the thickness, we can control the strain.
So if we want to measure the strain, the sensor has to be somewhere near the flow of force and the thickness has to be small enough that the strain is measureable. The problem is, the force always goes the same way. If we want to measure, it’s the same as a crash. And during crash the loadcell takes the same percentage of load that it takes during measurement. So if I’m right, the only thing we can do is find a design thats just sensitive enough to measure but can handle a high force. You can make a weaker part than the loadcell that will deform first, but in my opinion thats equally bad as destroying the strain gauges.
I have seen the interview with josef prusa and I know what they said about the design, but if I’m not mistaken, the load cell is integrated in that part because the part is there anyways, it’s their mount and heat sink, so why not integrate it. But I did not come to the conclusion that the design is able to measure the force without being in weak spot.

3 Likes

Maybe someone can validate my calculation for the selection of the strain gauges. I can vaguely remember how to do it from my studies. I made a simple test based on a default beam load cell. I did two fems, one with 10 kg and one with 1g load and calculated the strains where the gauges are supposed to go.

10kg

1g

So the max. detectable strain should be 0.0017 and the min. detectable strain should be 5*10^-8 at least (could be changed with geometry of the beam).

From the datasheet, I read that the max. detectable differential voltage is ±20mV (did I read this right? see datasheet hx717_en.pdf (252.0 KB)) and a resolution of 24 bit.

Formula for the calculation of the wheatstone bride:
grafik

Ud/Us = 1/4 · k · (ε1 - ε2 + ε3 - ε4)

It’s a full bridge with four active strain gauges, so we can assume Ud/Us = 1/4 · k · 4 · ε = k · ε

If we take these gauges for example, k=2.1.

So for the max measurable voltage of 20 mV and 5V supply voltage (Us) we get
Ud/Us = k · εmax
εmax = Ud/(Us*k)

εmax = 20mV/(5V * 2.1) = 0.0019

Yeah it’s close, but 0.0019 > 0.0017, so let’s keep it for now.

So I’m trying to calculate the min detectable strain with the resolution of 24 bit (= n):

εmin = εmax/(2^n) = 0.0019/(2^24) = 0.0019/16777216 = 1.132*10^-10.

Since 1g results in a strain of 5* 10^-8 which is much more than 1.132*10^-10, we good?
We neglected effects like noise and temperature, but it seems like the desired performance is possible.

I don’t really know if this is the way to calculate this, so I’m open to any critisism.
Btw this forum needs a “formula” button in the editor.

How much compliance did your FEM load cell have? I have looked at a number of data sheets for the TAL220 range beam-type load cells and have not found anything that tells me how much movement there would be.

My gut feeling is that it must be very low as a movement of much more than maybe 0.1mm would result in permanent deformation of the beam itself. Although only a crude test, my Mecmesin AFG-50N force gauge has no visible movement when I put 5kg of push or pull to the rod end.

Mike

I did not yet measure the movement of the load cell directly, but I did measure the movement of my nozzle in dependence of the force (or the other way round actually):

1 digit corresponds to roughly 1.5 grams. So the movement is really not negligible, but there might be many contributions, e.g. the entire bed might be pushed down. Also my traverse between the two load cells where the hotend is attached is printed from ABS, so this will bend as well, although it is quite thick (thicker than the load cells). My guess is that the hotend itself is moving a lot less, otherwise I would get issues…

With the original setup, which had a different hotend requiring more extrusion force (3mm filament, not so good hotend design) and a traverse made from aluminium, some people were complaining that the hotend moves too much down at higher printing speeds. This is why we (the community around my printer) had implemented a simple compensation algorithm in the Repetier-based firmware. I have never used that because I have moved away from that hotend soon and there was no need for it any more. Still this means we are right at the edge…

Besides: If the entire system would be a lot stiffer, we might get problems because forces would increase much faster when probing the bed, possibly exceeding the maximum force the load cells can take before the firmware can react. Still since my printer is built already relatively sturdy (I am using it as a CNC mill even for aluminium…), I don’t think this will be a big issue for other printers (I don’t want to exclude there are sturdier printers, but I guess most consumer-level printers are similar or less sturdy).

I already made is smaller, right now it can take approx. 40 kg without deformation. Which I think is a lot for a tiny hot end. If you hit the bed with 40 kg there might be damage somewhere else. Better you only have to change that part. The displacement at 40kg is about 0,25mm.

1 Like

In cas of a split design, how would you split the requirements?

Hotend Measuring (for Offsets):

  • Only in “up” direction
  • 1g min detection
  • like 1kg max detection but safe load like 20kg?
  • no displacement while extruding
  • if measuring, small to no x/y displacement?

Extruder Measuring (for clogs/pressure advance):

  • both directions
  • 12 kg max?
  • min? maybe less than the hotend sensing?
  • displacement does not matter als long as its under like 0.2mm? Basically its PA compensation?

Just to play the devil’s advocate: It might be quite difficult to limit the load cell such that it cannot go into the “down” direction without introducing an extra non-linear force required to lift the load cell into the “up” direction. Even if the element blocking the down direction is perfectly adjusted such that it applies no force on the load cell (and vice versa), the two elements might stick together a bit. How does this mechanics behave under realistic conditions, i.e. changing temperatures, an accidental drop of oil between the parts etc.? Can you keep the perfect adjustment under all conditions? How often do you have to re-adjust?

I have no clue how big these effects are and whether it will be easy to control it, hence this would be the first thing I would try out.

I have the slight suspicion that some over-engineering is happening right now :wink: Keep in mind that we know one relatively simple design which works good enough, this is the design of my RF1000 printer. You might just copy it at first and refine it later…

Everyone has probably seen this before. This is how the Duet 3D team is implementing load cells.

This is my hotend design for my planned voron toolchanger. Is has two load cells, one for probing (on the hotend) which is only capable of moving in the up direction. The other one is on the mount of the extruder for measuring extruder force. This way, you won’t have to deal with changing z-offsets due to extruder force. Crucial for my design is probing the z-offset, extruder force might be good if its implemented in klipper in the future. I have also made a board layout for testing the HX717.
I have to make some final desicions on the size and frame of my printer and then I have to build it first to test my hotend design.

1 Like

I now have this print head installed and up and running on my Rat Rig V-Core 3, albeit with a printed version of the top plate at the moment.

The “tongue” movement upward stop is the extruder and the downwards stop is the front supports shown in orange. I have a version that will also work with a standard Rapido hot end.

The flexibility of the tongue can be adjusted by cutting the two vertical slots in the top plate further towards the back of the top plate or by using a thinner top plate.

Next step is to install/fix four load sensors onto the aluminium tongue. Two on top and two on the bottom. I may need to mill recesses for these to sit in.

Got a chance to do some further work on this today. I have now switched from using an aluminium strain gauge plate to a PCB one. The Green plate under top (red) plate and sandwiched between two 0.3mm (black) printed plates is either a 1.5 or 3mm thick (I will experiment with both) PCB board with the strain gauges on it. The iteration shown below is with my current custom heat sink but I will probably also do a version compatible with a standard Rapido heat sink. I prefer the custom heat sink (that I am currently using on my printer) as it gives a more rigid mounting due to wider spaced mounting holes and also gives me a simpler mount for the 2510 fan which mounts directly to the head sink

If you zoom in on the close up below you can see how the tongue of the PCB plate (green) with the strain gauges in it can move slightly up and down between the two (dark grey) sandwich plates. The downward movement is arrested by the tops of the front supports (gold) and the upwards movement is arrested by the (red) top plate. All parts other than the PCB board are printed. Next step is to make up the PCB plates (or get PCBway to do them) and glue on the strain gauges I have.

You can now buy the load cell block out of the Nextruder as a spare part: Hotend heatsink XL/MK4 | Original Prusa 3D printers directly from Josef Prusa

And you can get their breakout board with the HX717 on it: LoveBoard | Original Prusa 3D printers directly from Josef Prusa

You cant buy an entire nextruder or the wiring harness you need to connect this to regular klipper machine. But I’m sure we can solve that with some patience and effort.

Some initial info on the LoveBoard:

I spent a few hours staring at it under the microscope and prodding it with a multi-meter. So far I’ve found where all but 3 pins of the big connector go:

Connection Row 2 Pin# Row 1 Pin# Connection
EMOTOR (Red / A1) 2 1 EMOTOR (Green / B1)
EMOTOR (Blue / A2) 4 3 EMOTOR (Black / B2)
ST490AB - Y 6 5 MULTIWIRE
ST490AB - Z 8 7 GROUND
ST490AB - B 10 9 H-FAN / P-FAN Shared Ground
ST490AB - A 12 11 HT
5V Supply + (Loadcell + HX717 supply + regulator) 14 13 NT
HEATER 24V - 16 15 Fans Tachometer
HEATER 24V - 18 17 3.3V in for filament sensor
HEATER 24V + 20 19 P-FAN +5V
HEATER 24V + 22 21 H-FAN +5V

The HX717 is connected to what I believe is a ST490AB chip which converts it to RS-422. (The chip says “S490AB MZ306”) The PD_SCK and DOUT pins are hooked up this, effectively ground isolating the chip from the main board. Pictures of the cable show white/blue twisted pairs in this location which is the expected wiring. I’m pretty sure :crossed_fingers: I can still talk to it via 2 regular I/O pin and an associated ground wire.

Fans are reversed from how the Chinese boards normally do PWM. Here the + pins are pulsed but on boards like the Octopus its usually the ground pins that pulse. The ground pin is connected to the relay/transistor network on the board so just swapping the wiring is likely impossible. Also using 12V fans is probably also out. (If I’m wrong about this Id be happy to hear it! Also if you have any ideas for a work around) Luckily I don’t think the board relies on the fan power for anything but the associated indicator LEDs so it could all be bypassed.

The unidentified pins (5,15 &17) are probably the Filament Sensor, and 2 signal lines for fan failure. The fan RPM lines go into the relay/transistor network and I think they are reducing the RPM signal to a binary on/off signal so they don’t have to read it with an ADC back on the main board. I cant trace the filament sensor output line at all. I should be able to work out what these do for certain once I get power to the board. But if this is what they are, they are not essential pins.

Update: Prusa published the schematics: https://www.prusa3d.com/downloads/Electronics_drawings/MK4_electronics_schematics.zip
The Filament sensor is connected to the B channel on the HX717, so they must be switching from A to B periodically while extruding to check for filament. I don’t plan to implement support for this as it would be VERY complicated in klipper to have a sensor that doesn’t report data on a regular interval.
The unknown pins on the connecter were the 3.3V supply for the filament sensor, the Fans tachometer and multiwire port.
Also it looks like fan power is direct wired and isolated, so if you swap the pins and use the 2 positive pins as negative pins and it should work, but I haven’t tried it.

3 Likes

Also now that I have the heatbreak in my hands, somehow that drove home to me how its mounted and flexes. I think this pic from the manual is the best explanation:

The 3 screws are connected by a triangle of metal that should remain rigid. The cooling fins left of the triangle form the flexure. Everything above that triangle is non-essential for the probing application.

We could do a version of this for other extruders where its just the bottom half. If you don’t care about sensing extrusion forces then you don’t need a rigid mount between the extruder and that triangle.

@garethky Could you measure R1, R2, R3 and R4 on the LoveBoard?

I bought some HX711 boards from ali, the red’s and the purple ones (they have the right capacitors) and some HX717 chips. I swapped the chips, and made the modification needed for the HX717 to work. The simplest one to modify is the purple board. The transistor, one cap, and one resistor needs to be removed, and 3 jumper wires needs to be added. The VRO resistors (R1 and R2) are not optimal for the HX717, but it works. VRO=1.11*(20K+8.2K)/8.2K=3.81v. And the input resistors(R3 and R4) are 100ohm, the example in the datasheet for the HX717 uses 51ohm resistors. I also grounded the B ch. since i am not using it.


The R1 and R2 resistors on the red board gives a 3.98v for VRO=1.11*(4.66k+1.8k)/1.8k. Max vro is 4.8v (with 5v supply), so i reused one of the 10k resistors on the board that are not need, and placed it on top of the 1.8k resistor, to get 1.54k in resistance. That should give a VRO of 4.46v (when measuring it with a load cell connected i get 4.41v) . And i placed two of the 100ohm resistors that are not needed on top of R3 and R4 to drop the resistans down to 50ohm.
The red board has 0402 resistor, and those are really tiny.


edit; I remembered the values for r1 and r2 for the red bord wrong, now corrected.
My original plan was to reuse the pads for the resistor and the cap that i removed to solder the jumper wires to, but i found it easier to solder to the legs of the HX717 insted. So they can be left on the board. The easiest way to remove the HX711 chip is to cut all the legs with a sharp knife and remove the chip, then desolder the individual legs.

@FK87 My multimeter cant get a reliable reading off these components. I don’t have the right kind of probe (the clamp on/tweezers type) and I’m not sure the multimeter is a good one for these kinds of resistance ranges.

Best I could get (and kind of assuming R1 and R2 on the board are R1 and R2 in the data sheet, they seem to be):

R1 = 0.6
R2 = not populated!
R3 = 100
R4 = 100

Thanks
The values looks plausibel, but yes, to get the correct value of R1, the resistor or the HX717 needs to be removed from the board.
They have probably skipped having a voltage divider, since they know the voltage input is 5v( and not 2.7-5.5v). And insted they have just one resistor between VRO and VFB pin (R1). So to know the VRO they are using, it needs to be measured.