基于STM32的数控DC-DC供电系统设计

目录
  1. 引言
  2. 系统设计
    • 硬件设计
    • 软件设计
  3. 系统功能模块
    • DC-DC变换器模块
    • 控制模块
    • 显示模块
    • 用户输入模块
  4. 控制算法
    • 数控调节算法
    • 反馈控制算法
  5. 代码实现
    • 控制信号生成
    • 输出电压调节
  6. 系统调试与优化
  7. 结论与展望

1. 引言

随着电子设备对供电精度和稳定性的要求日益提高,数控DC-DC变换器成为了重要的电源管理方案。数控DC-DC供电系统可以通过数字信号精确调节输出电压或电流,从而满足不同应用的需求。基于STM32的数控DC-DC供电系统不仅可以实现高效的电源转换,还能通过数字控制提高系统的智能化和可调性。


2. 系统设计

硬件设计

本系统的主要硬件模块包括:

  • 主控芯片:STM32F103系列单片机,作为系统的核心,负责处理控制信号、反馈信号以及系统通信。
  • DC-DC变换器模块:采用常见的降压型DC-DC变换器(如LM2596、TPS54060等),负责将输入电压转换为所需的稳定输出电压。
  • 数字控制接口:使用PWM信号控制DC-DC变换器的占空比,从而调节输出电压。
  • 反馈模块:利用反馈电压或电流信号,实时监测输出电压或电流,并将反馈信号输入STM32进行调整。
  • 显示模块:通过LCD或OLED显示模块显示当前的输出电压和电流值。
  • 用户输入模块:通过旋转编码器、按键或触摸屏输入用户的设置要求。
软件设计

软件设计主要包括以下几个部分:

  • 控制信号生成:根据用户输入或预设条件,生成PWM信号控制DC-DC变换器,调节输出电压或电流。
  • 反馈控制算法:通过采样反馈信号,调整控制信号以稳定输出电压或电流。
  • 用户接口:提供用户界面,允许用户调节输出电压、电流或开关系统。
  • 显示控制:在显示模块上实时更新当前输出电压和电流,方便用户监控系统状态。

3. 系统功能模块

3.1 DC-DC变换器模块

DC-DC变换器模块负责将输入的直流电压转换为所需的输出电压。根据用户输入的电压需求,STM32通过PWM信号调节变换器的占空比,从而控制输出电压。

常见的DC-DC变换器控制方式:

  • 降压型(Buck)变换器:用于将较高的输入电压转换为较低的输出电压。
  • 升压型(Boost)变换器:用于将较低的输入电压转换为较高的输出电压。
3.2 控制模块

控制模块是系统的核心部分,负责根据反馈信号和用户输入,生成相应的控制信号。STM32通过内部定时器生成PWM信号,并根据反馈电压或电流进行调整,以确保输出稳定。

3.3 显示模块

通过LCD或OLED显示模块,用户可以实时查看输出电压和电流值。这有助于用户更好地监控系统状态,及时调整参数。

3.4 用户输入模块

用户输入模块允许用户调节输出电压或电流值。可以通过旋转编码器、按钮、触摸屏等方式进行输入,STM32会读取这些输入并相应地调整输出。


4. 控制算法

4.1 数控调节算法

数控调节算法的目标是根据用户输入或系统要求,调整DC-DC变换器的输出电压或电流。具体方法为:

  1. 读取用户输入:通过编码器或按钮获取用户希望的输出电压值。
  2. PWM生成:通过调整PWM信号的占空比(Duty Cycle),控制DC-DC变换器的输出电压。
  3. 精细调节:当输出电压接近目标值时,进一步调整PWM信号以实现精确控制。
4.2 反馈控制算法

为了保持输出电压的稳定性,系统需要实时监测输出电压并进行反馈控制:

  1. 采样反馈信号:通过ADC模块采样输出电压,并与目标电压进行比较。
  2. 误差计算:计算当前输出电压与目标电压之间的误差。
  3. 调整PWM:根据误差值调整PWM信号的占空比,使输出电压趋向目标值。

常见的反馈控制算法有PID控制,通过计算比例、积分和微分项,优化调节过程。


5. 代码实现

5.1 控制信号生成
#include "stm32f1xx_hal.h"

TIM_HandleTypeDef htim2;  // 定时器配置,用于产生PWM信号

void PWM_Init() {
    // 配置定时器用于PWM输出
    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);  // 启动PWM
}

void setPWM_DutyCycle(uint16_t duty) {
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, duty);  // 设置PWM占空比
}

5.2 输出电压调节

#include "stm32f1xx_hal.h"

ADC_HandleTypeDef hadc1;  // ADC配置,用于读取反馈电压

float readVoltage() {
    HAL_ADC_Start(&hadc1);  // 启动ADC
    HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);  // 等待转换完成
    uint16_t adc_value = HAL_ADC_GetValue(&hadc1);  // 获取ADC值
    // 将ADC值转换为电压值
    float voltage = (adc_value / 4095.0) * 3.3;  // 假设参考电压为3.3V
    return voltage;
}

void controlVoltage(float target_voltage) {
    float current_voltage = readVoltage();
    float error = target_voltage - current_voltage;
    
    // 根据误差调整PWM占空比
    uint16_t pwm_duty = (uint16_t)(error * 1000);  // 简化的比例控制
    setPWM_DutyCycle(pwm_duty);
}

⬇帮大家整理了单片机的资料

包括stm32的项目合集【源码+开发文档】

点击下方蓝字即可领取,感谢支持!⬇

点击领取更多嵌入式详细资料

问题讨论,stm32的资料领取可以私信!

 

6. 系统调试与优化

调试过程主要包括以下几个方面:

  • DC-DC变换器调试:确保DC-DC变换器能够根据PWM信号调节输出电压。
  • 反馈控制调试:确保通过反馈算法,系统能够快速、精确地调整输出电压,减少稳态误差。
  • 用户接口调试:验证用户输入模块的功能是否正常,确保用户能够通过旋转编码器或按钮调节输出电压。

7. 结论与展望

基于STM32的数控DC-DC供电系统通过数字信号精确控制DC-DC变换器的输出电压或电流,为各种电源管理应用提供了一种高效且可调的解决方案。系统设计具有较高的智能化和灵活性,可以适应不同应用的需求。未来,系统可以进一步集成更多的功能,如电流保护、过压保护等,提升系统的安全性和可靠性。

本设计是数字控制DCDC转换器,使用MCU控制DCDC转换器的输出电压,以达到数控的目的,综合时间和成本来考虑,使用的都是成品的模块来做验证,这种设计思路具有简单可靠和成本低灵活性高的优点. 要实现的功能是,按键控制DCDC模块输出电压的高低,数字显示电压值和电流值. 使用模块如下: 主控MCU:GD32E231start开发板. DCDC模块:XL6009升降压模块. 电流测量:MAX471电流测量模块. 按键:TTP224电容触摸按键模块. 显示:TM1638数码管模块. 因为本设计验证阶段采用的都是模块,修改电路极少,因此在设计和验证阶段没有制作PCB板.电路图暂无.后续需要提高性能和精度,再根据需要制作PCB. 1) 主控MCU:选用GD32E231,国产新品,具有较高的主频,低功耗的m23内核,丰富的外设和资源,简洁易用的开发软件.性价比非常高.本设计中使用MCU的timer2的CH2通道PWM功能,在PB0引脚上产生PWM波,经过电阻电容滤波后,加载至DCDC模块上XL6009的FB端,以改变FB电压,XL6009则调节DCDC,改变输出电压从而使FB端重新稳定于FB电位,这样就达到了数控调节输出电压的目的.因为绝大部分DCDC芯片都是通过FB来调节输出的,所以此方法可以配合广泛的DCDC芯片.不过由于PWM经RC滤波后不干净,所以对DCDC输出稳定性不利. 2)DCDC:选用XL6009成品模块,组成sepic电路,具有升压降压能力,宽广的输入和输出范围,输入5~20V,输出到3~21V,因为是sepic模式,所以不用考虑输入输出是升压还是降压,其性能效率并不算很好,但是成本很低,结构简单,作为本设计验证用很合适. 3) 测量:电压测量只要使用分压电阻,进入MCU的ADC采样即可.电流测量则分高侧和低侧测量.低侧需要分割地线,而且需要调试运放,其实更适合GD32E231,因为其有内置运放,但问题是与SWD调试口共用引脚,所以暂时没敢这样用.手头有常见的MAX471电流测量模块,这是高侧放大器,适用电压宽广,内置采样电阻,性能有保障. 4) 显示:出于简单和低成本考虑,使用TM1638数码管模块,应用起来简单方便,八个数码管前四位显示电压值,后四位显示电流值,电压值取小数点后两位,电流值取小数点后三位.3.3V电压也能很好的驱动. 5)按键:没有使用TM1638模块自带的普通按键,要不然也算是成本优化.选用的是TTP224触摸按键模块,使用非常简单,成本也很低.
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值