Strain Gauge/Load Cell based Endstops

Anyone git the datasheet for the HX717? Only can find it in chinese

Seems like they are not interchangeable, unfortunately. The problem is how they generate the reference voltage:

The HX711 uses a transistor for this, the HX717 seems not to do this.

Also PIN 6 is different, but that might not be a problem. On the HX711 its an digital output for the bandgap reference (VBG), on the HX717 you are controlling the data ouput rate. I don’t know how this works, the translated chinese is hard to understand.
Maybe you could make it work with modifications but it’s not easy

Anyways I contacted the manufacturer if they have any evaluation boards for this chip, but I don’t expect them to.

Are other chips suitable for this application?

If nothing of this works I think we would have to make a custom pcb to get a development board

1 Like

Re. ā€œAre other chips suitable for this application?ā€
I would think there are many circuits using strain-gauge specific ics or discrete op-amps and ADCs.

I will admit that I don’t understand why the insistence on the HX711/HX717 solution, but will be the first to admit that I haven’t as yet researched this in any depth. OTOH, I used strain gauges back in the 1980s when low drift op-amps were rare, and found that decent accuracy and repeatability were achievable.

Mike

1 Like

I think there are many ADCs suitable, you just would have to do the amplification by yourself (as far as I understand what the chip is doing): https://www.ti.com/product/de-de/ADS1220

The HX711 and HX717 do have all needed features and seem to be cheap, though. But we have to get a demo board somehow. I’m not capable of designing a pcb without any help - but I might be able to get it manufactured. I don’t know when wee need new pcbs at my company, but if it’s the case I could save the shipping costs

My initial code is using the ADS1263 chip which I could get dev board for. But the chip is $12 in quantity batches. Basically it’s just too expensive. I’m resigned to the HX717, this chip costs pennies at quantity and is readily available in the CN supply chain where all the breakout boards are coming from. Prusa used it on their boards, likely because of these 2 reasons.

(I would really have preferred a sample rate at 1khz for probing and ~500hz for continuous filament pressure monitoring.)

The HX711 is only useful for applications that want to weigh filament spools. My code won’t stop you from trying to probe with it but you are likely to bend the toolhead of you go fast.

But I would also note that the code is extensible to multiple sensor types. We wont be stuck with the HX717. My code already works with all 3.

Usually you would use a high quality analog supply for the load cell reference voltage. But in this application no one is going to hook up a $300 lab bench supply to their 3D printer. The available supply is a very noisy 5V switched supply. We need to have a hard look at what sort of caps and filters we can apply to the input V to make this usable.

The argument for the HX711 solution is simply that it is available very easily and cheap. This apparently does not apply (yet?) to the HX717, so if the HX711 does not suffice, you might go with any other chip and design your custom PCB.

I still think being ready to use the HX711 will help the concept proliferating, because it strongly reduces the entry barrier. IMO the idea of using different chips is driven by the desire to optimise for speed, which in my eyes is premature at this time given that there is no broadly working solution available, not even a slow one.

I think its reasonable to aim for the HX717. Iā€˜m in contact with the manufacturer and as it turned out he does seem to have evaluation boards, Iā€˜m trying to get some.
Also someone on reddit told me hes waiting on his own dev boards and would possibly share the gerber file and a sample with us.
I think we are on a good way to get something for testing.

1 Like

Btw here is the datasheet of the HX717, if someone needs it

hx717_en.pdf (252.0 KB)

1 Like

I am just playing with ideas at the moment and am trying to come up with a solution that I am able to implement with my own skill set. I am a bit old school and immediately try to address any measurement problem by using an instrumentation amplifier, an 8 bit (or maybe 16 bit) microcontroller and a bit of assembly level programming (I am a bit dyslexic with high level languages)

Present thoughts are to use a full bridge with 4 off 350 ohm elements built into a compliant parallel motion mechanism with mechanical overload limit stops. This sensor would give a response one way from nozzle contact, and in the opposite direction from filament back-pressure.

The electronics would perhaps be an INA333 instrumentation amplifier and a PIC16 to process the strain gauge signal. Having only a 10 or 12 bit ADC need not be limiting with good amplifier design and will give a much superior frequency response – easily 2000 samples per second.

I will watch this thread with interest and if or when I come up with something I will put it on GitHub and also this forum.

Mike

1 Like

The code to read data from the HX717 and 711 are basically identical in C. I l ready have it coded up and tested on the 711. Supporting both is not a burden on the code.

@alexb if you get dev boards I will totally take one. Happy to pay.

Has anyone looked at or referenced the way Duet3D does there Delta head strain gauge? (Duet Smart Effector) https://www.duet3d.com/deltasmarteffector
The carrier for the hot end heat sink is a circuit board with the strain gauge response sensitivity programmable.
I have one on my Monster Delta and it works perfectly! I’ve got the sensitivity turned way down (very sensitive) and there are no noise issues or false trigger issues, and very repeatable
https://www.teglerizer.com/3DPrinters/TLM-bed-mesh-SmartEffector.MOV
jfft

Besides: I have heard rumours that the new Creality K1 uses a modified version of Klipper and has load cells which are read out with HX711. Klipper is GPLv3, so we should be able to get the source code I suppose? I cannot find it online. Maybe someone of the Klipper development team should ask for it? Not giving it out would be a GPL violation in my understanding.

I just read through the whole thread: Wow, Thank you all for doing this! I have worked with the hx711 for a Arduino project before and was also dissatisfied with the 80sps. Supposedly you can add an oscillator on Pin XI, XO to achieve higher frequencies. (DS page 4) but in the end I used the AD7190. It is very low noise and goes up to 4khz. I think the hx711 is a AD7190 clone, with less performance but more affordable.

Hello Gareth,
l saw only klipper config piece for ads1263, you said it works with all 3 types chip. So, could you please share a pieces of config related to HX711 and HX717. Because l got some error message when l used your code in my library or ehen l used your adc- branch
Thanks.

Right now my config looks like this:

#####################################################################
#   ADS1263
#####################################################################
[ads1263 tool1_adc]
spi_bus: spi3
cs_pin: SPI3_CS
gain: 5
sample_rate: 8

#####################################################################
#  ADS1263 Load Cell & Load Cell Endstop
#####################################################################
[load_cell ads1263 tool1_adc]
is_probe: True
z_offset: 0.0
counts_per_gram: 113626
trigger_force_grams: 50.0

#####################################################################
#  HX711
#####################################################################
[hx711 tool0_adc]
sclk_pin: PB7
dout_pin: PB6
gain: A-64
sample_rate: 10

[load_cell hx711 tool0_adc]
counts_per_gram: 1
trigger_force_grams: 50.0

This works in the same way that Steppers and Stepper drivers work. I need to work on making this order-independent. Its going to get changed/improved.

Note that right now its illegal in Klipper to have more than 1 Probe. So setting is_probe: True on multiple load cells will result in an error. This is a real bummer for multi-tool printers that way to use this tech and something I’m hoping to fix a bit further into this.

2 Likes

I mean you don’t need more than one probe at once. Maybe you can change the probe on tool change?

Is it legal in Klipper to have two Z probes use the same input pin? The reason I ask is that I use a probe under the bed to detect Z contact and a touch probe for bed mesh mapping. Both probe controller outputs are wired to a single mcu input with the unselected probe set to a high impedance state. Selection of the desired probe is by asserting a pin on the mcu for each probe.

Nope.

Klipper can’t distinguish what probe is activated.

When you try to assign one and the same pin in different macros, Klipper will give a parsing error.

Haven’t you got any free input pin?