I'm using an HX711 with a 16F887 to read a torque cell where it must report the values in both directions, time and counterclockwise. I searched the net and found nothing that could help me to get out of scratch, like drivers for hx711 and even how to start the code to read the sensor. All this information should be sent to the pc and also to an LCD display and another 7 segment display. This part I already know how to do and I already have the circuit ready and working. The problem is in the hx711 how to make it work.

Ttelmah

Joined: 11 Mar 2010Posts: 14081

Posted: Sat Feb 03, 2018 1:04 pm

It's just SPI mode 1.
The only special thing is the data in pin to the PIC has to be monitored before he transfer to know that data is ready.
You read the pin which you have already setup with #USE SPI as the data input, and when it drops, just do a three byte SPI read.

temtronic

Joined: 01 Jul 2010Posts: 6549Location: Greensville,Ontario

Posted: Sat Feb 03, 2018 1:32 pm

Best place to start is the mfr's website and download the datasheet. It'll have the register tables and commands. SPI is of course easy with the CCS compiler,so it's just a matter of sending the correct 'setup parameters' for whatever loadcell you're using.
I'd start with a simple program to confirm you've got the hardware correct, then test for various inputs.
When posting questions like this you should supply a link to the appropriate datasheet. For instance I have no idea whether this is a 5v device, 3 v device or programmable ?

Jay

Ttelmah

Joined: 11 Mar 2010Posts: 14081

Posted: Sat Feb 03, 2018 2:13 pm

I've used the chip.
No registers to set up.
You just wait for the data line to drop, and then read three bytes. These give the 24bit data the chip returns. The line goes high when you finish, and then drops again when the chip has another reading ready. It really is a 'doddle' to do.

MikeW

Joined: 15 Sep 2003Posts: 175Location: Warrington UK

Posted: Sat Feb 03, 2018 2:27 pm

I used the HX711 without any problems
cant remember if I used the SPI though

so how does one select either A or B load cell input and the 'programmable gain' ? I did find a 9 page PDF..kinda missing a few 'minor' details...

edit: yeesh I finally really read the data sheet, page 4 ..variable SPI to program the device !!?? huh ?? still trying to figure that one out. Depending on # of clks the next data will be one of 3 available.

I can buy a loadcell and chip/module for $10..seems like a great deal...

Jay

MikeW

Joined: 15 Sep 2003Posts: 175Location: Warrington UK

Posted: Sun Feb 04, 2018 1:30 am

I guess I only used the A input, and the defaults were OK.

It certainly worked, and worked well.

I didnt use the HX711 in the end, due to its lack of availability of a distributor in the UK.

But it certainly worked.

It should certainly get @rosiley off the ground

Ttelmah

Joined: 11 Mar 2010Posts: 14081

Posted: Sun Feb 04, 2018 2:21 am

Exactly like Mike. Just for the default reading.

You can select what you want using external pins.

From the data sheet:

Quote:

There is no programming needed for the
internal registers. All controls to the HX711 are
through the pins.

The number of clock pulses you send controls the gain. You can set this with #USE SPI now (in the past you could not do this), or if you want just clock manually. You need to be using software SPI to give the option for this.

Ttelmah

Joined: 11 Mar 2010Posts: 14081

Posted: Sun Feb 04, 2018 7:36 am

Just to expand (looked up my notes), if you send 25 clocks, the next conversion is of channel A with a gain of 128. Send 26, and it gives you channel B with a gain of 32. Send 27 and it gives channel A with a gain of 64.
Understand it always controls the _next_ reading, and the data comes in on the first 24 clocks.
So potentially:

//Then use
while (YOUR_DATA_IN==1)
; //wait for chip
val32=spi_xfer(HH,0,26); //select 26, 27 or 28 for what you want
//This will switch the chip to the specified mode.
//Default on wake up is CHA gain 128

//Then when you want to read:
while (YOUR_DATA_IN==1)
; //wait for chip
val32=spi_xfer(HX,0,24);

//val32 will now contain the 24bit reading from the chip

I remember this as being one of the most simple chips to drive I have ever met!..