▌01 节能信标组
1.收割电能方法
在 如何高效获取无线充电电能-无线节能组 中对于三种 节能信标组 中的电能收割方案进行测试:
- 使用全波整流给法拉电容充电
- 使用倍压整流给法拉电容充电
- 使用LCC补偿网络+全波整流给法拉电容充电
实验中对于充电电压、电流的测量,综合反映各种方法对于 节能型表无线充电模块 的性能进行测量。
本文也将对于不同线圈(大线圈、小线圈)的电能收割方式进行对比。
2.ESP32信号采集
EPS32 模块具有思路ADC输入通道,分别位于Pin32,Pin33,PIn34,PIn35。可以通过编程对于外部采集信号进行等间距采集。这比使用实验台上的万用表可以提供时间间隔更加精确、采集速率更高的信号采集。
在 如何高效获取无线充电电能-无线节能组 中,由于没有对ESP32采集进行标定(包括时间和电流、电压),所以所获得的数据只能定性的分析,无法定量来对接收电路、发送电路的性能进行计算。
下面将会对ESP32采集方案进行标定之后在进行测试。
▌02 ESP32采集标定
ESP32de ADC通道,在缺省的情况下,将输入0 ~ 1V之间的电压信号转换成 0 ~ 0xfff(12bits)信号,由于模块噪声,建议在标定和采集的时候对于采集到的电压信号采用平均平滑进行低通滤波。
sum([adc1.read() for _ in range(AVERAGE_NUM)])//AVERAGE_NUM
注意:对于ESP32的ADC存在一个输入的截止区。这个问题可以单独进行标定。
下图的显示了ESP32对于外部电压测量存在的截止特性。
▲ 输入电压与读出数值
1.电压标定
(1)输入电路
-
分压电阻:
-
R1=20.02kΩ
R2=1.000kΩ
理论分压常量: k = 4095 / 21 = 195.05 / V k = 4095/21 = 195.05\,\,\,/V k=4095/21=195.05/V。
(2)测量结果
- 输入电压:9.003V;分压后的电压为:0.440V(理论值为:0.429V)
- 读出数值:1500
- 分压常量:k=166.61
注意:标定后的电压分压常量k与理论计算值相差17.1%。这个误差主要来自于ESP32的ADC转换常量,如果读出的1500,对应的ADC应该是:0.3663V,但实际上为0.440。为什么会有这样的差异?,原因不得而知。
※ 问题解释 根据前面对于ESP32输入存在的截止区,可以看到ADC并不是与外部的输入电压呈现严格的线性关系。因此,前面对应的问题。
2.电流标定
使用电流钳将电流转换成电压信号。
- 输入电流:5A
- 采集读数:1928
- 电流常量: k = 5 / 1928 = 0.00259 m A k = 5/1928 = 0.00259mA k=5/1928=0.00259mA
由于ESP32 ADC输入存在着截止特性,因此对于输入电流特性严格来讲,应该需要两个标定参数,比率与截距。
3.时间标定
根据 MicroPython中ESP32快速参考 对于 Delay&Timing 的介绍,使用一下time模块来测量时间延迟:
import time
time.sleep(1) # sleep for 1 second
time.sleep_ms(500) # sleep for 500 milliseconds
time.sleep_us(10) # sleep for 10 microseconds
start = time.ticks_ms() # get millisecond counter
delta = time.ticks_diff(time.ticks_ms(), start) # compute time differenc
▲ 测量法拉电容充电电流与电容电压
▌03 充电过程测试
1.LCC补偿充电
如下是LCC充电方案充电电流与电容电压曲线。
▲ LCC充电方案充电电流与电容电压
2.全桥整流充电
▲ 全桥整流充电电流与电容端口电压
3.倍压整流充电
▲ 倍压整流充电电流与电容端口电压
通过前面的对比,可以看到使用LCC补偿之后,对于60F(五个串联,最终形成的电容为12F)充电速度最快。
▌04 是否可以再快一些?
在前面的测试中,可以看到并没有达到发射模块所允许的最大功率。可否能够进一步提高充电速度呢?
1.改进的方案
(1)使用10A肖特基二极管
在前面的实验中,LCC补偿电路后期的电路中的整流肖特基二极管使用的在5A的二极管。将其改成10A的肖特基二极管。
(2)改进LCC网络参数
LCC网络参数是在 如何高效获取无线充电电能-无线节能组 安装充电电流为3A来设计的。下面使用5A的标准来设计LCC参数。
【1.设计条件】
参数名称 | 数值 | 单位 |
---|---|---|
输出电流 I 0 I_0 I0 | 5 | A |
输入电压 U 0 U_0 U0 | 10 | V |
接收线圈电感 L 0 L_0 L0 | 13.79 | μ H \mu H μH |
工作频率 f 0 f_0 f0 | 150 | k H z kHz kHz |
【2.设计参数】
参数名称 | 公式 | 数值 | 单位 |
---|---|---|---|
LCC基本电抗 | X 0 = U 0 I 0 X_0 = { {U_0 } \over {I_0 }} X0=I0U0 | 10 5 = 2 { {10} \over 5} = 2 510=2 | Ω |
输出电感 | L s = X 0 2 π f 0 L_s = { {X_0 } \over {2\pi f_0 }} Ls=2πf0X0 | 2 2 π × 150 k H z = 2.122 μ H {2 \over {2\pi \times 150kHz}} = 2.122\mu H 2π×150kHz2=2.122μH | μ H \mu H μH |
并联电容 | C p = 1 2 π f 0 X 0 C_p = {1 \over {2\pi f_0 X_0 }} Cp=2πf0X01 | 1 2 π × 150 k H z × 2 = 530.5 n F {1 \over {2\pi \times 150kHz \times 2}} = 530.5nF 2π×150kHz×21=530.5nF | nF |
串联电容 | C s = 1 ( 2 π f 0 ) 2 ( L 0 − L s ) C_s = {1 \over {\left( {2\pi f_0 } \right)^2 \left( {L_0 - L_s } \right)}} Cs=(2πf0)2(L0−Ls)1 | 1 ( 2 π × 150 k H z ) 2 ( 13.79 − 2.122 ) μ H = 96.48 n F {1 \over {\left( {2\pi \times 150kHz} \right)^2 \left( {13.79 - 2.122} \right)\mu H}} = 96.48nF (2π×150kHz)2(13.79−2.122)μH1=96.48nF | nF |
2.制作LCC补偿网络
使用粘贴铜箔制作实验电路板。使用200股Litz线在 T106-2 磁芯上绕制10匝制作电感。并联和串联电容通过使用多个电容进行并联组成。如下是实际期间的测量参数。
【3.实际LCC参数】
LCC参数 | 数值 | 单位 |
---|---|---|
串联电感 | L p = 2.02 L_p = 2.02 Lp=2.02 | μ H \mu H μH |
并联电容 | C p = 525.9 C_p = 525.9 Cp=525.9 | nF |
串联电容 | C s = 94.88 C_s = 94.88 Cs=94.88 | nF |
将原来的肖特基二极管从5A改成10A,组成高频整流桥电路。将输出挂接在12F(12V,由5个60F/2.7V法拉电容串联而成)法拉电容上进行充电。
▲ LCC补偿电路
3.充电测试
下面分别对于三种不同容量的法拉电容进行充电。法拉电容的耐压都是12V,均由五个内压为2.7V的法拉电容串联而成。电容的容量分别为12F,2.4F,36F。
1.法拉电容容量:12F
下图显示了四点电流与法拉电容端口电压之间的关系。可以看到电容电压从0V上升到12V只使用了32秒钟。而在原来的充电方案中,这个充电过程则耗费了将近50秒中的时间。
充电电流平均值在5A左右,与设计的参数基本一致。
▲ 充电电流与电容电压
▲ 12F 电容组
下面是重新充电的过程。仔细观察充电过程,可以看到它分为两个阶段:
- 第一个阶段是在电压没有超过10V的时候,电流基本上维持在5A左右;这部分的恒流是由LCC补偿电路做引起的。
- 第二阶段是电容电压超过10V,电流随着电容的电压增加而逐步降低;这部分充电电流下降主要是由于无线发送模块输出功率限制而引起的。
▲ 充电电流与电容端口电压曲线
2.法拉电容容量2.4F
下图显示了对于2.4F(由五个12F/2.7V的法拉电容串联而成)的法拉电容充电过程。将电压冲到12V使用10秒钟的时间。
▲ 充电电流与电容端口电压曲线
![](https://img-blog.csdnimg.cn/2021040517244361.png#pic_center ==1680x)
3.法拉电容容量36F
下图则显示使用了90秒左右的时间将36F(由5个180F/2.7V法拉电容串联而成)法拉电容冲到12V电压。
▲ 充电电流与电容端口电压曲线
▲ 36F 电容组
4.对比直充方式
如果不使用LCC补偿电路,直接将线圈串联谐振电容连接到整流桥上,对12F电容组进行充电。整流桥仍然使用10A的肖特基二极管。
下面是采集到的充电电流与电容电压数据曲线。
▲ 充电电流与电容两端电压
对比可以看到,充电过程与前面LCC补偿过程很相似,只是充电电流下降到3A左右。充电到12V大约需要50秒的时间。
▌实验结论
1.基本结论
通过实验验证了使用使用LCC补偿电路获取更高充电功率的效果。
整个充电过程分为两部分,第一部分是当电容电压小于10V时,充电电流呈现横流特性,主要是由LCC补偿电路的特性所引起的;
第二部分是当电容电压超过10V,此时充电电流为5A,输出功率超过50W,此时无线发送模块开始限制输出功率,从而引起充电电流功率下降。
使用LCC补偿电路完成电能充电适合恒定电压的电池充电。它可以保证充电电流比较稳定。但是对于法拉电容这类负载,由于它的端口电压是随电量的增加而上升,所以充电功率也是由0逐步增加到满载功率。因此平均下来,这种方案对于无线充电的功率利用只使用到了50% 。还有进一步提高的方案。
2.对比充电方式
根据前面对于LCC补偿电路、全桥整流直充以及倍压整流直充的充电过程可以看到,使用LCC充电速度最快。但是需要对于该方式充电过压进行保护。
使用全桥整流直充,也可以达到LCC补偿电路60%的充电速度。它不需要担心过压问题。因为当电容电压达到12V左右时,此时与线圈感应电压接近,充电会自动停止。
使用倍压整流是充电速度最慢的方式。
3.接收线圈位置
在前面实验过程中, 基本上保持接收线圈在发送线圈的边缘处,这样可以获得最大的感应电动势。
▲ 接收线圈在发送线圈边缘时可以获得最大的充电功率
■ 相关文献链接:
- 如何高效获取无线充电电能-无线节能组
- 无线节能信标核心板V4-测试-2021-4-3
- ESP32模块的MicroPython的基本实验
- MicroPython中ESP32快速参考
- Delay&Timing
- T106-2
▌实验附件
1.测量ESP32输入ADC特性
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2021-04-05
#
# Note:
#============================================================
from headm import *
from tsmodule.tsvisa import *
dp1308open(110)
dp1308p25v(5)
printf('\a')
def thonnycmd(cmd):
tspsendwindowkey('Thonny', 's', alt=1, noreturn=1)
tspsendwindowkey('Thonny', '%s\r'%cmd, noreturn=1)
def thonnyshs(cmd='', wait=0):
tspsendwindowkey('Thonny', 's', alt=1)
if len(cmd) > 0:
tspsendwindowkey('Thonny', '%s\r'%cmd, noreturn=1)
if wait > 0:
time.sleep(wait)
tspsendwindowkey('Thonny', 'ac', control=1, noreturn=1)
return clipboard.paste()
setv = linspace(0, 12, 50)
ndim = []
for v in setv:
dp1308p25v(v)
time.sleep(1)
str = [s for s in thonnyshs('1', 0.2).split('\r\n') if len(s) > 0]
ndim.append(int(str[-1]))
plt.plot(setv, ndim, label='ESP32 ADC')
plt.xlabel("Voltage(V)")
plt.ylabel("ADC")
plt.grid(True)
plt.legend(loc="upper right")
plt.tight_layout()
plt.show()
printf(str)
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
2.ESP32测量电流与电压
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# THP2.PY -- by Dr. ZhuoQing 2021-04-05
#
# Note:
#============================================================
from head import *
from machine import ADC,Pin
import time
#------------------------------------------------------------
SAMPLE_NUM = const(256)
AVERAGE_NUM = const(128)
TIME_SLEEP = const(200)
vdim = []
idim = []
tdim = []
vk = 1/166.61
ik = 0.00259
adc1 = ADC(Pin(32))
adc2 = ADC(Pin(33))
#------------------------------------------------------------
start = time.ticks_ms()
for _ in range(SAMPLE_NUM):
adn = sum([adc1.read() for _ in range(AVERAGE_NUM)]) // AVERAGE_NUM * vk
vdim.append(adn)
adn = sum([adc2.read() for _ in range(AVERAGE_NUM)]) // AVERAGE_NUM * ik
idim.append(adn)
tdim.append(time.ticks_diff(time.ticks_ms(), start))
print(len(vdim))
time.sleep_ms(TIME_SLEEP)
print(tdim)
print(vdim)
print(idim)
#------------------------------------------------------------
# END OF FILE : THP2.PY
#============================================================
3.测量ADC通道
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# THP1.PY -- by Dr. ZhuoQing 2021-04-05
#
# Note:
#============================================================
from machine import ADC,Pin
import time
adc1 = ADC(Pin(32))
adc2 = ADC(Pin(33))
AVERAGE_NUM = const(128)
while True:
num = sum([adc1.read() for _ in range(AVERAGE_NUM)]) // AVERAGE_NUM
print(num)
time.sleep_ms(100)
inps = input('')
if inps == 'e':
break
print("User break.")
#------------------------------------------------------------
# END OF FILE : thp1.PY
#============================================================
转载:https://blog.csdn.net/zhuoqingjoking97298/article/details/115437782