Pulsuhrempfänger mit AVR Butterfly

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Das Projekt befindet sich noch im Aufbau. Wer mitmachen will meldet sich bitte im Forum

Hardware

Empfänger

Mit OP

Die Hardware basiert auf Informationen zu einem "Heart Rate Monitor" (HRM) auf dieser ( toter Link :-( )Web-Seite.

An der Schaltung wurde:

  • die Ausgangsstufe durch einen Schmitttrigger ersetzt.
  • mit einem OP gleichgerichtet, damit auch Versorgungsspannungen unter +-1V möglich sind

Somit erhält man ein sauberes TTL-Signal, das gut mit dem AVR verarbeitet werden kann. Die Schaltung besteht nur aus einem 4-fach OP (z.B op11 oder tl074) und kann einfach auf einer Lochrasterplatine aufgebaut werden. Wenn das Interesse besteht, werde ich die Platine ätzen und so anpassen dass sie unter den Butterfly gesteckt werden kann.Im Forum gibt es einen Schaltplan im Eagle-Format.

Puls-mess-empfäenger-0 2.png

Abstimmen

Da die Bauteiltoleranzen der Spule und des Resonanzkondenstators groß sind, kann die Empfängerschaltung abgestimmt werden. Dadurch wird die Empfangsqualität besser.

  • Eine Spule am Funktionsgenerator anschließen.
  • 5,3 kHz einstellen
  • C solange durch Parallelschalten verändern bis der Pegel nach der 1. oder 2. Verstärkerstufe maximal ist.

Alternative: Tondekoder

Der XR567 und auch der NE567 ziehen fast 10mA. Der XR-L567 zieht nur 1mA, braucht aber immer noch 5V.

Es sind mindestens 10 Schwingungen für eine Erkennung nötig. Das reicht, man kann sogar ein relativ schmales Loopfilter einsetzen (400Hz).

Die minimale Eingangsspannung beträgt 25mVrms. Da muss man wohl noch einen Verstärker davor setzen.

Datenblatt NE567

Der XR2213 zieht ebenfalls ca. 10mA, kann aber noch 2mV Eingangssignal verarbeiten. D.h. man könnte auf einen zusätzlichen Vorverstärker verzichten.

Zur Verringerung des Stromverbrauchs kann der Tondekoder in den Pulspausen abgeschaltet werden.

Alternative: Filterung per Software

Man gibt das Ausgangssignal des filternden Vorverstärkers auf den Analogeingang des AVR. Das Eingangssignal wird mit 4*5.3kHz gesampelt. Aus den gesampelten Daten werden die I- und Q-Streams folgendermassen erzeugt:

I(n)=S(n)-S(n+2)

Q(n)=S(n+1)-S(n+3)

Durch die Subtraktion erhält man schon eine gewisse Bandfilterwirkung.

Die zwei Sampling Streams werden getrennt mit Rekursivfiltern niedriger Grenzfrequenz gefiltert, quadriert, addiert und nochmal gefiltert. Nach dem darauffolgenden Komparator wird die Zeitdifferenz zwischen zwei Pulsen gemessen, die dann wohl nochmal gefiltert werden muss.


Alternativ zum Komparator könnte man eine SW-PLL für die Herzfrequenz verwenden. Am Steuereingang des NCO wird dann die Herzfrequenz abgegriffen.

Software puls empfaenger diagramm.png

Das ist eine echte Herausforderung für den kleinen Prozessor!

Für die Filter sollte man keine Floationpoint Operationen verwenden.

Wenn der ADC von Fremdsignalen übersteuert wird, nützt die ganze Filterei nichts.

Ob man mit dem Stromverbrauch günstiger wegkommt, als mit der XR-L567 Lösung ist fraglich. Dafür braucht man nicht soviel externe Hardware.

Die Samplingrate von 21.2 kHz ist beim Atmega169 (und wohl auch bei den anderen) nur mit reduzierter Auflösung möglich.

ATmega32 und höher haben differentielle Analogeingänge mit einer Gain von 46 dB. Damit kann man eine abgestimmte Antenne vielleicht sogar direkt über ein passives Filter an den Prozessoreingang hängen. Nachteile:

  • man fängt eine Menge Prozessorstörungen usw. ein.
  • im Datenblatt ist von einer reduzierten Auflösung von 7 Bit die Rede
  • der differentielle Eingang hat eine obere Grenzfrequenz von 4 kHz

PC-Simulation

Detector lowpass filter output with frequency sweep input.png Frequenzgang des SW-Filters.

Detector lowpass filter output with burst input.png Ausgangssignal des Detektor Tiefpassfilters bei Einspeisung eines 5.3kHz Bursts.

Media:Pulsdsp.tar.gz Das Programm lässt sich einfach für den Atmel anpassen.

Sender

Es kommt ein handelsüblicher Brustgurt zum Einsatz. Der Brustgurt sendet ein Signal mit 5kH. Ein Oszillogramm des Signals ist auf der Original-Seite zu sehen.

Controller

Als Controllerboard kommt der AVR Butterfly zum Einsatz, dieser enthält fast alle benötigte Hardware(LCD, PC-Anschluss über RS232, Datenspeicher), ausserdem braucht es wenig Strom.

Software

Die Software soll alle Funktionen einer handelsüblichen Pulsuhr beherrschen und:

  • die Daten loggen

Ideen für die Zukunft:

  • Schrittzähler (z. B. mit Murata Shock Sensor)
  • GPS
  • Fahrradtacho
  • Höhenmesser


bsp software Pulsuhr

Links