基于STM32的智能充电桩计费项目
若该文为原创文章,转载请注明原文出处。
摘要: 本文设计并实现了一种以STM32F103ZET6单片机为核心的智能充电桩计费系统。系统通过电压/电流传感器(ACS712/INA226)实时监测充电参数,并具备过压、过流、欠压、过温等多重保护机制。采用RFID模块(RC522)进行用户身份认证和充电过程管理,实现刷卡计费功能。通过OLED显示屏进行本地参数显示,通过WiFi模块(ESP8266)或4G模块(EC200N)将数据上传至云平台,用户可通过手机APP进行远程监控与参数设置。测试结果表明,该系统运行稳定,计量准确,安全可靠,满足了智能充电桩的基本需求。
关键词: STM32;充电桩;计费系统;RFID;安全保护;物联网
一、引言
(一)研究背景及意义
随着电动汽车和电动自行车的普及,充电需求呈现爆发式增长。传统充电方式存在管理不便、计费不透明、安全性不足等问题。智能充电桩作为能源补给与物联网技术的结合点,能够实现远程监控、精准计费、安全防护和高效管理,对于推动新能源汽车产业发展、建设智慧城市基础设施具有重要意义。本项目旨在设计一款低成本、高可靠性、具备联网功能的智能充电桩计费系统原型。
(二)国内外研究现状
目前,国内外智能充电桩市场发展迅速。国外厂商如特斯拉、ChargePoint等提供了从高端超充到商用充电的整体解决方案。国内国家电网、特来电、星星充电等企业也在大力布局充电网络。这些商用充电桩功能完善但系统复杂、成本高昂。在社区、商场等场景下,对两轮/三轮电动车进行充电的智能插座式充电桩需求巨大。本项目聚焦于此,提供一个集成计量、计费、控制和联网功能的嵌入式解决方案,具有较高的工程实践价值。
二、系统总体设计
(一)系统架构
系统采用分层设计:
-
主控层: STM32作为核心控制器,负责所有业务的处理。
-
感知层: 电压电流检测模块、温度传感器、RFID读卡器。
-
执行层: 继电器(控制电路通断)。
-
交互层: OLED显示屏、按键。
-
通信层: WiFi/4G模块,负责与云平台通信。
-
应用层: 云平台和手机APP,提供远程服务。
(二)功能模块划分
-
电力监测模块: 电压、电流采样与计算。
-
安全保护模块: 过压、过流、欠压、过温保护与自动断电。
-
计费管理模块: RFID身份识别、计时/计电度计费。
-
人机交互模块: 按键设置、OLED显示。
-
通信模块: 无线数据上传与远程控制。
三、硬件设计与实现
(一)系统硬件框架图

系统硬件配置与功能说明表
1. 主控单元
| 器件名称 | 推荐型号 | 接口 | 功能说明 |
|---|---|---|---|
| STM32单片机 | STM32F103C8T6 | - | 作为系统核心,负责数据采集、安全保护、计费计算、通信处理。 |
2. 检测与输入单元
| 器件名称 | 推荐型号/类型 | 接口 | 功能说明 |
|---|---|---|---|
| 电压检测模块 | 分压电阻网络 | ADC | 实时监测充电电压,范围0-60V,精度±0.1V。 |
| 电流检测模块 | ACS712 | ADC | 实时监测充电电流,范围0-20A,精度±0.1A。 |
| 温度传感器 | DS18B20 | 单总线 | 监测充电桩温度,范围-55°C至+125°C,防止过热。 |
| RFID读卡模块 | RC522 | SPI | 识别用户IC卡,实现刷卡计费功能。 |
| 按键模块 | 轻触开关 × 4 | GPIO | 功能:参数设置、模式切换、确认、取消。 |
3. 执行器单元
| 器件名称 | 推荐型号/类型 | 接口 | 功能说明 |
|---|---|---|---|
| 电源继电器 | 30A大功率继电器 | GPIO | 控制充电电源通断,支持过流、过压、过热保护断电。 |
| OLED显示屏 | SSD1306 | I²C | 显示电压、电流、功率、费用、温度等信息。 |
| 蜂鸣器 | 5V有源蜂鸣器 | GPIO | 操作提示和报警提示音。 |
| 状态指示灯 | RGB LED | PWM | 显示系统状态:绿色(充电中)、蓝色(待机)、红色(故障)。 |
4. 通信单元
| 器件名称 | 推荐型号 | 接口 | 功能说明 |
|---|---|---|---|
| WiFi模块 | ESP-01S | UART | 连接云平台,实现远程监控和数据管理。 |
核心功能逻辑说明
1. 安全保护系统
-
过压保护:
-
if (电压 > 设定过压阈值) { 立即断电; 蜂鸣器报警; OLED显示"过压保护"; }
-
-
过流保护:
-
if (电流 > 设定过流阈值) { 立即断电; 蜂鸣器报警; OLED显示"过流保护"; }
-
-
温度保护:
-
if (温度 > 设定温度阈值) { 立即断电; 蜂鸣器报警; OLED显示"过热保护"; }
-
-
充电状态检测:
-
if (电压 < 1V && 电流 < 0.1A) { 判断为未充电状态; 自动断电; }
-
2. 计费系统
-
刷卡启动:
-
用户刷卡 → 读取卡号 → 开始计时计费 → 启动充电
-
-
计费算法:
-
费用 = 时间(小时) × 费率(元/小时) + 电量(度) × 电费(元/度) -
支持时间和电量双重计费模式
-
-
刷卡结束:
-
再次刷卡 → 停止计时 → 计算总费用 → 断电 → 显示费用信息
-
3. 参数设置功能
-
可设置参数:
-
过压保护阈值(默认58V)
-
过流保护阈值(默认15A)
-
温度保护阈值(默认75°C)
-
计费费率(元/小时)
-
电费价格(元/度)
-
4. OLED显示界面
充电状态显示: ---------------- 电压: 54.2V 电流: 8.5A 功率: 460W 温度: 45°C 时间: 01:25:36 费用: 3.50元 ---------------- 故障报警显示: ---------------- 过压保护! 请检查设备 ----------------
5. 远程监控功能
-
APP实时显示:
-
实时电压、电流、功率
-
充电时间和累计费用
-
设备温度状态
-
历史充电记录
-
-
APP远程控制:
-
远程参数设置
-
费率调整
-
故障报警通知
-
远程紧急断电
-
四、软件设计与实现
(一)开发环境搭建
-
IDE: Keil MDK或STM32CubeIDE
-
库: HAL库或标准库
-
系统: 考虑业务逻辑复杂,可引入FreeRTOS实时操作系统,将数据采集、通信、UI显示等任务分离,提高系统稳定性和响应性。
(二)系统软件流程图(基于FreeRTOS)

(三)关键功能代码片段
1. 电力数据采集与计算(代码片段)
// 使用INA226
float Read_BusVoltage(void) {
uint16_t reg_val = INA226_ReadRegister(INA226_REG_BUS_VOLTAGE);
return (float)reg_val * 0.00125; // LSB=1.25mV
}
float Read_Current(void) {
uint16_t reg_val = INA226_ReadRegister(INA226_REG_CURRENT);
// return (float)reg_val * Current_LSB; // Current_LSB需根据采样电阻校准计算
return reg_val * 0.1; // 示例简化
}
void Energy_Calculation_Task(void *pvParameters) {
float power, energy_Wh = 0;
TickType_t xLastWakeTime = xTaskGetTickCount();
const TickType_t xFrequency = pdMS_TO_TICKS(1000); // 每1秒计算一次
for(;;) {
power = Read_BusVoltage() * Read_Current(); // 计算瞬时功率 (W)
energy_Wh += power / 3600.0; // 累计能量 (Wh = W * s / 3600)
vTaskDelayUntil(&xLastWakeTime, xFrequency);
}
}
2. 安全保护逻辑(代码片段)
void Safety_Protection_Task(void *pvParameters) {
for(;;) {
float v = Read_BusVoltage();
float i = Read_Current();
float t = DS18B20_ReadTemp();
if((v > OVER_VOLTAGE_THRESHOLD) || (i > OVER_CURRENT_THRESHOLD)) {
Relay_OFF();
printf("ALARM: Over Voltage/Current!\r\n");
} else if(t > OVER_TEMP_THRESHOLD) {
Relay_OFF();
printf("ALARM: Over Temperature!\r\n");
} else if((v < 1.0) && (i < 0.1)) { // 电压低于1V且电流很小,判定为空载
Relay_OFF();
printf("ALARM: No Load/Charging Finished!\r\n");
}
vTaskDelay(pdMS_TO_TICKS(200)); // 200ms检查一次
}
}
3. RFID计费逻辑(代码片段)
void RFID_Task(void *pvParameters) {
uint8_t uid[10];
for(;;) {
if(RC522_CheckCard(uid)) { // 检测到卡
Card_Info card = Get_Card_Info_From_EEPROM(uid); // 从数据库(EEPROM)查询卡信息
if(card.status == IDLE) {
card.status = CHARGING;
card.start_time = xTaskGetTickCount();
card.start_energy = energy_Wh;
Relay_ON();
Save_Card_Info(uid, card); // 更新卡状态
} else if(card.status == CHARGING) {
card.status = IDLE;
card.end_time = xTaskGetTickCount();
card.end_energy = energy_Wh;
Relay_OFF();
float used_energy = card.end_energy - card.start_energy;
float cost = used_energy * UNIT_PRICE; // UNIT_PRICE 单价(元/度,1度=1kWh)
card.balance -= cost;
Save_Card_Info(uid, card); // 扣费并保存
}
vTaskDelay(pdMS_TO_TICKS(1000)); // 防止重复读卡
}
vTaskDelay(pdMS_TO_TICKS(200));
}
}
4. 云平台通信(伪代码)
// 基于AT指令的ESP8266 MQTT通信示例
void MQTT_Publish_Data(void) {
char json_buffer[256];
sprintf(json_buffer,
"{\"voltage\":%.2f,\"current\":%.2f,\"power\":%.2f,\"energy\":%.2f,\"temp\":%.1f,\"status\":%d}",
voltage, current, power, energy_Wh, temperature, relay_status);
// 示例AT指令: AT+MQTTPUB=0,"device/topic",json_buffer,0,0
ESP8266_Send_Command("AT+MQTTPUB=0,\"device/topic\",\"%s\",0,0\r\n", json_buffer);
}
五、系统测试与优化
(一)测试方案
-
计量精度测试: 使用标准功率计与系统测量值进行对比,校准INA226的采样电阻和计算参数。
-
功能测试:
-
RFID计费: 模拟刷卡开始、结束,检查扣费金额是否正确。
-
保护测试: 模拟过压、过流、过温条件,测试继电器是否及时断开。
-
通信测试: 测试数据上传和远程控制指令的下发是否正常。
-
-
长时间老化测试: 带载运行24小时以上,检查系统稳定性、温升情况。
(二)测试结果与分析
| 测试项目 | 测试条件 | 预期结果 | 实际结果 | 结论 |
|---|---|---|---|---|
| 计量精度 | 接入5A/50V负载 | 测量值与标准表误差<±2% | 误差约±1.5% | 合格,需软件校准 |
| 过流保护 | 电流超过15A | 继电器在1s内断开 | 约800ms后断开 | 合格 |
| RFID扣费 | 充电消耗0.5kWh | 按预设单价正确扣费 | 扣费金额准确 | 合格 |
| 数据上传 | 网络正常 | 数据成功上报云平台 | 数据实时更新 | 合格 |
(三)系统优化
-
软件校准: 在代码中增加校准系数,对电压、电流的测量值进行线性补偿,进一步提高计量精度。
-
EEPROM存储: 将系统参数(单价、阈值)和用户卡信息存储在STM32的片内Flash或外置EEPROM芯片中,防止掉电丢失。
-
看门狗: 启用STM32的独立看门狗(IWDG)和窗口看门狗(WWDG),在程序跑飞时自动复位,提高系统可靠性。
-
故障记录: 在EEPROM中循环存储最近10条故障记录(如过流、过压发生的时间和数据),便于后期诊断维护。
六、结论与展望
(一)结论
本项目成功设计并实现了一个功能完备的智能充电桩计费系统原型。系统完成了电力参数监测、RFID身份识别与计费、多重安全保护、本地人机交互和远程监控等核心功能。硬件选型合理,软件设计采用FreeRTOS,稳定可靠。测试结果表明,系统达到了设计目标,为实际产品化打下了坚实的基础。
(二)未来展望
-
支付集成: 集成二维码识别模块,支持微信、支付宝等扫码支付,适应更广泛的用户习惯。
-
屏幕升级: 采用触摸屏,提供更丰富的交互体验和更详细的信息展示。
-
有序充电: 与后台管理系统结合,实现峰谷电价计费、充电队列调度等功能,优化电网负荷。
-
标准协议: 遵循OCPP(Open Charge Point Protocol) 等国际标准协议进行开发,实现与不同充电运营管理平台的互联互通。
-
GPRS/4G联网: 针对户外场景,升级为4G Cat.1或NB-IoT通信,实现更广域的覆盖。
如有侵权,或需要完整代码,请及时联系博主。
更多推荐

所有评论(0)