Samsung watch did OK at cycling, but cycling is pretty steady - get up to working heart rate and stay roughly there. I wondered how it does at barbell training, so I took it to Thursday’s deadlift session 1. Deadlifts are a few seconds of high effort followed by a few minutes catching your breath.
The Wahoo chest strap wasn’t overly pleased with this concept - it is marketed for runners/cyclists. I got these data out of it by saying I was running on a treadmill. This disabled the GPS, so when I ran the Wahoo data through GPS babel it discarded all the data because babel likes working with nice GPS traces. I ended up deep in the documentation and got a spreadsheet of the heart data.
wahoo <- read_csv(here::here("static/data/deadlifts/wahoo.csv")) %>%
select(timestamp=Timestamp, heart_rate=`heart rate`) %>%
mutate(sensor="chest-strap")
samsung <- read_csv(here::here("static/data/deadlifts/samsung.csv")) %>%
rename(timestamp=start_time) %>%
mutate(sensor="watch")
data <- bind_rows(wahoo, samsung)
data %>%
ggplot(aes(x=timestamp, y=heart_rate, colour=sensor)) +
geom_line() +
labs(
title = "Heart rate over a training session",
y = "heart rate (bpm)"
)
Looks like the watch was consistently below the chest-strap. Apart from about 20:10 when I went out of range of the phone to grab a drink and the sensor started logging 0s.
errors <- left_join(samsung, wahoo, by="timestamp") %>%
filter(heart_rate.y > 0) %>%
mutate(error = heart_rate.y-heart_rate.x) %>%
select(timestamp, error)
errors %>%
ggplot(aes(x=timestamp, y=error)) +
geom_line() +
labs(
title="Difference between chest strap and fitness watch",
y = "heart rate difference (bpm)"
)
Last time they were within about 10 bpm of each other, but this is almost never that close.
Recovery time
Heart rate is a reasonable proxy for recovery between working sets. Immediately after a set of deadlifts our subject is too tired to do more deadlifts, and their heart rate shoots upwards, then starts to go back down. If it settled down to a lower level and stayed there then we might say they were resting too long.
There’s all sorts of strategies for “are you resting enough/too much between sets?”. For this test I rested as much as I thought I needed, and eyeing the graphs it looks like I was about right.
wahoo %>%
mutate(heart_rate =
if_else(heart_rate==0, NA_real_, heart_rate)) %>%
#The zeros really should be NA.
ggplot(aes(x=timestamp, y=heart_rate)) +
scale_y_continuous(breaks = seq(100, 180,by=10)) +
geom_line()
The main other option is some form of timer. I am outraged at how much some of these cost and I’m designing one for myself with an arduino. Watch this space.
As I’ve been falling down the rabbit-hole of evidence-based fitness2, I’ve discovered that people are generally OK at self-regulating recovery time. Given that the heart strap is awkward to deal with and the watch was garbage, I think I’ll play with my timer and occasionally check with the chest strap that the timer is set appropriately.
There’s also a possible complication - it was about 3 degrees C in the garage. This makes my skin redder than normal, which affects how easily the camera on the watch can detect a pulse as more red.