Pages: [1]   Go Down
Author Topic: Heart beat coil signals problem  (Read 2834 times)
0 Members and 1 Guest are viewing this topic.
Finland
Offline Offline
Jr. Member
**
Karma: 0
Posts: 96
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Montreal
Offline Offline
Edison Member
*
Karma: 23
Posts: 2487
Per aspera ad astra.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

0
Offline Offline
Shannon Member
****
Karma: 162
Posts: 10496
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

[ I won't respond to messages, use the forum please ]

Finland
Offline Offline
Jr. Member
**
Karma: 0
Posts: 96
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Dubai, UAE
Offline Offline
Edison Member
*
Karma: 21
Posts: 1670
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged


Montreal
Offline Offline
Edison Member
*
Karma: 23
Posts: 2487
Per aspera ad astra.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

SW Scotland
Offline Offline
Edison Member
*
Karma: 13
Posts: 1325
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Finland
Offline Offline
Jr. Member
**
Karma: 0
Posts: 96
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.



« Last Edit: June 21, 2012, 12:37:28 pm by optimistx » Logged

Montreal
Offline Offline
Edison Member
*
Karma: 23
Posts: 2487
Per aspera ad astra.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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/
« Last Edit: June 21, 2012, 12:54:35 pm by Magician » Logged

Finland
Offline Offline
Jr. Member
**
Karma: 0
Posts: 96
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

Finland
Offline Offline
Jr. Member
**
Karma: 0
Posts: 96
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 (?).





« Last Edit: June 28, 2012, 03:43:10 am by optimistx » Logged

Finland
Offline Offline
Jr. Member
**
Karma: 0
Posts: 96
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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!
« Last Edit: July 01, 2012, 05:46:53 am by optimistx » Logged

Pages: [1]   Go Up
Jump to: