结论:用 OBD 做 0–100 km/h 加速计时,唯一可信的输入是标准 OBD-II 车速 PID 0x0D。它按整数 km/h 上报,所以「0.5 km/h 起步阈值」根本无法实现;GPS 不参与计时、插值或丢包补偿,IMU 只负责记录 G 值。在实车标定完成之前,「±0.05 秒」「优于手机」都只是待验证目标,不是规格。
为什么「看起来能测」和「真的能测」是两回事
手机上随手装一个加速计时 App,看起来也能出成绩。但把同一套逻辑搬到车载仪表上,问题会立刻暴露:加速度计的噪声、GPS 的更新频率和延迟、以及车辆实际起步的抖动,都会让「0 秒」这个时刻的定义变得含糊。
更关键的是,计时器报告的是它接收到的数据时刻,而不是车辆真实的物理时刻。如果这一点不说清楚,讨论「精度」就没有意义。
计时输入的唯一性:只用 OBD 车速
在 OBD 车速与 IMU、GPS 并存的设计里,必须明确一条边界:计时链路上只允许有一个数据源。
- 唯一计时输入:OBD 车速。首选通过受保护的车载网关读取标准 OBD-II PID
0x0D;若车型使用专用车速信号,必须在车型配置中写清协议、单位和量化精度。 - GPS 不参与计时、插值或丢包补偿。GPS 的更新率和定位漂移都不足以支撑零点几秒级的判定。
- IMU(如 QMI8658)可以记录峰值 G 和 G 曲线,但不参与起点、60 km/h、终点的时间戳判定。
把三条拆开看,逻辑就清楚了:IMU 回答「加速有多猛」,GPS 回答「路走了多远」,而只有 OBD 车速能回答「什么时候到 100」。混用会得到漂亮的数字,但那个数字不可复盘。
状态机:五个状态按什么顺序判定
| 状态 | 进入条件 | 动作 |
|---|---|---|
IDLE |
收到连续有效的 0 km/h 样本,覆盖至少 1 秒 | 进入 ARMED |
ARMED |
首次收到有效且大于 0 km/h 的车速 | 记该样本接收时刻为 t0,进入 RUNNING |
RUNNING |
首次收到车速 ≥ 60 km/h | 记 t60,继续计时 |
RUNNING |
首次收到车速 ≥ 100 km/h | 记 t100,锁存 t100 − t0 与 t60 − t0,进入 COMPLETE |
| 任意计时状态 | 网关断连、PID 不支持、响应超时、样本乱序或不可信 | 标记本次无效,保存原因,不显示成功成绩 |
这套状态机刻意做得很「笨」:不猜、不补、不回头修。原因很直接——加速成绩的价值在于可信,而不在于好看。
哪些情况必须判为无效
「无效」不是异常处理,而是产品功能的一部分。至少要覆盖这六类场景:
- 缓慢起步——车辆长时间停留在 1 km/h 附近,起步时刻难以确定。
- 瞬时跳值——单帧车速突然从 0 跳到 60,超出物理可能性。
- 重复帧——同一时刻收到多条相同样本。
- 乱序——时间戳不单调递增。
- 超时——请求发出后长时间没有响应。
- 中途失联——网关在 RUNNING 期间断开。
这些场景必须在离线注入测试中全部覆盖:把速度曲线喂给同一套解析与状态机,逐条核对状态切换与时间戳是否正确。
为什么 0.5 km/h 的起步阈值做不到
标准 PID 0x0D 返回的是整数 km/h,没有小数位。所以「车速大于 0.5 km/h 即视为起步」这种阈值在协议层面就无法表达——你只能看到 0 和 1。
因此首版采用「首次收到大于 0 的有效样本」作为起步点,并且明确:
- 不插值。是否用 0→1 与 99→100 两点插值,必须在记录了轮询周期、往返延迟和车型信号特性之后再决定。
- 不借用 IMU 或 GPS 填补样本。填补会产生看似连续、实则虚构的曲线。
- 连续 0 km/h 的判定需要多个有效样本。网关断连期间「保持」的旧值,不能算进那 1 秒。
要留什么数据,才叫可复盘
每条车速样本至少保存六项:原始响应、解码值、请求发出时间、响应接收时间、网关状态、单调时钟时间戳。
这里有个容易被忽略的区分:界面刷新频率不等于车速采样频率。屏幕每秒刷 20 帧,不代表每秒拿到 20 个车速样本。把两者混为一谈,会让「数据很密」变成一种错觉。
另外,上述所有时间戳都是 OBD 响应接收时刻,不是 ECU 的实际采样时刻。这是整条链路的固有偏差,只能披露,不能消除。
关于精度的诚实表述
「±0.05 秒」和「优于手机」是待验证目标。在完成以下三步之前,它们不应出现在任何宣传文案里:
- 向同一套解析与状态机注入速度曲线,覆盖缓慢起步、瞬时跳值、重复帧、乱序、超时与中途失联。
- 在目标车型上记录 PID 支持情况、有效车速更新率、请求往返延迟分布、网关额外延迟,以及计时期间的丢包率。
- 用独立参考设备同步采集多次 0–100,统计偏差与离散程度。
界面需要提供五种状态:待连接、待起步、计时中、成绩、无效记录。历史最佳只收录「有效且带车型 / 数据源元信息」的成绩——没有元信息的成绩无法复盘,也就不该进榜。
常见问题
用 GPS 测 0–100 会差多少?
本文不给具体数字,因为差异取决于 GPS 模块的更新率、定位精度和遮挡情况,需要实测。但可以确定的是:GPS 的采样与延迟特性使它不适合作为零点几秒级判定的唯一依据,因此本方案把它排除在计时链路之外。
IMU 能提高计时精度吗?
不能用于提高计时精度。IMU 可以记录峰值 G 和 G 曲线,用于分析驾驶表现,但起点、60 km/h、终点三个时间戳只能来自 OBD 车速样本。
为什么不做插值让曲线更平滑?
因为插值会产生「看起来连续、实际不存在」的样本。首版选择保留原始离散点,等实车标定拿到轮询周期与延迟分布后,再评估插值是否值得引入。
成绩为无效时,界面应该显示什么?
显示无效原因,而不是一个成功成绩。无效判定的价值就在于:它让用户知道自己看到的数字是否可信。
小结
一个可信的 OBD 加速计时器,本质上是一套数据边界 + 状态机 + 无效判定的组合,而不是一个公式。先用整数 km/h 的现实约束定义清楚能做什么、不能做什么,再谈精度——这个顺序反了,后面全是返工。
本文结论来自星核火花赛车科技内部车载仪表研究项目(2026-10 版)的《OBD 零百计时规格》与《五块赛道产品候选板硬件事实表》。文中精度指标均为待验证目标,实际数值以实车标定为准。