Galvanic Skin Response Tutorial via ProduceConsumeRobot
Galvanic Skin Response (GSR) is a measure of emotional arousal that is detected as a sharp increase in electrical skin conductance. Physiologically, this increased skin conductance is caused by a specific type of sweat gland (eccrine, also called merocrine) that is tied in with the arousal systems of the body, including adrenaline. When you get embarrassed, angry, anxious or have other strong emotions, your skin conductance shoots up reflecting the change in your emotional state. Due to its tie with arousal as well as anxiety, the galvanic skin response is one of the main components of a lie detector test.
Electrodes:

Because sweat is electrically conductive, increases in sweating can be measured as increases in skin conductance (i.e. decreases in skin resistance). This skin resistance can simply be measured using two metal plates against the skin.
The best materials for the electrode surfaces are non-reactive with the skin, including gold, gold-plated copper, nickel-plated metal, platinum, palladium, silver-silver chloride, etc., but any metal, even two pennies, will work.
Palms, feet, armpits and the forehead have the highest density of eccrine sweat glands, so for this tutorial we’ll use a finger strap with metal plates on the palm side as a convenient electrode location. Note that physically moving the electrodes can create spurious changes in the resistance measured across the plates and contaminate our measurement. There are ways to work around this, but it’s not completely trivial.
The next step is to convert the skin resistance to a voltage. This is easily done with a voltage divider. In this case Vin is the positive terminal of a voltage supply (e.g. a battery), Z1 is the skin resistance across the metal plates, Z2 is a standard resistor connected to the negative terminal of the voltage supply, and Vout is the resulting voltage calculated as the ratio [Z2/(Z1+Z2)]*Vin.
The skin resistance commonly fluctuates between 50K and 10M Ohms (and even higher if your hands are really cold/dry), and a value in this range will work for Z2. We will use Z2=10M because it serves to linearize the relationship between Z1 and Vout, although at the expense of creating a very high impedance (low current) circuit that could be susceptible to noise.
Because the voltage resulting from this voltage divider is high impedance, it is important to buffer the signal with an op amp. It is also a good idea to filter the signal to remove any high frequency noise (e.g. 60Hz). Because the GSR is a slow ~1-2Hz signal, we can low-pass filter at 4.8Hz using a 0.1uF capacitor and two 330K Ohm resistors calculated from Freq=1/(2*pi*R1*C) as in the circuit below. The two resistors are the same value, so the circuit has no amplification calculated at Gain=-R1/R2.
See this page for making filters with an op amp.
To accommodate non-linearities of op amps near the voltage rails, it is generally best to set the (+) input of the op amp to the middle of the power supply input, i.e. 1/2*[(V+) - (V-)], which is generated in the above circuit with R1, R2, and C2.
Analysis:
Our goal is to quantify the magnitude of the GSRs to a given stimulus. The below figure takes a look at the data to best determine an analysis method.
The top plot shows the voltage recorded off of the above circuit from a nearly 6 minute recording. The sharp downward voltage deflections are the GSRs and the slow creeping back up is likely due to evaporation of sweat from the finger. Notice how hard it is to quantify these responses with something simple like threshold values.
The bottom plot shows the same signal after high-pass filtering at ~0.48Hz (i.e. ~2 seconds). High-pass filtering is essentially subtracting the baseline average skin resistance and revealing only the changes in skin resistance in the time range of the GSR. This permits the system to quickly “auto-calibrate” for different people and for changes in the baseline skin resistance (e.g. due to evaporation). Notice how much easier it is with the filtered signal measure the magnitude of the response with simple thresholds.





January 27th, 2010 → 2:35 am @ Syuzi