Introduction: Determining Body Composition Using Arduino

The purpose of this circuit is to generate a constant current (~198 microAmps), which is sent through the body via two electrodes. The electrodes are placed on the opposite hand and ankle of the subject. Two more electrodes are placed in close proximity to the initial "current" electrodes, and will be used to measure the voltage difference. The voltage difference is then amplified by an instrumentation amplifier, read by the AD5933 chip, and an impedance value will be output by the Arduino. Using relationships established by Lukaski et al., the fat free mass in kilograms can be calculated from the impedance value. Subtracting that value from the total mass of the subject, the percent body fat can be found.

Step 1: Materials

The following supplies are necessary:

1 x Arduino

2 x TL072 OP Amps

1 x INA128 Instrumentation Amplifier

1 x AD5933

1 x 10 kΩ resistor

4 x 1 kΩ resistors

1 x 5.5 kΩ resistor

1 x 10 nF capacitor

Step 2: Summary of Circuit

The AD5933 chip will output a user defined voltage (for our case, we used 198 mV), which will then pass through the high pass filter to attenuate frequencies below 10 kHz. The voltage then flows through a transconductance amplifier, which coverts it into a current source, which is sent through the body via two electrodes. The voltage difference, measured by two additional electrodes placed on the body, is sent to the instrumentation amplifier, and feeds into the AD5933 chip, which measures the impedance and outputs it to the Arduino Uno.

Step 3: High Pass Filter

The high pass filter attenuates frequencies which are below the cutoff frequency. We chose to use a 10 kHz signal, therefore, frequencies below 10 kHz will be attenuated. This was accomplished using a 10 nF capacitor and a 10 kΩ resistor.

Step 4: Transconductance Amplifer

The transconductance amplifier converts an input voltage into a current. Using Ohm's Law, for an input voltage of 198 mV, and a Rcurrent value of 1 kΩ, the current will 198 microAmps. The Rprotect resistor is used as a means of measuring the current beforehand to make sure it is indeed 198 microAmps, and not too large of a value as to cause harm to the subject. A value of 1 kΩ can be used for this resistor. Using the multimeter, if the voltage drop across Rprotect is equal to 198 mV, then the current can be verified to be 198 microAmps.

Step 5: Instrumentation Amplifier

The instrumentation amplifier amplifies the input voltage from the two electrodes placed on the body. The gain of the amplifier is calculated using the equation shown above. When Rg is selected to be 5.5 kΩ, the gain will be approximately 10.

Step 6: Input to AD5933

The RFB resistor, or the Gain Setting Resistor, is set to the same value as the 1 kΩ resistor leading out of the instrumentation amplifier. This means that a gain of 1 is achieved before the PGA gain is taken into account.

Step 7: Arduino

Connect the 5 V pin of the Arduino Uno to a 5 V power supply, and the GND pin to ground. Connect the SCL and SDA pins of the AD5933 to the Analog Input pins on the Arduino Uno.

Step 8: Arduino Code

The first part of the code, case A, performs a frequency sweep starting at 1 kHz, and goes up to 100 kHz, increasing in 1 kHz increments.

The second part of the code, case C, performs a frequency sweep and outputs the frequency, resistance, and reactance at each frequency increment.

The last part of the code, case B, measures the temperature of the chip.

Step 9: Determining Fat Free Mass From Impedance

To determine the fat free mass, first take the inverse of impedance to find conductance. Then, multiply the conductance by the subject's height squared. Finally, substitute the value into the equation: y=3.04+0.85x, where x is the value determined in the previous step, and y is the fat free mass in kg. From here, to find the fat mass of the subject by subtracting y from the total mass. Percent body fat can be found by dividing the fat mass by the total mass and multiplying by 100.

The above relationship was found by Lukaski, et al., in their paper Assessment of fat-free mass using bioelectrical impedance measurements of the human body.


shivamc1 (author)2016-03-17

Can i use something else instead of AD5933 ?

MESHAAL (author)2016-01-05

Hi ,

Would you please explain me why you define button 2 in code .

I'm trying to do the same project but the code is not showing anything on serial monitor . Do I missing somthing ?

Grisling (author)2015-04-21

I had just decided to do this project myself and started gathering info, when I stumbled upon this instructable while checking the app (as I do once in a while when I'm bored). It's seems extremely simple and straight forward, but how precise are the measurements from this circuit?

russ_hensel (author)2015-04-20

Please power from a battery for safety's sake. Always do this when connecting electrodes to a human being or even an animal you care much about.

About This Instructable




More by szhang23:Determining Body Composition using Arduino
Add instructable to: