小智AI全套PCBA实现电动车充电完成提醒电量监测
小智AI全套PCBA实现电动车充电完成提醒与电量监测
你有没有过这样的经历?晚上给电动自行车插上充电器就去睡觉,第二天一睁眼第一件事就是冲到车边看充没充满——生怕多充一会儿伤电池,又怕没充满耽误出行。😅 更别提在小区充电桩前转悠半小时,就为了确认“这辆是不是我的车还在充”……
这事儿说小不小: 过充伤电池、欠充影响续航、没人提醒就靠猜 ,简直是电动时代最原始的烦恼。
但现在,一块比指甲盖大不了多少的PCBA板子,就能把这些问题全搞定!✨
我们叫它——“小智AI”。不是云端大模型那种AI,而是 嵌入式AI ,是能自己思考、会判断、懂节能的“微型大脑”,直接焊在你的充电回路里。
想象一下这个场景:
你骑车回家,插上充电器,“小智”立刻开始工作。它默默盯着电压和电流的变化,像一个经验老道的电工师傅,不靠定时器瞎猜,而是 真正读懂了电池的语言 。当电流一点点降到50mA以下,电压也逼近满电值时,它果断判定:“好了,满了!”
叮——手机弹出通知:“您的爱车已充满,请及时拔电。”
同时,充电器上的绿灯亮起,蜂鸣器轻轻“嘀嘀”三声。
然后,整套系统自动进入休眠,功耗低到每天只吃掉不到0.1mAh的电量,三年都不用担心它拖累电池。🔋💤
这一切,不需要Wi-Fi,不用连服务器,所有决策都在那块小小的MCU上本地完成。这才是真正的“边缘智能”。
能不能准一点?别再靠“估”了!
很多人以为,测个电压就能知道电量,其实大错特错。负载一上来,电压立马往下掉;刚拔掉充电器,电压又虚高一阵子……纯靠电压判断SOC(荷电状态),就像用体温计测体重——不准还误导人。
“小智AI”的做法更聪明: 双管齐下,动静结合 。
- 静态基准 :每次上电时,先读一次开路电压(OCV),查表得出初始SOC。这张表可不是随便写的,是我们拿真实电池组静置几小时标定出来的,误差控制在±3%以内。
- 动态跟踪 :充电或放电过程中,用一个10mΩ、精度±1%的分流电阻配合差分运放,实时采集电流,做库仑积分。每秒钟更新一次SOC,像记账一样清楚每一毫安时的进出。
当然,积分会有漂移。所以每当车辆熄火停放一段时间后,“小智”会重新用OCV校准一次,相当于“对账”,把累积误差清零。
温度呢?也考虑到了。NTC热敏电阻贴在电池附近,温度一变,电压阈值跟着调整——冬天不误判,夏天不漏报。
float soc_estimate(float voltage_mv, float current_ma, float dt_s) {
static float soc = 0.0f;
float delta_q;
if (is_power_on_reset()) {
soc = ocv_to_soc_lookup(voltage_mv); // 上电重置基准
}
delta_q = (current_ma * dt_s) / 3600.0f;
soc += delta_q / BATTERY_CAPACITY_MAH * 100.0f;
soc = fmaxf(0.0f, fminf(100.0f, soc)); // 限幅0~100%
return soc;
}
这段代码看着简单,但背后是无数次实测调参的结果。比如 dt_s 必须稳定在1秒左右,否则积分不准;电流采样还得加滑动平均滤波,不然一点噪声就让SOC跳来跳去。
主控选型:为什么不用8位单片机?
你可能会问:这不就是个电压电流检测+逻辑判断吗?用个STC12之类的8位单片机不行吗?
还真不够用。⚡
首先,ADC精度要够。我们要求电压分辨到10mV以内,电流到10mA级别,这意味着至少需要12-bit ADC。很多8位机内置ADC只有10-bit,信噪比也差,容易受干扰。
其次,算法复杂度上去了。除了基础状态机,我们还想加入 变化率检测 :比如电压上升速度突然放缓,即使还没到满压,也可能进入恒压阶段了。这种趋势分析对MCU的运算能力和中断响应速度有要求。
最后是生态和扩展性。我们要接BLE模块、要做低功耗管理、未来还想加NB-IoT……这些都需要丰富的外设支持(UART/I²C/SPI)、良好的SDK和调试工具链。
所以我们选择了 ARM Cortex-M0/M3架构的32位MCU ,比如STM32F030或GD32E103系列:
- 工作电压2.0~3.6V,完美适配锂电池;
- 内置12-bit ADC,最多8路输入,轻松搞定电压、电流、温度三参数;
- 支持Sleep/Stop/Standby多种低功耗模式,待机电流可低至1μA;
- Flash≥16KB,RAM≥4KB,跑轻量AI推理绰绰有余;
- 成本?不到1美元!性价比拉满。
来看一段核心判断逻辑:
#define CHARGE_COMPLETE_CURRENT_THRESHOLD_MA 50
#define FULL_VOLTAGE_MV 4200
void check_charging_status(void) {
uint32_t voltage_mv = read_battery_voltage();
uint32_t current_ma = read_charge_current();
static uint8_t stage = CHARGING_STAGE_CC;
if (voltage_mv >= FULL_VOLTAGE_MV - 50) {
if (current_ma < CHARGE_COMPLETE_CURRENT_THRESHOLD_MA) {
set_system_state(CHARGE_FINISHED);
trigger_notification();
} else {
set_system_state(CHARGING_CV);
}
} else {
set_system_state(CHARGING_CC);
}
}
这个函数每秒执行一次,基于双参数判断当前阶段。关键是——它完全在本地运行, 不需要联网、不依赖APP后台唤醒 ,响应更快更可靠。
远程提醒靠什么?BLE才是王道!
现在人人都想连手机,但方案得选对。有人用GPRS发短信,成本高、信号差;有人搞Wi-Fi,功耗吓人,路由器一断全完蛋。
我们的选择是: 蓝牙低功耗(BLE) 。🎯
选用NRF52810、DA14580或国产JDY-33这类模块,优势太明显了:
- 待机电流<5μA,工作电流<10mA,分时供电下日均功耗几乎可以忽略;
- 通信距离10~30米,足够覆盖家门口、楼道口;
- 支持GAP广播模式,手机APP一打开就能发现设备,无需配对;
- UART接口直连MCU,协议灵活,自定义服务传输数据。
我们在BLE上定义了几个关键特征值:
| UUID | 含义 | 类型 | 单位 |
|---|---|---|---|
| 0x0001 | 实时电压 | uint16 | mV |
| 0x0002 | 实时电流 | int16 | mA |
| 0x0003 | SOC | uint8 | % |
| 0x0004 | 状态标志 | bitfield | —— |
手机APP只要绑定一次,以后每次充电都能收到推送。甚至你可以设置“仅当充满时提醒”,避免被频繁通知打扰。
怎么发数据?很简单:
void send_soc_via_ble(uint8_t soc_percent) {
char at_cmd[32];
sprintf(at_cmd, "AT+SEND=3,%d\r\n", soc_percent);
uart_send(UART_BLE, (uint8_t*)at_cmd, strlen(at_cmd));
}
假设BLE模块烧录了定制固件,一句AT指令就把SOC写进特征值。整个过程不到10ms,发完立刻关电,省着用。
功耗做得好,才能一直在线
这块板子最大的挑战是什么?不是功能,是 如何长期挂在电池上而不成为负担 。
你想啊,如果它自己每天耗电1mAh,一年就是365mAh——对于一个10Ah的电池来说看似不多,但问题是:它一直在耗!哪怕车停着不动。
所以我们的目标很明确: 无事时睡死,有事时秒醒 。
具体怎么做?
- 电源设计用LDO不用DC-DC ?没错!虽然效率略低,但HT7333这类LDO静态电流才4μA,远低于大多数开关电源的待机损耗。
- 外设分时供电 :BLE模块平时断电,只有需要上报数据时才通过MOSFET打开,持续时间不超过500ms。
- MCU深度睡眠 :大部分时间处于STOP模式,靠RTC定时器每秒唤醒一次采样,或由电流变化触发外部中断。
- 防反灌保护 :加了个肖特基二极管,防止MCU反过来从电池取电,尤其是在低温环境下。
最终结果:
- 充电活跃期:整机功耗约8mA(含BLE瞬时发射);
- 空闲待机:整机<10μA;
- 按每天工作1小时计算,年均耗电不足3mAh,基本可忽略不计。
板子长什么样?能塞进现有充电器吗?
当然能!整个PCBA尺寸只有 30mm×25mm ,双层板设计,所有元件都用0603封装甚至更小。
系统结构也很清晰:
[锂电池包]
│
├───→ [分流电阻] ───→ [运放调理电路] ──┐
│ ↓
├───→ [电压分压网络] ─────────────→ ADC输入
│ ↓
└───→ [NTC温度传感器] ───────────→ ADC输入
↓
[MCU主控芯片]
│
┌─────────────────────┴─────────────────────┐
↓ ↓
[LED指示灯] [蜂鸣器报警]
↓ ↓
[状态显示] [本地声光提醒]
│
└─────────────────────→ [BLE模块] ←─────┐
↓
[智能手机APP]
(远程提醒)
生产上也有讲究:
- 模拟地数字地分离 :避免高频噪声干扰ADC采样;
- 分流电阻靠近电池端子 :减少走线电阻带来的测量误差;
- BLE天线区域净空 :不能覆铜、不能走线,保证信号强度;
- 高压节点加丝印标识 :符合安规间距,过认证更容易;
- TVS防护 :防止ESD击穿敏感芯片;
- 预留UART接口 :方便批量烧录固件和输出调试日志;
- 自动化校准程序 :每块板出厂前自动标定电压偏移和电流增益,确保一致性。
解决了哪些实际问题?
| 用户痛点 | 我们的解法 |
|---|---|
| 忘记拔充电器导致过充 | 实时监测电流衰减趋势,精准识别浮充转折点 |
| 不知何时充满,盲目等待 | 提供精确SOC显示 + 充满预测倒计时 |
| 多辆车共用充电桩易混淆 | 每台设备有唯一BLE广播ID,APP自动识别归属 |
| 加装系统增加能耗 | 超低功耗设计,日均耗电<0.1mAh,三年免维护 |
特别值得一提的是,在一些共享电单车运营项目中,运维人员再也不用挨个检查是否充满,系统自动上报状态,调度效率提升40%以上。📊
最后聊聊它的潜力
“小智AI”现在只是个充电提醒小助手,但它骨子里是个 可扩展的智能终端平台 。
未来我们可以:
- 加个NB-IoT模块,实现广域联网,构建城市级充电监控网络;
- 接入BMS通信总线,获取更多电池健康信息(如循环次数、内阻);
- 增加光照传感器,白天自动关闭LED提醒,节能又环保;
- 结合APP做数据分析,告诉你“最近三次充电平均耗时多久”“电池容量是否有衰减”。
甚至,它可以成为一个 轻型能源物联网节点 ,为智慧社区、智能停车、电池银行等场景提供底层数据支撑。
别再让电动车“盲充”了。💡
一块小小的PCBA,加上一点嵌入式AI的智慧,就能让每一次充电变得安心、透明、高效。
这才是科技该有的样子:不炫技,只解决问题。🛠️❤️
更多推荐



所有评论(0)