The primary sensor I've been prototyping for the Pumping Station: One Biosensor Array is the galvanic skin response, or GSR, sensor.  GSR is a measurement of the electrical conductance of the skin.  Sweating causes changes in the conductance, which offers an indication of emotional excitement, because the sweat glands are controlled by the sympathetic nervous system.  GSR does not offer a fine grained indication of emotion, since it does not distinguish between the many different emotions which elicit a change in skin conductance.



     GSR graphed on SparkFun LCD shield


If you have a multimeter on hand, then you can measure the resistance between two fingers by pressing one probe against each finger.  The range for the resistance of skin is typically 50k to 10M Ohm (per Sean Montgomery).  Skin conductance is the reciprocal of that resistance.  Thus 50k Ohm is 20 uS (micro Siemens, not Seconds) and 10M Ohm is 0.1 uS.  To summarize, skin conductance is inversely proportional to skin resistance.


However, if one just looks at their skin resistance on a DMM, then it will be very difficult to determine when their skin is responding to emotional changes.  Thus, a circuit is required which produces an output voltage proportional to the change in skin resistance.  The circuit needs to filter out noise and amplify the GSR signal.  This output voltage can then read  by any microcontroller (an Arduino for this project) and graphed over time in software.


I tried many different approaches when prototyping GSR, but I found a modified version of the Truth Meter circuit by Sean Montgomery worked the best for our application:




Sean built this circuit so that no microcontroller is needed as it employs both a low & high pass filter to create a 0.5 Hz to 5 Hz band pass which works well for GSR since it is a slow 1 to 2 Hz signal.  The low-pass filter cuts off high frequency noise above 5 Hz such as 60 Hz noise from AC power.  The high-pass filter cuts off frequencies below 0.5 Hz, or 2 seconds.



Truth Meter uses a 9V for power and an LED for output. The brightness correlates to the GSR magnitude. (Photo by Jordan Bunker)


In effect, the high-pass filtering subtracts the baseline average skin resistance leaving the only change in skin resistance within the 1-2 second range of GSR.  The result is that the GSR sensor is able to auto-calibrate for each user regardless of the the baseline skin resistance.  Essentially, the Truth Meter circuit produces just the GSR events, or spikes, where an emotional response occurred which is illustrated by this graph on Sean's website:




Sean's Truth Meter circuit worked really well for our project as the voltage output of the circuit is already filtered and can be simply read by disconnecting the LED and instead connecting the output resistor to the Arduino via an analog input.  The complexity of the Arduino code is reduced as no additional filtering needs to be done in software.



Biosensor GSR circuit prototype based on the Truth Meter connected to Arduino analog input.


Arduinoscope, a Processing sketch, is running and graphing the output the Arduino is sending via serial link over USB.  The spike pictured below is the result of me poking myself in the leg with the leads of an LED to illicit pain:


I found slapping myself also worked well too:



Safety Tip:

As an aside, always have your laptop unplugged from AC power when doing biosensing prototyping.  First and most important reason is safety.  Second reason is that the analog inputs will have 60 Hz noise imposed on their waveforms.  I found this to to be the case even with the bandpass filter in the GSR circuit.  The above screenshot was taken when the laptop was plugged in AC and the waveform looked much smoother when laptop is running off battery.  For our actual biosensor array, a Bluetooth module & 6xAA batteries are used so that there is no connection to laptop or AC power.


After prototyping on breadboard with good results, I made the Biosensor Array GSR shield which is pictured below.  It is stackable with the ECG shield and has header for the BlueSMiRF bluetooth module.  It is essentially the Truth Meter circuit but with pots for the important resistors to enable maximum calibration by the user: 1MOhm (skin voltage divider), 10kOhm (non-inverting reference voltage divider, substituted for the diodes) and 100kOhm (gain of final op-amp):


These simple finger straps below connect to header on the GSR shield and are extended for actual usage by our biosensor array cabling system.  Based on the Truth Meter instructions, I built the straps from copper foil & velcro tape I got at Jo-Ann Fabrics.  After building several pairs, I went out and got some stranded wire as it makes a much better solder joint than solid core wire on the copper foil.  Also, I made sure to use lead-free solder as the solder joints are in direct contact with fingers during usage.


And finally, if your interested in building your own Truth Meter, the circuit is featured in Make Magazine Vol 26 (Spring 2011) in the "Biosensing" article by Ira M. Laefsky & Sean M. Montgomery:



  • Truth Meter kit assembly & usage video by Make:



    In my next blog post, I will share the other circuits I prototyped and challenges encountered along with how I plan to improve the GSR sensor in the future, like refining the LCD display: