国产呦萝小初合集密码

资讯中心

联系我们

国产呦萝小初合集密码·(中国)官方网站
地址:深圳市福田区红荔路第一世界广场A座8D-E
咨询电话:0755-83766766
E-mail:info@qihuisz.com

如何通过软件设置实现双向直流电源的过载保护?

2025-12-23 09:55:29  点击:

在双向直流电源中,通过软件实现过载保护需结合电流采样、实时计算、分级保护策略和抗干扰设计,确保在输出电流超过安全范围时及时响应,同时避免误动作。以下是具体实现步骤及关键技术要点:

一、硬件基础:电流采样与信号调理

1. 电流采样方式选择

  • 霍尔传感器(推荐):
    • 优势:隔离测量、精度高(±1%)、响应快(<1μs)、支持双向电流检测(如ACS712/ACS770系列)。
    • 输出信号:模拟电压(如0-5V对应-50A~+50A)或数字信号(如SPI/I²C接口)。
    • 应用场景:高精度、大电流(如100A以上)或需要电气隔离的场景。
  • 采样电阻+运放电路
    • 优势:成本低、体积小。
    • 限制:需考虑功率损耗(如1mΩ电阻在100A时损耗为10W),且需隔离运放(如ISO124)实现电气隔离。
    • 应用场景:小电流(如<10A)或对成本敏感的场景。

2. 信号调理与传输

  • 模拟信号处理(霍尔传感器或采样电阻+运放):
    • 滤波:在传感器输出端添加RC低通滤波器(如R=1kΩ,C=0.1μF),截止频率约1.6kHz,抑制高频噪声。
    • 隔离:若传感器非隔离型,需通过光耦或隔离运放(如AMC1200)将信号传输至MCU侧,防止高压侧干扰。
  • 数字信号处理(数字霍尔传感器):
    • 通信协议:根据传感器支持选择SPI(高速)、I²C(中速)或单总线(低速)。
    • CRC校验:在通信协议中添加CRC校验,确保数据传输可靠性。

二、软件实现:电流采样与处理

**1. 电流采样初始化

  • 模拟信号采样(ADC配置)

    										c// 示例:STM32 HAL库配置ADC采样霍尔传感器电压ADC_HandleTypeDef hadc1;void ADC_Init() {    hadc1.Instance = ADC1;    hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;    hadc1.Init.Resolution = ADC_RESOLUTION_12B; // 12位分辨率    hadc1.Init.ScanConvMode = DISABLE;    hadc1.Init.ContinuousConvMode = ENABLE; // 连续采样    HAL_ADC_Init(&hadc1);        // 配置ADC通道(假设霍尔传感器输出接ADC1_CH0)    ADC_ChannelConfTypeDef sConfig = {0};    sConfig.Channel = ADC_CHANNEL_0;    sConfig.Rank = 1;    sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;    HAL_ADC_ConfigChannel(&hadc1, &sConfig);}
  • 数字信号通信(如SPI读取数字霍尔传感器)

    										c// 示例:SPI初始化(以STM32 HAL库为例)SPI_HandleTypeDef hspi1;void SPI_Init() {    hspi1.Instance = SPI1;    hspi1.Init.Mode = SPI_MODE_MASTER;    hspi1.Init.Direction = SPI_DIRECTION_2LINES;    hspi1.Init.DataSize = SPI_DATASIZE_16BIT; // 假设传感器输出16位数据    hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;    hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;    hspi1.Init.NSS = SPI_NSS_SOFT;    hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;    hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;    HAL_SPI_Init(&hspi1);}// 读取霍尔传感器数据int16_t Read_Hall_Sensor() {    uint8_t tx_buf[2] = {0x00, 0x00}; // 命令字节(根据传感器手册)    uint8_t rx_buf[2] = {0};    HAL_SPI_TransmitReceive(&hspi1, tx_buf, rx_buf, 2, HAL_MAX_DELAY);    return (int16_t)((rx_buf[0] <<8) | rx_buf[1]); // 组合为16位有符号数}

**2. 电流数据滤波与校准

  • 移动平均滤波(抑制随机噪声):

    										c#define CURRENT_WINDOW_SIZE 8float current_buffer[CURRENT_WINDOW_SIZE];uint8_t current_index = 0;float Filtered_Current() {    float sum = 0;    for (int i = 0; i 
    										
    									
  • 校准与线性化

    • 模拟信号校准:通过查表法或线性回归修正传感器非线性(如霍尔传感器在低温/高温下的偏差)。
    • 数字信号校准:读取传感器寄存器中的校准值(如零点偏移、灵敏度),或通过软件补偿环境误差。
    										c// 模拟信号校准示例(假设霍尔传感器输出0-5V对应-50A~+50A)float Voltage_To_Current(uint32_t adc_value) {    float voltage = (adc_value / 4095.0) * 3.3; // 假设ADC参考电压3.3V    // 线性转换(需根据实际传感器参数调整)    float current = (voltage - 1.65) / 0.033; // 1.65V对应0A,0.033V/A    return current;}

**三、过载保护策略设计

**1. 分级保护阈值

保护级别 电流阈值 持续时间 响应动作 恢复条件
预警 1.1×In(如11A,In=10A) 10s 降低输出功率(如限流至80%) 电流降至1.0×In以下
保护 1.2×In(如12A) 5s 关断输出,触发报警(如LED/蜂鸣器) 电流降至0.9×In以下
紧急保护 1.5×In(如15A) 1s 强制关断并锁定,需手动复位 电流降至0.5×In以下

**2. 软件实现逻辑

								c#define CURRENT_WARNING_THRESHOLD 11.0  // 预警阈值(A)#define CURRENT_PROTECT_THRESHOLD 12.0   // 保护阈值(A)#define CURRENT_EMERGENCY_THRESHOLD 15.0 // 紧急保护阈值(A)#define WARNING_TIME_MS 10000           // 预警持续时间(ms)#define PROTECT_TIME_MS 5000            // 保护持续时间(ms)#define EMERGENCY_TIME_MS 1000          // 紧急保护持续时间(ms)typedef enum {    CURRENT_STATE_NORMAL,    CURRENT_STATE_WARNING,    CURRENT_STATE_PROTECT,    CURRENT_STATE_EMERGENCY} CurrentState_t;CurrentState_t current_state = CURRENT_STATE_NORMAL;uint32_t warning_timer = 0, protect_timer = 0, emergency_timer = 0;void Check_Current(float filtered_current) {    switch (current_state) {        case CURRENT_STATE_NORMAL:            if (filtered_current >= CURRENT_WARNING_THRESHOLD) {                current_state = CURRENT_STATE_WARNING;                warning_timer = HAL_GetTick(); // 记录开始时间                Limit_Output_Power(80);      // 限流80%            }            break;        case CURRENT_STATE_WARNING:            if (filtered_current >= CURRENT_PROTECT_THRESHOLD) {                current_state = CURRENT_STATE_PROTECT;                protect_timer = HAL_GetTick();                Shutdown_Output();            // 关断输出                Trigger_Alarm();              // 触发报警            } else if ((HAL_GetTick() - warning_timer) > WARNING_TIME_MS) {                current_state = CURRENT_STATE_NORMAL;                Remove_Power_Limit();          // 恢复功率            } else if (filtered_current <(CURRENT_WARNING_THRESHOLD * 0.9)) {                current_state = CURRENT_STATE_NORMAL;                Remove_Power_Limit();            }            break;        case CURRENT_STATE_PROTECT:            if (filtered_current >= CURRENT_EMERGENCY_THRESHOLD) {                current_state = CURRENT_STATE_EMERGENCY;                emergency_timer = HAL_GetTick();                Lock_System();                // 锁定系统,需手动复位            } else if ((HAL_GetTick() - protect_timer) > PROTECT_TIME_MS) {                current_state = CURRENT_STATE_NORMAL;                // 需手动确认后恢复输出(避免反复触发)            } else if (filtered_current <(CURRENT_PROTECT_THRESHOLD * 0.8)) {                current_state = CURRENT_STATE_NORMAL;                // 需手动确认后恢复输出            }            break;        case CURRENT_STATE_EMERGENCY:            // 仅在电流降至安全值且手动复位后退出            if (filtered_current <(CURRENT_EMERGENCY_THRESHOLD * 0.3) && Manual_Reset_Pressed()) {                current_state = CURRENT_STATE_NORMAL;                Unlock_System();            }            break;    }}

**四、抗干扰与容错设计

**1. 采样故障检测

  • 开路检测:若数字传感器无响应或模拟传感器ADC值超出合理范围(如接近0或4095),报错并切换至备用采样通道(如有)。
  • 一致性校验:若双向电流采样值差异超过阈值(如ΔI>5%),报错并取绝对值较大者或安全侧值(如正向电流)。

**2. 软件看门狗

  • 监控电流采样任务执行周期,若超时(如>100ms)则复位系统,防止软件死锁导致保护失效。

**3. 硬件看门狗

  • 独立于MCU的硬件看门狗(如MAX6745),在软件崩溃时强制关断功率器件,确保安全。

**五、实际应用案例:双向DC-DC转换器

**1. 场景需求

  • 转换器额定电流10A,双向模式(升压/降压),需在过载时分级保护:
    • 预警:11A(10s)→限流至8A。
    • 保护:12A(5s)→关断输出。
    • 紧急保护:15A(1s)→锁定系统。

**2. 软件优化

  • 动态阈值调整:根据输入电压动态调整保护阈值(如输入电压降低时,降低电流阈值以防止功率器件过载)。
  • 与BMS通信:通过CAN总线获取电池状态(如SOC、温度),若电池异常,协同降低输出电流或关断。
  • 日志记录:记录过载事件时间、电流值及保护动作,便于故障分析。

**六、常见问题与解决方案

问题 原因 解决方案
电流跳变触发误保护 采样噪声或滤波不足 增加滤波窗口大小(如从N=8增至N=16),或改用中值滤波。
保护后无法恢复 迟滞量设置不当或恢复条件严格 调整迟滞量(如从10%增至20%),或增加手动恢复按钮。
多采样通道数据不一致 传感器布局不合理或故障 优化传感器布局(如靠近功率器件),增加故障检测逻辑(如一致性校验)。
动态负载下保护延迟 采样周期过长或滤波响应慢 缩短采样周期(如从10ms减至5ms),或改用快速滤波算法(如卡尔曼滤波)。


m wap