Last couple of months, i was very interested in articles about biofeedback, how it works and how you can use it so I decided to make simple measurement instrument to measure couple vital signs (heart rate, skin resistance, body temperature). You can find lot of interesting stuffs about biofeedback e.g. wiki or here . The measurement instrument I developped can be used as a lie detector as well (lie detector measures exactly same vital signs)

Components needed:

  • arduino Uno
  • biofeedback instrument (instruction below)
  • any piezo element e.g. this
  • conductive tape (copper foil tape)

Step 1: Biofeedback Instrument Design

Generally about acquiring vital sings for biofeedback.

My first idea was to design simple instrument which could send data through arduino to processing. It should been capable of measuring heart rate, body temperature, skin resistance.

There is one big issue you need to deal with, when you want to acquire vital signs for further use as biofeedback. You need to acquire vital signs with very precise accuracy - The thing what should be in the scope of your interest are very slight differences in your vital signs. Because of mentioned fact, arduino 10bit A/D converter is not enough and you need to use A/D converter with better acuracy. I chose ADS8344 from Texas instruments (16bit).

Acquiring body temperature:

For my suprise, body temperature measurement was the biggest challenge in this project, I did not realize that I would need to find sensor able to detection of very small increase/decrease of body temperature (0,1°C). At the end, combination of temp. sensor LMT70 from Texas instruments (datasheet) and mentioned ADS8344 seems good enough, but still i suppose, you can find better solution. There is also quite big problem how to strengthen sensor to body. For me it was OK just to grab sensor into my hand. By choosing right temperature algorithm you can achieve better accuracy. In this project I chose first order transfer function. Honestly, buying this kind of package was not the best idea and soldering to use is, can be really tricky:))

Acquiring skin resistance:

You can find many circuits to measure skin resistance on web. I use as an inspiration circuit from Texas instruments (Multi-parameter Bio-Signal monitor) with the difference I also used ADS8344 for acquiring this signal. As electrodes, you can use basically whatever conductive you want:) I simply used copper foil tape which i placed on toothpick box:). The circuit reacts on decrease of skin resistance by increasing output voltage (means, when you sweat, the voltage goes up:) ).

Acquiring heart rate:

There are many ways how to measure heart rate, I would say that most common is to measure photoplethysmogram by LEDs and phototransistors. For this project I used piezo element to measure movement of arteries and veins caused by blood flow. It is important to attach piezo element to some strip or something similar to eliminate noise caused by tremors (when you hold the sensor). The accuracy of measurement heart rate is dependant on type of piezo element you would use as well as proper way of attaching it to body. I achieved best results by measuring on a wrist.

Step 2: PCB Design and Soldering

I think that circuit is quite simple and self explanatory, there are only few things I would like to mentioned. Diode D1 is used to protect inputs of amplifiers, because piezo I used can generate amplitudes up to 15V. Mainly because i need very precise voltage measurement of temperature sensor, i decided to use external voltage reference for ADS8344, if you dont need so precise measurement you can use supply voltage as a reference.

Circuit for acquiring heart rate:

In a circuit you can find that there are two channels to measure heart rate. Signal on channel 1 is just slightly filtered by RC (lowpass) filter R7 and C7 with cutoff frequency 159Hz. U2C is used as a voltage follower (R5 is not connected and R6 is 0Ohm resistor), but can be used as amplifier, if you wish. The signal on channel 2 is filtered by RC highpass filter with cutoff frequency 0.26 Hz, then amplified with G=5.7 and finally filtered by lowpass RC filter with cutoff frequency 34 Hz. This combination for my piezo element work properly but if you chose different piezo element or you would prefere different filtering, you can modify circuit.

For design of PCB I used great freeware SW CircuitMaker. Advantage of CircuitMaker is that all released PCB design are freely available, so you can use scheme and PCB. I designed and modify it exaclty for your purposes or ideas. I tried to do PCB as simple as possible to allow make it at home. I did that one on picture on CNC but I am sure you can use some other way mentioned here on instructables. Link to project on CircuitMaker is here

Soldering by hand could be quite tricky. Its really important to prepare PCB properly. You should clean pads and put little solder on them. Most important part is placing IC exactly on pads.

Step 3: Arduino and Processing

In this project I used arduino only for data acquiring, all processes (filtering etc) can be done in processing.


The communication with ADS8344 respect datasheet .


Processing is used to show realtime signal. I have some notes to SW in processing. The time on axis X is not accurate, its just informative. You can save the signal into text file by pressing "R".

Description of attached picture:

Green signal is skin resistance waveform, Yellow is temperature waveform (in voltage) - computed temperature is in left upper corner. White is unfiltered heart rate waveform and red one is filtered heart rate waveform signal.

Step 4: Further Use

As I mentioned before this PCB can be used either for biofeedback or as a lie detector. To be fully used for biofeedback the precise measurement should be included (simple peak detector). Using implemented function for saving data into text file you can make some deeper analysis of signal e.g. in Matlab. You can improve this PCB by adding one or more vital signs measurement (ADS8344 has four other available inputs, the PCB is designed in the way, you can use them:) )

Hope that you enjoyed my instructable, if you like it, please vote for me:) I had real fun playing with this design, and I was really suprised for example how fast is reaction of body for example on shock (skin resistance is increased very quickly:) ).

I will be glad for some feedback from you, if you would have any problem with realization or any questions do not hesitate to contact me:)

<p>Won't your hand movement will create noise/disturbance in HR measurement using piezo ??</p>
<p>Thanks for sharing! Never thought of using piezo for pulse detection, that actually is an interesting option, will try!</p>
<p>Thanks, I actually tried to use Force sensitive resistor at first time. It was like 10 times more expensive and still, piezo has much better results:)</p>

About This Instructable




More by cermakmara:Biofeedback Measurement Instrument ECG shield for Arduino 
Add instructable to: