3. 系统架构设计:主控板选型与功能模块划分
好,咱们进入第三章。这一章我打算聊聊系统架构设计。说白了,就是决定「用什么脑子」和「怎么分工」。很多新手工程师一上来就画原理图,结果后面发现引脚不够用,或者通信接口打架。嗯,我早期也吃过这个亏。
3.1 主控芯片选型:STM32 vs ESP32 vs 国产芯片
选主控,我个人的习惯是先看「需求清单」。充电桩需要什么?计量数据采集、4G/Wi-Fi通信、继电器控制、屏幕显示、还有一堆保护逻辑。算力要求不高,但接口要够用。
我列个对比表,大家看着更清楚:
| 芯片型号 | 核心优势 | 典型应用场景 | 我踩过的坑 |
|---|---|---|---|
| STM32F103/F407 | 生态成熟,资料多,稳定 | 交流桩、直流桩控制板 | 曾经因为选F103,RAM不够跑OTA,后来换了F407 |
| ESP32 | 自带Wi-Fi/蓝牙,价格低 | 家用交流桩、联网需求强 | 注意它的ADC精度一般,计量别用它的内置ADC |
| 国产GD32/AT32 | 性价比高,供货稳 | 成本敏感型产品 | 有些型号的USB兼容性有问题,要仔细测 |
我个人建议:如果是做量产产品,尤其是要过认证的,首选STM32。不是说国产不好,而是你想想看,认证周期那么长,万一芯片有个小bug,改版成本太高。我有个项目就因为这个,硬生生多花了三个月。
核心选型原则:
- 计量类任务:必须用独立计量芯片,别指望主控自带的ADC
- 通信类任务:如果走4G,主控只需要串口;如果走Wi-Fi,ESP32有优势
- 控制类任务:继电器驱动、PWM输出,普通MCU都能搞定
3.2 功能模块划分:计量/通信/控制/人机
一个充电桩系统,我习惯把它拆成四个大块。你想想看,这样分工明确,调试也方便。
3.2.1 计量模块
这是充电桩的「眼睛」。负责采集电压、电流、功率、电能。我建议用专用计量芯片,比如RN8302B、HLW8032、ATT7022。为什么?因为这些芯片内部有硬件滤波器,能滤掉电网的谐波干扰。我曾经试过用MCU的ADC直接采样,结果数据跳得跟心电图似的,根本没法用。
小提示:计量芯片和主控之间一般用SPI或UART通信。注意隔离!高压侧和低压侧一定要加隔离芯片,比如ISO7240。安全第一。
3.2.2 通信模块
通信是充电桩的「嘴巴」。主要分三种:
- 4G通信:用EC200U或SIM7600,走MQTT协议连云平台。注意天线要选好,我见过因为天线匹配不好,信号差到连不上网的。
- Wi-Fi通信:如果选ESP32,它自带Wi-Fi,省一个芯片。但要注意,公共桩不建议用Wi-Fi,不稳定。
- 有线通信:RS485用于和电表通信,CAN用于和BMS(电池管理系统)通信。嗯,这里要注意,CAN总线要加终端电阻,120欧姆,别漏了。
3.2.3 控制模块
控制是充电桩的「手」。主要管三件事:
- 继电器控制:控制充电枪的通断。我建议用双继电器冗余设计,防止粘连。
- PWM输出:用于和电动汽车通信,告诉车子「我能给你充多大电流」。这个PWM的频率是1kHz,占空比代表电流值。
- 漏电检测:必须硬件实现,不能靠软件。我曾经见过一个方案,用软件检测漏电,结果响应慢了200ms,差点出事。
3.2.4 人机交互模块
人机交互是充电桩的「脸面」。常见的有:
- LCD屏幕:显示充电状态、电量、金额。建议用串口屏,开发快。
- 按键/刷卡:用于启动充电。注意按键要防抖,硬件消抖加软件消抖双重保险。
- 指示灯:红绿蓝三色LED,表示不同状态。红色故障,绿色充电中,蓝色待机。
3.3 系统框图与接口定义
好了,模块分完了,咱们得把它们连起来。我画一个典型的系统框图,大家感受一下:
+------------------+ +------------------+
| 计量芯片 | | 4G模块 |
| (RN8302B) |<-SPI->| (EC200U) |
+------------------+ +------------------+
| |
| |
+------------------+ +------------------+
| 主控MCU |<------| RS485/CAN |
| (STM32F407) | | 接口电路 |
+------------------+ +------------------+
| |
| |
+------------------+ +------------------+
| 继电器驱动 | | 人机交互 |
| (光耦+MOS) | | (串口屏+按键) |
+------------------+ +------------------+
接口定义这块,我建议用表格列清楚,方便硬件工程师画原理图:
| 接口名称 | 通信方式 | 引脚定义 | 备注 |
|---|---|---|---|
| 计量芯片接口 | SPI | CS, SCK, MISO, MOSI | 注意时钟极性,CPOL=0, CPHA=0 |
| 4G模块接口 | UART | TX, RX, RTS, CTS | 波特率115200,流控可选 |
| 继电器控制 | GPIO | RELAY1, RELAY2 | 高电平有效,加光耦隔离 |
| PWM输出 | 定时器 | PWM_OUT | 1kHz, 占空比10%-90% |
| 串口屏 | UART | TX, RX | 波特率9600或115200 |
警告:接口定义一定要和硬件工程师对齐!我遇到过因为引脚定义不一致,导致PCB打样回来飞线的惨案。嗯,那次加班到凌晨三点,记忆犹新。
3.4 避坑指南
最后,分享几个我亲身经历的坑:
- 电源设计:主控、计量、通信模块要分开供电。我曾经把所有模块共用一个LDO,结果4G模块一发射,MCU就复位。后来加了DC-DC隔离才解决。
- 地线处理:模拟地和数字地要单点连接。计量芯片对地噪声特别敏感,我试过不分割地,计量误差直接超了5%。
- 预留调试接口:一定要留SWD或JTAG接口。别问我为什么,等你程序跑飞了就知道有多重要了。
好了,这一章就到这里。系统架构设计是地基,地基不稳,后面全是白搭。下一章咱们聊聊「硬件原理图设计」,到时候我会把计量电路、通信电路、电源电路一个个拆开来讲。记得带上你的原理图工具。