Herzfrequenz/Pulsesensor SE050
![](/wiki/images/2/25/SE050_02.jpg)
Autor: | Weiran Wang |
Studiengang: | Business and Systems Engineering |
Modul: | BSE-M-2-1.03, Hausarbeit in Angewandte Informatik gehalten von Prof. Dr.-Ing. Schneider |
Semester: | Sommersemester 2024 |
Abgabetermin: | 28.07.2024 |
Einführung
Aufgabenstellung
Messen Sie die die Herzfrequenz am Ohrläppchen oder Finger in Herzschlag pro Minute (BPM).
Anforderungen | |||||||||||||||||||||||||||
|
- Thema/Fragestellung: Messung der Herzfrequenz mit dem Pulsesensor SE050
- Hypothese: Herzfrequenz kann fehlerfrei gemessen werden.
- Einordnung in den Lehrplan
Projektbeschreibung
# | Anzahl | Material |
---|---|---|
1 | 1 | PC mit MATLAB/Simulink R2023b |
2 | 1 | Pulsesensor SE050 |
3 | 1 | Arduino Uno R3 |
4 | 1 | Streckbrett |
5 | ? | Jumper Kabel, männlich/männlich, 20 cm |
Beschreibung Funktionsweise der verwendeten Hard- und Software
- Arduino Uno R3
Arduino Uno R3 ist ein Open-Source-Mikrocontroller-Entwicklungsboard, das von der Firma Arduino entwickelt und produziert wurde. Es integriert viele wichtige Komponenten. Zu den Hauptkomponenten gehören der Atmega328P-Mikrocontroller, eine externe Quarzquelle zur Bereitstellung einer hohen Taktfrequenz, ein Upload-Gerät, das aus einer USB-Schnittstelle und einem Atmega16U2-Signalumwandlungsmodul besteht, eine Reset-Taste zum Neustarten von Programmen sowie zwei Reihen von Schnittstellen zur Verbindung von Peripheriegeräten. Da ein Mikrocontroller der AVR-Serie verwendet wird, unterstützt das Arduino-Board eine Vielzahl von Funktionen wie digitale Ein-/Ausgabe, analoge Ein-/Ausgabe, Timer/Zähler und Interrupts, die die grundlegenden Anforderungen eingebetteter Systeme erfüllen.
- Pulsesensor SE050
Pulse Sensor ist ein Open-Source-Hardwareprojekt, das von Joel Murphy und Yury Gitman entwickelt wurde. Aus den verfügbaren Informationen und durch direkte Beobachtung lässt sich erkennen, dass der Pulse Sensor eine runde Leiterplatte (PCB) ist, die verschiedene Komponenten integriert. Zu den wichtigsten Komponenten gehören der Lichtsensor „APDS-9008“ und eine grüne LED von „Kingbright“. Diese beiden Komponenten ermöglichen die Photoplethysmographie (PPG)-Technologie. Genauer gesagt, sendet die grüne LED Licht auf die Haut, wobei ein Teil des Lichts vom Blut absorbiert und ein Teil vom Gewebe reflektiert wird und auf den „APDS-9008“-Lichtsensor trifft. Durch die Erkennung der durch den Blutfluss verursachten Änderungen dieser Lichtstrahlen kann die Herzfrequenz gemessen werden.
- LCD Modul 16x02 I2C
- Simulink R2023b
Um die Analyse von Sensordaten zu erleichtern, werden Matlab & Simulink verwendet. Darüber hinaus muss zur Unterstützung von Arduino-Projekten das Plugin „Simulink Support Package for Arduino Hardware“ heruntergeladen und installiert werden. Durch die Verwendung des Simulink Support Package for Arduino Hardware können Entwickler effektiv RCP (Rapid Control Prototyping) durchführen, wodurch der Entwurfs- und Validierungsprozess von Steuerungssystemen beschleunigt wird. Konkret ermöglicht der Einsatz dieses Plugins, dass Modelle, die auf Arduino-Funktionen basieren, in Maschinencode umgewandelt und auf die Arduino-Entwicklungsplatine hochgeladen werden. Anschließend können die Ausgaberesultate der Arduino-Entwicklungsplatine in Echtzeit in Simulink beobachtet werden.
Technische Daten
Messbereich | unbekannt |
Versorgungsspannung | 3.3 V oder 5.0 V |
Versorgungsstrom | < 4 mA |
Ausgangssignaltyp | Analogsignal |
Ausgangssignalbereich | 0.3 V .. VCC V |
Getriebe | Kunststtoff |
Arbeitstemperatur | -40 °C .. +85 °C |
Abmessungen | ∅ = 15.8 mm ; δ = 3.6 mm |
Pinbelegung
Pin | Belegung | Signal |
---|---|---|
1 | Signal | Analogsignal (0.3 V .. 5 V) |
2 | Versorgungsspannung VCC | 5 V |
3 | Masse (GND) | 0 V |
Versuchsaufbau und Durchführung
Versuchsaufbau
![](/wiki/images/thumb/3/39/Schaltplan_Sharp.jpg/450px-Schaltplan_Sharp.jpg)
![](/wiki/images/thumb/9/95/Externe_Lichtquellen_isolierender_Pulse_Sensor.jpg/450px-Externe_Lichtquellen_isolierender_Pulse_Sensor.jpg)
![](/wiki/images/thumb/4/46/Messdaten_des_Stillstands_.jpg/450px-Messdaten_des_Stillstands_.jpg)
![](/wiki/images/thumb/a/a8/Anschlussplan_Sharp.png/450px-Anschlussplan_Sharp.png)
![](/wiki/images/thumb/1/1d/Foto_Sharp.png/450px-Foto_Sharp.png)
Der Versuchsaufbau wird durch einen Schaltplan (Abb. 2), Anschlussplan (Abb. 3) und Foto des Aufbaus (Abb. 4) dokumentiert.
Versuchsdurchführung
Modelleinstellungen: Arduino Uno, Solver: Fixed-step, discrete, Abtastrate: 0,001 s
![](/wiki/images/thumb/b/b2/Simulink_Sharp.png/450px-Simulink_Sharp.png)
Das Modell zur Datenverarbeitung wurde gemäß Abb. 5 in Simulink aufgebaut. Die Messdaten wurden aufgezeichnet. Ein Video der Versuchsdurchführung findet sich hier.
- Erste Modellierung
Pulse Sensor verwendet die PPG-Technologie. Während des Betriebs des Geräts wird das Pulssignal synchron und kontinuierlich mit den Pulsschwingungen ausgegeben. Daher reicht es aus, den Zeitraum dieses Schwingungssignals zu bestimmen, um die momentane Herzfrequenz zu ermitteln.
Beim Erstellen des Modells muss das Analog Input-Block verwendet werden, um die Ausgangsabtastung des Pulse Sensors vom Arduino UNO R3 zu erhalten und in ein Digitalsignal umzuwandeln.
Aus dem Datenblatt des Mikrocontrollers Atmega328P geht hervor, dass die ADC-Umwandlungszeit maximal 260 µs beträgt, während das Abtastintervall 67 µs beträgt. Daher beträgt die gesamte A/D-Umwandlungszeit 327 µs und ist somit kleiner als 1 ms. Daher kann die Systemabtastuhr in Simulink mit discretem Fixed-step auf 0,001 s fest eingestellt werden.
Beobachtungen zeigen, dass bei jedem Herzschlag ein höherer und ein niedrigerer Peak im Signal auftreten. Der höhere Peak repräsentiert den Herzschlag, während der niedrigere Peak aufgrund der Struktur der Blutgefäße entsteht. In diesem Projekt kann der niedrigere Peak ignoriert werden. Daher kann ein Filter, der aus einem Constant-Block und einem Relational Operator-Block besteht, verwendet werden, um die höheren Peaks zu erhalten. Der Wert des Constant-Blockes wird auf 2 gesetzt. Es reicht aus, das Zeitintervall der ansteigenden Flanke des Signals, das den Schwellenwert von "2" überschreitet, zu erkennen und die Umrechnungsformel zu verwenden, um die momentane Herzfrequenz zu berechnen.
Da das Herzfrequenzmessgerät, bestehend aus dem Pulse Sensor und dem Arduino UNO R3, während des Signalwandlungsprozesses einige Fehler verursachen kann, ist es notwendig, die Messfehler des Geräts zu bestimmen und zu analysieren, ob diese Fehler die Herzfrequenzmessung negativ beeinflussen können.
- Vorläufige Bewertung der Messunsicherheit
Da die Herzfrequenz eine nicht kontrollierbare Variable ist, kann im Messdesign kein bestimmter Wert als Referenzstandard festgelegt werden. Daher kann das Messgerät nur vor der Herzfrequenzmessung, wenn die Herzfrequenz null ist, kalibriert werden. Externe Lichtquellen isolierender Pulse Sensor(Abb. 3) zeigt den auf dem Tisch ruhenden Pulse Sensor, der von externen Lichtquellen abgeschirmt ist. Die Erfassung der Ausgangsspannung des Pulse Sensors in diesem Zustand sollte im Laufe der Zeit einen relativ stabilen Wert nahe VCC/2 zeigen.
Messdaten des Stillstands (Abb. 4) zeigen die Daten innerhalb von zwei Minuten. Die Messwerte schwanken zwischen 2,44 V und 2,54 V, ohne große Abweichungen. Diese Schwankungen können durch externe elektromagnetische Störungen, sensorinterne Geräusche und ADC-Quantisierungsrauschen verursacht werden. Daher können die im Diagramm dargestellten zufälligen Fehler als Standardunsicherheit Typ A kategorisiert werden.
- Die konkrete Messunsicherheit mit Matlab berechnen
Die Verwendung von Matlab ermöglicht eine einfache Bestimmung der Messunsicherheit. Zunächst werden die gemessenen Spannungsdaten aus Simulink in den Workspace importiert, um die auf wiederholten Messungen basierende Standardunsicherheit Typ A zu bestimmen. Anschließend werden die Spezifikationsparameter der Hardwaregeräte, wie z.B. Kalibrierzertifikate und technische Spezifikationen des Herstellers, gesammelt, um die Standardunsicherheit Typ B zu bestimmen. Schließlich werden die Standardunsicherheiten der Typen A und B zur Typ-C-Standardunsicherheit kombiniert.
Der Berechnungsprozess der Typ-A-Unsicherheit ist wie folgt: Zunächst wird das Konfidenzniveau (z.B. 68,27%) festgelegt, der zweiseitige Konfidenzintervallwert berechnet und dann der entsprechende t-Wert unter Verwendung der t-Verteilung und der Freiheitsgrade ermittelt. Schließlich wird die Standardunsicherheit mithilfe der Formel
uA = t * sE / √n
berechnet, wobei sE die Stichprobenstandardabweichung und n die Stichprobengröße ist.
Da der Pulse Sensor kein Standardsensor ist und entsprechende Literatur und Daten im Internet rar sind, ist es schwierig, die durch den Magnetsensor verursachte Standardunsicherheit Typ B zu bestimmen.
Die ADC-Wandlungsgenauigkeit des Arduino UNO R3 wird durch seinen Mikrocontroller Atmega328p bestimmt. Beim Durchsehen des Datenblatts des Atmega328p können die folgenden Eigenschaften seines ADC-Komponenten festgestellt werden: Der maximale Wert der absoluten Genauigkeit beträgt 3,5 LSB, der maximale Wert der Integral-Nonlinearität beträgt 1,5 LSB, der maximale Wert der Differenzial-Nonlinearität beträgt 0,7 LSB, der Bereich des Verstärkungsfehlers beträgt 3,5 LSB und der Bereich des Offset-Fehlers beträgt 3,5 LSB. Bei der Berechnung der Standardunsicherheit vom Typ B wird angenommen, dass diese Fehler gleichmäßig verteilt sind, und ihre Standardunsicherheit wird als diese Maximalwerte geteilt durch √3berechnet.
Versuchsbeobachtung
![](/wiki/images/thumb/6/6a/Sharp_Ergebnis_1.png/450px-Sharp_Ergebnis_1.png)
![](/wiki/images/thumb/4/41/Sharp_Ergebnis_2.png/450px-Sharp_Ergebnis_2.png)
Das Signal des Sensors weist alle 40 ms systematische Ausreisser auf (vgl. Abb. 6, rote Kurve).
Auswertung
Die Messhypothese wurde verworfen. Der Sensor weist systematische Messwertausreisser auf.
Die Ausreisser lassen sich mit einem Signalfilter eliminieren. Hierzu eignet sich ein Rangordnungsfilter (z. B. Median-Filter). Das Filter wird hierzu auf eine Fensterbreite von 30 Werten eingestellt. Das zufriedenstellende Filterergebnis für statische Werte zeigt Abb. 6 als blaue Kurve. Es konnte mit dynamische Werten verifiziert werden (vgl. Abb. 7). Das Datenblatt ([2, S. 6]) belegt die Messungen und bezeichnet die Messausreisser als "instabile Ausgabe" für maximal 5 ms alle 40 ms. Mit 50 Werten erhöht sich die Filterwirkung, es entsteht jedoch ein Delay von 10 ms. Mit 10 Werten ist die Filterwirkung zu gering.
Zusammenfassung und Ausblick
- Zusammenfassung der Kapitel 1-4
- Diskussion der Ergebnisse
- Ausblick
- Selbstreflexion/Lessons learned
Ergebnisvideo
Binden Sie hier Ihr Ergebnisvideo ein.
Anleitung: Videos im Wiki einbinden
Lernzielkrontrolle
Beantworten Sie in Ihrem Artikel die Lernzielkontrollfragen.
Lernzielkontrollfragen |
|
Literatur
Zitieren Sie nach DIN ISO 690:2013-10.
Anhang
- Datenblätter
- Simulink-Modell
- Originaldateien (PAP, Schaltplan,... )
→ zurück zum Hauptartikel: BSE Angewandte Informatik SoSe24 | Hausarbeit SoSe24