项目实现功能
由TFT LCD液晶屏幕显示的升压斩波直流电源转换器BOOST DC-DC电源电路,并完成了锂电池充放电电路的设计和仿真分析。先来看看项目效果演示:
,时长02:49项目实现的功能:
1. 全数字方案;
2. 电路输入15~26V,输出15~35V,最大电流5A;
3. 单片机PWM控制BOOST电路输出;
4. PID算法构成反馈环;
5. 状态机控制系统的输出模式;
6. RTOS协调整个系统的不同任务;
7.按键交互设置输出模式及参数。
硬件框架及设计
先来看看系统的硬件框图,如下:
整个系统分为四个部分进行设计:
1)在BOOST电路的功率计设计方面,采用了集成度更高,更加小体积的电感,电容和开启内阻极小的功率增强型金属氧化物场效应管MOSFET。2)在BOOST电路的控制系统方面,采用了小封装体积的STM32单片机微处理器作为中心处理器件,并采用了霍尔传感器作为反馈单元。3)在显示屏的设计方面,采用了2.2寸的TFT LCD的RGB全彩屏幕进行显示,并采用SPI通信协议进行控制和写入。4)在人机交互方面,采用了5个功能分明的按键,保证了系统的易用性,同时也没有对系统的交互性进行损失。
最终我们得到了一个电路上效率较高,显示性能和交互性也较强的BOOST DC-DC电源转换电路。
✓ BOOST功率级设计BOOST电路是一种升压型DC-DC电源变换器,通过PWM信号控制电子开关,促使电感电容不断传递能量从而实现输出升压,它的基本拓扑结构如下
通过脉宽调制信号PWM对三极管的基极进行控制,使三极管快速的通断。
在三极管导通时,相当于输入电压直接加在电感两侧,电感电流呈线性增加,储存能量,同时二极管反向偏置,防止电容电压放电;当三极管断开时,由于电感的电流不会突变,则电感的电流会流经二极管到电容及负载上,此时储存在电感内的能量被释放,使得电容两端电压高于输入电压,以此实现升压的过程。更改脉宽调制信号PWM的占空比,就改变了电感储存能量的时间长短,时间越长,电感的能量就越多,从而关断期间释放的能量也就越大,输出电压也就越大。
通过对原理的研究,我们可以得到下面两个公式
根据工作条件:输入电压17V,输出电压26V,工作频率114KHz,负载50Ω,最大允许纹波50mV。计算电感及电容参数:
L1=32.45uH,取L1=33uH
C》31.57uF,取C=50uF
在实际情况中,电路的负载变化时,如果保持PWM占空比不变,则输出电压会有所变化。为了保持输出电压稳定,我们需要反馈调节机制:PID算法,反映了控制器输出量和误差之间的闭环关系。
将计算好的L1和C参数代入SIMULINK仿真,并设置PID反馈环:设置KP=10,KI=1,KD=0
运行仿真,可以得到较为稳定的电源输出:
为了实现电路的反馈,需要电压电流采样。电压采样使用分压电阻,电流采样使用霍尔传感器ACS712。
由于单片机PWM输出的驱动能力有限,故要想控制BOOST电路,需要MOSFET驱动器的辅助,这里使用UCC27511。
系统中其他器件的选型为:
MCU采用STM32F103C8T6;
MOSFET驱动器采用UCC27511;
TFT-LCD采用1.44寸彩屏;
霍尔电流计采用ACS712-20A;
辅助电源采用K7812-2000;
MOSFET采用CSD18540KTT;
电感采用HSC1770封装的功率电感;
肖特基二极管采用CLS03;
输入输出电容采用2220封装的钽电容;
✓ 单片机控制级设计
单片机控制级负责PWM信号输出,电压电流采样以及屏幕控制,需要在单片机最小系统的基础上引出PWM输出,ADC采样和SPI通信引脚。
✓ 按键交互设计
五个按键功能分别为:
MENU:停止输出,模式选择
UP:选择恒压模式,增加设定值
DOWN:选择恒流模式,减少设定值
OK:确认该位设定值,切换下一位
START:开启电源输出按键采用下降沿触发方式输入单片机,使用电容进行硬件滤波,减小误触概率。
系统软件设计
本系统的软件基本架构如下图:
然后在STM32CubeMX内,对该框架进行一个使能和初始化。外设设置说明:ADC双路采样使用DMA循环模式;5个按键采用下降沿触发;SPI通信协议由于使用GPIO软件模拟,故设置成推挽输出即可;PWM输出采用高级定时器PWM模式;使用ST LINK V2对代码进行烧录;
高速时钟源采用外部8MHz晶体振荡器,并将APB1总线倍频到64MHz。
✓ TFT屏幕通信设计
TFT LCD屏幕的底层我们采用GPIO软件模拟SPI通信协议,单向只输出;
从最高位开始,依次移位对要发送的8位数据和指令进行发送。
引脚定义:
PB10:数据/命令切换信号
PB13:时钟信号
PB15:串行数据发送
✓ RTOS任务设计
本设计由三个RTOS任务构成,分别是:
void State_change_function(void const * argument);//状态切换任务void tft_show_function(void const * argument);//屏幕内容刷新任务void drive_sample_function(void const * argument);//PWM输出及采样反馈PID运算任务
其中:
状态切换只有在按键按下之后才会触发;
屏幕内容刷新只有在内容需要更改的时候才会触发,防止系统资源过度占用,并且在实时显示输出量时更新频率为20Hz;
PID运算只有在start之后才会开始进行。
✓ 状态机设计
假设要操控某一系统,通过按键设定功能,这时我们可以采用有限状态模型,系统拥有有限的一些状态,而我们只需指定有限的状态切换条件即可,这就是状态机。
通过上述关系图的分析,我们可以将有限状态模型应用到本设计的功能设定和运作当中,使得系统运行逻辑性更强,效率更高。
所有代码都严格写在了USER CODE范围内,可以直接用cube更改外设。
全部0条评论
快来发表一下你的评论吧 !