Computers, Development Boards & Shields
Educational & Robotics Kits
Electronic Sensors
Motors & Controllers
Communication & Display
Electronic Components
Soldering & Lab Tools

Want to use the Virtuabotix 20N Pressure Sensor for Heartbeat

I am interested in Pressure Transducer: Virtuabotix 20N Pressure Sensing Resistor.
Can it sense the small force @ human wrist pulsation(heart beat)?

1 Answer


Resistance changes go into the linear region at about 10 to 15 grams of force, so as long as you have at least that much (15 grams or so) force applied by a strap or other device that holds the sensor in place over the vein or artery you are trying to test.

Check out the resistance diagram on the product page for more details on the expected response curve.

As far as trying to detect a pulse the most important part is having an Analog port that can read fast enough to accurately determine pulse width. Using the Nyquist constant (Approximately 2:1 ratio) we know that we have to be able to take measurements twice as often as our fastest pulse.

So if we take the simple Tanaka, Monahan, & Seals maximum heart rate of 208 BPM that means we need to take 416 readings per minute. Since we use milliseconds for most of our delay measurements on an Arduino or Versalino platform what we need to do next is to take the number of milliseconds in a minute (60,000) and divide that by the number of samples we need (416).

60,000 / 416 = 144.23 Milliseconds per Sample. That means that as long as your Analog port take readings at least once every 144 Milliseconds you can detect heart rates up to 208 BPM with a fair degree of accuracy and repeat-ability.

That said, a safe minimum reading interval on the Arduino/Versalino Analog Ports is actually as low as 30 Milliseconds per Sample. That means that in theory you could take 2000 readings per minute, and theoretically detect a heart-rate or pulse frequency of as much as 1000 BPM.

That said I would definitely try to make the pulse reading a function that doesn’t do anything else so that you don’t end up accidentally blocking the process. Then you can simply measure the time between pulses several times and average that as the current pulse rate. This would allow you to call the function as needed, and focus your application code on other tasks like sending/receiving data, and responding to changes in pulse rate.

Hope that helps you, and anyone else who wanted to learn way more than expected about pulse rates :D.

Joseph Dattilo

Your Answer

No comments yet.

Leave a Reply