Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Erfassen der Herzfrequenz mit einem Fotowiderstand

Komponenten und Verbrauchsmaterialien

Digilent OpenScope MZ
× 1
Arduino UNO
× 1
Allzweck-Quad-Operationsverstärker von Texas Instruments
× 1
Hochgeschwindigkeits-Einzelkomparator von Texas Instruments
× 1
Multi-Turn-Präzisionspotentiometer - 10k Ohm (25 Umdrehungen)
× 2
Single Turn Potentiometer - 100k Ohm
Wenn Sie ein Multiturn-Potentiometer bekommen, ist es einfacher einzustellen.
× 1
Single Turn Potentiometer - 10k Ohm
× 1
Kondensator 100 µF
× 1
Kondensator 100 nF
× 1
Widerstand 10k Ohm
Oder eine einzelne 20k
× 2
Widerstand 4,75 kOhm
× 1
Widerstand 82 kOhm
Sie könnten auch zwei der 100.000 Potentiometer nehmen und eines auf 82k einstellen.
× 1

Apps und Onlinedienste

Arduino-IDE
Digilent WaveForms Live

Über dieses Projekt

Einführung

Dieses Projekt wurde von einem YouTube-Video von CapitanoRed inspiriert , wo der Autor einen auf einem Fotowiderstand basierenden Herzfrequenzmonitor zur Anzeige auf einem Oszilloskop herstellte. Nachdem ich ihr Video gesehen hatte, wollte ich das Projekt replizieren und einen Arduino hinzufügen, um die Herzfrequenz zu berechnen und anzuzeigen. Auf diese Weise können Sie die Wellenform auf einem Oszilloskop betrachten und gleichzeitig Ihre Herzfrequenz ablesen.

Wenn sich das Herz zusammenzieht und Blut durch den Körper schiebt, sind die momentanen Blutdruckschwankungen nachweisbar. Aus diesem Grund können wir unseren Puls fühlen. In Bereichen des Körpers, in denen Haut und Fleisch dünn genug sind, können diese Impulse an den leichten Variationen des hindurchtretenden Lichts erkannt werden. Obwohl unsere Augen nicht einmal empfindlich genug sind, um das Licht, das durch unseren Körper geht, zu sehen, ganz zu schweigen von den Schwankungen, haben Fotowiderstände diese Empfindlichkeit.

Ein Fotowiderstand ändert seinen Widerstand mit der Intensität des auf ihn fallenden Lichts. Obwohl die Widerstandsschwankungen bei geringfügigen Änderungen der Beleuchtungsintensität recht klein sein können, können sie mit einigen Operationsverstärker-ICs verstärkt werden.

Funktionsprinzipien

Die folgenden Diagramme zeigen den Schaltplan der Schaltung sowie das in diesem Projekt verwendete Steckbrett.

Der Fotowiderstand befindet sich in einem Spannungsteiler mit dem 20kΩ-Widerstand, was bedeutet, dass mit zunehmender Lichtmenge am Widerstand auch die Spannung am Teiler ansteigt. Der erste Operationsverstärker ("Amp1" im Bild oben) dient als Filter für den Spannungsteiler und entfernt hochfrequentes Rauschen aus dem Signal. Der zweite Operationsverstärker ("Amp2") dient als invertierender Verstärker, der so eingestellt ist, dass er das durch den Filter kommende Signal maximiert. Der dritte Operationsverstärker ("Amp3") stellt die virtuelle Masse ein, die das Signal bei 2,5 V zentriert. Dies stellt sicher, dass die Operationsverstärker in der Lage sind, einen maximalen Signalhub von 0 V bis 5 V bereitzustellen. Nach dem Filtern und Verstärken sieht das Signal ungefähr so ​​​​aus.

Damit der Arduino Ihre Herzfrequenz messen kann, muss das Signal einen Komparator ("Cmp" im Schaltplan) passieren. Ein Komparator ist ein spezialisierter Operationsverstärker, der entweder ein hohes oder ein niedriges Signal ausgeben soll. Wenn die Spannung am positiven Eingang größer als am negativen Eingang ist, gibt der Komparator hoch aus, und wenn die Spannung am positiven Eingang kleiner als der negative Eingang ist, gibt der Komparator niedrig aus. In seiner einfachsten Konfiguration dient ein Komparator als Schwellenwertdetektor, der signalisiert, wenn die gemessene Spannung über oder unter diesem Schwellenwert liegt. Da ein Komparator entweder High (5V) oder Low (0V) ausgibt, ist er perfekt für die Verbindung mit den digitalen Pins eines Arduino.

Wenn man sich das Bild des vom Operationsverstärker kommenden Signals genauer ansieht, wird deutlich, dass es einen sekundären Impuls gibt, bevor die Spannung abfällt (dies wird als dikrotische Kerbe bezeichnet). Außerdem ist das Signal stark verrauscht. Diese beiden Tatsachen bedeuten, dass die grundlegende Komparatorkonfiguration Pulse nicht richtig erkennen kann. Anstelle eines einzelnen Rechteckimpulses für jeden Herzschlag erzeugt der Komparator mehrere Impulse. Dies tritt auf, weil Rauschen dazu führt, dass das Signal den Schwellenwert beim Auf- und Abschwung mehrmals überschreitet, und je nach Einstellung der Schwellenwerte möglicherweise während der dikrotischen Kerbe. Dies führt dazu, dass der Arduino viel mehr Impulse zählt, als tatsächlich vorhanden waren.

Ein verrauschtes Signal kann mit Hysterese behandelt werden. Dieses Dokument von Texas Instruments präsentiert eine ausgezeichnete Diskussion zum Thema Signalkonditionierung mit Hysterese, zeigt, wie sich Signalrauschen auf die Komparatorleistung auswirkt und wie man mit diesen Problemen umgeht. Ich habe ihre Schaltpläne und abgeleiteten Gleichungen (Seiten 5 bzw. 7 des Dokuments) verwendet, um den asymmetrischen Komparator für dieses Projekt zu entwerfen. Die Gesamtidee besteht darin, dass eine Rückkopplungsschleife vom Ausgang die Spannung am positiven Eingang ändert, was bedeutet, dass der Schwellenwert von niedrig nach hoch unterschiedlich ist als der Schwellenwert, um von hoch nach niedrig zu gehen. Im Zusammenhang mit Herzpulsen bedeutet dies, dass der Komparator so eingestellt werden kann, dass er an einem Punkt im Aufschwung und dann an einem anderen Punkt im Abschwung, vorzugsweise nach der dikrotischen Kerbe, triggert. Auf diese Weise sieht das Arduino einen einzelnen Rechteckimpuls für jeden Herzschlag, wie unten gezeigt.

Vorbereitung des Fotowiderstands

Ich empfehle dringend, eine Art durchsichtige Abdeckung für den Fotowiderstand zu verwenden, z. B. durchsichtige Schrumpffolie. Stellen Sie zumindest sicher, dass die Kabel vollständig bedeckt sind, um zu vermeiden, dass sie mit Ihrer Haut in Berührung kommen. Die von Ihrem Körper erzeugten Spannungen liegen innerhalb des Bereichs, den der Fotowiderstand erzeugt, wenn er Ihren Puls erkennt, sodass ein Kontakt mit Ihrer Haut die Ergebnisse verfälschen könnte.

Einstellen des Herzfrequenzmessers

Verwenden Sie für das Potentiometer im Schaltplan (R7) ein Singleturn-Potentiometer und stellen Sie es ein, um die Verstärkung des Operationsverstärkers zu maximieren, ohne in die Sättigung zu gehen. Stellen Sie zunächst eine Seite des Potentiometers auf ca. 375 ein und schließen Sie den Filter ("Amp1") an dieser Seite an. Diese Verstärkung sollte einen ausreichenden Impuls erzeugen, den Sie in WaveForms Live sehen können. Nachdem Sie die Schritte im nächsten Abschnitt („Anzeigen von Pulsen in WaveForms Live“) ausgeführt und Ihren Puls erfolgreich angezeigt haben, können Sie die Verstärkung bei Bedarf ändern. Erhöhen Sie die Impulsamplitude durch Drehen des Potentiometers, um den filterseitigen Widerstand zu verkleinern. Wenn die Amplitude bereits zu groß ist und Clipping verursacht, erhöhen Sie den filterseitigen Widerstand. Lesen Sie die Bildunterschriften auf den folgenden Bildern, um zu bestimmen, wie ein wünschenswertes Signal aussieht.

Ich empfehle Multiturn-Potentiometer für die Widerstände R3 und R4 zu verwenden, um die Schwellen für den Komparator genau einzustellen. Widerstand R5 kann ein beliebiger Widerstand im Bereich von 10-100 kΩ sein, solange er genau gemessen wird. Sie können die Tabelle im Abschnitt Anhänge verwenden, um basierend auf dem gemessenen Wert von R5 und den Schwellenspannungen zu bestimmen, auf welche Werte R3 und R4 eingestellt werden sollen. Die Schwellenwerte "Vl" und "Vh" müssen basierend auf dem Impuls geändert werden, den Sie durch das Oszilloskop sehen (siehe Abschnitt "Einstellen von Komparator-Schwellenwerten").

Die Widerstände R8 und R9 können durch ein Potentiometer ersetzt werden, wobei der mittlere Pin mit dem positiven Eingang des Operationsverstärkers verbunden ist. Auf diese Weise kann die virtuelle Masse einfach angepasst werden, ohne dass passende Widerstände gefunden werden müssen. Verwenden Sie ein Voltmeter oder das OpenScope, während Sie den Ausgang auf 2,5 V einstellen.

Pulse in WaveForms Live anzeigen

Um Ihren Herzschlag über WaveForms Live anzuzeigen, müssen Sie einige Einstellungen im Menü ändern. Standardmäßig ist die Ausgabe entweder gestreckt und schwer zu interpretieren, oder die Aktualisierungsgeschwindigkeit ist sehr langsam und es wird schwierig sein, Ihren Griff am Fotowiderstand anzupassen, um klare Impulse zu erzeugen.

Verbinden Sie den OpenScope-Oszilloskop-Kanal 2 (blaues Kabel) mit dem Ausgang von "Amp2" und stellen Sie sicher, dass das Erdungskabel mit der Masse des Steckbretts verbunden ist. Ändern Sie in WaveForms Live die Zeit auf "1" und im Trigger Menü drücken Sie die OFF Taste. Für beide Osc Ch 1 und Osc Ch2 Menüs setzen Offset auf 2.5V und neben Samples Klicken Sie auf das Schlosssymbol und geben Sie "1000" in das frei werdende Feld ein. Dadurch wird das Signal auf einer leicht zu interpretierenden Zeitskala angezeigt, die Aktualisierungen erfolgen jedoch häufiger als standardmäßig. Der Bildschirm sollte etwa alle 4 Sekunden aktualisiert werden. Wenn dies immer noch zu langsam ist, können Sie die Samples erhöhen Wert, aber auf Kosten eines kürzeren Signalausschnitts ("2000" erfasst jeweils etwa einen Herzschlag).

Drücke auf RUN Taste und messen Sie Ihren Puls mit dem Finger am Fotowiderstand. Sie müssen den besten Weg finden, um konsistente Ergebnisse zu erzielen. Das System reagiert sehr empfindlich auf Druckänderungen, daher müssen Sie einen Weg finden, Ihren Finger ganz ruhig zu halten. Ich fand meinen Puls am besten im ersten Gelenk des Zeigefingers. Es braucht ein wenig Zeit, um sich selbst zu trainieren, aber irgendwann werden Sie die beste Methode finden. Wenn Ihre Pulse zu klein erscheinen, stellen Sie das Potentiometer wie im ersten Absatz des vorherigen Abschnitts ("Abstimmen des Herzfrequenzmessers") beschrieben ein.

Einstellen von Komparator-Schwellenwerten

Sobald das Signal auf dem Oszilloskop sichtbar ist, müssen Sie die Schwellenwerte einstellen, bei denen der Komparator triggert und das Arduino signalisiert. Erhalten Sie eine repräsentative Wellenform und stoppen Sie die Erfassung, damit die Wellenform auf dem Display angezeigt wird. Drücken Sie unten auf dem Bildschirm die CURSORS Taste. Unter Typ wähle "Spannung" und stelle beide CursorChannels auf "Osc 2". Auf dem Display erscheinen zwei horizontale gestrichelte Linien. Ziehen Sie die Dreiecke auf der linken Seite, um sie zu verschieben. Setzen Sie eine der Linien auf einen Punkt in der Nähe der Pulsspitze und die andere auf einen Punkt unterhalb der dikrotischen Kerbe. Sehen Sie sich den unteren Bildschirmrand an und notieren Sie die beiden Spannungen, die in den Klammern angezeigt werden. Tragen Sie diese Werte als Schwellspannungen "Vl" und "Vh" in die am Ende angehängte Tabelle ein. Der kleinere Wert ist "Vl" und der größere ist "Vh". Stellen Sie basierend auf diesen Werten und dem von Ihnen gewählten Widerstandswert R5 die Werte der Potentiometer R3 und R4 ein, die die Tabelle berechnet.

Nachdem der Komparator eingestellt ist, sollte er beginnen, ein Signal auszugeben, das dem vor dem Abschnitt "Vorbereitung des Fotowiderstands" ähnelt.

Arduino-Code

Der Arduino-Code besteht aus einem Frequenzzähler und einer Methode zur Berechnung der Herzfrequenz in Schlägen pro Minute. Der Frequenzzähler berücksichtigt die Breite des vom Komparator kommenden Impulses und weist alles unter 200 Millisekunden oder mehr als 800 Millisekunden zurück. Dadurch wird verhindert, dass falsche Daten angezeigt werden, wenn der Fotowiderstand nicht für Messungen verwendet wird und der Komparator hoch oder niedrig sein kann oder schnell zwischen den beiden Zuständen umschaltet. Der Code speichert einen laufenden Durchschnitt der Herzfrequenz der letzten 15 Sekunden, um verpasste Pulse aufgrund von Signalrauschen durch versehentliche Bewegungen herauszufiltern.

Zukünftige Verbesserungen

Der Hauptnachteil dieses Projekts besteht darin, dass es schwierig ist, den Fotowiderstand so zu halten, dass die Impulse zwischen den Anwendungen die gleiche Amplitude haben. Da der Sensor für die Pulserkennung vom Umgebungslicht abhängig ist, können wechselnde Lichtstärken im Laufe des Tages zu unterschiedlichen Ergebnissen führen. Mir ist aufgefallen, dass meine Komparatorschwellen an bewölkten Tagen zu hoch waren und an hell erleuchteten Tagen die dikrotische Kerbe sehr ausgeprägt war und eine falsche Pulserkennung verursachen konnte. Darüber hinaus werden selbst feine Lichtveränderungen durch Bewegungen im Raum durch den Fotowiderstand erfasst. Das Problem der Konsistenz könnte auf verschiedene Weise angegangen werden.

Das Sensorsystem könnte eine LED umfassen, um gleichmäßiges Licht bereitzustellen. Dies würde den in Arztpraxen verwendeten Herzüberwachungsclips oder den Herzfrequenzmessern in Mobiltelefonen ähneln. Ich habe versucht, eine rote LED mit dem Fotowiderstand auf der anderen Seite gegen die Oberseite meines Fingers zu halten. Die Ergebnisse waren ermutigend, daher ist dies wahrscheinlich eine praktikable Option, wenn ein gutes Gehäuse hergestellt werden könnte.

Auf der Softwareseite wäre eine mögliche Lösung die Verwendung eines Auto-Ranging-Algorithmus im Arduino. Es würde die Impulse erkennen und ihre Spitzen und Täler finden. Dies würde jedoch nicht ausreichen, um eine Herzfrequenzmessung durchzuführen. Ein richtiger Frequenzzähler erfordert Unterbrechungen. Ohne Unterbrechungen könnte der Prozessor des Arduino etwas anderes tun, als die Eingangspins zu überprüfen und einen Impuls zu verpassen. Da Interrupts nur auf digitalen Pins verfügbar sind, wäre die beste Möglichkeit, die automatische Bereichswahl zu implementieren, die Verwendung von digitalen Potentiometern. Der Arduino würde den analogen Pin verwenden, um den Bereich zu finden, in dem der Impuls auftritt, die Komparatorschwellenwerte bestimmen, sie über die digitalen Potentiometer anwenden und dann das digitale Signal des Komparators verwenden, um die Frequenzzählung durchzuführen.

Code

  • Komparator calcs.xlsx
  • Arduino-Herzfrequenzzähler
Komparator calcs.xlsxArduino
Diese Excel-Tabelle berechnet die R3- und R4-Werte, um asymmetrische Schwellenwerte für den Komparator festzulegen. Sie können die Spalte R5 in einen gemessenen Widerstandswert ändern. Vl und Vh müssen auf die Schwellenwerte geändert werden, die erforderlich sind, um einen sauberen Puls aus der Herzfrequenz zu erhalten.
Keine Vorschau (nur Download).
Arduino-HerzfrequenzzählerArduino
Dieser Code berechnet Ihre Herzfrequenz basierend auf den vom Komparator gesendeten Pulsen.
#define INT0 3float frequency;long timeCount;int counter;long pulseStart;int inputPin =3;boolean low;float freqAvg;float total;void setup () { AttachInterrupt (digitalPinToInterrupt (INT0), Unterbrechung, CHANGE); Zähler =0; timeCount =0; Frequenz =0; niedrig =falsch; Serial.begin (9600); total =15;}void loop () { timeCount =millis (); while(millis() - timeCount <5000) { Frequenz =Zähler; } if(Häufigkeit> 3){gesamt +=Häufigkeit; gesamt -=freqAvg; FreqAvg =Gesamt/3; } showHR(); Zähler =0;} Intrruption stornieren () { if (digitalRead (3) ==0) { FallDetect (); niedrig =wahr; aufrechtzuerhalten. Sonst if (digitalRead (3) ==1) { widthCheck (); }}void fallDetect () { pulseStart =millis ();}void widthCheck () { long pulseEnd =millis (); if((pulseEnd - pulseStart> 200) &&(pulseEnd - pulseStart <800) &&low){ counter++; niedrig =falsch; }}void showHR () {Serial.print ( "Herzfrequenz ="); Serial.println (freqAvg * 12); }

Schaltpläne

hr_monitor_tnffXlVQQV.fzz

Herstellungsprozess

  1. Externer Defibrillator
  2. Künstliches Herz
  3. Künstliche Herzklappe
  4. EKG-Maschine
  5. Erkennen von Blitzen mit einem Raspberry Pi
  6. Windows 10 IoT Core – Lesen von Herzfrequenzpulsen
  7. Ferngesteuerter Herzfrequenzmesser
  8. Erkennen des Magnetismus des Kerns eines einzelnen Atoms
  9. In die Kleidung integrierte Sensoren überwachen die Herzfrequenz
  10. Herzgesundheit beginnt mit ölfreier Druckluft