Blood Pressure Measurement 24h
I like to make a 24h Blood Pressure Measurement on my own. Unfortunatly the price of such an equipment is about 10 times that of a usual measurment device (with PC readout). Mainly the only difference is a timer to start the measurement automatically, with the following scheme:
at day 5 - 23 o'clock, every 15 minutes.
at night 23 - 5 o'clock, every 30 minutes.
So, how to build such a timer? The ideal electronics for that task is a micro processor. I selected a Microchip PIC12F629 (8 pin SOT), which can be programmed in C with the free Integrated Development Environment (IDE) MPLAB X (actual Version 3.26, C-compiler XC8).
As a proven Digital Automatic Blood Pressure Monitor an OMRON M10-IT with USB port was selected. It can store 84 measurements in a rolling buffer, which is enough for the 24h operation. Another benefit is, that a free software under Linux exists for reading out the measurement data.
The price was about 82 EUR (AC adapter included).
Averaging – for morning, evening and auto measurements
Exclusive technology automatically displays the average of up to the last 3 readings taken within the last 10 minutes. Morning & Evening memory for speiclal Morning Hypertension Tracking. Morning & Evening memory has weekly averaging for important long term tracking.
Software Supported OS up to Windows 7 with USB Connectivity
- Fully integrated with your PC to make keeping track of your Blood Pressure even easier. USB cable and software are provided. Not compatible with Apple Macs.
Easy Fit-Cuff (Medium to Large)
- Medium- Large 22-42 cm cuff size, with an easy to apply pre-formed shape
- Alerts a user to any movement during a reading which may potential have an effect on the outcome
Irregular Heartbeat Detection
- The Omron Ultra Premium monitor can detect irregular heartbeats while blood pressure is being measured. If an irregular heartbeat is detected, an indicator icon will appear alerting the user to consult with a medical professional
Dual User Function
- Up to two users can record their own data withour effecting the other’s memory
84 Memory Storage
- 84 memory storage allows a user to review the last 84 readings with a touch of a button
- 4 x AA Batteries included. Optional extra: AC adaptor (available in Accessories category).
The housing can be opened by removing 2 srews. Then with a plastic card try to separate the two half shells from the bottom right side. On the picture on the right you can see where the plastic locks are located.
Be careful with the flat film cable of the LCD. You are doing the modification on your own risk, and you will loose the manufators warranty.
For the hardware, please see the schematic on the right (click to expand). ICSP = In Circuit Serial Programming
A LED was added to quick check the function of the micro processor, it flashes about every 2 seconds.
The 24h measurement is started with a switch on the backside of the housing, just below the AC adapter jack. The switch was mounted with double sided sticky tape. In order to not modifying the housing, two thin wire wrap wires are fed through the opening. Please see the picture below in the center for the details.
Switching ON of the timer with the VDD supply does not work, instead the switching must be done with the GND supply. The reason is a current flow in the diode, which supplies enough power to the CPU to act. That causes a periodic (about 2 minutes) Power On Reset (all LCD segments are displayed) of the M10-IT.
A printed circuit board was developed with the program Eagle. The Eagle 7 development file can be downloaded:
The left picture below shows the board with the PICkit3 USB programmer. The right picture shows the wire connection.
It was not so easy to figure out what to do to trigger a measurement, because there is some kind of multiplexing, see the lower trace of the timing diagram on right.
It was not sufficient to use a microprocessor port to pull down that start switch signal. For a good function it needs a diode to pull down the start switch signal, see the upper trace of the timing diagram on right. When the microprocessor in the M10 sees that signal, it will stop the multiplexing for some time.
In order to keep the power consumtion low, the Sleep command of the CPU is used. The timing itself is made by the integrated Watchdog timer (about 2.4 seconds).
The 24h interval program must be started at 9 o'clock in the morning, in order to keep the programming simple.
Unfortunately the integrated RC clock (for low cost) is dependent from the supply voltage (M10-IT has 3.8 V). On the other hand, the Flash ROM programming needs about +5 V. So, the time adjustment must be made at 3.8 V.
For timing measurement measure the time from flipping the switch to ON to the first M10-IT start, it should be 60 seconds.
The coarse timing adjustment is made in function pauseMinutes() with the for loop count (steps = 2.4 s).
The fine timing adjustment is made in function wdtSleep() with the delay statements (steps = delay * 21).
A 24h measurement shows a deviation of 847s in 36,000s (10h) = + 2,35%.
Calibration: 60s / 21 (loop factor) = 2.857s -> * 2,35% = 66ms / 2 = -33ms LED delay.
Because the watchdog timer is not very acurate, a crystal is now used, see MCU Clock.
The 'C' program can be downloaded:
The software BI-Link version 1.6 for Windows.
The software libomron at github for Linux, please see the Link #7 and the example use:
# plugin USB cable of M10-IT # assign USB port name for the program $ lsusb | grep Omron Bus 002 Device 003: ID 0590:0028 Omron Corp. HJ-720IT / HEM-7080IT-E / HEM-790IT # adjust Bus and Device number in the next command: e.g. /002/003 $ export OMRON_DEV=/dev/bus/usb/002/003 # check USB port name $ ls -l $OMRON_DEV crw-rw-r-- 1 root root 189, 130 Apr 1 14:32 /dev/bus/usb/002/003 # compile the source package, as described in the link. # read out measurement values $ cd libomron-master/bin/bin/ $ sudo ./omron_790IT_test [sudo] password for rudi: Found 1 omron 790ITs Opened omron 790IT Device serial: M7080IT 207J Device version: 0310100000J AJR data count: 7 31/03/2016 19:38:46 SYS: 126 DIA: 84 PULSE: 64 31/03/2016 19:40:10 SYS: 116 DIA: 70 PULSE: 67 31/03/2016 19:41:15 SYS: 121 DIA: 79 PULSE: 66 01/04/2016 07:12:41 SYS: 112 DIA: 76 PULSE: 61 01/04/2016 07:13:55 SYS: 113 DIA: 71 PULSE: 58 01/04/2016 12:30:43 SYS: 122 DIA: 78 PULSE: 63 01/04/2016 12:32:09 SYS: 118 DIA: 72 PULSE: 64 Weekly info: Morning[0 27/03/2016] = sys:113 dia:74 pulse:60. Evening[0 27/03/2016] = sys:121 dia:78 pulse:66.
A 24h period was measured for test, and the results exported with the Omron software BI-Link in CSV format.
Those data were imported into LibreOffice Calc, some calculations are done and a diagram generated, please see the picture on the right.
- Average, Standard Deviation: for day, night and 24h
- Difference between day and night values
- Maximum, Minimum: for 24h
The first try with the MCU clock was the internal RC oscillator with 4 MHz. Unfortunately the timing of the example program I used first, was made with the command sleep and the watchdog timer, which has its own RC clock, which is not very stable concerning supply voltage and temperature. The deviation in 24h was about 30 minutes.
The best solution for low power consumption, the stability over supply voltage range and temperature stability is a 32768 Hz crystal, which is usually used for watches. The timing diagram on the right shows the timing measurement with the small logic analyzer USBee (9 EUR), used under Linux.
The program was Pulseview from the free sigrok project. This program you can find under Ubuntu 14.04 in package sigrok. The shown timing analysis was for the 2000 ms timing with LED flashing for 196 ms. To compensate for the program run time, 4 ms were substracted from the 2000 ms timing. The following calculations shows a good accuracy for the 24h measurement.
- 24 * 4 = 96 intervals in 24h
The 15 minutes interval measured with USBee shows a deviation of +0,06 s
- in 24 h: +0,06 s * 96 ~ +6 seconds
List of pages in this category:
-- RudolfReuter 2016-04-03 14:17:50