Load cell amplifier

Rocket motor static testThis page describes the construction and operation of a device for testing rocket motors. It allows the recording of the thrust generated by the motor during a static test. The recorded data is then analyzed using an Excel spreadsheet.

This load cell amplifier is a little different from the other designs usually found on the internet. It has the analogue-to-digital converter (ADC) on board, which means that the use of a separate ADC (e.g. a Dataq unit) is not required. This load cell amp plugs directly into a USB port and presents itself to the computer as a regular COM port.

1.1. Purpose
Thrust GraphThe thrust curve of a rocket motor is a key indicator of its performance. After all it is the generated thrust that propels the rocket skyward. The shape of the curve also gives insight in the inner workings of the motor, and can be used to verify if the design criteria were met. In order to analyse the thrust curve of a static motor test, a thrust curve capture device is used. This device can be thought of as a digital scale, where the weight that is normally shown on the display is instead captured and saved at a fixed interval many times over the duration of the burn.

In fact, the device presented here is in fact just that. It uses a load cell salvaged from a cheap digital scale, of which the weight (and thus the motor thrust exerted upon it) is sampled by the A/D-converter of a microprocessor, and subsequently sent to a laptop computer to be saved into a text file. After the static test is finished, the raw test results can be imported into a spreadsheet for detailed analysis.

Block diagram

The way the system works can best be explained using a block diagram. When the rocket motor is fired, it excerts thrust upon the load cell. This thrust causes the beams of the load cell to flex, thus changing the resistance of the strain gauges attached to it. This change of resistance puts the Wheatstone bridge in a state of non-equilibrium, which causes a small voltage across the bridge. This voltage is amplified by a gain stage, converted from analogue to digital by a microcontroller, and subsequently sent over USB to a laptop computer. The computer stores the captured data in a text file, which is later copied into an Excel sheet by the user for analysis of the data.

1.2. Advantages / disadvantages
The test stand as presented has its advantages and disadvantages.

  • The salvaged load cell is cheap and easily procurable, and even though it is not the most accurate load cell that one can procure, it is well-suited to its purpose if sufficient care is taken to compensate for its shortcomings.
  • Using a microcontroller with built-in A/D-converter and USB interface makes for a very compact and integrated solution. The A/D-converters’ resolution (10 bit) is more than sufficient for this purpose. A load cell of 100 kg will have a resolution of 97 grams.
  • The board is supplied with power by the USB interface, which is quite convenient but depending on the quality of the power supply of the computer used, can wreck havoc in the stability of the measurements. Tests have shown that a laptop running on AC power introduced a very noticeable 50Hz ripple onto the sampled data, which however disappears when running on battery power (as would be expected when doing static tests in the field). A separate and well-regulated power supply would be recommended when running the computer on mains power. For this purpose a power-over-USB jumper can be cut on the board. The ripple can also be filtered out in software using a recursive filter.

2. Schematic

2.1. Load cell configuration

Load Cell SchematicLoad cells convert force to resistance. They consist of flexible resistors (strain gauges) which are glued to a bending beam type of arrangement. As the beam flexes due to the force that is applied upon it, the strain gauges stretch or compress which causes their resistance to change. Because an A/D-converter cannot read a resistance directly, this change of resistance needs to be converted to a change in voltage by a Wheatstone bridge configuration.

There are several types of load cells, both based upon their physical configuration (bending beam, torsion etc) and on the number of strain gauges employed. The latter can be identified by the number of leads on the load cell.

A full bridge arrangement has 4 strain gauges; two active (which change resistance when force is applied on the load cell), and two passives (which are used solely to balance the bridge). This type of load cell has 4 leads; two for the excitation voltage and two for the signal voltage. The advantage is that this bridge configuration is less prone to output drift caused by temperature changes.

A half-bridge arrangement has only 2 strain gauges, and therefore has three leads; one for the excitation voltage, one for the signal voltage, and a common ground.

Consult Wikipedia for detailed information about the full-bridge Wheatstone and the half-bridge configuration (potential divider).
Wheatstone bridge
Potential divider

Load cell salavaged from digital scaleThe load cell I used was salvaged from a digital scale, bought on sale for about 15€ in the Aldi supermarkets. When purchasing a scale, it is important to check if the scale actually has 4 load cells. Some scales use an ingeniously designed assembly of levers to transport the load on the 4 edges of the scale to a single load cell in the middle of the scale. Since the load is also scaled down by the levers, these load cells usually have a maximum weight that is too low to be suitable as a static test load cell. My scale had a glass plate with 4 supports on the edges, with only a thin non-transparent cover running from the supports to the display. Since the thin cover couldn’t possibly conceal levers, it was a good bet that each of the 4 supports would hold a load cell. Dividing the max weigth of the scale (180kg) by 4 load cells means each load cell was rated at 45kg maximum weigth. Perfect for a static test load cell. Similarly, dividing the price by 4 load cells means that each load cell costs 4€.

Load cell mountingTo double the maximum thrust which can be measured, two load cells were mounted side my side on a piece of steel bar. The motor rests on top of this assembly, and the motor’s thrust is transferred to both load cells by a metal plunger which was turned on the lathe. Using two load cells has the advantage of better balancing the Weathstone bridge. Only two passive resistors are necessary. They are mounted on a seperate piece of perf board so they can be kept close to the load cells.

As stated above, the bridge arrangement of load cells converts resistance into a voltage. The voltage difference between zero force applied and maximum force applied is quite small however (typically a few tens of a millivolt). It therefore needs to be amplified to a voltage range which is suitable for the A/D-converter. For this a gain stage is used.

2.2. Gain section
Gain Section SchematicAs a gain stage the AD627 instrumentation amplifier by Analog Devices is used. This choice is largely based on availability. Most load cell amplifier designs on the web seem to use the Burr-Brown INA12x series of instrumentation amplifiers, however I was unable to procure these at a reasonable cost. The AD627 can be sampled for free with a little persuasion, so the price was right.

The amplifier circuit is a pretty straightforward application of the devices’ data sheet. Bread boarding the circuit during the design phase showed that two stage amplification was necessary to avoid common mode voltages. I chose to build the circuit with a first stage gain of 200 and a second stage gain that is variable from 1 to 10. It should however be possible to build this circuit with a single gain stage, which I will further investigate.

Since the load cell bridge is not an ideal bridge, it will not be fully balanced even though no force is applied. A small offset voltage will be present, which will be further amplified if not corrected. Therefore it is necessary to zero out the offset voltage. For this a small trimmer pot on the first gain stage’s reference input is used. It can remove most of the offset voltage from the circuit, but since the amplifier is not ideal, a small amount of internal offset voltage will remain. This has proven to be about 2 to 3 ADC bits, which at 0,3% of the useful range is quite acceptable.

A trimmer in the second gain stage allows setting the gain between 1 and 10, resulting in a total gain between 200 and 2000. Depending on the load cell used and its output voltage, the first and/or second gain stage’s gain resistors might have to be changed (by experimentation).

A 100nF and a 1µF capacitor are placed on the power rails of the two instrumentation amplifiers to ensure proper power supply decoupling for these sensitive devices.

Since this amplifier section has a large gain it will readily amplify any noise present to significant levels. Adequate care most be given to reduce these sources of interference. Keeping the cables to the load cell short and keeping the amplifiers away from the microprocessors’ clock signal is necessary.

2.3. Microcontroller
Microcontroller SchematicThe central part of this schematic is a PIC 18F2550 microcontroller by Microchip. It has a built-in 10 bit A/D converter which is used to sample the output of the gain stage and convert it to binary data. In addition it has a built-in USB interface which allows the board to upload data to the computer for capture into a file.

The microcontroller’s schematic is fairly standard for USB implementations. Microchip’s Communication Class Devices (CDC) code is used, so the necessary drivers are included in most recent Windows versions. If you have an unsupported operating system, drivers can be downloaded from Microchip’s website. When connected, the device will show up as a new COM port.

The circuit has a standard ICSP header which can be used to program the microcontroller in the circuit. A reset switch is provided to reset the microcontroller if necessary. There are two LEDs; a power LED and a LED that is used to indicate the status of the program. The second switch is not used in the microcontrollers’ program, and can be omitted.

2.4. Buttons and LEDs
Buttons & LEDs SchematicThe schematic includes a button and two LEDs. The button is not currently used, although it could be used in future firmware revisions for example to start or stop the capture. A button is cheap, both in cost and board real estate, so I always add one.

There is a Reset button on the board as well, which allows the resetting of the microcontroller when necessary. I added this button as it speeds up development, but removing the power has the same effect so for daily use the reset button can be omitted.

The power LED indicates that the board is powered up. The other LED is used to indicate the USB connectivity status. If the board is powered up it will flash rapidly. Once the USB COM port is connected, it will flash twice per second.

3. Printed Circuit Board
BoardThe board is double sided and thus fairly compact. One must not forget to install the two vias, which are located in the amplification section.

The USB connection is provided on a standard .1” pin header, for which a suitable cable must be constructed. I used a USB cable with a type A USB connector, salvaged from an old mouse. It was cut off and soldered to an old floppy drive power connector (which is essentially a 4-pin female header).

A “bus power” jumper has been put on the board. When the jumper is closed the circuit uses the power provided by the USB port from the computer. Power dissipation is less than 100mA. Even though this jumper will probably never be removed, it allows the use of external power if required.

Board mounted in Altoids tinIn order to properly shield the circuit from outside interference I have installed it in an Altoids mint tin. A rectangular hole was cut in the side at each end to accommodate the connectors. This case further protects the circuit from burn damage in case of a CATO. The board is mounted on small stand-offs, which were hot-glued into the case. The stand-offs prevent the bottom of the board from shorting out on the tin.

4. Operating procedure

The operation procedure for the system is as follows.

4.1. Connect

Connect the circuit to the USB port of the computer. The power LED should come on solid, and the other LED should flash rapidly, signifying that the serial port is not connected. Connect to the new COM port using a terminal program (eg. HyperTerminal). The COM port number will be different for each USB port on the computer, so it is best to always use the same USB port. The terminal settings are 115.200 baud, 8 data bits, no parity, 1 stop bit, no flow control. If the terminal program is connected the LED will flash twice per second, and an intro text will be seen in the terminal program.

4.2. Calibrate

The circuit must be calibrated before its first use. Afterwards it might be wise to repeat the calibration regularly if accurate absolute measurements are required.

4.2.1. Null-point reference

First the null-point reference is set. This is done with the motor installed in the test stand. First give a push on the load cell to start the data capture. Numbers will being scrolling on the screen. Now adjust the zero trimmer. As the trimmer is adjusted, the numbers scrolling on the screen will change. Adjust the trimmer until the smallest value is reached. You will notice that any further turning no longer decreases the values. Turn the trimmer back in the other direction to right before the value goes up again. This is the null-point reference sweet spot. It will be filled into the spreadsheet later (‘data’ tab, “ADC base value” cell).

4.2.2. Gain calibration

Next the maximum gain calibration is set. Check the load cell’s maximum rated force (weight), and apply that weight to the load cell, for example by putting barbell weights on it or hanging buckets of water from it. Now adjust the gain trimmer until the values just reach 1023. Note down the weight applied and fill it into the spreadsheet (‘data’ tab, “Load cell max thrust” cell). Mind that the weight as filled into the spreadsheet is expressed in Newton (10kg = 1N).

Make sure no more weight is applied to the load cell than its maximum rating, as this can permanently damage the load cell.

4.3. Capture data

To start capturing test data, reset the circuit by disconnecting and re-connecting the USB cable. Re-connect the terminal program and make sure that the start-up text appears.

Set the terminal program to capture to a text file (“Transfer” – “Capture Text” in HyperTerminal). This makes sure that all thrust values captured during the static test are stored into a text file on the computer (e.g. desktop\test 20080221.txt)

After the motor has been fired the text capture function needs to be stopped. Then open the text file and hope that the static test has been captured properly.

4.4. Excel sheet
Excel Inputs FieldsBased on the captured test data, the Excel sheet will be filled out. First the “Input” fields on the “data” tab need to be filled out.

The first line of the captured text file indicates the sample speed of the test (in Hz or samples per second). Fill in this value in the spreadsheet (“data” tab, “Sampling freq” cell). This will always be the same value unless the microcontrollers’ firmware is changed. The ADC base value is also shown. This is the null-point reference as set during the calibration. Because this value can vary with temperature and over time it is logged at the start of every static test. Fill in this value from the text file into the spreadsheet (‘data’ tab, “ADC base value” cell).

Fill in the total weight of the propellant in the “Propellant weight” cell. This value is used to calculate the propellant’s ISP after the test.

Excel Data Input AreaIn the text file, now delete the row of text showing the sample frequency and ADC base value, and select all following text (“ctrl-a”) and copy it to the clipboard (“ctrl-c”). Go to the Excel spreadsheet and find the “Data input area” in the “data” tab. Select the cell directly under the “Data input area” heading, and paste the copied data (“ctrl-v”). This will effectively populate the whole column with the test data. Even though this can be quite a bit of data, it is important to note that the Excel sheet can only process 30.002 rows (due to an Excel limitation).

Thrust GraphThe spreadsheet now automatically calculates the test data. A thrust graph is shown in the tab “graph”. This graph can be smoothed by applying a built-in filter. To increase the smoothing effect, increase the filter value in the upper left column. This value is effectively the number of samples that are averaged using a recursive filter.

The static test data is shown in the “Outputs” area in the “data” tab. Here you can find information such as the total duration of the burn, total impulse, Isp and avg thrust.

The “Static test identification” field allows the user to enter text to identify the test.

5. Future improvements

5.1. SMD

The next iteration of the board will use all SMD components and will thus be much smaller. The 18F2550 is available in an SOIC package which, with a little persistence and a lot of magnification, shouldn’t be too hard to solder.

5.2. Single gain stage

The current version is using a dual gain stage. This is mainly due to my lack of knowledge on how to properly design amplifier circuits. In a future version it must be further investigated how the necessary (configurable) gain can be achieved with just one gain stage, while keeping common mode voltages low.

5.3. Input for igniter voltage which can start data capture

Currently the firmware detects the start of the static test by looking for a sudden increase in force on the load cell. This means that it misses around 0,5ms at the start of the test. This is not really an issue for the thrust graph or the total thrust calculations, but it is detrimental to the accuracy of the total burn time, and thus also the calculation of the propellant’s ISP. Additionally, if the motor under test does not come up to pressure immediately after ignition, the capture of the test data will only start when the motor comes up to pressure and starts generating thrust.

It might thus be better to have an input that signals that the ignition has started. In a future version of the load cell amp, a microcontroller input pin will be connected to the voltage that drives the igniter. This way the data capture can start as soon as the power is applied to the igniter, which ensures that the full useful range of data is captured.

5.4. Increase sample speed

Even though the sample speed of 6000Hz is plenty for the intended goal, it should be possible to increase this speed to 10.000Hz. Currently the firmware sends the ADC value directly over the USB connection, which means 4 characters for an ADC value of 1023. The transmission of these characters is the limiting factor. When increasing the sample speed, the USB connection would get congested, unless the number of transmitted characters is decreased. This can be done by sending the difference between two samples instead of the whole sample value. The difference between two samples would typically be a 2 digit number or less.

6. Files

6.1. Schematic & board in Eagle

  • Schematic representation of how the load cells in my digital scale were connected, and the equivalent schematic used for the load cell amplifier

6.2. Firmware

6.3. Analysis spreadsheet (Excel)

6.4. Static test video

Here are some videos that demonstrate the capabilities of the system.

7. License

Please benefit from my work in your own projects! The firmware for this project is available under a GPL v2 license (as described in the source file), the hardware is available under the TAPR Open Hardware License v1.0.

 

Other posts

11 responses


  1. Looking really good! If I rebuild my amp (INA125 based) I will give your design a try! Will you post the firmware for the micro controller?

    I could not load the Excel Spreadsheet in OpenOffice 2.4, will have to look at a friends computer but the screenshots looks great!

    Thanks for your hard work and for sharing with us!

    Cheeers, Fredrik


  2. Thanks for leaving a comment. I have posted the firmware source code in the meantime. It is released under the GPL v2 license.

    The Excel sheet uses a bit of magic to generate the graph, so I can imagine it won’t run smoothly in OpenOffice. I recommend Excel 2003 or up. I bet the Excel could be improved by someone who masters it better than me.

    I really like the flexibility the spreadsheet offers as opposed to the proprietry apps that come with a commercial data aquisition system. A spreadsheet offers complete freedom and allows you to calculate all sorts of information directly from the captured data.

    David.


  3. That’s a pretty slick testbench, nice job with the implementation, it’s nice seeing well documented stuff like this. One thing that stuck out (IMO) was your use of a spreadsheet for the results, you may be interestind in looking into programs like octave (GPL) or matlab (expensive) for doing numerical analysis, as they’re a lot more optimised for doing things like this than a spreadsheet application.


  4. A little tip for text to Excel spreadsheets: insert a comma after each entry in a row, and use carriage returns for new rows, then save the file as a .csv. This creates a Comma Separated Value sheet that Excel and other spreadsheet apps can read natively.

    http://en.wikipedia.org/wiki/Comma-separated_values


  5. Saw this on Hackaday. This is a great project. I have had a similar project in mind for a while, but I was a little unsure about the analogue electronics side of it.

    On increasing the sample rate: Since the numbers you are sending over the serial link are 10 bit, you could fit them into 2 bytes (16 bits) easily (just don’t convert them to ASCII in the PIC before transmission!). This way you wouldn’t have to bother with calculating deltas on the PIC.

    I realise this adds complexity on the host PC end. I think you could solve that (for example) by using a very simple Python script and pyserial: get the python script to read data out of the serial port, convert to ASCII text and output to a CSV file for loading into Excel later.

    Let me know if you want help with the Python script - I’ve got something from a similar (Arduino) project lying around.

    Final thought - can you not just increase the baud rate of the serial connection? I have a vague recollection that Microchips CDC code can work at up to 576000 bit/s. Unfortunately I can’t find the documentation to prove that at the moment :(


  6. How about the rocket motors, do they meet spec? Are they Estes?


  7. Very Nice! I did something almost exactly the same- Except I made the loadcell. http://colinkarpfinger.com/projects/rocketry/rocketry.htm


  8. Looks like I made Hack a Day. Thanks for the nice compliments, it’s always nice to hear feedback on your projects.

    > One thing that stuck out (IMO) was your use of a spreadsheet for the results, you may be interestind in looking into programs like octave (GPL) or matlab (expensive) for doing numerical analysis, as they’re a lot more optimised for doing things like this than a spreadsheet application.

    I guess this is a case of using what I know. I haven’t used any of the programs that you describe. Excel does the trick for me. I admit though that the spreadsheet could use some work. The 32.000 data point limitation is a real show-stopper, which would become worse when the sample speed would be increased.

    I would be gratefull if someone who is more proficient in Excel would take a look at improving it, or perhaps even writing a custom application to analyse the data.

    > A little tip for text to Excel spreadsheets: insert a comma after each entry in a row, and use carriage returns for new rows, then save the file as a .csv.

    This creates a Comma Separated Value sheet that Excel and other spreadsheet apps can read natively.

    I use CSV files often, but decided against them in this case. One would have to open the CSV file in Excel and then copy-and-paste the data into the analysis spreadsheet anyway. I prefer to copy-and-paste from a plain text file.

    > On increasing the sample rate: Since the numbers you are sending over the serial link are 10 bit, you could fit them into 2 bytes (16 bits) easily (just don’t convert them to ASCII in the PIC before transmission!). This way you wouldn’t have to bother with calculating deltas on the PIC.

    That’s a really good idea, I hadn’t thought about that one myself. I guess the simplest solutions are most often overlooked. It shouldn’t be too difficult to convert the two bytes into an integer on the client side - I might adapt my firmware and Excel sheet to use this trick.

    > Final thought - can you not just increase the baud rate of the serial connection? I have a vague recollection that Microchips CDC code can work at up to 576000 bit/s. Unfortunately I can’t find the documentation to prove that at the moment :(

    The USB communication is running at 115kbps at the moment, which is the maximum Microchip’s CDC will support. It would be possible to increase the USB spreed, one would need to write a custom driver then. I chose the easy route. The 6000 Hz of sample speed is plenty for measuring rocket motor thust curves anyway.

    > How about the rocket motors, do they meet spec? Are they Estes?

    The rocket motors are home-made, as per http://jamesyawn.net/modelrocket/index.html or http://nakka-rocketry.net/pvcmot12.html . Sometimes they meet specs, sometimes they don’t and sometimes they explode, but they always offer opportunities to learn something new! Ofcourse this system could be used to test Estes motors just fine.

    > Very Nice! I did something almost exactly the same- Except I made the loadcell. http://colinkarpfinger.com/projects/rocketry/rocketry.htm

    Yes, I previously found and took a look at your nice website. Looks like some fine work you are doing! I was thinking of making my own load cells as per Nakka myself, but that’s when I found the digital scale on sale, so I ripped that apart to salvage the load cells. I expect the homemade version to be much more accurate, and will probably make a few myself in the future.


  9. Glad to see you found my site earlier. The home made load cell was a lot easier than I first expected. I was pleasantly surprised w/ how well everything worked. Its amazing how accurate those tiny strain gauges can be. If you have any questions, feel free to email me (its on my site). Nakka was also pretty good at replying to email.


  10. Hi David, nice gadget I wrote from Uruguay - South America.
    Best,
    Alvaro Mautone


  11. Very cool project! I have a question on the usb speeds.. how is the CDC PIC limited to 115kpbs? I’m not an expert in usb, but isn’t even low speed (usb 1.0) much higher than that.. on the order of 1.5mbps?!

    And according to the datasheet, The PIC you used (2550/4550) support “full” speed.

    How does this work?

Leave a Reply

You must be logged in to post a comment.