FACULTEIT DER ELEKTROTECHNIEK TECHNISCHE UNIVERSITEIT EINDHOVEN vakgroep medische elektrotechniek
HAALBAARHEIDSSTUDIE NAAR EEN ADEMFREQUENTIEMETER door
Ruud Jeurissen
Rapport van het stagewerk uitgevoerd van maart 1989 tot november 1989 onder leiding van ire W.H. Leliveld met medebegeleiding van dhr. H.J.M. Ossevoort Ir. A. van uitert Ir. R. W. M. Mathijssen DE FACULTEIT DER ELEKTROTECHNIEK VAN DE TECHNISCHE UNIVERSITEIT EINDHOVEN AANVAARDT GEEN AANSPRAKELIJKHElD VOOR DE INHOUD VAN STAGE- EN AFSTUDEERVERSLAGEN
i
Samenvattinq Iedere sporter wil maximaal presteren zonder zich te forceren. Oaarvoor zou hij eigenlijk het melkzuurgehalte in zijn bloed in de gaten moeten houden. Stijgt dit gehalte te sterk, dan belast hij zichzelf te zwaar, en moet hij zich inhouden. Oat dit in de praktijk niet haalbaar is, moge duidelijk zijn. Er zijn echter sterke aanwijzingen dat observatie van de fysieke belasting ook kan plaatsvinden via de ademhalingsfrequentie. oit verslag beschrijft een onderzoek naar de haalbaarheid van een ademfrequentiemeter om deze hypothese te toetsen. Aangezien we de ademfrequentie willen bepalen via het meten van de borstomvang, beginnen we met een inventarisatie van analoge sensoren. Oaarvan worden LOR I S , piezo-folie en elektrisch geleidend rubber nader bekeken. Voor het rubber zijn een mechanische construktie en meetschakeling gemaakt, om de sensor uit te testen. Vervolgens is er een digitaal schema rond een microcontroller ontworpen en getest. Oeze dient samen met een assembly-programma voor de verdere digitale verwerking. Oit programma is nog niet geschreven, maar een mogelijke globale opzet wordt weI besproken. Ais algehele conclusie kan gesteld worden dat de bouw van een ademhalingsfrequentiemeter mogelijk is, indien het geleidend rubber mechanisch sterk genoeg is.
ii Inhoudsopgave 1.
Inleiding
1
2.
De ademfrequentiemeter algemeen
2
2.1
Medische achtergrond
2
2.2
Eisen en globale opbouw
3
3.
4.
5.
6.
De analoge opnemer
6
3.1
Een sensor inventarisatie
6
3.2 3.3
LDR's als sensor piezo folie
9
3.4
Geleidend rubber
18
3.5
Meetschakeling
20
3.6
Testfase
22
11
De digitale gegevensverwerking
24
4.1
AD-converter
24
4.2
Microcontroller
28
4.3
RAM en EPROM
32
4.4
LCD display
33
Het assembly-programma
35
5.1
Testprogramma
35
5.2
Aanwijzingen voor het eindprogramma
35
Conclusies en aanbevelingen
44
Literatuurlijst
45
Bijlage 1
Testresultaten sensor met 2 LDR's
46
Bijlage 2
Testresultaten geleidend rubber
47
Bijlage 3
De volledige meetschakeling
48
Bijlage 4
Het volledige digitale schema
49
Bijlage 5a
Opsomming gebruikte variabelen uit 5.2
50
Bijlage 5b
Flowdiagram van hoofdprogramma uit 5.2
51
Bijlage 5c
Flowdiagram van interruptroutine uit 5.2
52
1
1.
Inleiding
heeft de vraag De vakgroep Medische Elektrotechniek (EME) ontvangen, om een apparaat te ontwikkelen dat in staat is om de ademfrequentie te meten. En weI om de volgende reden. Wanneer iemand zich inspant, neemt de melkzuurproduktie vanaf een bepaalde belasting (omslagpunt) meer dan evenredig toe. Bij een slechte conditie zal dit omslagpunt bij een lagere belasting liggen. Neemt de belasting verder toe, dan raakt de persoon snel oververmoeid. Een sporter die optimaal wil presteren zonder zijn lichaam over te belasten, zal dus net beneden dit punt moeten blijven. Het meten van het melkzuurgehalte is echter geen eenvoudige zaak, en kan aIleen in een kliniek of laboratorium plaatsvinden. Volgens Dr. H. Kuipers (inspanningsfysioloog aan de Rijks Universiteit Limburg (RUL) in Maastricht) zijn er echter aanwijzingen dat er voor de ademhalingsfrequentie ook zoln omslagpunt bestaat, dat samenvalt met dat van de melkzuurproduktie. Wanneer de ademfrequentie eenvoudig gemeten zou kunnen worden, dan zou een sporter zich kunnen instellen op het ideale punt van zijn belastingskromme. Deze hypothese moet echter eerst nog getoetst worden. Vandaar dit ontwerp voor een ademfrequentiemeter. Het ontwerp is ruwweg op te splitsen in drie delen. Te weten de analoge opnemer, een digitale schakeling en het bijbehorende assembly-programma. In dit verslag wordt de haalbaarheid van elk onderdeel apart onderzocht.
2
2.
De ademfreguentiemeter alqemeen
2.1
Medische achterqrond
Wanneer iemand zich inspant, neemt vanaf een bepaalde belasting de melkzuurproduktie in de spieren meer dan evenredig toe (omslagpunt). Voorbij dit punt ga je jezelf overbelasten, met als gevolg dat er na verloop van tijd blijvende schade kan ontstaan. Bij welke belasting dit punt ligt, is afhankelijk van de conditie (zie figuur 2.1). Voor een sporter is het dus ideaal om net beneden dit punt te blijven tijdens trainingen en wedstrijden. Zo presteert hij namelijk optimaal zonder oververmoeid te raken. Het moge duidelijk zijn duurbelastingen, en beschouwing laten.
dat we het kortstondige
hier dan hebben over krachtexplosies buiten
Maar hoe weet een sporter in welk punt van ZlJn belastingskromme hij zich bevindt? De meest betrouwbare methode om hier een antwoord op te vinden, ligt in het meten van het melkzuurgehalte rnelk
~Ul.{r
proJu
~iic
/
aclern fre'llJen ti~
slec:.hte
goede
cond; tie
condirie
boveng-re n ~ be'fl€ d en gren!>
o rn~lalf pu nt I~
-I
marge
--~~ beJs5ting
fig. 2.1 Het verbend tussen belasting en melkzuurprodJctie/ademfrequentie, en de invloed van de conditie op dit verbend. (bron: Dr. Kuipers)
in het bloed.
Zoln test voIgt echter een redelijk ingewikkelde
procedure, welke continue observering nagenoeg onmogelijk maakt. Deze methode schiet bij alledaags gebruik dus al snel tekort.
3
Als tweede mogelijkheid denk je al snel aan de hartslagfrequentie. De hartslagfrequentie neemt inderdaad toe bij grotere belastinge Is men bereid te investeren in een hartslagfrequentiemeter, dan
kan men
zich
tijdens de
sportbeoefening instellen op een
bepaalde frequentie. Helaas valt volgens Dr. Kuipers het omslagpunt van de melkzuurproduktie niet altijd samen met een bepaalde hartslag.
Deze is namelijk te sterk afhankelijk van andere fac-
toren zoals bijvoorbeeld de omgevingstemperatuur. De hanteerbaarheid van de apparaatjes scoort redelijk hoog,
maar de geprodu-
ceerde gegevens geven dus niet meer dan een grove indicatie over de belasting. Ook deze methode is dus verre van ideaal. De ademfrequentie biedt misschien wat meer hoop. Dr. Kuipers is via Dhr. fasemeter
Peters
(logopedist)
(lit.1).
Dit
is
in aanraking gekomen met de adem-
een apparaatje
wat via een rekbare
band om buik of borst het verloop van de ademhaling visueel en auditief observeerbaar maakt.
Dr.
Kuipers vermoedt dat er voor
de ademfrequentie een omslagpunt bestaat, wat ongeveer samenvalt met dat van de melkzuurproduktie (zie figuur 2.1). Om deze hypothese te toetsen kwam Dr. Kuipers met het idee een ademfrequentiemeter te bouwen welke op een vergelijkbaar principe werkt als de ademfasemeter. Omdat bij ademhaling van enige betekenis de borstademhaling automatisch groter wordt dan de buikademhaling, geeft eerstgenoemde aanleiding tot een groter meetsignaal. Aangezien we voor de frequentie maar een van de twee nodig hebben, beperken we ons tot de borstademhaling.
In een proefopstelling aan de RUL zou met de
ademfrequentiemeter het verloop van de ademfrequentie kunnen worden vergeleken met het verloop van de melkzuurproduktie.
2.2
Eisen en globale opbouw
We willen een klein en licht apparaatje dat via de rek van een elastische band om de borst, de ademfrequentie bepaalt en op een display zet. We willen nu met onze lichamelijke belasting binnen een bepaalde marge rond het omslagpunt blijven (zie figuur 2.1).
4
De meter heeft daartoe een instelbare beneden- en bovengrens. Als een van deze grenzen overschreden wordt, genereert de meter een signaal dat aangeeft of de sporter er zonder problemen harder tegenaan kan, of zich juist moet inhouden. Aangezien men sterk geinteresseerd is in de duurbelasting, bevat de ademfrequentiemeter een geheugen waar gedurende een bepaalde tijd periodiek de ademfrequentie in kan worden opgeslagen. Na afloop kunnen deze waarden dan in een computer gelezen, en verder geanalyseerd worden. Dit zijn in het kort de meer functionele eisen. Meer specifieke eisen van Dr. Kuipers zijn: Bereik .•......... :
10 - 70 ademhalingen per min (0,2 - 1,2 Hz zonder hogere harmonischen)
Band ..•........•. :
De band moet zo comfortabel mogelijk zijn. Dus voldoende elastisch en niet te smal (anders gaat hij snijden).
Data opslag ...•.. :
Voor de duurbelasting is twee keer per minuut opslaan gedurende 12 uur meer dan voldoende.
Samplefrequentie. :
Er moeten niet teveel metingen per minuut gedaan worden, anders gaat het alarm van de meter al af wanneer de gebruiker een keer hoest. Omdat zoals zal blijken de frequentiemeting neerkomt op periodetijd meting, bepalen we (vanwege nauwkeurigheid, en de reden hierboven) de tijd van bijvoorbeeld vier ademhalingen, en berekenen daaruit de frequentie.
Vormgeving .•..... :
Gedacht wordt aan een display ter grootte van een flink horloge. Het apparaatje moet natuurlijk zo klein en licht mogelijk zlJn. Aangezien dit verslag gezien moet worden in het licht van een haalbaarheidsstudie, zlJn deze eisen meer van toepassing op eventuele latere uitontwikkeling.
5
Met deze eisen kunnen we de globale opbouw uit figuur 2.2 verklaren. We beginnen met een elastische band om de borstkas. Hierin is ook de sensor opgenomen. Deze geeft een signaal af dat een maat is voor de borstomvang. Dit signaal wordt door de
digit..l
fig. 2.2 Globale opbouw van de ademfrequentie .eter.
analoge meetschakeling bewerkt en in een geschikte spanning omgezet. Deze spanning wordt dan in de digitale verwerking omgezet in een digitale waarde. Uit deze meetwaarden wordt de frequentie berekend, op het display gezet, en opgeslagen in het geheugen. Met de instelling kunnen we de beneden- en bovengrens instellen. Bij overschrijding van deze grenzen treedt het alarm in werking.
6
3.
De analoqe opnemer
De opnemer vormt het grootste struikelblok binnen het ontwerp van de ademfrequentiemeter. De gekozen oplossing zal niet aIleen het zit-comfort beinvloeden. Ook zal de haalbare nauwkeurigheid van de frequentiemeting afhangen van de vorm van het uitgangssignaal van de sensor. Tevens mag het door de sensor afgegeven signaal niet te sterk afhangen van temperatuur en vochtigheid (zweet). Ook moet de band geschikt zijn voor dagelijks gebruik. Tenslotte merken we op dat de robuustheid niet aIleen van het sensortype afhangt, maar ook in grote mate bepaald wordt door de gekozen construktie. Dit laatste vormt echter geen onderdeel van de stage, en wordt dan ook niet in ogenschouw genomen. V66r ons liggen nu vier eisen, aan de hand waarvan we zullen trachten een geschikte sensor te selecteren.
3.1
Een sensor inventarisatie
Als eerste noemen we de schuif- en draaipotmeter. Deze hebben als voordeel dat ze een redelijk eenvoudig te verwerken signaal afgeYen, dat indien goed gebruikt (als spanningsdeler) weinig afhankelijk is van temperatuur en vochtigheid. Nadeel is echter de mechanische slijtage. Vanwege dit laatste valt dit type sensor eigenlijk al af. Men zou ook met rekstrookjes kunnen werken. Deze zijn echter nogal gevoelig voor vocht (hoewel je ze misschien eenvoudig van een beschermende laag kunt voorzien). Aangezien de band niet mag knellen, kunnen er op de strookjes slechts kleine krachten worden uitgeoefend. Dit heeft weer tot gevolg dat de toch al niet bij zonder grote weerstandsverandering tot een absoluut minimum wordt beperkt. Een klein signaal geeft aanleiding tot een slechte signaaljruis verhouding. Kortom, de meetschakeling wordt er niet eenvoudiger Ope Een
voor
de
hand
spieractiviteit.
liggende
Daarbij
oplossing
ligt
in
het
meten
van
is echter teveel storing van naburige
7
spieren zoals die van armen en het hart. Een tweede probleem hierbij is dat niet iedereen met behulp van dezelfde spieren ademhaalt. Dit maakt deze methode praktisch onrealiseerbaar. Als vierde noemen we de capacitieve opnemers. Een goede construktie ligt niet erg voor de hand. Voor de verwerking zal ongetwijfeld worden teruggegrepen op een wisselstroombrug. Al met al geen voor de hand liggende keuze. Als tegenpool van de capacitieve opnemers bestaan er inductieve opnemers. We kunnen de inductiviteit veranderen door een staafje van hoge permeabiliteit in en uit een spoel te schuiven. Met een wisselstroombrug
kan
de
induktie
gemeten
worden.
Wanneer
we
echter een magnetisch staafje binnen de spoel bewegen, verkrijgen we een inductie-spanning aan de uitgang, welke gefntegreerd een maat voor de uitwijking oplevert. Aangezien een integrator in de praktijk een eindige integratietijd heeft, zal de invloed van een offset-verandering automatisch uitdempen. Hierdoor is tevens een nulinstelling gerealiseerd. De meetschakeling zal door deze twee punten van
acceptabele
omvang
zl.)n.
Bewegingen
radiaal
op de
lengte-as van de spoel (denk aan schokken bij het rennen) zullen waarschijnlijk geen al te grote storingen teweeg brengen, daar zij theoretisch heel weinig inductie-spanning opwekken. Een goede bevestiging kan echter nog problemen opleveren. De
zesde
categorie
sensors
wordt
gevormd
door
de
optische
opnemers, en dan met name de LOR (light dependent resistor). Een LOR kent namelijk een vrl.) grote weerstandsverandering, wat betrekkelijk eenvoudig te verwerken is. Vergeleken met een gewone potmeter kent een LOR geen slijtage. Nadeel is weI dat de LOR (in tegenstelling tot de schuifpotmeter) in de praktijk om een echte construktie vraagt, die in staat moet zijn om verplaatsing om te zetten in een behoorlijke lichtintensiteits-verandering.
In 3.2
vindt u twee voorbeelden van mogelijke uitvoeringen. Piezo electrische opnemers hebben als voordeel dat ze hanteerbaar, klein en licht zijn. De nieuwste ontwikkeling op dit gebied is de piezo folie PVDF (polyvynilidene fluoride).
Deze folie is
sterk en zeer buigzaam. Piezo electrische opnemers zijn over het
8
algemeen meer geschikt voor hogere frequenties. De meeste hebben een ondergrens van enkele Herz, vanwege de lekweerstand. PVDF heeft echter als goede isolator een ondergrens van ongeveer 0,015 Hz. Dit zou voldoende moeten Z1]n voor onze toepassing. De invloed van vocht op PVDF zelf is niet erg groot. De contacten liggen echter open en bloot op de folie, hetgeen enige vorm van vochtwering toch weI noodzakelijk maakt. Nadeel is het kleine signaal dat wordt afgegeven: Door de hoge inwendige weerstand van de folie (die in serie staat met de meetschakeling), staat er een groot deel van de ontstane spanning over de folie in plaats van over de meter. Om toch een signaal over te houden, moeten we dus gebruik maken van een meetschakeling met een hoge inwendige weerstand. Deze intruduceert dan weer ruis, zodat de signaal/ruis verhouding verslechtert. Tenslotte moet er nog een construktie voor de band bedacht worden om de veranderingen in borstomvang om te zetten in een druk op de folie. Daarbij is het weI een voordeel dat PVDF zonder problemen naar behoeven kan worden geknipt en geplakt. Meer over PVDF vindt u in 3.3. Als laatste bekijken we geleidend rubber. Ook dit is een nieuw produkt. Het wordt voornamelijk gebruikt als elektrische afscherming. Het is redelijk elastisch, en kan tussen de band worden gezet, die om de borstkas komt. Rekt men het rubber uit, dan neemt de weerstand toe. De weerstand van een stukj evan ruwweg 20 x 5 em
is een paar Ohm (gemeten in de lengterichting). Dit is erg klein, wat de sensor ongevoelig maakt voor bijvoorbeeld electromagnetische storingen en vocht. Over de mechanische stabiliteit is echter nog weinig bekend, aangezien dit materiaal Z1]n toepassing als sensor nog niet gevonden heeft. Enige informatie betreffende vooral de duurbelasting zou dan ook welkom Z1]n. De eenvoudige praktische implementatie en het uitkomende signaal rechtvaardigen echter een nadere studie die u in 3.4 en 3.5 terugvindt.
9
3.2
LOR's als sensor
De ademfasemeter maakt gebruik van een LDR (Light Dependent Resistor) (lit. 1). Deze LDR is samen met een LED (Light Emitting Diode in een kastje gebouwd. Dit kastje moet het licht van buiten, en het indirecte licht van de LED bij de LDR vandaan houden. Er is een klein, reflecterend (wit) driehoekje in het kastje opgenomen. Dit stukje weerkaatst een gedeelte van het licht uit de LED naar de LOR (zie figuur 3.1). Wanneer de band nu
fig. 3.1
Het principe met 1 LOR, waarmee de ademfasemeter werkt.
wordt uitgerekt, zal de LDR een groterdeel van het witte driehoekje I zien I , en zal dus meer licht van de LED op de LOR vallen. De weerstand daalt dus bij uitrekken van de band. Deze variatie in weerstand wordt in de ademfasemeter gemeten met
fig. 3.2
Twee LOR's els variabele spenningsdeler. Vout is afhankelijk van de pleets van de LED.
10 behulp van een brugsehakeling, gekoppeld versterker met hoge ingangsimpedantie.
aan
een
versehil-
Men kan ook gebruik maken van twee LOR's. In serie gesehakeld, vormen deze dan een variabele spanningsdeler (zie figuur 3.2). Omdat we twee LOR's in serie gebruiken, zal de temperatuursafhankelijkheid verkleind worden. Oaalt de onderste LOR in weerstand ten gevolge van temperatuursehommelingen, zal de bovenste LOR ook beter gaan geleiden. Bij gebruik als spanningsdeler zal de uitgangsspanning nauwelijks varieren. We monteren nu een LED op de band, en zetten de 2 LOR's voldoende ver uit elkaar (zie figuur 3.3). Bewegen we
fill. 3.3 Een geteste constructie IlIet 2 LOR's. De constructie IIIOet het licht van buitenaf %0 goed mogelijlc. bij de LDR's vardaan houden. Dit geldt overigens ook. voor het I icht van de LED dat Ban de binnenk.ant weerkaatst.
de band nu naar reehts, dan zal de linker LOR minder lieht ontvangen en de reehter meer. De uitgangsspanning zal als gevolg van de weerstandsverandering in be1de LOR's varieren. We hebben nu dus een 'sensor' die verplaatsing direkt omzet in spanning. In bijlage 1 vindt u de meetresultaten van een testexemplaar. De LOR's stonden ongeveer 10 em uit elkaar. We zien dat de heengaande en teruggaande krommen niet preeies samenvallen ten gevolge van wrijving tussen band en kastje (stiksie). Oit zorgt voor een onnauwkeurigheid van maximaal 0,25 em indien we de uitwijking beperken van 1,5 em tot 7,0 em. Op de maximale uitwijking (7,0-
11
=
is dat 100%'0,25/5,5 ~ 5 %. In de praktijk hoeft dit geen probleem te z1Jn, aangezien dit verschijnsel aIleen optreedt bij de wisseling van in- en uitademen. Dit betekent dat bepaalde storingen sterk verzwakt worden: Wanneer bij een bepaalde borstomvang de 'gemeten borstomvang' per ongeluk (bijvoorbeeld door verschuiven) iets verandert, zal de uitgangsspanning niet 1,5
5,5 cm)
veranderen zolang deze storing < 0,25 cm is. WeI zullen de toppen van de ademhalingspulsen afgeplat worden. De sensor levert weI een groot signaal af
(ruwweg 1-8 V bij
een voeding van 9 V),
hetgeen de invloed van ruis verlaagt, en de complexiteit van de meetschakeling vermindert. Beide toepassingen van LOR's als sensor hebben als groot nadeel dat ze een licht-dicht kastje nodig hebben. Dit zal het draagcomfort zeker niet verhogen. WeI zou de construktie welke gebruik maakt van het tweede principe nog sterk verkleind kunnen worden (vooral platter).
3.3
Piezo-folie Piezo electriciteit en PVDF
3.3.1
Piezo
electriciteit
staat
voor
het
verschijnsel
dat
kristal-
roosters electrisch gepolariseerd kunnen worden, door ze bij hoge temperatuur (boven de 'Curie temperatuur') in een elektrisch veld te plaatsen.
Door dit elektrische veld te handhaven tijdens het
afkoelen, worden de tijdens de hoge temperatuur gerichte dipolen in hun positie bevroren. Het materiaal heeft nu een continu elektrisch veld, hetgeen meetbaar is aan de spanning die over het rooster staat. Wanneer nu de afmeting in de richting van het veld verandert (ten gevolge van krachten), verandert daardoor ook de spanning over het rooster. Analoog hieraan kan de vorm van een piezo electrisch element verandert worden door de stof in een elektrisch veld te plaatsen. oplopen
tot
enkele
De spanning over het rooster kan
honderden
volts,
maar
door
de
zeer
hoge
inwendige weerstand dient het materiaal altijd zeer hoogohmig te worden
afgesloten,
wil
men
veranderingen
kunnen
meten.
piezo
12 electrisch materiaal wordt onder andere toegepast in aanstekers, pick-up elementen voor platenspelers, microfoons en versnellingsmeters. PVOF (polyvinylidene fluoride) is geen stug kristal, maar een zeer flexibele, plastic folie. Ook bij PVOF zijn de electrische en mechanische eigenschappen dus richtings afhankelijk. Bij PVOF duiden we de richting van het electrische veld aan met de 3richting. oit is de richting waarin de dikte wordt gemeten (in de orde van 10- 5 tot 10- 3 m). Bij ons is dit dezelfde richting als waarin de kracht werkt.
Voor de berekeningen zijn de volgende
grootheden van belang (eerste index is richting electrisch veld; tweede index is richting kracht):
dB
=
Capaciteit
C
Impedantie
Zo
= = =
strain constant
electrode lading/oppervlakte eenheid electrode kracht/oppervlakte eenheid 33.10- 1 2 C/N 379.10.
12
1,5'10 12
F/cm 2 nm
voor 28 J.l.m folie
Vol gens de fabrikant Kynar is de waarde van d 33 ongeveer lOx hoger (lees: beter) dan die van keramisch materiaal. Oeze waarde is weI temperatuurgevoelig waardoor d 33 weI zo'n 10 % kan afwijken in ons bereik. d 33 Heeft echter· aIleen invloed op de amplitude, en stabiliseert zich na een tijdje. Het vervangingsschema staat in figuur 3.4. Oe ondergrens van het frequent iebereik van PVOF ligt rond de 0,02 Hz, hetgeen voor onze toepassing toereikend moet zijn.
,.----0
1=
Q
< ) f'1------i
~
T
d
o
fig. 3.4 Het vervangingsschems voor piezo-folie.
Het
proefstukje
1,5cm 4cm o
=
6 cm
was 2
°
52
J.l.m
dik,
We verwachten dus:
en
had
een
oppervlak
van
13
Cf
~
28E.£m 0 379 010-'2--L 0 6cm 2 cm 2 52J.Lm
=
Zo
~
52E.£m 01 5 010'2n 6cm 2 ' m
n
=
1,3 010"
1,2 nF
De impedantie Zo bestaat uit een condensator Cf lekweerstand Rf :
Zo
I
= Zo
1
1/Rf
+
I =
(1
SCf
=
Rf
+ Rf
t
Cf
Rf
+
1
(3.1)
SR f C f
1 2 )
parallel aan een
~
< R -
(3.2)
f
We zien dus dat het proefstukje met
Rf
~ Zo
~ 1,3 010"
n
een te
verwaarlozen geleiding heeft.
3.3.2
Meetschakeling
De pJ.ezo folie heeft een te hoge inwendige weerstand voor een spanningsmeting. Vandaar dat we de ladingsversterker uit fiquur 3.5 toepassen. Aangezien we hier werken met Kleine ladingen (en stromen), gebruiken we een OpAmp met een lage input bias stroom.
[ .. .JQ dt
t
I
V,
fig. 3.5 Met dne ladingsversterker wordt de gegenereerde lading angezet in een speming. Ook vindt er een eerste filtering pleats.
De gebruikte TLC 27 L4 CN bevat vier OpAmp' s met FET-ingangen. De FET's zorgen voor een input bias stroom van minder dan 40 pA. We zijn nu geinteresseerd in de uitgangsspanning als functie van de Kracht F op de piezo folie. We zien in figuur 3.5 dat A,
is
14 tegengekoppeld via Rz en Cz • In het ideale geval is daarmee V. = V+ = 0 V De stroombron ziet dus als impedantie: 1 = ----..,..,:----SC + l/R + 1/R
Z1
f
f
1
~
1 ---=---=SC + 1/R =
f
1
(3.3)
De stroombron geeft aanleiding tot een spanningsval over deze impedantie ter grootte
v
=
R1 d (F·d3 3 I· Z1 = QQ. dt 1 + sR1 Cf = dt s ·F = R1 •d 3 3 ·1 + sR1 Cf
) •
R1 1 + sR 1 Cf (3.4)
Van de stroom I gaat er een gedeelte I 1 door R1 • Voor I, geldt: I 1
= VR = 1
d. 33
s .F 1 + sR1 Cf
(3.5)
Deze stroom I 1 ziet in Rz en Cz weer een impedantie Zz: Zz = sC z
1 R~ = 1 + sRz Cz + l/Rz
s Va = -I 1 • Zz = - Rz •d n · (1 + sR, C ) • (1 + sR C ) ·F f z z
(3.6) (3.7)
Dit is een banddoorlaatfilter (zie figuur 3.6). Als f tussen f 1 en f z zit geldt: (3.8) In 2.2 werd er een bereik van 0,2 - 1,2 Hz opgegeven. Met Cf = 1,2 nF en R, = 10 Mn komen we tot f, = (2~R,Cf)'1 = 13,3 Hz. Deze ligt boven de 1,2 Hz, omdat anders R, te groot zou worden. Om Va groot te maken kiezen we Cz minimaal. Omdat Cz tevens moet voldoen aan f z = (2~RzCz)-1 ~ 0,2 Hz kiezen we Rz maximaal om Cz te minimaliseren. Met Rz = 10 Mn en Cz = 100 nF komen we tot f z = (2~RzCz)-' = 0,16 Hz, hetgeen net beneden de 0,2 Hz ligt.
15
IV.I
1 -----1~~
fig. 3.6
lJ
Frequentiekerekteristiek van de LedingsYersterker uit figuur 3.S. Q op het foL ie genereert verieert.
w Is de hoekfrequentie W8ennee de krecht F die de Lading
Het is moeilijk een schatting te maken van de kracht F. SteIIen we deze op 1 N (gewicht van ~ 100 g), dan komen we aan
I
VO,mex
= d 33 oFjCz = 33 010·'ZCjN o1Nj100nF = 0,33 mV (309)
Dit signaal is nog erg zwak. Vandaar dat de versterkerschakeling uit figuur 3.7 voIgt. Vanwege tegenkoppeling geldt weer V. = V+ (We Iaten Rs en Cs even buiten beschouwing door geIijkspanning te nemen): Vo
= R R,+ R oV, 3 4
V,
.V = (1 + h) R4 0
(3010 )
Met R3 = 10 Mn (voor een Iaag stroomverbruik) en R4 = 100 kO was de versterking ingesteld op 386x (dus R4 afgeregeld op 26 kO). Hierover meer in 3.3.3.
Cs
fig. 3.7 Het si9"l88L uit de Ledingsversterker wordt YervoLgens versterkt, weerne met RS en Cs de hoogste frequenti es Yerzwekt worden.
16
De
versterkerschakeling
wordt
doorlaatfilter rond Rs en quentie staat ingesteld op
=
direkt (zie
Cs
1 2"'·120kn-l~F
gevolgd
figuur
door
3.7).
een
Iaag-
De afsnij fre-
= 1,3 Hz
Om bij het testen een eenvoudig in- en uitadem signaal te krijgen, is er nog een Schmitt-trigger achter gezet (zie fiquur 3.8). Deze schakeling heeft een meekoppel-lus via
~.
Stel dat V,
zo
Iaag is dat A3 clipt tot +Vb (+V b is positieve voedingsspanning = +4,5 Vi -Vb is negatieve voedingsspanning = -4,5 V). De situatie zal dan zo bIijven zolang V,
< +ex-Vb
Daarna klapt V 2 om naar -Vb' en bIijft dit zolang > -ex -Vb Deze karakteristiek vindt u terug in figuur 3.8. We krijgen een V,
1/2
-O(·Vb
t
+Vb
O(·V"
- VI
-V..
fis. 3.8 De SChmitt-trigger met bijbehorende kerekteristiek.
uitgangssignaal dat niet dendert bij het omschakelpunt. Aangezien we uitgaan van batterijvoeding (9 V, +Vb
=
+4,5 V, -Vb
=
-4,5 V)
maken we zelf nog een massa voor de OpAmp schakelingen met behulp van de schakel ing uit
f iguur 3.9.
De weerstanden voor de span-
ningsdeler hebben een grote waarde voor een Iaag stroomverbruik. Hierdoor heeft de massa een hoge ingangsimpedantie, wat de spanning niet erg stabiel maakt. Met A4 realiseren we een Iage uitgangsimpedantie, waardoor ook wat grotere stromen de spanning van de massa ten opzichte van ±Vb niet aantasten. De twee condensatoren moeten wisselingen in Vb
teniet doen.
De elco zorgt tevens
voor het opvangen van korte stroompiekjes van en naar massa. Het schema van de volledige meetschakeling vindt u in bijIage 3.
17
fig. 3.9 Met dit schema krijgen we een Massa Met lage uitgangsweerstand.
3.3.3
Testfase
Bij het uittesten van de sensor plus meetschakeling gaf V,
een
redelijk glad aandoend signaal af. Er is met de hand geprobeerd om het krachtverloop na te bootsen dat op de folie zou worden uitgeoefend, wanneer dit in een construktie-met-band om de borstkas zou zitten. Het is echter ontzettend moeilijk om de juiste kracht op de folie uit te oefenen. De grootte van deze kracht bepaalt R4 (versterking). Het kan in een andere opstelling blijken dat R4 vervangen dient te worden door een andere potmeter, teneinde een goede instelling mogelijk te maken. Dit is echter nog maar een klein probleem als we denken aan het beperkte werkgebied (0,2 - 1,3 Hz). Het is essentieel dat de ademhalingspuls zeer goed wordt gesimuleerd in het verloop van de kracht. Dit is vrijwel onmogelijk zonder de plezo folie op te nemen in een werkelijke construktie-met-band welke om de borst kan worden gegespt. Het principe van zo' n construktie is geschetst in f iguur 3.10. Het vormvaste materiaal, de folie en het vervormbare materiaal worden aan elkaar gelijmt. Bij inademen wordt het vervormbaar materiaal ingedrukt, en oefent zo een kracht uit op de folie. Het vormvaste materiaal draagt zorg voor een gelijke verdeling van de kracht over het oppervlak.
18
Deze construktie is echter niet meer in de praktijk gebracht. Een goede uitspraak over de geschiktheid van piezo folie kan dan ook nog niet gedaan worden zolang dit materiaal niet in een werkelijke band is opgenomen.
vorm \/01 st mate ri.aal piizo -
vervorm baa r
fig. 3.10
3.4
'"J"
rndteriael
Een globaal idee Yolgens welke een bend met piezo-folie ken worden gemaakt.
Geleidend rubber
Elektrisch geleidend rubber maakt deel uit van een vrij nieuwe ontwikkeling, dat zijn toepassing als sensor nog niet gevonden heeft. Het is een redelijk elastische stof die elektrisch zeer goed
geleidt.
Bij
de
ontwikkeling
blijkt
de
chemische
en
mechanische stabiliteit het grootste probleem. EEMC (Elektronische, Electro-Mechanische Componenten bv) heeft materiaal in zijn assortiment, dat zilver en aluminium in een elastische struktuur gevangen heeft. De volume-resistiviteit van dit materiaal ligt rond de 0,008 ncm (1), zeer laag dus. Hoewel dit materiaal chemisch stabiel is, mag van de mechanische stevigheid niet te veel verwacht worden. Het materiaal wordt normaal gebruikt als elektrische afscherming. Bij gebruik als sensor, zal het materiaal licht worden uitgerekt, en zal het zijn oorspronkelijke vorm vanzelf weer moeten terugvinden. Enig cijfermateriaal omtrent de maximale rek of duurbelasting ontbreken. Wanneer dit materiaal daadwerkelijk gebruikt gaat worden, zal enig inzicht in deze grootheden noodzakelijk zijn. De gebruikte construktie vindt u in figuur 3.11. De mechanische bevestiging doet tegelijkertijd dienst als electrisch contact. Het rubber is in werkelijkheid aan de uiteinden een keer dubbel
19
gevouwen om te voorkomen dat deze tussen de twee messing plaatjes doorglipt bij belasting. We zien ook dat het rubber niet de volledige lengte-veranderingen hoeft op te vangen door het gebruik van een stukje elastiek. Er zou zelfs een nog kleiner stukj e gebruikt kunnen worden. Het afgegeven signaal wordt dan ook kleiner, maar dit nadeel weegt wellicht niet op tegen de afname in sensorkosten. De verwachte weerstand van het stukje (lxbxh bedraagt: 0,00sncmo20cm 3cmoO,lcm
=
0,53 n
=
20 x 3 x 0,1 cm)
(3.11)
Deze weerstand is gemeten op 2,3 n. Deze afwijking is waarschijnlijk te verklaren door de contactweerstanden en een variatie in p. Met uitrekken kan men de weerstand laten oplopen tot ongeveer 6 n. De weerstand blijft dus in ieder geval erg laag. Hierdoor vermindert de invloed van vocht.
fig. 3.11 Met deze constructie is het electrisch geleidend ribber getest. De lIIessing bevestigi~s strips doen tevens dienst als electrisch contact. De elastiek vangt een deel van de kracht op.
20
3.5 De
Meetschakelinq meetschakeling
is
opgebouwd
rond
vier
OpAmp's.
De
gehele
meetschakeling kan hierdoor in vier blokken verdeeld worden (zie figuur 3.12). AIle blokken worden gevoedt met 9V (-Vb = -4,5 Vi
-Vb
=
-4,5 V). Elk blok zullen we nu apart uitwerken.
weerstand rubber naar spaming
hoogdoorlaatfilter
1
massa met lege uitgangsimpedantie
laagdoorlaatfilter + DC-regel ing + versterlcer
+
versterlcer
I I
I
[
fig. 3.12 De meetschskeling voor het elektrisch geleidend rubber.
Allereerst zetten we de weerstand van het rubber om in een spanning. Het rubber heeft in de gebruikte construktie een zeer lage weerstand(sverandering).
Deze kunnen we meten met behulp van een
stroombron en een stroommeting (lit. 2). In figuur 3.13 geldt: V.
=
V+
=
0
= Vref-V. = Rr e
f
(3.12 )
Er vloeit een constante stroom I ref door het rubber. Deze stroom kiezen we niet te groot: 1 mAo Met Vref = +Vb = +4,5 V komen we op Rref = 4,7 kn. I ref bedraagt nu dus (4,5V)/(4,7kn) = 0,96 mAo De uitgangsspanning voIgt nu de weerstand van het rubber volgens formule (3.12): Va = -I ref oR x = -0,96mA oRx
v...
!
fig. 3.13 Deze stroomneting is geschikt voor het meten van lege weerstandswssrden.
21
Alvorens
we
dit
proberen
we
eerst
halen.
Anders
signaal
in
zoveel
wordt
het
tweede
mogelijk
deze
blok
offset
offset
gaan
uit
versterken,
het
meeversterkt,
signaal
te
loopt
de
en
versterker snel vast. Hiertoe plaatsen we voor de versterker een hoogdoorlaatfilter (zie figuur 3.14). Aan de ingang van de OpAmp staat een spanning
v+ =
=
Met R, f
=
R,
1 +R1/ sC, ·Va =
1,5 Mn en C,
(2~R,C,
)-,
=
=
1
1
sR 1 C1 'V a sR, C,
(3.13)
+
~F
hebben we een afsnijfrequentie van
0,11 Hz. Vervolgens zien we in figuur 3.14 een
versterker waarvoor geldt:
Voor
V+
= a·P 1 'V P, ,
V,
=
P,
1/a·V+
(3.14)
hebben we
een potmeter van 100 len in serie met 1 Mn
(welke aan de kant van de OpAmp zit)
genomen. Met P,
kunnen we
de versterking dus afregelen (deze was ingesteld op 38x).
~t-C-,t_ _-l
V.
1
fi9.3.14 Het hoogdoorlaatfilter haalt de offset
weg,
W8arna het signaal versterkt wordt.
Laten we R4 en Pz even buiten beschouwing, dan geldt voor de teruggekoppelde A3 : Het derde blok vindt u
1
R' 3
(V,
-Vout
in figuur 3.15.
- V. )
= &. R 3
(3.15 )
oit is een laagdoorlaatfilter. Met Rz de afsnijfrequentie ingesteld op f
=
= 820
len en Cz
(2~RzCz)·'
=
=
100 nF is
1,9 Hz. Met R3
= 10 len bereiken we een versterking van 82x. Voor Voffset
geldt
eenzelfde uitdrukking, maar aangezien dit een gelijkspanning is,
22 kunnen we s=o
invullen,
en krijgen we alleen de DC-versterking
van 82x. Met Pz kunnen we de offset in V1 compenseren. +\.{
C1
~
Ra
Rl Vj
!
1
Vorl
fig. 3.15 De laatste trap bevat behalve een versterkende configuratie ook een laagdoorlaatfilter. en een offset regeling voor Vout (instelbaar ~t PZ).
Tenslotte hebben we met de resterende vierde OpAmp uit het IC het vierde blok gerealiseerd: een massa met lage uitgangsimpedantie, zoals beschreven in 3.3.2. De totale versterking was ingesteld op 38 082
~
3120. De offset-
Voltage-drift van de gebruikte OpAmp (de TLC 27 L4 CN) heeft een 'typical value' rond
de
van 0,7
312000,7IlV/oC
IlV/oC. ~
2,2
De output-Voltage-drift zal dus mV/oC
liggen.
Dit
is
dus
te
verwaarlozen.
3.6
Testfase
Er zijn twee soorten tests gedaan. De eerste heeft plaatsgevonden met de proefpersoon in rust. Met de band om zijn borstkas gebonden,
is
va
gedurende zo' n
streerd, waarbij
50 sec met een XY-schrijver geregi-
het X-kanaal met een zaagtand werd gevoed. Het
resultaat vindt u in bijlage 2. We zien dat er in ieder geval al een duidelijk ademhalingssignaal te herkennen is.
De amplituden
van de pulsen verschillen echter nog in grootte,
maar dit komt
waarschijnlijk doordat de proefpersoon tijdens het experiment te bewust met
zijn
ademhaling bezig was,
regelmaat iets is verstoord.
waardoor de
natuurlijke
Ook zijn diepe zuchten gemakkelijk
te herkennen (derde pUls). Aan het einde zien we de DC-component
23
iets veranderen. Dit komt door het afzakken (en proberen weer omhoog te duwen) van de band. Twee korte bandjes over de schouders kunnen dit verhinderen. De tweede grafiek is van het tweede experiment, en Iaat de ademhaling van de proefpersoon gedurende zo'n 17 sec zien, nadat deze flink wat trappen op en af heeft gelopen. We zien dat de ademhalingsfrequentie is toegenomen. Wat echter belangrijker is, is dat de puIs meer constant van vorm is. De insteIIingen bij beide proefnemingen waren geIijk. De ademhalingen zijn dus ook dieper geworden. Al met al geeft deze tweede grafiek een ademhaIingsverIoop, waaruit het mogelijk moet zijn de frequentie te destiIIeren.
24
4.
De diqitale qeqevensverwerkinq
In dit deel moet het analoge signaal omgezet worden in een digitaal signaal, waaruit de ademfrequentie kan worden berekend. Deze frequentie dient dan allereerst op een display gezet te worden. Vervolgens wordt de waarde vergeleken met de ingestelde beneden- en bovengrens. Bij overschrijding dient een alarm in werking te treden. Indien mogelijk wordt de frequentie periodiek opgeslagen in een geheugen. Gezien de complexiteit van dit geheel, blijkt een microcontroller systeem de meest eenvoudige oplossing. Het volledige "digitale schema" staat in bijlage 4. In dit hoofdstuk worden de afzonderlijke bouwstenen besproken.
4.1
AD-converter
Er bestaan meerdere methoden om het analoge signaal om te vormen naar een digitaal signaal waaruit de ademfrequentie bepaald kan worden. Het voordeel van nivo-detektie ligt in de verdere verwerking. We krijgen namelijk een signaal dat aIleen aangeeft of de longen van iemand vol met lucht zitten (bij benadering), of vrijwel leeg zijn. Hieruit kunnen we dus gemakkelijk de frequentie bepalen. Nadelen zijn echter de invloed van offset op de nauwkeurigheid, en de dender rond het schakelnivo. De storingen rond dit schakelnivo kunnen we sterk onderdrukken door rond dit nivo een hysterese gebied aan te brengen. Een ander nadeel is dan echter de afhankelijkheid van de amplitude op de nauwkeurigheid. Het schakelnivo zou eigenlijk amplitude afhankelijk moeten zijn. Een tweede methode is nUldoorqangsdetectie. Dit is eigenlijk hetzelfde als nivo-detectie, met dit verschil dat nUldoorgangsdetectie een puIs geeft, op dat moment waarop nivo-detectie omschakelt. Hiermee kunnen we bij de microcontroller dus gemakkelijk een interrupt genereren. We krijgen dus eigenlijk dezelfde nadelen als bij
nivo-detectie,
echter zonder dat we hier een-
voudig een hysterese gebied kunnen aanbrengen.
25
Tenslotte belanden we bij een AD-converter (ADC). Hiermee kunnen we softwarematig nog eventuele resterende variatie in de DCcomponent goed corrigeren. Stel dat het analoge signaal een sinus is, dan kan het schakelnivo uit de nivo-detector de ene keer bij fase=O° horen,
en de volgende keer bij fase=60°. Hierdoor wordt
de meting onnauwkeuriger. Bij meting van vier ademhalingen treedt hier een relatieve fout op van
(60°)/(4 360°) °100% = 4%. Vanaf 0
ongeveer 25 ademhalingen per minuut is dit al meer dan 1 digit. Bij een AD-converter kan dit goed gecompenseerd worden. Een ander groot voordeel is dat deze methode goed werkt bij verschillende amplitudes. Nadeel is dat het programma iets ingewikkelder wordt. De keuze is vanwege de nauwkeurigheid gevallen op een AD-converter:
de ADCOa09.
Dit is een a-bits ADC met a analoge ingangen
(INO-IN?), waarvan we er maar een gebruiken (zie figuur 4.1). We selecteren een bepaalde ingang door het adres van die ingang aan te bieden aan addA, addB en v
e: CLOCK
Ve:e: Vee) P1.4 ven CPU P1.5 ven CPU Ro:Pr.'6vancpu
START EOC OE
ADC0809
.
Gr ~D)
fig. 4.1
addC.
Dit
IN 1 :
IN 7
= 500 kHz
analoog in
INO
~
DATA-SUS
f
..
add A add 8 add C
ALE
De aansluitingen van de AD-e:onverter.
adres
wordt vervolgens
ingeklokt met behulp van de
adres latch enable (ALE, laag naar hoog getriggerd). Aangezien we aIleen maar INo gebruiken, leggen we addA, addB, addC en ALE aan massa. Theoretisch wordt er dan nooiteen adres ingeklokt; dus ook niet adres 000. werken
In de praktijk bleek alles echter goed te
(waarschijnlijk ten gevolge van looptijden
in het IC).
Indien nodig kan een RC-combinatie voor een laag-naar-hoog flank zorgen bij het inschakelen.
26 De conversie wordt gestart door START even hoog te maken (zie figuur 4.2). Het EOC-signaal zal nu laag worden ten teken dat de interne conversie bezig is. Voor deze conversie maakt de ADC gebruik van een externe klok, welke niet per se synchroon hoeft te lopen met de ingangssignalen. De klokfrequentie mag tussen de 10 kHz en de gebruiken we
1280
kHz
liggen
(typical
=
640
kHz).
Hiervoor
CLOCK
START
EOC
Of
-------.......,..-----III~-----
°0-07
.•.•....•.. -•......•..•..•••••.....•.•.•.•• -- •..•••.••••• ~~
__J~-.- ••
fig. 4.2 Het timing diagram war Hn AD conversie.
een eenvoudige "relaxation oscillator" opgebouwd rond de 74HCT14 (lit. 3) (zie figuur 4.3). Bij gebruik van een HCT-versie van de 7414 geldt voor deze schakeling ruwweg:
f
~
*
1 = = 0,6~'RC = 0,67'22kn'100pF
680 kHz
(4.1)
De frequentie is gemeten op 500 kHz. Na een tijdje wordt EOC weer hoog ten teken dat de conversie klaar is (zie figuur 4.2). Door
fig. 4.3 De osciLLatorschakeLing rand de 7414 inverter. De tweede inverter dient aLs buffer.
27
nu de output enable ingang hoog te maken, komt de waarde van de conversie op de uitgang te staan, en kan deze worden ingelezen. Voor de conversietijd t c geldt: t c < 116
~s
bij
f klok = 640 kHz
Je mag dus verwachten dat 640kHz t c < 500kHz·116~s = 146 ~s
(4.2)
Gedurende deze tijd mag de analoge ingang niet meer dan anderen.
~LSB
ver-
Levert dit problemen op, dan moeten we een sample-and-
hold circuit gaan gebruiken. Gaan we ui t van een sinusvormig signaal (dat bij 0 het snelst verandert) met een frequentie f, dan moet dus gelden (worst case):
I A·SIN[21rf(+~tc)] Met sin(x)~x voor krijgen we:
2,5·21rftc <
x
1 2·
- A·SIN[21rf(-~tc)] klein,
A=2,5
V,
I
en
<
t . LSB
(4.3)
VrefC+)-Vrefc-)=5
5 Volt 256 2
V
(4.4) (4.5)
We zitten dus met dit worst case geval op de dubbele frequentie van de afsnijfrequentie van het laagdoorlaatfilter uit het analoge deel
(2 Hz).
Bedenken we dat de karakteristieke waarde
van tc~100 ~s en dat de amplitude meestal kleiner is dan 2,5 V, dan mag dit geen problemen opleveren. Dan hebben we nog niet opgemerkt dat bij verdere bewerking van dit signaal een afwijking van 1 bit waarschijnlijk geen problemen oplevert. Bij de conversie komt VrefC +) overeen met 255 en VrefC -) met o. In figuur 4.1 zien we dat Vref (+) = 5 V en Vrefc -) = 0 V. Dit zijn dus de waarden waarbinnen het ingangssignaal moet blijven.
2S 4.2
Microcontroller
We maken gebruik van de SOC31 van Intel. Deze microcontroller wordt gemaakt in CMOS technologie. Hierdoor kan het stroomverbruik verlaagd worden. De interne oscillator wordt met behulp van een quartskristal en twee condensators afgestemd op een frequentie van 4 Mhz (zie figuur 4.4). De gebruikte versie (SOC31 BH)
Pl.U
ALARM
PU p
RST
1.2
P 1.3
menu + / start - / stop
o
A
A
o
T
R
e
A
80C31
S
Po.O PO.1
XTAL j
3' r
I
-
I
cl~ BP
T
HAL 2
4Mt1z.
;~~:z { ~
R.O
r.o
P"l.O
RD.
m
..L fig. 4.4 De 8OC31 microcontroller vonmt het hart van de digitale schakeling. Alle andere Ie's zijn verbonden met de DATA-bus, de ACRES-bus en de vi jf stwrsignalen.
kan klokfrequenties van 3,5 Mhz tot 12 Mhz aan. Er is echter ook een versie die vanaf 0,5 Mhz (tot 12 Mhz) zijn werk doet; de SOC31 BH-2. Met een lagere klokfrequentie kan het stroomverbruik verder worden teruggebracht. Bij
inschakelen van
de
spanning wordt
de
condensator
aan
de
reset-ingang RST langzaam opgeladen via een weerstand van 10 kn
29
(zie figuur 4.4). RST zal dus even hoog blijven, en zo een poweron-reset bewerkstelligen. De diode beschermt de reset-ingang van de controller tegen negatieve spanningspieken bij uitschakelen. Bekijken we vervolgens poort 1, dan zien we aan pin P1.0 het alarm. Dit alarm bestaat uit een piezo-electrisch zoemertje, dat rechtstreeks uit de poort wordt gevoed. Deze zoemertj es hebben een bijna te verwaarlozen stroomverbruik, wat een bUffer overbodig maakt. Verder zijn er 3 druktoetsen met poort 1 verbonden (over hun functie binnen het gehele ontwerp vindt u meer in 5.2). Poort 1 is een "quasi-bidirectionele" poort. Je kunt elke pin onafhankelijk als input of output defifieren, maar wanneer je een pin als input definieert, dan zit er intern nog een pull-up weerstand naar voeding (zie figuur 4.5). Vandaar dat extern een schakelaar naar massa voldoende is. Mocht later de altijd aanwezige dender hinderlijk zijn (programma afhankelijk), dan zal een condensator over de schakelaar wellicht voldoende zijn dit verschijnsel te onderdrukken (zie figuur 4.5). Maakt de
CPU
fig. 4.5 Dender is door de interne pull-lop weerstand te voorkomen met een condensator.
schakelaar contact, dan wordt de condensator ontladen. Laat men de schakelaar los, dan laadt de condensator • langzaam • spanningssprongen) op via de interne pull-up weerstand.
(zonder
Tenslotte vinden we aan poort 1 nog de stuursignalen voor de ADC. Met P1.4 starten we de conversie (zie ook 4.1). Na een tijdje krijgen
we
dan via
P1.5 een signaal
binnen dat de
gereed is, waarna we de waarde uit de ADC kunnen lezen.
conversie
30 Dit brengt ons bij poort 0, de datapoort. De 80C31 heeft intern een gecombineerde adres/data-bus welke via poort 0 naar buiten komt. Om toch gescheiden adres- en databus te verkrijgen, maken we gebruik van een latch (de 74HCT573, zie figuur 4.4). Wanneer de CPU data leest of schrij ft, komt eerst de low-byte van het adres op poort 0 te staan. Deze wordt op de hoog-Iaag overgang van ALE (address latch enable) in de latch geklokt. Vervolgens wordt het adres van poort 0 weggehaald, en kan de dataoverdracht via poort 0 plaatsvinden. Op poort 2 staat continu het high-byte van het adres. We hebben dus een afzonderlijke adresbus en databus gekregen. We
moeten
nu
nog
de
read-
en
writesignalen
hebben
voor
de
verschillende modules (ADC, LCD-display, RAM, EPROM). Aangezien ze aIle op dezelfde databus zijn aangesloten, moeten we telkens een module selecteren. De 80C31 maakt voor ons al onderscheid tussen datageheugen en programmageheugen. Programma's kunnen aIleen uitgevoerd worden als ze in het programmageheugen staan, en we kunnen vanuit een programma aIleen schrijven naar, en lezen uit
het datageheugen. Bij het ophalen van een instruktie wordt PSEN (Program store Enable) laag gemaakt. Het datageheugen wordt geselecteerd door RD (read) of WR (write) laag te maken. De EPROM kunnen we dus eenvoudig selecteren met behulp van PSEN. Overigens moet bij gebruik van externe EPROM,
de EA (External Acces)
aan
massa hangen. De ADC,
het
LCD-display en het RAM-geheugen vormen samen het
datageheugen. Schrijven kunnen we aIleen naar het LCD-display of het RAM-geheugen. We selecteren een van deze twee met behulp van WR en P2.5 (zie figuur 4.4). Als P2.5 hoog is, dan schrijven we aIleen in het RAM-geheugen. Met P2.5 laag wordt zowel naar het LCD-display, als naar het geheugen geschreven! Dit is gedaan om poorten te sparen. We moeten nu dus een plaats in het RAMgeheugen reserveren waar we de waarde van het display in kunnen zetten. Van de 2 kilobytes aan geheugen gaat dus 1 plaats verloren.
Dit nadeel weegt ruimschoots op tegen het gebruik van
een extra AND-poort,
en daarmee een extra IC.
geheugenplaats is vrij te kiezen.
De gereserveerde
31 Bij het lezen mag aIleen 6f de ADC 6f het RAM-geheugen data op de bus zetten. We mogen dus niet zoals bij het schrijven beide modules selecteren. We selecteren met P2.6 en RD (zie figuur 4.4). Met P2.6 hoog lezen we de waarde uit de ADC. Voor P2.6 laag lezen we uit het RAM-geheugen. Op poort 3 bevinden zich behalve RD en WR ook nog de ingangen voor externe interrupts. Deze kunnen edge-triggered zijn (INTO en INTl) of niveau-detected (TO en Tl). Dit ontwerp maakt geen gebruik van interrupts, dus hangen aIle ingangen aan massa. Tenslotte vinden we nog de RxD (receive data) en TxD (transmit data) pinnen. Samen vormen ze een volledig seriEHe I/O-poort. Deze poort is softwarematig op vier verschillende manieren te gebruiken. In mode 0 hebben we te maken met een synchrone seriele poort. Via RxD worden iedere keer a bits verzonden of ontvangen (als eerste de LSB). TxD levert de klok voor de synchronisatie. De baud-rate is vast ingesteld op 1/12·foscilletor. In mode 1 hebben we te maken met een asynchrone (geen klok verzenden of ontvangen), full duplex (zenden en ontvangen tegelijk) seriele poort. We verzenden/ontvangen weer a bits per keer. Deze a bits worden voorafgegaan door 1 startbit (een 0), en afgesloten door 1 stopbit (een 1). We krijgen dus blokjes van 10 bits. Het bits toevoegen en synchroniseren gebeurt door de ingebouwde a-bit UART (universal asynchronous receiver/transmitter). De baud-rate is instelbaar. In mode 2 krijgen we een 9-bit UART. We kunnen hierbij kiezen tussen een baud-rate van 1/64·fos c i lletor of 1/32·foscilletor. Mode 3 heeft dezelfde mogelijkheden als mode 2, maar met instelbare baud-rate. Om een volledige, standaard RS232 seriele poort te krijgen, moeten we dus softwarematig de geschikte mode selecteren (mode 1,2 of 3), en de baud-rate instellen. Hardwarematig hoeven we aIleen de TTL niveau's (laag = OV: hoog = 5V) om te zetten naar RS232 niveau's (laag= -3V .. -25V, nominaal -12V: hoog= +3V .• +25V, nominaal +12V). Hiervoor kunnen we bijvoorbeeld de MAX232
32 gebruiken. Voorkeur
Deze heeft namelijk genoeg aan een voeding van 5 V. gaat
echter
weI
uit
naar
een
plaatsing
buiten
het
apparaatje, gezien het stroomverbruik van de spanningsomvormer. De
seriEHe poort
is op de proefprint overigens nog niet aan-
gesloten.
4.3
RAM en EPROM
In het RAM-geheugen wordt de gemiddelde ademfrequentie periodiek opgeslagen (bijvoorbeeld iedere halve minuut). Er is
geko~en
voor
een 2k x 8 statisch geheugen; de 6116. Een refresh schakeling is dan niet nodig. Slaan we iedere
~
minuut de gemiddelde ademfre-
quentie op, dan kunnen we gedurende
2·1024·~
min
=
17 uur
het
verloop van de ademfrequentie volgen. In de aansluitingen (zie figuur 4.6) herkennen we meteen de data- en adresbus die we ook in figuur 4.4 zagen. De chip-select (CS) hangt continu aan massa. Het selecteren van de RAM gaat toch al via WE en OE. ve DO
DATA-BUS
Vee 6116
~vancPU
Of
~
ACRES-BUS
iii van CPU
\iE
07
CS GND
A10
fig. 4.6 De aansluitingen van de 2k x 8 statisehe RAM.
Voor de EPROM geldt eenzelfde verhaal (zie figuur 4.7). De chipenable (CE) ligt ook hier aan massa. Selecteren gaat via OE. Deze EPROM
(de 27C256)
is gemaakt in CMOS technologie voor een laag
stroomverbruik. Hij heeft een geheugen van 32k x 8, waarvan 8k x
8 wordt gebruikt.
A14
liggen aan voedinq!
)
De twee resterende adreslijnen
maar
(A13
en
Dit bleek praktisch gemakkelijker te
realiseren op de print. Dit houdt weI in dat het programma in de EPROM
moet
uitvoering gewoon
een
staan van
het
vanaf
adres
programma,
programma
adres
6000H ziet
bereik
de van
tot
adres
7FFFH.
microcontroller OOOOH
tot
Bij
echter
1FFFH.
Dit
33 adresbereik geldt ook bij het schrijven van het programma. Op Vpp komt een hoge spanning te staan tijdens het programmeren. Bij het uitlezen van de EPROM dient Vpp gelijk te zijn aan Vcc. v c Vee Vpp
?O
DATA-BUS
07
~O
ADRES-BUS
AU A14
27C256
A12 ~ van
fig. 4.7
4.4
CE GND
~
CPU
Van deze 32k x 8 EPRCJl wordt 8k llebruikt. An en A14 lill9en niet un . .ssa mar voeding.
LCD display
Voor de uitlezing van de momentane ademfrequentie maken we gebruik van een Liquid Cristal Display (LCD). Deze heeft namelijk een laag stroomverbruik. We hebben twee digits nodig. Per digit zijn er tien mogelijke cijfers, te beschrijven door vier bits. Met een byte kunnen we dus beide digits beschrijven. We maken dan gebruik van Binary-Coded-Decimal code (BCD-code). De BCD-waarde wordt bij het schrijven naar het LCD scherm via de databus in een latch geklokt (zie figuur 4.8). Deze latch zit in de 4543, en wordt met LD (Latch Disable) bediend. Zolang LD laag is, wordt de ingang van de 4543 intern via een latch doorgegeven aan de decoder. Wordt LD hoog, dan houdt die latch de laatste waarde vast. Vc vee Q a
A y, DATA-BUS
A3
4543
Q ll
LCD
0
LI
PH IIR·P2.5 van CPU
LD BI GND
fig. 4.8 Aansluitingen van de LCD latch/decoder/driver. Deze schakeling IIIOet voor beide digits apert worden uitgevoerd.
34 De uitgang van de latch gaat naar de interne decoder. Deze zet de BCD-waarde om in 7 signalen voor de afzonderlijke segmenten van het display. Om echter de levensduur van een LCD display drastisch te verhogen, dient deze niet met gelijkspanning te worden aangestuurd. Daartoe hangen we de common aansluiting van het display aan een oscillator. Deze verbinden we tevens met de PH ingang (phase) van de 4543. Intern gaat elke uitgang van de decoder naar een XOR poort, welke als tweede ingang de phase heeft. Als PH laag is, dan wordt elke uitgang van de decoder dus gewoon (gebufferd) doorgegeven aan de corresponderende uitgangspin. Is PH hoog, dan wordt elke uitgang van de decoder geinverteerd naar buiten gestuurd. Gevolg is dat over elk segment dat aanstaat, een wisselspanning staat met eenzelfde frequentie als de oscillator. Over elk segment dat uitstaat staat geen spanning, hoewel de spanning op beide aansluitingen met dezelfde frequentie varieert. We maken gebruik van het oscillator schema uit figuur 4.3. De frequentie moet echter niet te hoog worden gekozen. Het stroomverbruik neemt dan sterk toe, en er kan interferrentie tussen segmenten optreden . Een segment dat ui tstaat kan dan toch gaan verkleuren. Er wordt een frequentie van 30-60 Hz geadviseerd (lit. 4). De frequentie is gemeten op 50 Hz. In figuur 4.8 zien we tens lotte nog BI aan massa hangen. BI staat voor Blanking Input. Als deze hoog is, worden aIle segmenten uitgezet. Deze optie gebruiken we niet, dus is BI laag.
35
5.
Bet assembly programma
5.1
Testprogramma
Het
uiteindelijke
testprogramma
test
aIle
onderdelen
van
de
digitale schakeling. AIle onderdelen zijn echter vooraf met vijf afzonderlijke
zeer
korte
testprogrammatjes
getest.
Het
uit-
eindelijke testprogramma doet het volgende: Eerst wordt er een RAM-test uitgevoerd (menu 2). Op het display staat dan continu de high-byte van het adres dat getest wordt. Als er op het einde 00 op het display verschijnt, is er geen fout ontdekt. Genereert het systeem drie '10101010' niet door het geheugen adres waarvan de high-byte op het zonder piepjes, dan is er ook een
piepjes, dan is de testwaarde geaccepteerd, en weI op een display staat. stopt de test fout opgetreden, maar dan met
testwaarde '01010101'. Met behulp van de drie druktoetsen op de print, kan een van de drie menu's worden gekozen. Menu 1 activeert de ADC. De waarde die uit de ADC wordt gelezen, wordt op het display gezet. Let op: dit is GEEN BCD-code, maar een
hexadecimale
code.
Wanneer
in
deze
code
dus
een
letter
voorkomt (A, B, C, D, E, F), dan geeft het display niets aan op die nyble. Wanneer de ADC binnen 180 ~s nog niet klaar is, wordt deze opnieuw opgestart. Gebleken is, dat de ADC vaak geen gereedmelding meer geeft aan het einde van de conversie. Het is niet duidelijk geworden waarom deze soms blijft hangen.
Bij opnieuw
opstarten van de conversie wordt dit probleem verholpen. Menu 2 (de RAM-test) is hierboven al beschreven. Menu 3 genereert drie piepjes van ongeveer 1 kHz. Deze duren 0,5 sec met daartussen ook een rustperiode van 0,5 sec.
5.2 In
Aanwijzingen voor het eindprogramma deze
paragraaf vindt u
eindelijke
programma.
geschreven worden.
Let
een mogelijke opbouw van het uitweI,
het
programma
zelf
moet
nog
Het is dus niet gezegd dat de nu volgende
opbouw volledig en voor 100 % correct is! Toch zullen de meeste problemen hier weI ter sprake komen en worden opgelost.
36
In f iguur 5. la en b staan de twee meest globale flowdiagrammen voor respectievelijk het hoofdprogramma en de interrupt afhandeling. Een paar opmerkingen. De initialisatie aan het begin van het hoofdprogramma moet de microcontroller intern instellen en de gebruikte variabelen initialiseren die we verderop in dit hoofdstuk nog zullen definieren. Na de twee blokken (toetsafhandeling + .•• , duurbelasting bijhouden), zien we een test op het aantal ontvangen ademhalingspulsen. Het meten van de ademfrequentie komt namelijk neer op een periodetijdmeting tussen de pulsen. Vanwege de nauwkeurigheid meten we de tijd van een aantal (bijvoorbeeld 4) pulsen. Int......
toetaen IfhendeLen +
wachten op einde edeIItIeL i ngspu La
verzorll dlte-overclracht
a fig. 5.1
b
De flowdiagranrnen van het hoofdprogranma en de interrl.ptroutine.
Bij de interrupt afhandeling hebben we twee mogelijkhedeni een interne interrupt van de 16-bits teller, of een externe interrupt van de seriele poort. Aan de dataoverdracht is nog geen aandacht besteedt. Dit blok wordt dan ook niet behandeld. De "vette" blokken worden nu iets verder uitgediept, te beginnen bij het hoofdprogramma.
37
5.2.1
Toetsen en einde ademhaiingspuis
In figuur 5.2 vinden we het flowdiagram van het eerste blok uit figuur 5.1a: "toetsen afhandeling + wachten op einde puIs". Allereerst kijken we of er er een toets wordt ingedrukt. We
voer
ja
f lI'lct i e I------<~
uit
· geef aan dat we nieuw sa"" le nemen · tees Ace • aantat meetwaarden deze adempuls met 1 verhogen
"..
fig. 5.2
Ftowdiagrllll van de
toetsenefhandeti~
en het wachten op het einde van een 8defIlluts.
hebben drie toetsen: "MENU", "+/START" en "-/STOP". Met START en STOP kunnen we beginnen respectievelijk stoppen met de dataopslag voor de duurbelasting. Hiervoor introduceren we een variabele Opslag: Opslag (1 bit) Opslag=1 Ademfrequentie wordt opgeslagen Opslag=O Ademfrequentie niet opgeslagen Drukken we op START, dan hoeven we dus aIleen Opslag op 1 te zetten. Bij gebruik van de STOP-toets zetten we Opslag op O. Wanneer we nu een keer op MENU drukken,
kunnen we de minimale
ademfrequentie instellen met behulp van de + en -
toetsen. De
waarde zetten we in MinAdem. Inhoud is benedengrens voor ademfrequentie. MinAdem (1 byte)
38
Drukken we nog een keer op MENU, dan kunnen we op dezelfde manier de maximale frequentie vastleggen in MaxAdem. MaxAdem (1 byte) Inhoud is bovengrens voor ademfrequentie. MinAdem en MaxAdem geinitialiseerd.
kunnen
op
een
globale
waarde
worden
Vervolgens gaan we kijken of we een nieuw sample moeten nemen. Zouden we gewoon iedere keer een sample nemen, dan krijgen we een onnodige grote hoeveelheid informatie te verwerken. We moeten er echter ook voor zorgen dat we niet te weinig samples nemen: fa d e m < 70 min- 1 Tadem > 60/70 = 0,86 sec 4·Tadem > 4·0,86 = 3,4 sec stel: nauwkeurigheid van \ digit op 70 = 0,71 % tsampLe < 0,71%·3,4sec = 24 msec De timing zelf gebeurt in de interrupt routine. Deze zet de variabele HextSample op 1 als het tijd is voor een nieuw sample. Wanneer we dan een sample gaan nemen, dan moeten we HextSample weer resetten. HextSample
(1 bit)
NextSample=l NextSample=O
Neem nieuw sample Neem nog geen sample
Wanneer we HextSample op nul hebben gezet, kunnen we de ADC een conversie laten uitvoeren. Hoe dit gaat staat in 4.1. Daarbij kan het voorkomen dat we de ADC opnieuw moeten opstarten (zie 5.1). We moeten nu weI bijhouden hoeveel samples er genomen zijn voordat er 4 ademhalingen zijn geweest: Pulslengte (1 byte) Aantal samples
(=
tijsduur)
van
4
ademhalingen. Hebben we weer een waarde binnen van de ADC, dan kunnen we gaan beoordelen of de ademhalingspuls is afgelopen. Hiervoor moet echter nog een geschikt criterium worden opgesteld. Wellicht kan een of ander "tijdvenster" voorkomen dat er pulsen worden gemist, en fouten als gevolg van hoesten tot een minimum worden beperkt. Met Hummer houden we het aantal ademhalingen bij. Hummer
(1 byte)
Aantal ademhalingen dat we hebben gehad.
De gebruiker heeft nu dus een keer geademd, naar het volgende blok.
en we kunnen door
39
5.2.2
Duurbelasting bijhouden
Allereerst kijken we of er op het moment ademfrequenties dienen te worden opgeslagen. We vinden deze informatie in Opslag. Indien dit inderdaad het geval is, dan houden we in Frequentie bij hoeveel ademhalingen er binnen
~
minuut plaatsvinden. We hebben
net gezien dat er weer een ademhaling is afgelopen, dus we kunnen op deze plaats Frequentie verhogen. Frequentie (1 byte) Aantal ademhalingen
per
halve
minuut
(aantal sinds laatste opslag). De interruptroutine zorgt ervoor dat Frequentie elke halve minuut wordt weggeschreven, en op 0 gezet.
5.2.3
Ademfreguentie op display
Dit blok wordt aIleen doorlopen indien we vier ademhalingen hebben gehad. We zijn nu dus in staat om een schatting te maken van de momentane ademfrequentie: 40Tedem = [PulslengteJotsample 1
4
Tedem = [PulslengteJotsample Deze waarde kunnen we vervolgens op het display zetten (zie 4.2).
=
Nu hebben we Pulslengte en Hummer niet meer nodig, en kunnen we ze beide weer op 0 zetten (we beginnen aan een nieuwe periode van 4 adempulsen).
5.2.4
Test op grenzen
Vervolgens kunnen we gaan controleren of de berekende frequentie binnen
de
vooraf
ingestelde
frequentie hoger dan MaxAdem,
tolerantiegrenzen
zit.
Is
dan genereren we bijvoorbeeld 4
piepjes. Zitten we beneden MinAdem, horen we 2 piepjes. genereren van piepjes gaat eenvoudig: zet in AlarmOnOff aantal piepj es en rustperiodes dat j e wil hebben 4+3=7 en 2+1=3),
de Het het
(in ons geval
en in TimeAlarm de tijdsduur van 1 piepje (=
40 tijdsduur 1 rustperiode). De interruptroutine genereert dan de piepjes van 1 kHz. AlarmonOff (1 byte) Bevat het aantal nog uit te voeren piepjes en rustperiodes. TimeAlarm (2 bytes) Tijdsduur van 1 piepje/rustperiode. tijdsduur
=
[TimeAlarm]·0,5ms
We hebben nu het hele hoofdprogramma doorlopen, en kunnen weer terug naar het eerste blok "toetsen afhandelen + wachten op einde puIs".
5.2.5
Timing dataopslag
We gaan nu de interruptroutine uit figuur 5.1b eens wat verder analyseren. We maken gebruik van de 16-bits interne teller van de 80C31 voor de timing. Deze verlaagt bij iedere klokpuls (f klok = 4 MHz) de inhoud van de teller. Wanneer de teller de waarde 0 bereikt, dan genereert de CPU een interne interrupt. Willen we elke 0,5 msec een interrupt hebben, dan moeten we de teller dus iedere keer laden met de waarde: 4MHz·0,5ms = 2000 Wanneer we ontdekt hebben dat we te maken hebben met een interne interrupt, zetten we eerst de waarde 2000 in de teller. Dit vinden we terug in het eerste blok van de "timing dataopslag" (zie figuur 5.3).
interrupt
routine
Allereerst kij ken we in Opslag of we de duurbelasting aan het opslaan zijn. Bij een negatief antwoord kunnen we dit blok zonder meer verlaten. In het andere geval kij ken we of er sinds de laatste opslag al 0,5 sec is verstreken. Dit doen we door Timeopslag met 1 te verlagen, en te kijken of hij nul is geworden. Is dit niet het geval, zijn we klaar. Indien ja, dan moeten we Timeopslag herladen met de volgende waarde: 0,5 s 0,5ms
=
1000
Timeopslag (2 bytes)
Tijdsduur in 0,5ms voordat volgende byte voor duurbelasting wordt opgeslagen.
41
nee
fig. 5.3
Het flowdiagrllll behorende bij het blok "timing + data apslag".
We moeten er dus weI voor zorgen dat wanneer we op de START-toets drukken, dat dan TimeOpslag met 1000 wordt geladen!
(zie 5.2.1).
Als TimeOpslag weer goed staat, kunnen we Frequentie als volgende byte wegschrijven in het geheugen. In Frequentie staat echter weI het
aantal
ademhalingen
in
~
min.
Per minuut
is dit dus het
dubbele.
5.2.6
Verzorg alarm
We gaan eerst kijken hoe we de piepjes van 1 kHz genereren. We volgen het flowdiagram uit figuur 5.4. Allereerst checken we of het alarm weI aanstaat (A1armOnOff
~
0).
Is dit het geval, dan
kunnen we nog in een piepje zitten (periode van geluid), of in een rustperiode (stilte). PiepjeOfRust (1 bit)
Wanneer we in een piepje zitten dan is PiepjeOfRust
=
1.
zitten
we
rustperiode dan is PiepjeOfRust
in
= o.
een
42
• verlaag aantal piepjes • inverteer bit voor geluid/rust • wI teller
fig. 5.4
Het flowcliagr8ll "verzorg di8llrlllll".
Indien het programma in een piepje zit, inverteren we het bit van het alarm. Aangezien we deze routine elke 0,5 msec doorlopen, krijgen we een periodetijd van 2 0,5ms = lmso nit komt overeen 0
met een toon van 1 kHz. Vandaar dat we gekozen hebben voor een interrupt elke 0,5 msec. Vervolgens gaan we kijken of de periode rust of de periode piepje nog niet is afgelopen. Hiervoor verhogen we de volgende teller: TimePeriode (2 bytes) Reeds verstreken tijdsduur voordat periode van geluid of stilte is verstreken. Tijdsduur = [TimePeriode]oO,5ms Zolang deze teller niet gelijk is aan TiJD.eA.1ax--, is de periode nog niet afgelopen. Zijn beide variabelen aan elkaar gelijk, dan is een periode afgerond: TiJD.ePeriode kan weer op nul gezet worden,
Al3.rmOnOff
kan
1
verlaagd worden
en PiepjeofRust kan
43
geinverteerd worden. altijd afwisselen.
5.2.7
oit
laatse
omdat
geluid
en
rust
elkaar
Timing nieuw sample
Als laatste bekijken we hoe het tijdstip bepaald wordt waarop een nieuw sample genomen kan worden. Hiervoor gebruiken we weer een variabele als teller: TimeSample (1 byte)
Bevat de nog resterende tijdsduur voordat een nieuw sample genomen kan worden.
tsampLe In 5.2.1 hebben we afgeleid dat
=
[TimeSample]oO,5ms
tsampLe < 24 msec TimeSample < ~4~S , ms = 48 TimeSample moet dus met een waarde < 48 worden geinitialiseerd worden. Iedere keer als we dit blok doorlopen, verlagen we Timesample. Wordt deze hierdoor 0, dan wordt het tij d om een nieuw sample te nemen. oit bewerkstelligen we door Hextsample te setten, nadat TimeSample weer geinitialiseerd is op de origenele waarde < 48. Hiermee z1Jn we aan het einde gekomen van de interruptroutine, en het hele programma. In bij lage 5 vindt u nog een opsomming van aIle variabelen, en de twee volledige flowdiagrammen.
44
6.
Conclusies en aanbevelinqen
Voor de analoge opnemer hebben we wat mogelijkheden bekeken. Geleidend rubber biedt daarbij het meeste perspectief. Er dient dan nog weI aannemelijk gemaakt te worden dat dit materiaal duurzaam genoeg is voor gebruik als sensor. Is dit niet het geval, dan kan een slimme construktie waarin piezo-folie is opgenomen, de kansen voor deze folie flink vergroten. De proeven met geleidend rubber hebben laten halingspulsen bij inspanning mooi constant zijn zowel de amplitude als de vorm van het signaal. frequentie goed bepaald kunnen worden. Nadeel
zien dat ademten aanzien van Hieruit moet de is de onbekende
mechanische belastbaarheid. Voor de digitale gegevensverwerking is een schakeling ontworpen en gebouwd. Ook het optionele deel (het geheugen) is hierin opgenomen. Het is een rechttoe rechtaan ontwerp. Als onderdeel van deze haalbaarheidsstudie voldoende. Bij verdere ontwikkeling zou men kunnen kijken in hoeverre deze schakeling vereenvoudigd dan weI geminiaturiseerd kan worden. Het assembly-programma is nog niet geschreven, maar een mogelijke aanpak is weI gegeven. En belangrijke vraag hierbij is nog volgens welk algoritme de tijdmeting (bepalen van een vast punt uit de adempuls) van meerdere ademhalingspulsen gedaan wordt. Dit kan nog van invloed zijn op de uiteindelijke nauwkeurigheid. Resumerend kan gesteld worden dat het mogelijk is een ademfrequentiemeter te bouwen die via een elastische band om de borst de ademfrequentie bepaalt, op een display zet, en deze periodiek gedurende een periode van ongeveer 17 uur elke halve minuut opslaat. Voorwaarde daarbij is echter weI dat het gebruikte geleidend rubber mechanisch stevig genoeg is. De uiteindelijke grootte van het apparaatje is grotendeels afhankelijk van de mate waarin de totale schakeling geintegreerd en geminiaturiseerd kan worden.
45 Literatuurlijst (lit. 1)
Peter Klein Het ontwerp van de ademfasemeter stageverslag TU-Eindhoven, afdeling E, medische elektrotechniek 1986
(lit. 2)
Clayton, G. B. Operational amplifiers 2° druk, 1979 Butterworth & Co Ltd. ISBN 0-408-00370-7 par. 6.6, 7.1, 8.2
(lit. 3)
Philips Data handbook High-speed CMOS, PC74HC/HCT/HCU Logic family 1988
(lit. 4)
Perez, R. A. Electronic display devices TAB professional and reference books 1988 ISBN 0-8306-2957-2
46
Bijlage 1.
Testresultaten sensor met 2 LOR's.
Ii .. ~ -198g
V.dffl!
VOlli
Tn V
1 6
5
o
2.
=9 18 V J
I
2
~./
in rust
in V
f. •••m
6-42 - '89
,..,
fo ... cll!",~.C~n ..., !So !i.e
= 12
cl d4"1") h
....IJ:l
;Im:n
....
g,
(1)
I'IJ
0 ~
(1)
In
rt
11
-~
(1)
In
....rt~ g,
-2
ID
0
15
2tJ
2~
30
j~
,..
'f,
&(0
~
t
S'o $~C
rt (1)
::s (1)
.... ....Q.. (1) (1)
::sQ.. 2
na traplopen
t V•
.1 :" V
foa""""
Z
6-"2- '85
9. os
= !l4
cid'~h';mtl"l
(1)
. 11
1
o
-!
2.
10
~
--------
12
r6
I'-{
t
'n
U'c
,el. ~
49
Bijlage 4.
Bet volledige digitale schema.
22.1.
'ClOP
1/«
v"
p 1.'1 pg
'0;"
b" PI.O 10..., ..8
P1.1
menu
Pt.2.
+ 1 5U;/d
P1.3
- I ~top
'i MHz
33P
/(TAL f
~~ 3}p
¥Til L 2.
P2.5 1 .. 1j!>'i3
ca.) v..
\ffl AD
Wi
V
P2.6 Po"" Po.l I\i'o1 ,.
11.5232 poort
R.D r.o 'Icc \Ice
v,p ,'"i1f¢
AL¥r~oZ
An.
Jwn
AI"
TO;
,I
£A
'""'0 80C 3'
;;mi
og 2~ca56
CE "Alb
so Bijlage Sa. Opslag
Opsomming gebruikte variabelen uit 5.2 (1 bit)
Opslag=l
Ademfrequentie wordt opgeslagen.
Opslag=O
Ademfrequentie niet opgeslagen.
MinAdem
(1 byte)
Inhoud is benedengrens voor ademfrequentie
MaxAdem
(1 byte)
Inhoud is bovengrens voor ademfrequentie.
NextSample Pulslenqte
(1 bit)
NextSample=l
Neem nieuw sample.
NextSample=O
Neem nog geen sample.
(1 byte)
Aantal samples
(= tijdsduur)
Nummer
(1 byte)
halingen. Aantal ademhalingen dat we hebben gehad.
Frequentie
(1 byte)
Aantal
ademhalingen
per
van 4 adem-
halve
minuut
(aantal sinds laatste opslag). AlarmOnOff
(1 byte)
Bevat het aantal nog uit te voeren piepjes en rustperioden.
TimeAlarm
(2 bytes)
Tijdsduur van 1 piepjejrustperiode. tijdsduur = [TimeAlarm]·O,Sms
TimeOpslag
(2 bytes)
Tijdsduur in O,Sms voordat volgende byte voor duurbelasting wordt opgeslagen.
PiepjeOfRust
(1 bit)
Wanneer we in een piepje zitten
(periode
van geluid), dan is PiepjeOfRust = 1. zitten we in een rustperiode (stilte), dan is PiepjeOfRust TimePeriode (2 bytes)
=
o.
Reeds verstreken tijdsduur voordat periode van geluid of stilte is verstreken. tijdsduur
TimeSample
(1 byte)
=
[TimePeriode]·O,Sms
Bevat de nog resterende tijdsduur voordat een nieuw sample genomen kan worden. tsample
=
[TimeSample]·o,Sms
51
Bijlage 5b.
Flowdiagram van hoofdproqramma uit 5.2.
initi.l is.tie
wet'
flroCt i e 1--"--<::::uit
nee
• geef ..... dIIt we ni-.w UlllPle ...." • lee. ADC
• .....t.l ~twurden deze adetlpul. _t 1 Yerhogen
nee
52
Bijlage 5c.
Flowdiagram van interruptroutine uit 5.2.
interr~t
voerzorll data-ovoerdracht
• verla811 aantal pltpjes • In¥erteer bit ¥cor geluidlrU5t • wi teller
ainde
Int.r~t