同样 48V20Ah,为什么别人跑 80 公里你只跑 40?
同一块 48V20Ah 电池,我在页面里算了两遍。铅酸、35km/h、载重 75kg,续航 40.4 公里;换成锂电、25km/h、载重 65kg,续航 79.9 公里。
差了近一倍。差的不是电池牌子,是电压、容量、放电深度、温度、载重和车速这几个变量。

为什么同一块电池能跑出 80 和 40
先把电池拆开。48V20Ah 的标称电量是 48×20=960Wh。
铅酸只放出 70%,可用 672Wh。锂电放出 90%,可用 864Wh。
再看每公里耗电。25km/h、75kg、平地、25℃时,铅酸 11.18Wh/km,锂电 10.82Wh/km。
672÷11.18=60.1 公里,864÷10.82=79.9 公里。
同样 48V20Ah 铅酸,把车速提到 35km/h,每公里耗电涨到 16.64Wh/km,续航只剩 40.4 公里。
空气阻力按速度平方涨。这是高速掉续航最快的一段。
温度也直接改可用电量。0℃时温度系数 80%,672Wh 变 576Wh,续航从 60.1 掉到 51.5 公里。
载重从 75kg 加到 150kg,整车质量 121kg 变 196kg,续航再掉到 46.9 公里。
| 配置 | 车速 | 温度 | 载重 | 可用 Wh | 每公里 Wh | 续航 |
|---|---|---|---|---|---|---|
| 48V20Ah 铅酸 | 25km/h | 25℃ | 75kg | 672 | 11.18 | 60.1km |
| 48V20Ah 铅酸 | 35km/h | 25℃ | 75kg | 672 | 16.64 | 40.4km |
| 48V20Ah 铅酸 | 25km/h | 0℃ | 75kg | 576 | 11.18 | 51.5km |
| 48V20Ah 铅酸 | 25km/h | 25℃ | 150kg | 672 | 14.32 | 46.9km |
| 48V20Ah 锂电 | 25km/h | 25℃ | 75kg | 864 | 10.82 | 79.9km |
| 48V20Ah 铅酸 | 15km/h | 25℃ | 75kg | 672 | 7.69 | 87.4km |
| 60V20Ah 铅酸 | 25km/h | 25℃ | 75kg | 840 | 11.18 | 75.1km |
| 72V32Ah 锂电 | 25km/h | 25℃ | 75kg | 2074 | 10.88 | 190.6km |
这张表里,40.4 和 79.9 是同一块 48V20Ah 电池。差别来自电池类型和车速,不是电池容量变了。
把公式做成一个能拖动的页面
页面左边是七个输入,右边是实时结果,下面是对照表和 12km 路线。
计算不是查表,是先把阻力算出来,再换成电功率。
const fRoll = crr * mass * G;
const fAir = 0.5 * RHO * CDA * vms * vms;
const fSlope = mass * G * Math.sin(Math.atan(grade));
const pElec = (fRoll + fAir + fSlope) * vms / ETA + AUX;
const whPerKm = pElec / speed;
我拿 12 组配置和 Python 独立复算对了一遍,最大差 0.01 公里。
| 配置 | 自重 kg | 可用 Wh | 25km/h | 35km/h | 0℃ | 元/km |
|---|---|---|---|---|---|---|
| 48V20Ah 铅酸 | 46.0 | 672 | 60.1km | 40.4km | 51.5km | 0.0061 |
| 48V24Ah 锂电 | 37.9 | 1037 | 95.7km | 63.6km | 82.0km | 0.0060 |
| 60V20Ah 铅酸 | 46.0 | 840 | 75.1km | 50.5km | 64.4km | 0.0061 |
| 60V32Ah 锂电 | 38.8 | 1728 | 158.9km | 105.7km | 136.2km | 0.0060 |
| 72V20Ah 铅酸 | 46.0 | 1008 | 90.2km | 60.6km | 77.3km | 0.0061 |
| 72V32Ah 锂电 | 38.8 | 2074 | 190.6km | 126.9km | 163.4km | 0.0060 |
对比表里,48V24Ah 锂电在 25km/h 能跑 95.7 公里,72V32Ah 锂电能跑 190.6 公里。
但 0℃ 那一列全部缩水,72V32Ah 也从 190.6 掉到 163.4 公里。

验证与踩坑
页面加载会跑 12 条自检,当前 12/12 通过。
自检覆盖 960Wh 标称、672Wh 可用、续航公式、温度单调、载重单调、车速单调、锂电比铅酸远、60V32Ah 可用 1728Wh、骑行时间、胎压和坡度。
我又用 Python 独立写了同一套公式,12 个场景逐项对照,结果一致到小数点后两位。
复现可以在本地开一个静态服务:python -m http.server 8080,再打开页面。
控制台也能直接算:window.__ebikeLab.compute({v:48,ah:20,type:'lead',load:75,speed:35,temp:25,terrain:'flat',tire:'normal'})。
第一个真问题是电机功率边界。500W 电机、35km/h、5% 坡、166kg,需求功率 1321W,负载 264%。
原来的提示只写在 title 属性里,读者看不到,页面照样给出 17.8 公里。
我把它改成页面内的黄色警告,明确写「需求功率超出电机额定,实际可能达不到该车速」。

第二个是路线和匀速续航的差别。48V5Ah 铅酸、150kg、-10℃、35km/h,匀速续航只有 2.4 公里。
同一套配置跑 12km 路线,因为前几段限速 15/25km/h,实际在 5.4 公里处耗尽。
这两个数不矛盾,但拿匀速续航直接当路线续航会误判。

第三个是非法输入。电压填 abc、容量填 0,页面没有白屏。
错误条原文是「电压必须是数字;容量必须大于 0。已保留上一次有效结果,修正后自动刷新。」
结果区仍然是上一次的 60.1 公里,输入恢复合法后错误自动消失。

使用码道生成页面的体会
这次用码道 Web 生成,一轮拿到 72KB 单文件,没有外部请求。
它把输入、结果、电池包、能量流、对照表、路线图和自检都放在一个 HTML 里,打开就能跑。
省事的地方是不用搭前端工程。麻烦的地方是生成后仍要自己验边界。
电机超载提示和错误路径,都是生成后我手动补的。
所以它适合快速做出可运行的第一版,最后的质量判断还得自己来。
准备环境:进入码道 Web
码道有三种使用方式:WebUI、TUI 和桌面 IDE。本文用 WebUI 演示。
直接下载试玩
案例和源码在 Demo Park:https://atomgit.com/deli007/demo_park/tree/main/codearts-ebike-range-lab
结果与下一步
页面把「一块电池能跑多远」拆成了可调的五个变量,适合买电池前先算一遍。
它的边界也要说清楚:这是匀速稳态估算,没有计入风变、刹车、电池老化和控制器限流。
实际路况走走停停,续航通常比页面数字更短。
下一步可以接 GPS 路线、加入电池循环衰减,或者把控制器限流做成硬约束。
- 点赞
- 收藏
- 关注作者
评论(0)