ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

单片机电动机智能保护器:从电流采样到反时限保护

单片机电动机智能保护器:从电流采样到反时限保护 简介面向工业自动化与嵌入式硬件方向的学习者这是一份围绕电动机智能保护器展开的课题研究文档聚焦单片机在电机过载、短路、欠压等故障保护中的实现思路。文档指出传统反时限过载保护存在响应慢、精度不足的问题提出以电动机四阶热路模型作为过载保护模型并用遗传算法辨识热路参数在SIMULINK中完成额定负载、变负载与过载工况仿真再将模型离散化得到温升递推公式。硬件以STM32F105VCT6为控制核心、ATT7022EU作信号调理覆盖电源、信号采集、按键、显示、报警、开关量输入输出与通信接口软件用C语言编写初始化、人机交互、通信、保护逻辑和实时时钟支持远程监控与一主多从联动。压缩包含1个PDF文件约2.12MB为完整论文含摘要、目录、仿真分析与软硬件设计章节适合课设选题、方案借鉴与答辩准备。目前已有204人学习。1. 电动机智能保护器要解决的不是跳闸而是提前知道电机在坏车间里一台 7.5kW 水泵电机热继电器整定到额定电流轴承卡涩后电流缓慢爬升半小时后绕组绝缘冒烟热继电器只按双金属片热积累动作分不清断相、不平衡还是堵转。基于单片机的电动机智能保护器核心是用 C51 单片机或 STM32 做连续采样靠定时器节拍算电流有效值、负序分量和热积累模型再通过继电器或可控硅切断接触器线圈。它适合做电机控制柜改造、水泵风机保护、单片机课程设计和毕业设计的人也适合把 51 单片机从跑马灯拉到工业采样场景的开发者。真正难的不是接一个显示屏而是把采样窗口、保护判据和抗干扰一起做对。2. 从热继到单片机电动机智能保护器的采样与执行选型2.1 为什么单片机方案能替代热继电器热继电器是纯热效应器件动作曲线固定整定靠旋钮误差大且不能区分故障类型。电动机智能保护器用单片机后采样速度、阈值、延时和动作逻辑都可以由代码控制。常见做法是用 STC8 或 STM32F103 这类带 10 位以上 ADC 的单片机配定时器触发采样每 20ms 或 10ms 算一次有效值。过载保护不再只靠热量积累而是同时看电流幅值、持续时间和启动次数把热记忆做成软件模型。对 51 单片机来说如果只做单相小功率电机保护STC 系列自带 ADC 和 EEPROM成本低够用如果要做三相不平衡、Modbus 上传和 TF 卡记录STM32 的资源和 DMA 更省心。2.2 电流采样三条路线互感器加运放、霍尔、计量芯片电流采样决定保护器能不能稳定工作。常见三条路线电流互感器加运放整流、霍尔电流传感器、专用计量芯片。互感器方案成本低但需要把交流小信号抬到 ADC 量程中点再算有效值霍尔方案隔离好频响宽但温漂和零漂要处理计量芯片如 ATT7053、RN8302 能直接给有效值、功率和电能省去算法但成本高、寄存器多。对电动机智能保护器三相电流建议用三路互感器加运放进 STM32 的 ADC 规则组用定时器触发DMA 搬运避免中断里读寄存器。下表是三种采样路线的工程取舍路线典型器件优点缺点适合场景互感器运放TA1005、LM358成本低、隔离需整流或真有效值算法三相电机保护、课程设计霍尔电流ACS712、CC690隔离、频响宽温漂、零漂小功率电机、直流电机计量芯片ATT7053、RN8302直接出有效值寄存器多、成本高带电能计量的保护器2.3 保护判据过载、堵转、断相、不平衡的阈值与反时限保护判据不能只写“电流大于设定值就跳”。过载要按反时限曲线电流越大动作越快堵转要区分启动过程和运行过程断相要看三相电流是否有一相低于阈值同时另外两相升高不平衡用负序电流或最大电流差。常见整定范围过载阈值 1.051.2 倍额定电流堵转阈值 24 倍额定电流断相阈值低于 0.3 倍额定电流不平衡度大于 15% 报警、大于 30% 跳闸。反时限模型可以用热积累公式H H (I/Ie)^2 * dt当H超过 1 时跳闸跳闸后H按时间常数衰减。// 反时限热积累简化实现C51/STM32 通用思路 float heat 0.0f; // 热积累状态0~1 float Ie 5.0f; // 额定电流单位 A float tau 300.0f; // 冷却时间常数单位 s void overload_protect(float Irms, float dt) { float ratio Irms / Ie; if (ratio 1.05f) { // 过载时按平方关系积累热量 heat (ratio * ratio - 1.0f) * dt / 60.0f; } else { // 正常运行时热量按指数衰减 heat - heat * dt / tau; } if (heat 1.0f) { heat 1.0f; trip_motor(); // 切断接触器线圈 } }这段代码里Irms是当前有效值dt是采样周期tau决定冷却快慢。参数说明Ie必须按电机铭牌整定60.0f是热积累基准时间可根据实际曲线改成 30120。注意热积累状态要存 EEPROM掉电后不能归零否则电机反复热启动会烧。2.4 执行机构继电器、接触器与可控硅怎么选执行机构常见三种继电器直接切控制回路、接触器切主回路、可控硅调压或软停。继电器成本低但触点寿命有限适合切接触器线圈接触器容量大但动作有弧光要加吸收电路可控硅适合频繁启停和软启动但散热和过零检测要处理好。电动机智能保护器一般用继电器输出干接点去控制交流接触器线圈主回路仍由接触器承担。如果做小功率电机也可以用单片机控制可控硅过零触发减少浪涌。选型时注意触点额定电流要大于接触器线圈电流并留 2 倍余量。3. 硬件最小系统与抗干扰STC/STM32 单片机怎么接电流互感器3.1 单片机选型51、STC、STM32 的边界51 单片机资源少但 STC 系列把 ADC、EEPROM、看门狗、串口都集成了做单相保护器很方便。C51 单片机串口升级架构可以省去拆机烧录现场升级用串口就行。STM32F103 适合三相采样、Modbus、TF 卡和 LCDDMA 和定时器触发 ADC 让 CPU 轻松很多。如果只做电动机智能保护器的基础版STC8A8K64S4 这类芯片有 12 位 ADC、多路 PWM、EEPROM成本可控如果要做谐波分析或以太网上传直接上 STM32F4。选型边界在于采样路数、是否要浮点、是否要文件系统、是否要隔离通信。3.2 电流互感器与调理电路参数计算电流互感器二次侧输出是交流小电流常见 5A/2.5mA、5A/5mA 或 1000:1。要把它变成 ADC 能读的电压需要先并一个采样电阻再抬升到 VCC/2。假设互感器变比 1000:1一次电流 5A二次电流 5mA采样电阻 100Ω则电压 0.5V 交流峰值附近需要运放放大或直接进 ADC。STM32 的 ADC 参考 3.3V12 位1LSB 约 0.8mV。若互感器输出太小用 LM358 做同相放大增益 210 倍再用 1.65V 基准抬压。注意运放供电要单电源输出不能超过 3.3V反馈电阻并小电容滤高频。// STM32 ADC DMA 双通道采样初始化片段简化 void adc_dma_init(void) { RCC-APB2ENR | RCC_APB2ENR_ADC1EN; RCC-AHBENR | RCC_AHBENR_DMA1EN; // PA0、PA1 模拟输入 GPIOA-CRL ~(0xFF); GPIOA-CRL | 0x00; // 模拟输入模式 ADC1-CR2 | ADC_CR2_CONT; // 连续转换 ADC1-CR2 | ADC_CR2_DMA; // 使能 DMA ADC1-SQR1 0x00000010; // 2 个转换 ADC1-SQR3 (0 0) | (1 5); // 通道0、通道1 ADC1-CR2 | ADC_CR2_ADON; // 开启 ADC ADC1-CR2 | ADC_CR2_SWSTART; // 软件启动实际可用定时器触发 }这段初始化把 PA0、PA1 配成模拟输入ADC 连续转换并通过 DMA 搬运。参数说明SQR1的 L 位决定序列长度SQR3的低 5 位放第一个通道第 5 位开始放下一个通道。实际产品中建议用定时器 TRGO 触发 ADC采样率设 2kHz4kHz每 20ms 算一次有效值既避开工频整数周期误差又不会让 CPU 太忙。3.3 继电器/接触器驱动与吸收电路单片机 IO 不能直接驱动继电器要用三极管或 ULN2003。继电器线圈两端反并续流二极管如 1N4148 或 1N4007否则关断瞬间高压会打坏 IO。如果控制接触器线圈建议加 RC 吸收或压敏电阻。继电器触点侧如果切感性负载要加 RC 吸收触点并联 100Ω0.1μF。可控硅方案要过零检测常用 MOC3063 光耦触发 BTA16注意散热片面积和触发电流。PCB 上强电和弱电分区采样走线远离继电器和接触器线圈。3.4 PCB 布局与 EMC 注意事项模拟地和数字地单点连接ADC 基准脚加 0.1μF 和 10μF。互感器输入走差分尽量短包地。晶振靠近单片机底下不走线。继电器线圈和触点之间开槽爬电距离按 2mm 以上。电源入口加 TVS、共模电感和保险丝。软件上加看门狗STM32 用 IWDGSTC 用内部看门狗喂狗放在主循环不在中断里喂。通信线加 TVS 和磁珠Modbus 用 120Ω 终端电阻。EMC 不过关时优先看 ADC 零漂和继电器动作时是否复位。4. 固件实现定时器、ADC 与反时限保护逻辑4.1 定时器节拍与采样窗口定时器是保护器的节拍源。常见做法TIM2 设 1kHz 或 2kHz 中断每次中断触发 ADC 或标记采样点累计 20ms 算一次有效值。51 单片机定时计数器讲解里常说的方式 1、方式 2在这里要按采样率算初值。例如 STC8 用 24MHz 主频定时器 1ms 中断初值65536 - 24000。采样窗口取 20ms正好覆盖 50Hz 一个周期算有效值最稳。如果采样率是 2kHz20ms 有 40 个点足够算基波有效值。注意 ADC 转换时间要小于采样间隔否则会丢点。4.2 有效值计算与零漂处理有效值公式Irms sqrt( (1/N) * Σ (x[i] - offset)^2 )。offset是零电流时的 ADC 平均值上电时要校准运行中可缓慢更新。零漂处理不好小电流时会误判断相。常见做法上电时采 100 次零电流去掉最大最小再平均存到变量运行时用一阶滤波更新offset offset * 0.999 sample * 0.001。如果互感器有直流偏置先用高通滤波或减去滑动平均。三相电流分别算有效值再算不平衡度。// 20ms 窗口有效值计算STM32 定點数简化 #define N 40 uint16_t adc_buf[N]; float rms_calc(uint16_t *buf, float offset) { float sum 0.0f; for (int i 0; i N; i) { float v (float)buf[i] - offset; sum v * v; } return sqrtf(sum / N) * ADC_TO_AMP; // ADC_TO_AMP 由变比和采样电阻决定 }这段代码对 40 个点求平方和再开方。参数说明N是一个工频周期的采样点数offset是零电流基准ADC_TO_AMP是换算系数等于(Vref/4095) / (R_sample * 互感器变比)。如果 ADC 是 12 位、Vref 3.3V采样电阻 100Ω互感器 1000:1则每安培对应的电压很小需要运放放大后再算。调试时用钳形表对比误差超过 3% 就检查运放增益和 offset。4.3 反时限过载保护与热记忆反时限保护的核心是热积累前面已经给出简化模型。工程上还要加启动屏蔽电机启动 510 秒内过载阈值放宽到 23 倍避免启动电流误跳。堵转判断运行中电流大于 2.5 倍额定且持续 13 秒直接跳闸。断相判断任一相电流小于 0.3 倍额定且另外两相大于 0.5 倍额定延时 2 秒跳闸。不平衡(Imax - Imin) / Imax 30%延时 5 秒跳闸。热记忆要存 EEPROM掉电后按冷却曲线恢复不能直接清零。4.4 状态机与故障处理固件用状态机写最清楚上电自检、待机、启动、运行、过载预警、故障跳闸、故障锁定。跳闸后要等复位或延时自动恢复常见设置手动复位。故障时记录故障类型、故障电流、时间戳存 EEPROM 或 TF 卡。看门狗要保证主循环正常如果卡在 ADC 等待或通信阻塞看门狗会复位。复位后读取故障记录通过 LCD 或串口显示。状态切换要有消抖避免接触器抖动导致误判。5. 参数整定与故障录波EEPROM、TF卡表格与 Modbus 上传5.1 EEPROM 参数存储与掉电恢复额定电流、过载曲线、断相阈值、通信地址这些参数要存 EEPROM。STM32 用内部 Flash 模拟 EEPROMSTC 用自带 EEPROM。常见做法参数结构体加 CRC16上电读出来校验校验失败就载入默认值。写入时先擦除扇区再按半字写。掉电恢复还包括热积累heat建议每 10 秒存一次跳闸时立即存。51 单片机的存储器扩展如果不够可以外挂 24C02I2C 两线成本低。5.2 TF 卡表格记录怎么做TF 卡适合存历史数据和故障录波。用 FATFS 文件系统按日期建 CSV 文件表头写时间、A 相电流、B 相电流、C 相电流、状态。每 1 秒写一行断电前f_sync。注意 TF 卡写入时不能卡主循环可以用缓冲数组满 512 字节再写。单片机存储到 TF 卡以表格形式存储关键是格式化、文件命名和断电保护。建议文件名用LOG20250101.CSV表头只写一次写入频率不要超过 10Hz否则卡寿命和 CPU 都吃不消。// TF 卡 CSV 记录片段FATFS FATFS fs; FIL logfile; UINT bw; char line[128]; f_mount(fs, 0:, 1); f_open(logfile, LOG.CSV, FA_OPEN_ALWAYS | FA_WRITE); f_lseek(logfile, f_size(logfile)); // 追加到末尾 sprintf(line, %lu,%.2f,%.2f,%.2f,%d\r\n, tick, Ia, Ib, Ic, state); f_write(logfile, line, strlen(line), bw); f_sync(logfile); // 关键防止掉电丢数据这段代码挂载 TF 卡打开 CSV 文件追加一行电流和状态。参数说明tick是秒计数Ia/Ib/Ic是三相有效值state是运行状态。f_sync会强制写盘但频繁调用会卡顿建议每 510 行调用一次跳闸时立即调用。如果 TF 卡初始化失败降级到 EEPROM 存最近 20 条故障记录。5.3 Modbus RTU 上传实时数据Modbus RTU 是保护器接入上位机最常见的方式。STM32 用 UART 定时器做 3.5 字符间隔STC 用串口中断。寄存器表要规划好0x0000 读 A 相电流0x0001 读 B 相0x0002 读 C 相0x0010 读状态0x0100 写额定电流。功能码 03 读保持寄存器06 写单个寄存器16 写多个。从站地址 1247波特率 9600 或 19200偶校验。帧尾 CRC16 低字节在前。寄存器地址含义读写单位0x0000A 相电流R0.01A0x0001B 相电流R0.01A0x0002C 相电流R0.01A0x0010运行状态R0待机 1运行 2故障0x0100额定电流R/W0.01A0x0101过载阈值R/W0.01A// Modbus RTU 03 功能码响应片段 void modbus_03(uint8_t *req, uint8_t *resp) { uint16_t addr (req[2] 8) | req[3]; uint16_t num (req[4] 8) | req[5]; uint16_t crc; resp[0] slave_id; resp[1] 0x03; resp[2] num * 2; for (int i 0; i num; i) { uint16_t val read_register(addr i); resp[3 i * 2] val 8; resp[4 i * 2] val 0xFF; } crc crc16(resp, 3 num * 2); resp[3 num * 2] crc 0xFF; resp[4 num * 2] crc 8; uart_send(resp, 5 num * 2); }这段代码解析主机请求按寄存器地址返回值。参数说明slave_id是从站地址num是寄存器数量crc16多项式 0xA001。注意响应长度不能超过 256 字节一次读太多寄存器会超时。如果通信不上先看 A/B 极性、终端电阻和波特率再看 3.5 字符间隔定时器是否准确。6. 现场调试与验证把保护曲线真正跑出来6.1 互感器变比与阈值标定标定要用钳形表或标准电流源。先通 1A、2A、5A 标准电流记录 ADC 有效值和实际值算线性系数。如果误差大检查运放增益、采样电阻精度和 offset。三相要分别标定因为互感器个体有差异。额定电流Ie按电机铭牌设过载阈值设 1.1 倍堵转设 2.5 倍断相设 0.3 倍。标定后把参数写 EEPROM再读回来比对。6.2 用可调负载模拟过载、堵转、断相现场调试可以用加热管、电阻箱或小电机对拖。过载模拟调负载电流到 1.5 倍额定看是否按反时限动作记录动作时间。堵转模拟直接卡住电机轴电流到 3 倍额定看 1 秒内是否跳闸。断相模拟拔掉一相熔断器看是否在 2 秒内报警。注意每次故障后等热积累冷却或手动复位。动作时间偏差超过 20% 就调整热积累系数或延时阈值。6.3 常见故障排查表现象可能原因处理上电复位电源纹波大、看门狗误喂加滤波电容主循环喂狗电流显示为 0互感器接反、运放没供电查偏置电压和运放输出小电流误跳闸offset 漂移、断相阈值太低重新校准零漂调阈值继电器动作后单片机复位续流二极管缺失、地线干扰加 1N4148单点接地Modbus 无响应A/B 反、地址错、CRC 错交换 A/B核对波特率TF 卡写失败格式不对、供电不足格式 FAT32加 100μF 电容6.4 进阶从保护器到预测性维护保护器跑通后可以把历史电流、启动次数、热积累曲线上传到上位机做趋势分析。比如某台电机每次启动电流峰值逐渐升高可能转子断条或负载变重。用 TF 卡 CSV 或 Modbus 上传到数据库按天统计最大电流、不平衡度和跳闸次数。再进一步把 STM32 的 ADC 采样做 FFT看 2 次、3 次谐波能提前发现绕组故障。通信上可以加 4G 模块或以太网但不要影响保护主循环保护逻辑永远放在最高优先级。调试到最后用一台真实电机连续跑 72 小时记录误动作和温升才算把基于单片机的电动机智能保护器从实验板推到现场柜。本文还有配套的精品资源点击获取
返回列表