Go Down

Topic: Heart beat coil signals problem (Read 3 times) previous topic - next topic

optimistx

Many heart beat measuring chest belts send one 5.3 kHz burst of some milliseconds  for each heart beat. The receiver clock e.g. in the wrist shows the value in beats/min.

I try to receive the start of the burst from a chest belt with Arduino as a hobby project to learn.  There is a coil of transformer wire around a wooden pencil at most 2-4 cm from the belt. The ends of the coil wire go to an op amp, which is connected to the Arduino adc. Arduino detects the amplitudes of the burst wave nicely and shows the heart beat intervals or heart beats/min, when resting or sitting.

But when I move intensely in order to reach high heart beat values, the coil starts sending extra bursts, one or several, at about 60 millisecond intervals. I have eliminated them with software so far, mostly correctly. But it would be interesting to know, why there are extra bursts and how to prevent them in the first place.

I have tried with PulseSonic belts and RunTec belts, and both behave in the same way. Their wrist clock part seems to get also the "fake" pulses, and mostly they succeed to show right beats per minute values anyhow. There is a possibility, that my home made coil near the belt disturbs the reception of the signal, at least in some positions. (I can let Arduino and the original wrist clock both show their heartbeatvalues simultaneously; the results are about the same at low heart beat values).

How to receive the bursts more reliably

a) with the coil principle (if possible)

b) somehow else?

There are more advanced sending/receiving principles with e.g. coding to prevent different belts disturbing each other, but the basic uncoded method is enough.

Magician

1. Electrical drawings
2. Software scketch.
Even my Magician skills can't help me to read a mind, Finland is too far.

MarkT

The false readings are probably due to the extra exertion and will need to be filtered out in software.  Two clues that help are that heartbeats don't suddenly double - so you can detect that spurious pulses are happening by the apparent jump in rate.  Suggest reading about phase-locked-loops for the general approach for detecting a single-frequency signal buried in noise and harmonics.
[ I won't respond to messages, use the forum please ]

optimistx


The false readings are probably due to the extra exertion and will need to be filtered out in software.  Two clues that help are that heartbeats don't suddenly double - so you can detect that spurious pulses are happening by the apparent jump in rate.  Suggest reading about phase-locked-loops for the general approach for detecting a single-frequency signal buried in noise and harmonics.

Yes, those facts can be utilized in software.  
A commercial belt and my coil are visible in this image:


An xray image of a commercial belt:

on this page:
http://en.wikipedia.org/wiki/Heart_rate_monitor

In the xray image one can see a coil on the left, black.

The coil of the chest strap and my coil around the pencil can be thought to be a transformer. The chest strap generates
a amplitude modulated signal of 5.3 kHz , a burst of some milliseconds at the heartbeat. At other moments of time the signal is zero amplitude.  My coil around the pencil receives the 5.3 kHz signal (like a transformer with two coils transfer voltage and current).

My problem and question is: do these coils generate 'phantom' or 'fake' bursts to each other?
In fact, now when I am trying to explain the circumstances, I see that I could investigate the problem with 2 homemade coils, one coil getting the output of 5.3 kHz signal from Arduino and the second coil to receive it ! Will there be 'fake' bursts in this new arrangement? Let us see, I'll try today.

DuaneB

Hi,

Just replying because I am interested in following this topic.

I wanted to build a spoke pov project for one of my bikes and heart rate would be a novel message to display. I have a few polar belts to experiment with as well.

Duane B
Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

Magician

Quote
There is a coil of transformer wire around a wooden pencil
I'd use a ferrite rod instead of pencil. Probably you could even still one from old LW radio.

jackrae

Or maybe the device is telling you that you actually have a problem with your heart when you exercise.

optimistx

#7
Jun 21, 2012, 07:23 pm Last Edit: Jun 21, 2012, 07:37 pm by optimistx Reason: 1
This is the circuit used to give data to Arduino analog-digital-converter in A0:



Something fundamentally wrong there?

The pencil coil (without a ferrite rod) gives voltages, which after amplification  fill the full scale 0-5v (values 0-1023) in adc-port A0 of Arduino.


The experiment to use 2 coils, one connected to  a digital output in Arduino and another for input to A0 of Arduino , did not sound very good after a while. I played with Spice (Ltspice) simulation of a transformer with 5 kHz square waves without amplification. There was 5 kHz in the output, when there was 5 kHz in the input. When input amplitude was 0, the output was 0 also. I could not see any possibility to get  extra 5 Khz signal in the output, when input amplitude is 0.

The wrist part of the PulseSonic heartbeatmeter is here, opened. No antennas or coils clearly visible(?). The width is about 35 mm.




Magician

#8
Jun 21, 2012, 07:51 pm Last Edit: Jun 21, 2012, 07:54 pm by Magician Reason: 1
I'm curious what is the part on right side, down the middle in round shape. The must be a ferrite, not necessary as big as in LW radio (10 cm) but as small as 1 cm installed vertically could bring up sensitivity 1000x times. Higher amplitude of signal at the input of the receiver, would lower requirements on next stage amplification, and consequently lower noise / interference  susceptibility.
I'd suggest not to use analogRead at all, after pulses get logic level right after OPA you can use comparator (or build-in atmega comparator) to father process signal by digital input, using input capture or external interrupt feature, in order to determine freq., pulse width, etc.
Look here for some examples and libraries:

http://interface.khm.de/index.php/lab/experiments/

optimistx


Or maybe the device is telling you that you actually have a problem with your heart when you exercise.

That _is_ possible, although improbable as an only reason for the observed phenomenon. I'll keep this possibility in mind.

optimistx

#10
Jun 25, 2012, 10:55 am Last Edit: Jun 28, 2012, 10:43 am by optimistx Reason: 1

I'm curious what is the part on right side, down the middle in round shape. The must be a ferrite, not necessary as big as in LW radio (10 cm) but as small as 1 cm installed vertically could bring up sensitivity 1000x times. Higher amplitude of signal at the input of the receiver, would lower requirements on next stage amplification, and consequently lower noise / interference  susceptibility.
I'd suggest not to use analogRead at all, after pulses get logic level right after OPA you can use comparator (or build-in atmega comparator) to father process signal by digital input, using input capture or external interrupt feature, in order to determine freq., pulse width, etc.
Look here for some examples and libraries:

http://interface.khm.de/index.php/lab/experiments/

The link which you gave has several interesting projects and I bookmarked it.
AnalogRead is a temporary solution to give flexibility in experimenting with different voltage ranges. In fact, I tried both input capture and external interrupt feature already, and they work as expected.

Instead of continuing with the above inductive short range (-40 mm)  signal transfer from the belt to the pencil coil I'll try now
the same principle as the belt uses to send signals to the wrist device, radiowaves of 5.3 kHz ("very low frequency radio waves, vlf"). Perhaps I try with the high component (coil?) you mentioned. I have never built anything to receive radiowaves simply, and all tips are welcome.

When searching with the keywords "crystal receiver wiki" there were several astonishingly simple receiver schematics. Even one with a wire as an antenna, one germanium diode and high impedance earphones, nothing else! When the signal from the belt resembles a morse beep, and it is probably very strong (due to the short distance) compared to any other radio signals (?), the circuit to receive something to an adc-converter is probably very simple. A short wire as an antenna, ferrite coil with inductance L, parallel with a capacitor of capacitance C so that f = 1.0 / (2.0 * pi * sqrt(L*C)) = 5.3 kHz?  No diodes, no amplifiers, no filters , ... or could it be even simpler than that?

----
Addition on thursday june 28:

Coils, wires, radio waves of 5.3 kHz make me puzzled. When I put the commercial wrist  part (the radio receiver) into a kitchen kettle and the cover on, I was sure to have all the radio waves from the belt blocked completely. The kettle was supposed to be a Faraday's cage, right?

But the receiver inside the kettle happily received the radio waves and showed the correct heartbeat! I had another commercial receiver outside the kettle and both showed the same numbers (+-1) even after exercising.  So at least 0.6 mm of metal (aluminium? steel?) did not prevent the waves penetrating. With another thicker walled kettle the same thing. Changing belts and receivers: the same thing. Obviously 5.3 kHz radio waves penetrate deep into the metal (googling: yes, they do, several millimeters!). Thus they go through the cable shield also (?).






optimistx

#11
Jul 01, 2012, 08:33 am Last Edit: Jul 01, 2012, 12:46 pm by optimistx Reason: 1
Now the radio signal reception from the belt to Arduino works well , to the max distance of 20 cm. I replaced the pencil coil with an air coil of diameter 35 mm, length 80 mm, about 300 rounds of 0.25 mm transformer wire in one layer, and added 300 nF capacitor parallel with it to have an oscillating LC-circuit of 5.3 kHz, assumably. No other changes to the circuit.
The circuit with the unchanged program gave now either the correct heartbeat or nothing. So the phantom bursts do not appear anymore.
Still I do not know, which causes the extra bursts in the inductive coupling without capacitors. Perhaps the receiving coil near ( max 40 mm) the sending coil in the belt electronics caused disturbances in the working of the belt eletctronics and made it send extra bursts.
There is still some work to do to get the range to 80-100 cm and make the coil smaller with a ferrite core. It seems to be a bit complicated to determine the inductance theoretically and in practise. Hopefully tuning the L and C values will give the required range.

Thanks everyone!

Go Up