主控平台:STM32F103RCT6 逆变拓扑:BUCK-BOOST 功能:高效率MPPT控制器;支持给200V电池充电;485通讯,在线升级; 描述:本方案适用于户用储能系统,提供完善的通讯协议适配BMS和上位机 本方案可实现高效率的MPPT控制,给高压电池组供电;提供过流、过压、短路、过温等全方位的保护

最近在研究户用储能系统相关的东西,今天就来和大家聊聊基于STM32F103RCT6主控平台打造的高效率MPPT控制器方案,这方案还能支持给200V电池充电,同时具备485通讯与在线升级功能,可太实用啦。

主控平台 STM32F103RCT6

STM32F103RCT6 作为主控平台,是很多工程师的心头好。它基于 ARM Cortex - M3 内核,具备丰富的外设资源,像定时器、ADC 等,这对于我们实现MPPT控制以及各种保护功能提供了硬件基础。比如在采集电池电压、电流等数据时,就可以利用它的ADC外设来精准获取。

// 简单初始化ADC代码示例
void ADC_Init(void)
{
    ADC_InitTypeDef ADC_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;

    // 使能ADC1和相关GPIO时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);

    // 配置PA1为模拟输入
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // ADC1复位
    ADC_DeInit(ADC1);

    // ADC1工作模式配置
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);

    // 使能ADC1
    ADC_Cmd(ADC1, ENABLE);
}

在这段代码里,我们先使能了ADC1和对应的GPIO时钟,然后将PA1配置为模拟输入,用于采集外部信号。接着对ADC1进行复位和模式配置,最后使能ADC1,这样就可以准备采集数据啦。

逆变拓扑 BUCK - BOOST

逆变拓扑采用的是BUCK - BOOST,这个拓扑结构的优势在于它能够灵活地实现升降压功能,对于给200V的高压电池组充电非常适用。在不同的输入电压情况下,它都能调整输出电压,确保电池可以高效充电。

功能亮点

高效率MPPT控制

MPPT(最大功率点跟踪)控制是这个方案的核心。通过不断检测光伏板的电压和电流,实时调整电路的工作状态,使得光伏板始终工作在最大功率点附近,提高能源利用率。

// 简单的MPPT算法代码示意
void MPPT_Control(void)
{
    static float last_power = 0;
    static float step = 0.1;
    float current_power;
    float voltage = get_adc_voltage(); // 获取采集的电压值
    float current = get_adc_current(); // 获取采集的电流值

    current_power = voltage * current;
    if (current_power > last_power)
    {
        // 功率增加,继续朝当前方向调整
        step = 0.1;
    }
    else
    {
        // 功率减小,反向调整
        step = -0.1;
    }
    adjust_duty_cycle(step); // 根据调整步长改变PWM占空比
    last_power = current_power;
}

在这段代码里,我们先获取当前光伏板的电压和电流值来计算功率。然后与上一次的功率值比较,如果功率增加,就继续按照当前方向以一定步长调整PWM占空比;如果功率减小,就反向调整。这样就能动态跟踪最大功率点。

支持200V电池充电

这个方案专门针对200V电池组做了优化,通过前面提到的逆变拓扑和精准的控制算法,确保电池充电过程的高效与安全。

485通讯与在线升级

485通讯功能方便了与BMS(电池管理系统)以及上位机进行数据交互。可以实时上传电池状态、MPPT工作情况等信息,也能接收上位机的控制指令。

// 简单的485发送数据代码示例
void RS485_SendData(uint8_t *data, uint16_t len)
{
    USART_InitTypeDef USART_InitStructure;

    // 使能USART1和相关GPIO时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);

    // 配置PA9为复用推挽输出(TX)
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    // 配置USART1
    USART_InitStructure.USART_BaudRate = 9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Tx;
    USART_Init(USART1, &USART_InitStructure);

    // 使能USART1
    USART_Cmd(USART1, ENABLE);

    for (uint16_t i = 0; i < len; i++)
    {
        while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
        USART_SendData(USART1, data[i]);
    }
}

在这段代码里,我们先使能相关时钟,配置GPIO用于串口通信,接着设置USART1的波特率、数据位等参数,最后通过循环发送数据。

主控平台:STM32F103RCT6 逆变拓扑:BUCK-BOOST 功能:高效率MPPT控制器;支持给200V电池充电;485通讯,在线升级; 描述:本方案适用于户用储能系统,提供完善的通讯协议适配BMS和上位机 本方案可实现高效率的MPPT控制,给高压电池组供电;提供过流、过压、短路、过温等全方位的保护

在线升级功能更是方便了后期维护与功能更新,不用再把设备拆下来进行烧录,直接通过485通讯就可以更新程序,大大提高了维护效率。

全方位保护

本方案还提供了过流、过压、短路、过温等全方位的保护。比如过流保护,当检测到电流超过设定阈值时,就立即采取措施切断电路或者调整输出,防止设备损坏。

// 过流保护代码示意
void OverCurrent_Protection(void)
{
    float current = get_adc_current();
    if (current > OVER_CURRENT_THRESHOLD)
    {
        // 切断输出或者调整PWM占空比限制电流
        disable_output();
        // 或者 adjust_duty_cycle(-0.5);
    }
}

这段代码就是简单地获取当前电流值,与设定的过流阈值比较,如果超过阈值就执行相应的保护动作。

总之,这个基于STM32F103RCT6的户用储能MPPT控制器方案,功能全面,对于户用储能系统的开发有着很好的参考价值,希望能给大家带来一些启发。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐