Huidweerstand meten met een Lego Mindstorms RCX

Datum: Januari 2006

Principe:

Sensoren maken waarmee men de huidweerstand kan meten en een Lego Mindstorms RCX gebruikt als datalogger.

Materiaal:

  • Zelfklevende klittenband (Hema ca. €2)
  • Aluminiumfolie
  • Luidsprekerkabel (ca. 20 cm)
  • Alligatorclip kabeltjes (2x)
  • Lego Mindstorms RCX

Bouw van de sensors:

  • De bouw van de sensor is schematisch weergegeven in onderstaande figuur en foto's.

 

  • Snij de benodigde stukjes klitten band en aluminiumfolie op maar zoals in het schema is aangegeven.

  • Pak de luidsprekerkabel, split de kabel aan de uiteindes en waaier aan een kant de individuele koperdraadjes uit.

  • Leg de kabel op de plakkant van de klittenband.

  • Plak de aluminiumfolie eroverheen. Plak ook het andere stukje klittenband (met haakjes) op de plakkant zoals in het schema aangegeven staat.

  • Maak op exact dezelfde manier de tweede sensor voor de andere draad.

Meting:

  • Verbindt mbv de alligatorclip kabeltjes de sensor met een legokabel zoals in onderstaande foto aangegeven. 

  • Trek een sensor over de middelvanger en de andere over een daarnaastgelegen vinger.

  • Zet de RCX brick aan

  • Start, op je PC,  het Bricx Command Center op.

  • Controleer of je verbinding hebt. 

  • Laadt het NQC programma op en start de meting.

  • Haal de datalog gegevens op en importeer deze in Excel.

Resultaten:

  • De meetresultaten zijn weergegeven in onderstaande grafiek.

Discussie en conclusie:

Bij de meting die we uitgevoerd hebben zien we een duidelijk verschil tussen het moment dat we de sensoren over onze vingers schuiven tov toen dat nog niet gebeurd was. Op zich zou je het systeem moeten ijken, nu meten we "raw" waardes en hebben we geen idee met welke weerstandswaarde dat overeenkomt. Hoe dit systeem betrouwbaar te ijken is dat weet ik echter niet (weerstandjes tussen de elektrodes plaatsen?).

Systemen die gebruikt worden voor bio-feedback systemen (biologisch signaal terugkoppelen), gebruiken elektronica om een lichaamsactiviteit te meten en te versterken. Lichaamsactiviteiten die veranderen met je gevoel en spierspanning zijn o.a. hartslag, bloeddruk maar ook de huidweerstand. Dit is de gedachte achter leugendetectors. Liegen vereist enige inspanning die zich weer vertaalt in lichaamsactiviteit. Als nu de huidweerstand een maat is voor hoe je je voelt zou je jezelf kunnen bijsturen als je je bewust werd van die waarde. Het koppelen van een bepaalde weerstandswaarde aan een emotie en deze kunnen herkennen zou je in staat stellen jezelf weer kalmer te maken indien je opgewonden bent. Dat is dan een vorm van biologische terugkoppeling (bio-feedback).

Voor een goede bio-feedback meting zouden we de meting eigenlijk langer moeten laten duren dan 15 s (Coach?).

Hoe het hier gebouwde systeem precies werkt is nog altijd een onderwerp van discussie. Men vermoedt dat de aktiviteit van de zweetklieren toeneemt als reactie op stimultie van het sympatische zenuwstelsel hetgeen de leidt tot een verlaging van de weerstandswaarde van de houdt (dus een toename van de geleidbaarheid: S=1/Ohm).

Opmerkingen:

  • Google zoektermen (UK): "galvanic skin response", sensor
    Google zoektermen (NL):  huidweerstand, leugendetector
  • Het is niet noodzakelijk om een Lego Mindstorms RCX te gebruiken voor dit experiment. De sensors kan men ook aankoppelen aan een Coachlab of een multimeter. Datalogging is de enige vereiste (alhoewel men men het noteren van tijdstip en meetwaarde natuurlijk ook ver komt).
  • De data is opgeslagen in de excelsheet: datalog.xls
    Deze excelsheet bevat ook een kleine macro om de datalog waardes in een iets handzamer formaat om te zetten.

Literatuur:

  • James. J. Barbarello; 'Build a Biofeedback Monitor'; Electronica Now; December 1996; p. 37-43.

Relevante websites:

Minder relevante websites:

Achtergrondinformatie:

NQC programma:
// measuring the galvanic skin response
// timer functions in 10 ms intervals

# define DATALOG_SIZE 1000

task main()
{
SetSensorMode(SENSOR_1, SENSOR_MODE_RAW );    // raw value
SelectDisplay(1);                                                 // raw value on RCX display
CreateDatalog(DATALOG_SIZE);                             // create datalog array
ClearTimer(0);                                                     // set de timer to 0


int i=0;
while (i < DATALOG_SIZE)
{
AddToDatalog(FastTimer(0));                                // add timer to datalog
AddToDatalog(SENSOR_1);                                    // add sensor value to datalog
i++;
}

PlaySound(3); // tell us its over
}

15-01-2017