Bio-control Stresstester Dr. Arduino meet de huidweerstand

Vergelijkbare documenten
Ringspiraal Stalen zenuwen en Arduino als scheidsrechter

Wat is Arduino? Arduino = microprocessor (Atmel)

Tweede workshop Arduino

Programmeren met Arduino-software

DDS chips. DDS = Direct Digital (frequency) Synthesis. Output = sinusvormig signaal. Maximum frequentie = ½ klokfrequentie

Jeroen uit. Extra informatie. Voor de lunch. Arduino zo aangesloten om mijn code te laten werken. (versie voor lunch) (code voor de lunch)

Oefening 1 - Seriële communicatie via USB

Deel 8: stappenmotoren en interrupts

Arduino CURSUS. door Willy - 09-juni-2017

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

De Arduino-microcontroller in de motorvoertuigentechniek (4)

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

Meet the Arduino FAMILY

Arduino[4KIDS] Maak je eigen muziekinstrument!

RCL Arduino Workshop 1

EM2 Microcontroller Project. LED cube

Workshop Arduino voor beginners. door TkkrLab Enschede

ES1 Project 1: Microcontrollers

AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT. Geschreven door: Tom Vocke

De Arduino-microcontroller in de motorvoertuigentechniek (6)

Arduino. Arduino UNO. Sam Decoster. CoderDojo Roeselare. Sam Decoster

DF405_V5 Universele uitlezing opbouw

Werkbladen voor Arduino workshop 1

CTCSS Encoder Super Flexibel Ontwerpen met een Arduino Nano

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

Add the standing fingers to get the tens and multiply the closed fingers to get the units.

Tinyserir-RC5. Datasheet. Tinyserir-RC5 Page: 1 of 8

Workshop Arduino Uno. Touw dag 6 juni 2015 Harold Pootjes en Simon Pauw

Arduino Workshop 1 Zuid-Limburg

BathySurvey. A Trimble Access hydrographic survey module

Elektor Uno R4 Installatie & Test

Arduino : Morse Voltmeter

Workshop Arduino voor beginners deel 2

HOP9850. void sendfrequency(unsigned long frequency) zie SWEEP9850

Zelfbouw frequentieteller

1. Testdata TA sensor met Ohmse belasting

KAEDU : Outputs en inputs

Inhoudsopgave LED dobbelsteen

Montage handleiding voor DCC/Power shield. Schema:

Rad van fortuin Solid-state uitvoering met 20 LED s

th_elt Hardware & Software

//enable de interne pull-up weerstand. //variabele sensorval. //naar de seriële monitor

Weerstation. Weerstation met Arduino C.G.N. van Veen. HiSPARC. 1 Weerstation. 2 Arduino. 2.1 Werking van Arduino

Inleiding elektronica Presentatie 1

Pocket Pong Oeroude game in moderne hardware

DATA SHEET C2-20. Besturing voor elektrische actuators. DATA SHEET C2-20 A&E Trading b.v. 1

Hand-out Introductieworkshop LED programmeren

De FOR lus: // terug naar waar je vandaan kwam Serial.begin(115200); // communicatie snelheid met de PC

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 8 februari 2010

Today s class. Digital Logic. Informationsteknologi. Friday, October 19, 2007 Computer Architecture I - Class 8 1

Project DTMF ATV Repeater besturing voor PI6HLM

delay(1000); // Eén seconde pauze digitalwrite(pin, LOW); // zet 'pin' uit delay(1000); // Eén seconde pauze }

Bouw je eigen minicomputer

Single Board computers. Ruud van der Meer (voor HCC d.d. 4 dec2017 Leiderdorp)

ID-er/sequencer. Beschrijving. Pag 1/6

De AT90CAN microprocessor van ATMEL in de motorvoertuigentechniek (4)

Digitale Systeem Engineering 1. Week 4 Toepassing: Pulse Width Modulation Jesse op den Brouw DIGSE1/

Inhoud Inhoud. Inleiding 1 Leerdoelen 1

PIC Callgever Door PA1RUM

Bouw je eigen minicomputer

LocoBooster HDM05 Disclaimer van Aansprakelijkheid

Ar-doe-wie-no. Voorwoord

ALGORITMIEK: answers exercise class 7

Classification of triangles

Het is geen open boek tentamen. Wel mag gebruik gemaakt worden van een A4- tje met eigen aantekeningen.

Naam + Klas: Laptop Nr: Cijfer:

SAMPLE 11 = + 11 = + + Exploring Combinations of Ten + + = = + + = + = = + = = 11. Step Up. Step Ahead

Introductie in flowcharts

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 3: Tijd, licht en warmte

Infographic De infographic geeft in grove lijnen het overkoepelend concept weer Your home remotely controlled Zie de infographic hier naast.

Locobuffer Handleiding

by illumicon CTCSS encoder Pietershoek XA Veldhoven The Netherlands fax

by Jody Culkin Bronnen die gratis gebruikt, verspreid of aangepast kunnen worden. meestal software of hardware.

L.Net s88sd16-n aansluitingen en programmering.

Weerstation. Weerstation met Arduino C.G.N. van Veen. HiSPARC. 1 Weerstation. 2 Arduino. 2.1 Werking van Arduino

NCTS - INFORMATIE INZAKE NIEUWIGHEDEN VOOR 2010

POPPIX-80. Bouwbeschrijving

Gebruikershandleiding. robotcar.nl

FAAC DRIVER. Driver install procedure for FAAC boards. Installatieprocedure voor driver voor FAAC-kaarten.

L.Net s88sd16-n aansluitingen en programmering.

Arduino Workshop. door Geert Roumen (CC) BY-SA. lemio.nl/arduino/

Bouw een deel van het JeeNode schema zoals beschreven op pagina 5 in de JeeNode handleiding in de handout, maar dan op het breadboard.

Technology, Innovation & Society Delft

Hardware High Speed Counters (HSC) dienen aangesloten te worden op de general-purpose inputs X0 t/m X7.

René Bos, T&M Consultant. Den Bosch 14 juni 2018

Gebruiksaanwijzing CABLE TESTER CT100. Professional 6-in-1 Cable Tester

Het µclab voor Arduino UNO, NANO en Arduino UNO pincompatible

MORSE aan een draadje

Quick start guide. Powerbank MI Mah. Follow Fast All rights reserved. Page 1

Praktijk Elektrotechniek:

ES1 Project 1: Microcontrollers

RECEPTEERKUNDE: PRODUCTZORG EN BEREIDING VAN GENEESMIDDELEN (DUTCH EDITION) FROM BOHN STAFLEU VAN LOGHUM

De Arduino-microcontroller in de motorvoertuigentechniek (3)

Voor de zend / luister amateur. Het berekenen van weerstand verzwakkers.

Module 1: werken met OPAMPS. Project 1 : Elementaire lineaire OPAMP schakelingen.

Automatische spoel installatie voor legionella preventie. NTKC - Bennie ten Haken 27 Mrt

Seven segments of Pi

by Jody Culkin Bronnen die gratis gebruikt, verspreid of aangepast kunnen worden. meesta software of hardware.

Preschool Kindergarten

Instructions assembly Decoderprintje 2

Transcriptie:

Bio-control Stresstester Dr. Arduino meet de huidweerstand Het is bewezen dat stress verschillende ziektes en aandoeningen kan veroorzaken. Vandaar dat er vele vormen van autogene ontspanningstraining op de markt zijn verschenen. Ook allerlei bio-feedback -schakelingen zijn populair geworden. De gedachte hierachter is dat bepaalde lichamelijke functies zoals hartslag, lichaamstemperatuur en hersenactiviteit kunnen worden gemeten en daardoor bewust kunnen worden bestuurd door de patiënt. De hier beschreven schakeling gebruikt de huidweerstand als indicator voor de mate waarin iemand gespannen is. Elektor Labs India De hardware is een elektronische schakeling die bestaat uit twee delen. Het eerste deel is een Arduino-shield met een timer-ic om een inputsignaal voor de microcontroller te genereren. Het tweede blok is opgebouwd rondom een Arduino Uno R-board. Dit verwerkt het door de gegenereerde signaal en geeft het resultaat weer op twee aan de microcontroller gekoppelde -segment-displays. De werking Zoals te zien is in het schema in figuur, is de LM (IC) geconfigureerd als een astabiele multivibrator. Wanneer de proefpersoon de sensordraden die zijn verbonden met K aanraakt, neemt de frequentie op de output van de toe. Elke verandering van de huidweerstand tussen de draden E en E zorgt ervoor dat ook de frequentie van de oscillator IC verandert. Het uitgangssignaal van de oscillator gaat naar pen van de Arduino Uno R-kaart. De software in de microcontroller berekent de stress als een percentage (0 99) op basis van het met behulp van de Arduino freqcounter-bibliotheek berekende ingangssignaal. Dit stresspercentage wordt dan onder besturing van het Arduino Uno R-board weergegeven als een getal van twee cijfers. Het tweecijferige display LD/LD wordt gemultiplext met behulp van de transistors T en T die de gemeenschappelijke kathode-aansluitingen naar massa schakelen. Software De firmware voor het project is ontwikkeld met de Arduino IDE.0.-software release en is helemaal geschreven in de taal C. Er is ook gebruik gemaakt van de freqcounter -bibliotheek voor Arduino voor de berekening en schaling van het ingangssignaal. Deze library is te downloaden van [] en de Arduino-sketch van []. De complete sketch is ook aangehecht aan dit artikel. elektor post Project No.

R k +V K R k 0k R P M 8 DIS R IC OUT THR LM TR CV COUNT T BC8 C B E BC8 C 0p C 0n T BC8 x HDSP-0 K +V 8 K POWER USB RESERVED IOREF RESET ARDUINO UNO V V GND GND Vin A0 A A A A A ANALOG IN POWER ATMEGA8 DIGITAL (PWM~) AREF GND ~ ~0 ~9 8 TX.> RX<0 K 0 9 8 8 K R R k k R R R R R8 R9 R0 LD 8 CC CC d p LD 8 CC CC a g a g b c d e f b c d e f 9 0 9 0 0- d p Figuur. Uit het schema blijkt al meteen dat dit project een Arduino-shield is. We zullen nu de belangrijkste functieblokken in de code bespreken. Setup Deze functie definieert de configuratie van alle pennen die als output of input worden gebruikt. De pennen,,,,, 8 en 9 zijn geconfigureerd als outputs en zijn verbonden met de pennen a, b, c, d, e, f en g voor de segmenten van het display. De pennen 0 en zijn ook geconfigureerd als outputs en zorgen voor de keuze tussen de twee -segment-displays. Pen is geconfigureerd als input en is verbonden met pen van de. Loop Hier gebruiken we de functies uit de freqcounter -bibliotheek om een constante stroom van pulsen op te wekken die we kunnen tellen. De getelde waarden worden als volgt geïnterpreteerd: Als de draden niet worden aan- geraakt, worden er 00 pulsen geteld (dit is in te stellen met instelpotmeter P). Deze waarde is het nul -niveau; alle waarden kleiner of gelijk aan 00 worden beschouwd als 0% stress. Als de draden worden aangeraakt, neemt de tellerwaarde toe. De waarde kan niet groter worden dan.000, dat is de maximumwaarde die we krijgen als de draden worden kortgesloten. Bij alle waarden boven.000 wordt 99% weergegeven, wat betekent dat de draden zijn kortgesloten. Het stress-percentage wordt berekend in verhouding tot deze maximale waarde. Display_seg(unsigned long stress_per) Deze functie krijgt de huidige stress-waarde als parameter mee. Hij zet de cijfers die berekend zijn in de functie loop() op de -segment-displays. picknumber(int x) Deze functie wordt aangeroepen met een weer te geven cijfer als parameter. Hij kiest dan de subroutine die het cijfer weergeeft. elektor post Project No.

Onderdelenlijst Weerstanden R = 0kΩ % 0,W R,R = kω % 0,W R-R0 = 0Ω % 0,W R,R =,kω % 0,W P = MΩ instelpotmeter Condensatoren C = 0nF C = 0pF Halfgeleiders IC = LMCN/NOPB T,T = BC8 LD,LD = SBC-EGWA (Kingbright) -segment LED-display, CC Diversen K,K = 8-polige pinheader K = 0-polige pinheader K = -polige pinheader K = -polige schroefconnector voor printmontage Arduino Uno R Print 0 Figuur. De voor het stressmetershield ontworpen print. Opbouw De schakeling wordt opgebouwd op de print die te zien is in figuur. Er worden alleen normale, bedrade componenten gebruikt dus de opbouw zou geen probleem moeten zijn. Als de kaart is bestukt en gecontroleerd, kunnen we hem op de Arduino aansluiten. Programmeer de Arduino met de firmware. Figuur. De Arduino-stressmeter in gebruik. elektor post Project No.

Het gebruik Schakel de Arduino in. Sluit de sensordraden kort en controleer de waarde op het display: die zou 99 moeten zijn. Als dat niet het geval is, stel dan instelpotmeter P bij tot er 99 op het display staat bij kortgesloten draden. De schakeling is dan klaar voor gebruik. We kunnen nu een stressniveau meten door met elke hand één draad vast te houden. Het is niet nodig hard in de draden te knijpen. Het meetresultaat verschijnt op het -segmentdisplay zoals in figuur. Praktijktests hebben aangetoond dat waarden onder % een normaal stressniveau aangeven; waarden groter dan % wijzen er op dat de proefpersoon min of meer gespannen is. (0) Een alternatieve kalibratiemethode met behulp van USB Verbind de schakeling via USB met de computer en start HyperTerminal. Controleer de waarde van frq (frequentie-input) in het terminalvenster: die zou tussen 0 en 00 moeten zijn. Als dat niet het geval is, verdraai dan de instelpotmeter tot het klopt. Weblinks [] Arduino frequentieteller-bibliotheek: http://interface.khm.de/index.php/lab/experiments/arduino-frequency-counter-library/ [] Arduino-sketch: www.elektor-magazine.com/post Programma listing Stress_Tester.ino Download van: www.elektor-magazine.nl/post //********************************************************************************** //Project Name: Stress Tester //Microcontroller:ATmega8p(Arduino Uno R) //This project is used to measure the percentage of stress of a humans body on the basis of skin //resistance. In order to achieve this we have used a circuit //to generate the input signal, this uses the LM IC to generate the pulse when the electrodes //are touched the frequency of the signal increases and this frequency is fed as input to pin //of MCU. Percentage of this pulse count with respect to 000 is displayed onto two seven segment //displayed connected to pin,,,,,8,9,0, of arduino uno board. Human body stress cannot //exceed a frequency of khz and hence the maximum value of count is considered as 000. #include <FreqCounter.h> unsigned long frq,f,init_freq; int cnt; int apin = ; int bpin = ; int cpin = ; int dpin = ; int epin = ; elektor post Project No.

int fpin = 8; int gpin = 9; int SEG = 0; int SEG = ; int num,count,i; int dig = 0; int dig = 0; int dig = 0; int dig = 0; int DTime = ; int j; void setup() Serial.begin(900); pinmode(apin, OUTPUT); pinmode(bpin, OUTPUT); pinmode(cpin, OUTPUT); pinmode(dpin, OUTPUT); pinmode(epin, OUTPUT); pinmode(fpin, OUTPUT); pinmode(gpin, OUTPUT); pinmode(seg, OUTPUT); pinmode(seg, OUTPUT); count = ; void Display_seg(unsigned long init_freq) num = init_freq; dig = num / 0; dig = num - (dig *0); digitalwrite( SEG, HIGH); //digit picknumber(dig); delay(dtime); digitalwrite( SEG, LOW); digitalwrite( SEG,HIGH); //digit picknumber(dig); delay(dtime); digitalwrite( SEG, LOW); //********************************************************************************* void loop() // wait if any serial is going on Display_seg(init_freq); FreqCounter::f_comp=0; // Cal Value / Calibrate with professional Freq Counter FreqCounter::start(00); // 00 ms Gate Time elektor post Project No.

while (FreqCounter::f_ready == 0) // until pulse occurs on input pin Display_seg(init_freq); //display the value of frequency onto the seven segment display frq=freqcounter::f_freq; //put the calculated frequency value in frq variable, //this value is calculated and passed rom the "freqcounter" file Display_seg(init_freq); //Display the value of frequency onto the seven segment display //calibration of input frequency value to calculate percentage of stress if (frq < 0) //when electrodes remain untouched the frequency value is <=000, //hence this value is considered as zero value of stress init_freq = 0; Display_seg(init_freq);//Display the value of frequency onto the seven segment display else f = frq - 0; // if value greater than 0 then the value if first brought to its //reference zero value by subtracting 0 from it if (f > 000) //check if value is less than 0 as the human stress cannot me more //then khz if(count == ) init_freq = 0; count = 0; else init_freq = 99; // if value is above 0000 then stress percentage is 99 else //percentage is calculated of value obtained from input signal init_freq = ((f * 00) / 000); Display_seg(init_freq); Display_seg(init_freq); Serial.print("frq"); Serial.println(frq); Serial.println(f); Serial.print("Stress"); Serial.println(init_freq); //********************** pick the digit to be displayed onto the seven segment ***** void picknumber(int x) switch(x) elektor post Project No.

case : one(); break; case : two(); break; case : three(); break; case : four(); break; case : five(); break; case : six(); break; case : seven(); break; case 8: eight(); break; case 9: nine(); break; default: zero(); break; //************************** clear all segments of the display ********************** void clearleds() digitalwrite(, LOW); // A digitalwrite(, LOW); // B digitalwrite(, LOW); // C digitalwrite(, LOW); // D digitalwrite(, LOW); // E digitalwrite( 8, LOW); // F digitalwrite( 9, LOW); // G //************************** Display digit one() on seven segment ****************** void one() digitalwrite( apin, LOW); digitalwrite( dpin, LOW); digitalwrite( fpin, LOW); digitalwrite( gpin, LOW); * //************************** Display digit two() on seven segment ******************* void two() digitalwrite( cpin, LOW); digitalwrite( epin, HIGH); digitalwrite( fpin, LOW); * //************************** Display digit three() on seven segment ***************** void three() elektor post Project No.

digitalwrite( fpin, LOW); * //************************ Display digit four() on seven segment ******************* void four() digitalwrite( apin, LOW); digitalwrite( dpin, LOW); * //************************ Display digit five() on seven segment ******************** void five() digitalwrite( bpin, LOW); //************************* Display digit six() on seven segment ******************* void six() digitalwrite( bpin, LOW); digitalwrite( epin, HIGH); //************************* Display digit seven() on seven segment ***************** void seven() elektor post Project No. 8

digitalwrite( dpin, LOW); digitalwrite( fpin, LOW); digitalwrite( gpin, LOW); //************************* Display digit eight(8) on seven segment ***************** void eight() digitalwrite( epin, HIGH); * //************************* Display digit nine(9) on seven segment ******************* void nine() //*************************** Display digit zero(0) on seven segment **************** void zero() digitalwrite( epin, HIGH); digitalwrite( gpin, LOW); * elektor post Project No. 9