Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Onderdelen en benodigdheden

Onderdeel Aantal Opmerking
Digilent OpenScope MZ 1 Oscilloscoop voor signaalanalyse
Arduino UNO 1 Voor hartslagberekening
Texas Instruments General Purpose Quad Op-Amp (bijv. TL074) 1 Voor filtering en versterking
Texas Instruments High Speed Single Comparator (bijv. TLV3501) 1 Om analoog signaal om te zetten naar digitaal
Multi-turn precisie potentiometer 10kΩ (25 draaien) 2 Voor nauwkeurige drempelinstelling
Enkelvoudige potentiometer 100kΩ 1 Multi-turn versie is makkelijker af te stellen
Enkelvoudige potentiometer 10kΩ 1
Condensator 100 µF 1
Condensator 100 nF 1
Weerstand 10kΩ 2 Of één 20kΩ
Weerstand 4.75kΩ 1
Weerstand 82kΩ 1 Of twee 100kΩ potentiometers ingesteld op 82kΩ

Apps en online diensten

  • Arduino IDE – Voor programmeren
  • Digilent WaveForms Live – Oscilloscoopsoftware voor OpenScope

Over dit project

Inleiding

Dit project is geïnspireerd op een YouTube-video van CapitanoRed, waarin een fotoweerstand-gebaseerde hartslagmonitor werd gemaakt voor weergave op een oscilloscoop. Ik wilde dit repliceren en een Arduino toevoegen om de hartslag te berekenen en weer te geven. Zo kun je het golfvorm op de oscilloscoop bekijken en tegelijkertijd je hartslag lezen.

Wanneer het hart samen trekt en bloed door het lichaam persst, ontstaan momentane bloeddrukfluctuaties. Daarom voelen we onze pols. Op plaatsen waar de huid dun genoeg is, zijn deze pulsen detecteerbaar in de lichte variaties van doorlaatlicht. Hoewel onze ogen niet gevoelig genoeg zijn om het doorlaatlicht, laat staan de fluctuaties, te zien, hebben fotoweerstanden wel deze gevoeligheid.

Een fotoweerstand varieert in weerstand met de intensiteit van het invallende licht. Hoewel de weerstandsverandering bij subtiele lichtveranderingen klein kan zijn, kan deze worden versterkt met een paar operationele versterkers.

Werkingsprincipe

De schema's tonen het elektrisch schema en de breadboard-opbouw.

Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino
Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Signaalketen:

  1. Spanningsdeler: Fotoweerstand in serie met 20kΩ. Meer licht → lagere weerstand → hogere spanning.
  2. Amp1 (Filter): Verwijdert hoogfrequente ruis.
  3. Amp2 (Inverterende versterker): Maximaliseert het signaal na filtering.
  4. Amp3 (Virtuele grond): Centreert het signaal op 2.5V voor maximale swing (0-5V).
Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Comparator (Cmp): Een gespecialiseerde op-amp die HIGH (5V) of LOW (0V) uitgeeft. Positieve ingang > negatieve ingang → HIGH, anders LOW. Perfect voor Arduino digitale pinnen.

Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Uitdaging: Ruische signaal en dicrotische piek – Het versterkte signaal toont een secundaire puls (dicrotische piek) voor de dalende flank, plus ruis. Een simpele comparator zou meerdere pulsen per hartslag detecteren.

Oplossing: Hysteresis comparator – Een terugkoppeling van de uitgang verandert de drempelspanning op de positieve ingang. De drempel voor LOW→HIGH verschilt van HIGH→LOW. Zo kan de comparator op één punt in de stijgende flank triggeren en op een ander punt in de dalende flank (na de dicrotische piek). Resultaat: één schone blokpuls per hartslag.

Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Voorbereiding fotoweerstand

Gebruik een duidelijke bescherming (bijv. transparante krimpkous) over de fotoweerstand. Zorg dat de aansluitdraden volledig geïsoleerd zijn om contact met de huid te voorkomen – lichaamsspanningen kunnen de meting verstoren.

Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Afstellen van de hartslagmonitor

Potentiometer R7 (versterking Amp2): Begin met ~375Ω aan de filter-kant. Verhoog versterking (kleinere weerstand) als puls te klein is, verlaag bij clipping.

Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino
Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino
Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Potentiometers R3, R4 (comparator drempels): Gebruik multi-turn voor precisie. R5 kan elke 10-100kΩ weerstand zijn (precies gemeten). De bijgevoegde spreadsheet berekent R3/R4 waarden op basis van R5 en de gewenste drempels Vl en Vh.

R8, R9 (virtuele grond): Vervang door één potentiometer met middenaftakking op positieve ingang van Amp3. Stel uitgang in op 2.5V met multimeter of OpenScope.

Pulsen bekijken in WaveForms Live

OpenScope Kanaal 2 (blauwe draad) op Amp2-uitgang, massa op breadboard-massa. Instellingen:

  • Time: 1s
  • Trigger: OFF
  • Osc Ch 1 & 2: Offset 2.5V, Samples 1000 (klik slotje)

Scherm ververst ~elke 4 seconden. Druk RUN, plaats vinger op fotoweerstand. Vind een rustige positie (beste: eerste gewricht van wijvinger).

Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Comparator drempels instellen

Stop opname bij representatief golfvorm. Gebruik CURSORS → Type: Voltage, CursorChannels: Osc 2. Plaats lijnen: één bij piek, één onder dicrotische piek. Noteer spanningen → Vl (laagste) en Vh (hoogste). Vul in spreadsheet → berekende R3/R4 waarden instellen.

Bouw een nauwkeurige hartslagmonitor met een fotoweerstand en Arduino

Arduino-code

De code telt pulsen (frequentieteller) en berekent hartslag in slagen per minuut (BPM). Pulsbreedte filter: 200–800 ms. Loopt gemiddelde over 15 seconden om ruis door beweging te filteren.

#define INT0 3
float frequency;
long timeCount;
int counter;
long pulseStart;
int inputPin = 3;
boolean low;
float freqAvg;
float total;

void setup() {
  attachInterrupt(digitalPinToInterrupt(INT0), intrruption, CHANGE);
  counter = 0;
  timeCount = 0;
  frequency = 0;
  low = false;
  Serial.begin(9600);
  total = 15;
}

void loop() {
  timeCount = millis();
  while (millis() - timeCount < 5000) {
    frequency = counter;
  }
  if (frequency > 3) {
    total += frequency;
    total -= freqAvg;
    freqAvg = total / 3;
  }
  showHR();
  counter = 0;
}

void intrruption() {
  if (digitalRead(3) == 0) {
    fallDetect();
    low = true;
  } else if (digitalRead(3) == 1) {
    widthCheck();
  }
}

void fallDetect() {
  pulseStart = millis();
}

void widthCheck() {
  long pulseEnd = millis();
  if ((pulseEnd - pulseStart > 200) && (pulseEnd - pulseStart < 800) && low) {
    counter++;
    low = false;
  }
}

void showHR() {
  Serial.print("Heart rate = ");
  Serial.println(freqAvg * 12); // 5 seconden monsters → ×12 voor BPM
}

Toekomstige verbeteringen

  • Consistente verlichting: Voeg een LED toe (zoals bij medische clips/smartphones) voor constante belichting, ongevoelig voor omgevingslicht.
  • Auto-ranging algoritme: Arduino detecteert piek/daal waarden, stelt comparator-drempels via digitale potentiometers in, en gebruikt interrupts voor nauwkeurige frequentietelling.

Code bestanden

  • comparator calcs.xlsx – Spreadsheet voor R3/R4 berekening (download)
  • Arduino Heart Rate Counter – Hoofdsketch (bovenstaande code)

Schema

hr_monitor_tnffXlVQQV.fzz (Fritzing-bestand)

Productieproces

  1. Externe Defibrillator: Geschiedenis, Ontwerp en Productie
  2. Kunstmatig Hart: Technologie, Geschiedenis en Toekomstperspectieven
  3. Kunstmatige Hartkleppen: Typen, Geschiedenis en Toekomstige Innovaties
  4. Uitgebreid Overzicht van Moderne ECG-Apparaten: Technologie, Productie en Toekomstige Innovaties
  5. Pacemaker: Modern Levensreddende Technologie voor Hartritmestoornissen
  6. Bliksemdetectie met Raspberry Pi en AS3935: Een Praktische Handleiding
  7. Hartslagpulsen uitlezen met Windows 10 IoT Core op Raspberry Pi – Stap-voor-stap gids
  8. Remote Hartslagmonitoringssysteem met AWS IoT-waarschuwingen
  9. Bescherm je hart: Essentiële leefgewoontes voor de maand hartgezondheid in februari
  10. Geïntegreerde hartslagsensoren in slimme kleding: betrouwbare draagbare monitoring
  11. De magnetische handtekening van een enkele atoomkern meten