3. 案例3
任务定义
本案例针对直流有刷电机在运行中因机械卡滞导致的堵转故障,要求完成以下闭环:搭建一个可复现的电机电流采样与堵转诊断实验环境,通过示波器观察正常启动与堵转时的电流波形差异,识别堵转特征(电流急剧上升并维持在高位),并实现一种基于电流阈值的控制策略调整——检测到堵转后自动切断PWM输出,避免持续过流损坏电机与驱动电路。
实验系统构成
系统由四部分组成:STM32F103微控制器(产生PWM并执行堵转保护逻辑)、MOSFET全桥驱动电路、直流有刷电机(额定电压12V,堵转电流约2A)、以及电流采样电阻(0.1Ω)与示波器探头。电流采样电阻串联在电机低端与地之间,示波器使用差分探头或单端探头测量采样电阻两端电压,通过欧姆定律换算为电流值。
电流波形特征与堵转识别
正常启动时,电机电流波形呈现典型的指数上升过程:启动瞬间电流从0快速上升至启动峰值(约1.5~2倍额定电流),随后在数百毫秒内衰减至额定电流附近(约1A),波形呈“尖峰后回落”形态。堵转发生时,电机转子无法转动,反电动势为零,电流将直接上升至堵转电流(由电源电压除以电枢电阻决定,本系统约2A),并持续维持在该高位不回落。示波器上可清晰观察到:正常启动波形有衰减过程,而堵转波形是一条平坦的高电平直线。
控制策略调整实现
在STM32固件中实现堵转保护逻辑:通过ADC以1kHz采样率采集采样电阻电压,换算为电流值。当检测到电流连续50ms超过1.8A(堵转阈值的90%),判定为堵转状态,立即将PWM占空比置为0,切断电机供电,并置位故障标志。故障解除需人工复位或等待3秒后自动尝试恢复。
// 堵转检测与保护 - 基于STM32 HAL库
#include "stm32f1xx_hal.h"
#define PWM_TIM TIM3
#define PWM_CHANNEL TIM_CHANNEL_1
#define SENSE_ADC ADC1
#define SENSE_CHANNEL ADC_CHANNEL_1 // PA1
#define STALL_CURRENT 1.8f // 堵转电流阈值(A)
#define STALL_TIME_MS 50 // 持续判定时间(ms)
#define NOMINAL_DUTY 50 // 正常运行占空比(%)
ADC_HandleTypeDef hadc1;
TIM_HandleTypeDef htim3;
uint8_t stall_flag = 0;
float read_motor_current(void) {
HAL_ADC_Start(&hadc1);
if (HAL_ADC_PollForConversion(&hadc1, 10) == HAL_OK) {
uint32_t adc_val = HAL_ADC_GetValue(&hadc1);
// 采样电阻0.1Ω, ADC参考3.3V, 12位分辨率
// 电压 = adc_val * 3.3 / 4096, 电流 = 电压 / 0.1
return (float)adc_val * 3.3f / 4096.0f / 0.1f;
}
return 0.0f;
}
void stall_protection_task(void) {
static uint32_t stall_counter = 0;
float current = read_motor_current();
if (current > STALL_CURRENT) {
stall_counter++;
if (stall_counter >= STALL_TIME_MS) { // 1ms周期调用
// 堵转确认 - 切断PWM
__HAL_TIM_SET_COMPARE(&htim3, PWM_CHANNEL, 0);
stall_flag = 1;
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 故障LED
}
} else {
stall_counter = 0;
if (stall_flag == 0) {
// 正常运行 - 恢复设定占空比
__HAL_TIM_SET_COMPARE(&htim3, PWM_CHANNEL, NOMINAL_DUTY);
}
}
}
// 1ms定时器中断回调中调用 stall_protection_task()
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
if (htim == &htim3) {
stall_protection_task();
}
}
示波器观测与验证方法
按以下步骤进行实验验证:
- 将示波器CH1探头连接至采样电阻两端,设置垂直刻度200mV/div(对应2A/div),水平刻度100ms/div,触发电平设为500mA上升沿触发。
- 给电机空载启动,观察并记录正常启动电流波形,确认存在“尖峰后回落”特征。
- 用手或机械夹具阻止电机轴转动(模拟堵转),再次启动电机,观察电流波形是否持续维持在高位不回落。
- 验证保护动作:堵转后约50ms,PWM输出被切断,电流波形降至0,故障LED点亮。
判定标准:正常启动波形峰值约1.5~2A并在0.5s内回落至1A附近;堵转时电流上升至约2A并保持平坦;保护动作后电流在50ms内降为0。若示波器观察到上述三种状态,则诊断与保护逻辑验证通过。
关键参数与注意事项
采样电阻功率需满足P=I²R=2²×0.1=0.4W,选用1W以上封装。示波器探头地线应尽量短接至采样电阻地端,避免引入开关噪声。PWM频率设为20kHz,超出音频范围且利于电流连续。堵转阈值需根据实际电机参数调整,取额定电流的1.5~2倍较为合适,本案例电机额定1A,阈值设为1.8A。