Arduino smart projekt: Hjertefrekvens

 

 Formålet med dette projekt er at bygge en virtuel prototype, når du har et analogt signal fra en sensor. Bagefter skal du bruge et digitalt oscilloskop til at læse signalet fra sensoren, og bruge det i PSpice som det er. Så starter du med at lave en prototype i OrCAD Capture og PSpice baseret på det rigtige signal.

 

Opgaven går i al sin enkelthed ud på...

At du skal bygge en analog hjertepulsmåler, som kan påføres fingeren og måle blodets gennemsigtighed.

Kort forklaret:

Når hjertet slår et slag, og dermed afgiver en puls, bliver fingeren mindre gennemsigtig pga. blodets gennemstrømning. Kort tid efter bliver fingeren igen mere gennemsigtig - indtil næste hjertepuls.

Sensoren består af en infrarød LED (SFH 487-2) og en fototransistor (SFH 309 NPN). Fototransistoren giver en spænding der er afhængig af lysstyrke. Når der er meget lys, bliver fototransistorens impedans lav, hvilket også giver en lav spænding. Dvs. at når der er en puls, giver fototransistoren højere spænding, og kort tid efter vil spændingen blive lav igen.

Sensoren kan monteres på en tøjklemme, som vist på billedet nedenfor. Eller se denne side, for at se sensoren.

Dette projekt skal være kompatibelt med Arduino Uno (ATMEGA328 µC), dv.s 5V logik. Det er en god ide, at du også laver din sensor på den måde, at den kan forsynes med 5V.

 

 

 

 Signalet fra sensoren kommer til at se sådan ud, hvis du måler din hjertepuls når du sidder stille:

 

 Dette signal skal du gemme i en tekstfil med to kolonner. Den første kolonne er tidspunkterne, og den anden er spændingen. Filen skal se sådan ud:

 

 Denne fil skal du importere til OrCAD Capture og PSpice ved at bruge en PWL source. Kør simuleringen for at finde ud af om du får det samme signal, som du har set på dit oscilloskop. Hvis du har gjort det hele rigtigt, får du det du ser på billedet:

 

 

 Nu skal offset fjernes fra signalet. Det kommer til at ligge på ca. 1,6V, afhængigt af fingeren. Til det kan du bruge et lavpasfilter. 

 

 Beregn knækfrekvensen så filtret ikke ødelægger signalet. Tænk først på det menneskelige hjerteslag. Det ligger på omkring 30-200 hjerteslag per minut. Omregner man det til frekvens, bliver det 0,5-3,4Hz. Dvs. 0,5-3,4 slag per sekund.

 Knækfrekvensen skal blive lavere end 0,5Hz, ellers risikerer du at ødelægge signalet. Hvis du bruger en kondensator på 10µF, og du vil have en knækfrekvens på 0,1Hz, bliver din modstand på 150k. Så ser dit signal sådan ud:

 

 Dit signal har nu som dc offset 0V. Så skal man bruge en dobbelt strømforsyning. Men det bliver mere kompliceret uden ground. Så kan du lave en bias spænding på ca. 2,5V, så du kan forstærke signalet uden at klippe det. Det kan du gøre ved at bruge en zener diode med en spænding på 2,4V.

 

 

Instruktionsvideo

 

 Nu skal signalet filtreres for højfrekvent støj ved at bruge et inverterende aktivt lavpasfilter.
 Forstærkningen er sat til -1 og knækfrekvensen er sat til 5Hz.

 Hvis du bruger en kondensator på 330nF, så har du brug for en parallel modstand på 100k.
 For en forstærkning på -1 skal du også bruge R1 = 100k.

 Prøv at bruge MCP6001 Rail to Rail forstærker. Det er en billig forstærker, og her får du en chance for at se om den kan bruges til dit projekt. MCP6002 er en IC pakke, der indeholder to forstærkere. MCP6004 er en IC pakke med fire forstærkere. Du kan bruge hvad som helst til dit design, men du kan kun bruge MCP6001 til simuleringer. 

 

 

 

 Nu skal signalet forstærkes ved at bruge en inverterende forstærker. Forstærkningen kan justeres ved at bruge en trimpot. Forstærkningen kan gå op til 100.

 

 Nu er signalet klar til at blive læst fra en mikrokontroller. Det kan lade sig gøre ved at bruge en ADC. Men i dette eksempel skal vi bare bruge mikrokontrolleren til at beregne hjerteslag per minut. Derfor er der kun behov for at få en firkantbølge ind i mikrokontrolleren. Det kan vi gøre ved at bruge en komparator.

 Her bruges en "data-slicer" komparator med hysteresis. Hysteresis er sat til 500mV. Data-slicer betyder her at der ikke er behov for en spændingsreference. Der er et lavpasfilter med en markant høj tidskonstant, der giver en average DC signal som reference. 

 

 

 Hvis du også vil have mulighed for at se kardiografen, kan du sagtens bruge en spændingsbuffer samtidig med komparatoren, så du har en output port hvor du kan tilkoble et eller andet for at se kardiografen.

 

Instruktionsvideoer

 

 Fra version 17.2 bliver det meget nemmere at bruge en Device Model Interface (DMI) i Capture og PSpice, som gør at du kan programmere i C/C++. Der findes to opgaver under Diagramtegning & Simuleringsopgaver. Disse to opgaver kan hjælpe dig med at komme nemmere i gang med at bruge DMI. 

 Efter komparatoren kan du bruge en DMI i PSpice for at simulere en mikrokontroller. Brug samme DMI som du har lavet for opgaverne i Diagramtegning & Simuleringsopgaver. Dvs. en DMI med en CLK port, en IN port og en 10-bit OUT port. Denne DMI kan du programmere i C/C++.

 

 Du skal programmere din DMI på en måde, så den læser signalet fra komparatoren ved IN port, og et CLK signal på - lad os sige - 1kHz for at gøre det nemmere.

 Din DMI skal tælle CLK pulsslag for hver hjertepuls. På den måde kan din DMI bagefter beregne din hjertefrekvens og outputte den som et binært tal. 

 

Instruktionsvideo

 

 Vil du nu lave et PCB, som du kan koble på din Arduino Uno? Vi har lavet en skabelon til dig, som du kan bruge til nemt og hurtigt at lave et Arduino shield. Du skal bare klare PCB opgaverne først. Hvis du vil bruge komponenter, der ikke eksisterer i databasen, skal du selv finde et diagramsymbol og et footprint. Der er videoer i Tips & Tricks sektionen, som kan hjælpe dig med dette.

Download filer til Arduino Uno Shield

Her kan du hente .zip filen, som indeholder alle de nødvendige filer til at tegne et Arduino Uno Shield. Du kan åbne filen med et program, der kan læse .zip filer. Der findes en opgave under PCB Design opgaver, som forklarer hvordan du kommer i gang med skabelonen. 

zip arduinouno_shield_orcad_files.zip (27.3 KB)

 

Brug følgende komponenter:

 

1x through-hole female header

  • Pitch: 2,54mm (sensors input - 3ben)
 

 

5x through-hole male headers

  • Pitch: 2,54mm
  • (4x Arduinos pinrækker, 1x 2ben til kardiografen)

 

1x MCP6004 R2R op.forstærker pakke through-hole

  • Pitch: 2,54mm
  • (der skal bruges en IC fatning)
  

 

Evt. 1x 100nF afkoblingskondensator tæt på MCP6004 strømforsyningens ben

  • Pitch: 2,5mm

 

Modstande ø2,3mm x 6mm

  • Pitch: 9mm

 

1x potentiometer ACP

  • 9mm

 

1x zener 2,4V diode BZX79-C2V4

 

1x 330nF MKT kondensator

  • Pitch: 5mm

 

2x 10uF keramisk kondensator SMD 1206 (3216 Metric)

 

Instruktionsvideo

Cookies

Nordcad.dk anvender cookies til at udarbejde statistik over anvendelsen af sitet.

Nordcad Systems A/S
Vesteraa 15
DK-9000 Aalborg

   


tel.: +45 96 31 56 90
info@nordcad.dk

We'd like to connect with you!