1. 项目概述:高压直流采样仪的设计挑战
十年前在深圳华强北电子市场奔波的日子还历历在目,当时为了设计这套能测量1000V/100A的直流采样系统,几乎试遍了市场上所有可用的传感器方案。高压大电流测量设备在工业现场有着广泛需求,但市面上现成的仪器要么价格昂贵,要么在长期稳定性上难以满足要求。这套系统从电路设计、程序编写到外壳开模全部自主完成,最终实现量产的1000多套设备至今仍在多个工业现场稳定运行。
核心设计指标非常明确:电压测量范围0-1000V DC,电流测量范围0-100A DC,采样精度达到1%以内,具备8组数据存储能力和异常触发记录功能。看似简单的参数背后,却隐藏着三大技术难关:高压隔离安全问题、大电流采样温漂问题,以及工业环境下的抗干扰问题。这些都不是教科书上的理论能直接解决的,必须通过反复的实际测试和方案迭代。
2. 硬件设计:高压大电流的应对之道
2.1 高压采样电路设计
直接让单片机测量1000V电压无异于自杀行为。我们的解决方案采用电阻分压网络配合多重保护电路。主分压电路由1MΩ和10kΩ精密电阻组成,理论分压比为100:1。但实际应用中必须考虑:
- 电阻精度和温漂:选用0.1%精度的金属膜电阻,温度系数控制在50ppm/℃以内
- 电压冲击防护:在分压点并联TVS二极管(选用1.5KE系列),响应时间纳秒级
- 过流保护:串联自恢复保险丝(500mA保持电流)防止分压电阻短路
c复制// 电压计算补偿代码示例
float get_real_voltage(uint16_t adc_val){
float k = 1.02f; // 通过实际校准获得的修正系数
return (adc_val * 3.3f / 4096) * 110 * k; // 110是实际分压比
}
关键提示:高压侧所有走线必须保证3mm以上的安全间距,PCB板应做开槽处理防止爬电。
2.2 电流采样方案选型
电流测量尝试过三种方案:
- 分流电阻方案:成本低但大电流时发热严重,影响精度
- 开环霍尔传感器(如ACS712):100A时非线性误差超过3%
- 闭环霍尔传感器(最终方案):采用CHB-50SF,精度0.5%,温漂0.02%/℃
PCB布局特别注意:
- 大电流路径采用2oz厚铜箔,关键路径开窗镀锡(厚度>0.2mm)
- 霍尔传感器远离发热元件,必要时添加散热铜块
- 信号走线采用差分对布局,避免平行于大电流走线
3. 软件系统设计
3.1 实时采样与触发机制
采用STM32F103的ADC配合DMA实现高速采样,关键设计点:
- 双缓冲环形队列设计(512样本/缓冲)
- 触发检测采用滑动窗口比较算法
- 数据存储使用压缩算法节省空间
c复制#define BUFF_SIZE 512
volatile uint16_t adc_buff[BUFF_SIZE*2]; //双缓冲
void DMA1_Channel1_IRQHandler(void){
if(DMA_GetITStatus(DMA1_IT_TC1)){
// 触发判断:连续5个点超阈值
for(int i=0; i<BUFF_SIZE-5; i++){
if(adc_buff[i]>threshold &&
adc_buff[i+1]>threshold &&
adc_buff[i+2]>threshold){
save_to_flash();
break;
}
}
DMA_ClearITPendingBit(DMA1_IT_TC1);
}
}
3.2 上位机通信协议
早期版本因通信不稳定被迫升级协议:
| 版本 | 帧结构 | 校验方式 | 传输速率 | 问题 |
|---|---|---|---|---|
| V1.0 | 简易帧 | 无校验 | 9600bps | 误码率高 |
| V2.0 | 标准帧 | 累加和 | 115200bps | 偶发错误 |
| V3.0 | 增强帧 | CRC8 | 115200bps | 稳定可靠 |
csharp复制byte[] BuildFrame(byte cmd, float[] data){
List<byte> bytes = new List<byte>();
bytes.Add(0xAA); //帧头
bytes.Add(cmd);
foreach(float val in data){
byte[] b = BitConverter.GetBytes(val);
bytes.AddRange(b);
}
bytes.Add(CRC8(bytes.ToArray()));
return bytes.ToArray();
}
4. 结构设计与生产经验
4.1 外壳设计与散热方案
第一版外壳的教训深刻:
- 未考虑散热导致内部温升超过40℃
- 塑料材质抗静电能力不足
- 接插件位置不利于现场接线
改进方案:
- 顶部增加鲨鱼腮式散热槽(间距5mm)
- 底部安装4020离心风扇(风速可调)
- 采用PC+ABS阻燃材料(UL94 V-0等级)
- 所有金属部件做接地处理
4.2 生产测试流程
量产时建立的严格测试规范:
- 高压测试:逐步加压至1200V,保持1分钟
- 电流负载测试:0-100A阶梯加载,记录温升曲线
- 老化测试:85℃环境连续工作72小时
- EMC测试:通过静电放电(8kV)和浪涌(4kV)测试
5. 现场问题与解决方案
5.1 典型故障排查表
| 故障现象 | 可能原因 | 解决方案 |
|---|---|---|
| 数据跳变 | 基准电压不稳 | 增加10μF钽电容 |
| 通信中断 | 接线端子松动 | 更换进口端子台 |
| 采样偏差 | 传感器温漂 | 软件温度补偿 |
| 死机重启 | 电源干扰 | 增加π型滤波器 |
5.2 Flash存储注意事项
利用STM32内部Flash模拟EEPROM时需注意:
- 写操作前必须擦除整个页(1KB)
- 避免频繁写入导致寿命耗尽
- 写操作期间禁止中断
c复制void save_to_flash(){
FLASH_Unlock();
FLASH_ErasePage(0x0801F000);
for(int i=0;i<8;i++){
FLASH_ProgramHalfWord(addr, data[i]);
addr +=2;
}
FLASH_Lock();
}
6. 关键经验总结
- 高压设计必须预留足够的安全裕量,我们的分压电阻实际耐压值都按1500V选型
- 大电流路径的载流量要按3倍实际电流设计,PCB铜厚不够时务必开窗镀锡
- 工业现场最考验的是长期稳定性,我们通过85℃高温老化筛选早期失效产品
- 接插件是故障高发点,现在BOM中连接器只选用JST、Molex等品牌
- 软件要有完善的异常处理机制,我们的看门狗电路配合软件心跳包解决了95%的死机问题
这套系统给我最深的体会是:高压产品的设计,理论计算只是基础,真正的可靠性来自于对细节的极致把控。就像那批召回的产品,问题仅仅出在价值几毛钱的端子上,却差点毁了整个项目。现在做设计时,我会特别关注那些"不起眼"的元器件,因为往往就是它们决定了产品的最终品质。