目录
- 摘要
- 1、前言
-
- 1.1DSP的发展现状
- 2.设计目的和要求
-
- 2.1 总体介绍
- 2.2 主要目的
- 3.原理和实验
-
- 3.1 原理
-
- 3.1.1 超电容保护电路
- 3.1.2 LC谐振倍压整流电路
- 3.1.3 电流测量电路
- 3.1.4 PWM控制电路和测压电路
- 3.1.5 PID算法
- 4、DSP硬件实验
-
- 4.1 硬件(DSP开发板或ARM等部分)介绍
-
- 4.1.1 主控器STM32C8T6
- 4.1.2 信号发射电路
- 4.1.3 无线接收电路板
- 4.2 关键程序代码
-
- 4.2.1 传统PID算法代码
- 4.2.2.提高积分系数(理解不深,可能出错)
- 4.3 实验结果
-
- 4.3.1 固定占空比与PID算法的对比
- 4.3.2 PID算法改进前后对比
- 5、总结
-
- 5.1 如何解决实验中遇到的问题?
- 附录
摘要
超级电容作为一种新型的电化学元件,与电池相比,具有寿命长、充电速度快、功率密度高的特点,也是一种绿色能源。本文采用恒功率无线充电的方式对超级电容器进行充电,同时进行比较PID恒功率充电和固定PWM充电方式的充电速度。无线充电系统包括硬件部分和软件部分,硬件部分给出了无线电接收板的硬件设计和主控板的硬件设计;给出了软件部分PID设计控制算法。本文对PID测量和分析控制下的无线充电功率,并通过改进增量式中的积分参数来抑制功率达到目标功率时的过度调量。
关键词: 无线充电,恒功率,超级电容,PID。
1、前言
1.1DSP的发展现状
现阶段,DSP芯片已向专业化、多元化方向发展,各厂商的市场划分越来越细,差异也越来越大。另外,简单DSP芯片很少见,更多的是DSP芯片与其他处理核心集成,形成集成度高、针对性强的芯片SOC,它不仅大大降低了板级空间,而且带来了功耗、成本和开发周期的综合优势,促进了行业的发展和产品性能的提高。 DSP其优点是算法集成灵活,能为产品提供强大的性能和灵活的定制,同一产品根据不同的客户需求实现不同的解决方案。为了提高产品的竞争力,制造商将在算法上做足够的文章,算法变得越来越复杂,但算法的稳定性、产品功耗、开发周期将成为难以控制的风险。DSP算法不是堆积了很多理论公式,而是与所使用的DSP精致的软件与芯片的具体特性紧密结合。 DSP目前,技术产品正在向家庭个性化、高度集成、高性能、运行速度快、功耗低、简单多样、便携等特点发展。主要体现在以下三个方面: ①集成DSP方向发展DSP系统级集成电路有几个DSP核、MPU芯片上集成了核、专用处理单元、外围电路单元和存储单元。这种高度集成的技术是减少芯片的体积DSP技术发展的方向之一。 ②DSP进一步完善内核结构DSP进一步完善了多通道结构和单指令多数据等核心结构。多通道结构、单指令多数据(SIMD)和特大指令字组(VLIM)主导新型高性能处理器。 ③DSP融合化把DSP结合微处理器,采用单芯片处理器实现智能控制和数字信号处理;DSP和高档CPU采用高档融合CPU分支预示和动态缓冲技术,结构规范,编程方便,无需担心排队指令;DSP和SOC融合,把整个应用电子系统集成到一个芯片上;DSP和FPGA的融合,整合核心算法的处理优势和外围控制处理优势,处理速度大大提高。 DSP虽然已接近过时,但仍有应用,请参考中研普华2021-2026年中国DSP芯片行业市场前景及未来投资战略分析报告。
2.设计目的和要求
2.1 总体介绍
本设计主要构建无线充电系统的接收端,主要包括硬件和软件。需要建立硬件LC谐振倍压整流电路,PWM控制电路、电压检测电路、电流检测电路、超级电容保护电路STM32C8T6主控板的设计。需要实现软件PID算法。接收线圈通过谐振接收到的信号为正弦信号,正弦信号在双压整流后变为直流信号,然后通过半桥控制电路实现PWM信号的相乘可以通过PWM该电压作为超级电容的充电电压,实现了对电压大小的调节。最后,通过电流检测芯片检测充电电流,将电压和电流乘以测量的充电功率。将目标功率和测量功率降低为误差量PID输入系统,输出为PWM最终实现超级电容的恒功率充电[4]。
2.2 主要目的
恒功率无线充电超级电容器,充电功率为10W。
3.原理和实验
3.1 原理
3.1.1 超电容保护电路

采用BW图3.1中CAP_VCC超级电容的充电电压为100F当第一个超级电容器(5个串联)C5充满电时,BW6101的OUT引脚由低电平变为高电平MOS管Q导通,电流经R1、R流向第二超级电容C7.这样就实现了充电后的超级电容,只有向下一个超级电容器充电,才能保护超级电容器。同时用LED当超级电容充满电时,指示超级电容是否已满,BW6101的LED引脚变为高电平。
3.1.2 LC谐振倍压整流电路
接收线圈接收的信号为正弦波,信号振幅为 U m U_{m} Um。当信号为负半周时,即A为负,B为正时,D2导通、D1截,信号经D2向三个谐振电容C1、C2、C3充电,在理想情况下,此半周内D2可看成短路,同时三个谐振电容充电到,其电流走向如上图3.3所示。当信号为正半周时,即A为正、B为负时,D2截止、D1导通,此时信号和C1、C2、C3串联后电压为 2 U m 2U_{m} 2Um,于是向C36充电,使C36充电至最高值 2 U m 2U_{m} 2Um,从而实现倍压,其电流路走向如上图3.4所示。
3.1.3 电流测量电路
采用INA282进行电流的测量[1],INA282实际上是一个压差放大芯片,放大的是采样电阻R两端的电压差,即。VS引脚为芯片的供电电源,OUT引脚为放大后电压的输出引脚。VREF1、VREF2为芯片工作方式选择引脚,有如下所示两种工作方式:
①VREF1、VREF2同时接地或同时接VS,电流公式为 I = U o u t 50 R {I=\frac {U_{out}}{50R}} I=50RUout。
②VREF1、VREF2一端接地一端接VS,电流公式为 I = U o u t − 1 2 V S 50 R {I=\frac {U_{out}-\frac {1}{2}VS}{50R}} I=50RUout−21VS。 本设计中采用了第二种方式。
3.1.4 PWM控制电路及测压电路
采用74HC08与门进行信号的隔离,采用IR2104S结合半桥的方式进行PWM的控制。当单片机输入PWM信号时,在H0和L0分别输出反相的PWM信号。H0为正时,N1导通,N2截至,输出DOUBLE_VCC;H0为0时,L0为正,N1截至,N2导通,输出0,因此A处波形与输入的PWM信号相同,幅度变为DOUBLE_VCC(倍压整流之后的电压)。CAP_VCC为超级电容的充电电压,设通过采集ADC1引脚的电压为 U 1 {U_{1}} U1,则 C A P _ V C C = 11 ∗ U 1 {CAP\_VCC=11*U_{1}} CAP_VCC=11∗U1。
3.1.5 PID算法
本设计中采用PID算法进行恒功率充电,PID系统的输入量为期望功率与测量功率之差,输出为PWM的占空比变化量。PID算法有两种方式,即位置式PID和增量式PID,这两种方式的本质是一样的。 ①位置式 在位置式中,PID的输出即为输入的更新值。 u ( k ) = K p e r r o r ( k ) + K i ∑ k = 1 n e r r o r ( k ) + K d [ e r r o r ( k ) − e r r o r ( k − 1 ) ] u(k)=K_perror(k)+K_i\sum_{k=1}^{n}error(k)+K_d[error(k)-error(k-1)] u(k)=Kperror(k)+Kik=1∑nerror(k)+Kd[error(k)−error(k−1)] ②增量式 将位置式的两个时刻相减便得到了增量式PID,在增量式中,PID的输出即为输入的变化值。 Δ u ( k ) = u ( k ) − u ( k − 1 ) = { K p e r r o r ( k ) + K i ∑ k = 1 n e r r o r ( k ) + K d [ e r r o r ( k ) − e r r o r ( k − 1 ) ] } − { K p e r r o r ( k − 1 ) + K i ∑ k = 1 n e r r o r ( k − 1 ) + K d [ e r r o r ( k − 1 ) − e r r o r ( k − 2 ) ] } = K p [ e r r o r ( k ) − e r r o r ( k − 1 ) ] + K i e r r o r ( k ) + K d [ e r r o r ( k ) − 2 e r r o r ( k − 1 ) + e r r o r ( k − 2 ) ] \Delta{u(k)}=u(k)-u(k-1)\\ = \{K_perror(k)+K_i\sum_{k=1}^{n}error(k)+K_d[error(k)-error(k-1)]\}-\{K_perror(k-1)+K_i\sum_{k=1}^{n}error(k-1)+K_d[error(k-1)-error(k-2)]\}\\ =K_p[error(k)-error(k-1)]+K_ierror(k)+K_d[error(k)-2error(k-1)+error(k-2)] Δu(k)=u(k)−u(k−1)={ Kperror(k)+Kik=1∑nerror(k)+Kd[error(k)−error(k−1)]}−{ Kperror(k−1)+Kik=1∑nerror(k−1)+Kd[error(k−1)−error(k−2)]}=Kp[error(k)−error(k−1)]+Kierror(k)+Kd[error(k)−2error(k−1)+error(k−2)] 本设计中需要对PWM的占空比进行增加或减少,因此采用增量式PID更为方便。PID控制的流程图如图3.9所示。
对于超级电容的充电,超级电容的电压总是从0或接近于0的值开始往上增加,无论开始的电流多大,初始功率接近0,而控制量是PWM的占空比,所以在开始充电的瞬间,PID算法将会把PWM的占空比拉到100%,此时超级电容的功率还没有达到期望值,因此PWM占空比会维持在100%一段时间。达到期望功率之后,希望PWM的占空比马上下降,因此要求i系数非常大,但非常大的i系数会导致功率达到稳定值后发生振荡,因此对i系数进行分离,在未达到期望功率之前, K i K_i Ki的值非常大,达到期望功率之后, K i K_i Ki的值变小,这样既可以削去达到期望值时的尖峰,又有利于达到期望值时系统的稳定。
4、DSP硬件实验
4.1 硬件(DSP开发板或ARM等部分)介绍
4.1.1 主控器STM32C8T6
STM32的主控频率为72MHZ,本设计中系统配置的时钟树如图4.1所示。
本设计中使用到的芯片外设有:ADC1(用于测电压和电流,频率12MHZ)、TIM3(用于产生PWM信号,PWM的频率设为10KHZ,其中Counter Period=100,方便占空比百分制控制)、TIM2(用于50ms定时器)、IIC1(用于oled显示)、UART1(用于将数据回传到电脑进行绘图)。
4.1.2 信号发射电路
信号发射电路采用现成的发射电路,如图4.2所示。发射的正弦波频率为150KHZ,发射功率高达60W左右。信号发射器包括发射控制器、主控电路、发射线圈、供电电源。
4.1.3 无线接收电路板
无线充电接收板包括超级电容保护电路、LC谐振倍压整流电路、PWM控制电路、电压测量电路、电流测量电路、电源管理电路。
4.2 关键程序代码
4.2.1 传统PID算法代码
①PID结构体定义
typedef struct PID_Add
{
float pGain;
float iGain;
float dGain;
float err;
float last_err;
float prev_err;
float pidout;
}PID2;
②增量式PID输出函数定义
void Add_pid_update(PID2* pid)
{
float ep,ei,ed;
ep = pid->err - pid->last_err;
ei = pid->err;
ed = pid->err - 2*pid->last_err + pid->prev_err;
pid->pidout = pid->pGain * ep + pid->iGain*ei + pid->dGain*ed;
pid->prev_err = pid->last_err;
pid->last_err = pid->err;
}
③50ms中断中进行ADC读取、测量功率、计算误差,计算PID输出
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim == (&htim2))
{
//计算40次取均值
for(int i=0;i<40;i++)
{
HAL_ADC_Start_DMA(&hadc1,ADC_Value,4);
voltage_ISN_sum+=ADC_Value[1]*3.3/4096.0*11;
electric_current_sum+=(ADC_Value[3]*33/4096.0-16.8);
}
voltage_ISN=voltage_ISN_sum/40;
electric_current=electric_current_sum/40;
voltage_ISN_sum=0;
electric_current_sum=0;
if(electric_current<0)
{
electric_current=0;
}
//计算功率
power=voltage_ISN*electric_current;
//计算误差
pid.err=power_want-power;
//计算pid输出
Add_pid_update(&pid);
//将输出与原来的占空比叠加
duty+=(int)pid.pidout;
if(duty>100)//限制功率
{
duty=100;
}
if(duty<0)
{
duty=0;
}
//duty=40;
Set_Tim3_Duty(&htim3,duty);
//串口发送数据
printf("%04.2f %04.2f %04.2f %03d %04.2f\r\n",voltage_ISN,electric_current,power,duty,pid.err);
}
}
4.2.2积分系数改进(理解不深,可能有错误)
在中断函数中加入下面代码
if(pid.err<-2.2) //超出10W,增大i消去尖峰
{
pid.iGain=25;
}
else
{
pid.iGain=0.5;
}
4.3 实验结果
4.3.1 固定占空比与PID算法的对比
图4.4~4.7为在占空比等于100的情况下测得的数据,图4.8~4.11为使用PID算法恒定10W的情况下测得的数据,图4.12~4.15为使用PID算法恒定20W的情况下测得的数据。由于数据串口回传是放在中断函数中的,所以各个图中的数据点数可以代表时间。 由图4.4~4.7与图4.8~4.11对比可知,使用PID算法之后充电功率稳定在了10W左右,而没有使用PID算法时,最后电流很容易变得接近于0而导致充不了电。 由图4.4~4.7与图4.12~4.15对比可知,从两者的电压变化情况来看,20W的恒功率充电在数据点数等于7000时,超级电容电压已超过10V,而占空比等于100的充电方式下,数据点个数为7000时,超级电容电压维持在9V而不能上升,这说明了恒功率充电可以在超级电容电压较高时维持充电功率,提高充电速度和效率。
4.3.2 PID算法改进前后的对比
由图可见,在改进之前,达到稳定时,电流可以飘升到4A,功率曲线出现16W的尖峰,而改进之后,电流没有飘升,功率曲线出现尖峰大大减小,变为12W左右。
5、总结
5.1 实验中遇到的问题,怎样解决的
遇到的问题 | 解决方法 |
---|---|
倍压整流电路中二次充电电容耐压太小爆裂 | 更换为100V耐压的电解电容 |
ADC数据读取收到高频信号的影响,使读取的数据发生上下波动 | ADC信号收正弦高频信号影响,所以测40次取均值可以滤除噪声 |
最开始是自制发射端,实验过程中可以发射出640KHZ的信号,但是MOS管会发烫,信号达到15V直接冒烟,更换MOS管依然发烫 | 使用现成的发射电路,保证发射功率 |