I was in Costco the other day and I noticed the BACTrack C6 on sale for about $27. I’ve been wanting a breathalyzer for a while, so I quickly did some cell phone research and determined that this is a GREAT deal:
- The MSRP is $70, originally $90
- That’s only a bit more than what Amazon sells it for – $55 when I checked.
- This is a fuel cell breathalyzer – more accurate than semiconductor sensors. Fuel cells are what “police-grade” units use, whereas $30 breathalyzers are always semiconductor sensors. I don’t think any fuel cell sensors have ever been so cheap, retail. This is not, to be clear, a “police grade” unit – those are in the $100-150 range on the cheap end. But one can infer that $30 is a great deal, and the sensor is well above this class.
- The C6 is bluetooth-enabled, like a few of BACTrack’s fuel cell units in the $100 range.
In fact, Amazon is now, at time of writing, sold out of their own stock, and the C6 is only available from third party sellers. That’s new since yesterday. I’m not sure if this means BACTrack is trying to get rid of C6 inventory but it seems plausible.
So anyway, of course I bought one. For science.
Personally, I’m always interested in knowing more about my body. I’m also very interested in knowing more about the breathalyzer traffic light I built a few years ago – always a party hit, but the yellow-red transition seems a little suspect.
One universal truth of breath-based BAC measurements is that you absolutely MUST wait some delay time since your last sip before taking a reading. This is for a few reasons – alcohol you just consumed won’t have absorbed into your blood yet, and alcohol remaining in your mouth and throat will give a synthetically high reading. The delay is typically stated as 20 minutes.
Over the course of our holiday party last night, respect for this idea seemed to be in short supply, and confidence in the results commensurately lacking. So this evening, I decided to run a quick experiment, measuring the impulse response, so to speak, of consuming a single shot.
One thing you shouldn’t do is blast a breathalyzer sensor with a fresh breath of booze. Besides that the reading will be uninformative, you also run the risk of overwhelming the sensor, possibly damaging it, and possibly causing a hysteresis problem that causes inaccuracy in subsequent closely-timed readings.
For this reason, I decided I’d take a baseline of 0.000% BAC, then take a 2oz shot of whiskey, then take a breathalyzer reading every 5m after that until I hit zero. 5m after the shot should be way too close for an accurate reading, but far enough to avoid overloading the sensor.
From this plot, it’s pretty immediately clear why one should wait 20m to take a reading. The first reading at t=5m was all the way up at .086% ABV – just over the legal limit. at t=10m, this had dropped to .026 – close, but still too high, for sure. At t=15m, which marked the C6-recommended 15m wait time, I blew .014.
Given my body weight, the back of the envelope calculation is that I should metabolize one 2oz shot of 40%ABV in about an hour, and that it should take me 4 to hit the legal limit of .08% BAC. .014 is below the .02 that math would suggest for one shot, but if you take into account 15m worth of metabolism, that’s pretty spot on. It’s also the case that I blew 0.000% consistently starting at t=1:20 – a little longer than the expected 1h metabolism, but still just about right.
I plotted this chart in Excel, which allows for trend lines but not much control over them without rolling your own regression calculation. You can force an intercept, but only at x=0. I could have rebased the time on t=0 as the sober point, but it turns out excel also handles negative time deltas poorly by default. Instead, I ask you to simply imagine the trend line bumped a few degrees clockwise so it hits my sober point. If you do that, t0=.02% BAC seems pretty reasonable.
All I really did here was confirm a bunch of plots you can find online, but the data also suggests a few novel things too. For one, the breathalyzer output does, in fact, seem pretty accurate, at least above readings of 0.01. Below 0.01, there was that one reading which seems unrealistically high given that I started blowing consistent 0.00s just moments later. But it’s also believable that sub-0.01. is getting down into the noise, and accuracy is less critical there anyway. For two, I learned that I do, in fact, metabolize one shot in about an hour. Perhaps it makes sense for me to adjust my mental calculations up a few minutes to be conservative. But it’s also the case that BACTrack deliberately biases their consumer units to read a little high, to be conservative for users assessing ability to drive. So maybe I was, actually, sober in 1 hour.
In any event, it’s cool to confirm that my body, the sensor, and the physics of alcohol consumption, all appear to behave as expected.
Obviously, I could have just taken notes on timing and values with a pencil, and manually entered that into Excel. As it happens, BACTrack has an app, which I’ve unwisely volunteered my anonymized data to for the sake of logging this all for me.
The biggest issue is getting that data OUT, as there’s no export function. What there IS is an option to share BAC data with HealthKit. HealthKit allows for export of data wholesale, but it exports to a less-than-helpful XML file. Rather than try to parse that with Python or something, I went looking around the internet and found Mark Koester’s blog on similar topics. This lead me to the app QS Access. This iOS app helpfully lets you pick a subset of data to export as .csv, which obviously excel likes.
Hope you’ve enjoyed this episode of “data you already knew about”!