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