100W无线电耦合功率测试实验
作者:互联网
▌01 无线功率耦合
根据 Experimental Test on a Contactless Power Transfer System 中的方案,进行无线功率发送实验。
⊙ 耦合线圈
⊙ 高频功率半桥
⊙ 全波整流负载
⊙ 谐振电容
(1) 0.22uF
▲ 谐振电容-0.22uF
Cmes=217.7nF
▲ 电容V-I特性
(2)47nF C0G
▲ C0G电容盒
▲ C0G电容盒
▲ 电容V-I特性
电容击穿之后,电容短路。
■ 结论
从前面高压测试来看,两款电容的哪呀都已经超过了1000V。
▌02 谐振耦合回路
1.测试LC谐振
使用在多股Litz线制作无线耦合线圈测试制作的两个线圈。
使用两个0.22uF的串联,与线圈组成谐振回路。
▲ 使用两个0.22uF组成谐振回路
使用DG1062通过串联150kΩ串联之后,测量不同频率下LC并联之后的交流电压信号。下面是测试电路草图:
▲ 测试电路草图
通过测量在谐振电压点出得电压和频率,测量Lp内部的的等效串联电阻。这其中需要应用到电抗电路的串并联的转换中的一些基本结论。
下面通过测量获得DG1062发送的不频率下,在LC并联谐振上的电压大小曲线。
▲ 测量LC谐振数据
-
谐振曲线峰值测量结果:
-
f0=90.1967kH
Vlc=0.01248V
DG1062的输出信号源,Vpp=5V,有效值:Vrms=1.7678V。可以计算出LC的等效并联电阻:
R
0
p
=
150
×
1
0
3
×
0.01248
1.7678
=
1.0594
k
Ω
R_{0p} = {{150 \times 10^3 \times 0.01248} \over {1.7678}} = 1.0594k\Omega
R0p=1.7678150×103×0.01248=1.0594kΩ
X = 2 π f ⋅ L o = 2 π × 90.1967 × 1 0 3 × 29 × 1 0 − 6 = 16.345 Ω X = 2\pi f \cdot L_o = 2\pi \times 90.1967 \times 10^3 \times 29 \times 10^{ - 6} = 16.345\Omega X=2πf⋅Lo=2π×90.1967×103×29×10−6=16.345Ω
根据 电抗电路的串并联的转换 中对于电感的串联、并联模型转换公式:
R p = ( 1 + Q 2 ) ⋅ R s = ( 1 + X 2 R s 2 ) ⋅ R s R_p = \left( {1 + Q^2 } \right) \cdot R_s = \left( {1 + {{X^2 } \over {R^2_s }}} \right) \cdot R_s Rp=(1+Q2)⋅Rs=(1+Rs2X2)⋅Rs
R s = R p − R p 2 − 4 X 2 2 = 1059.4 − 1059. 4 2 − 16.34 5 2 2 = 0.063 Ω R_s = {{R_p - \sqrt {R_p^2 - 4X^2 } } \over 2} = {{1059.4 - \sqrt {1059.4^2 - 16.345^2 } } \over 2} = 0.063\Omega Rs=2Rp−Rp2−4X2 =21059.4−1059.42−16.3452 =0.063Ω
Q = X R s = 16.345 0.063 = 259.4 Q = {X \over {R_s }} = {{16.345} \over {0.063}} = 259.4 Q=RsX=0.06316.345=259.4
2.固定耦合线圈
使用塑料板制作固定高频无线耦合线圈的支架。
▲ 固定线圈的固定塑料杠杆
将支架固定在微型台钳上可以比较方便调节它们之间的耦合关系。
▲ 无线电耦合线圈
3.不同距离下线圈耦合系数
测量方案与在 无线节能线圈参数以及相互之间耦合初步测试 中所使用的方法一致。将发送线圈使用电容进行匹配谐振,然后测量接收线圈的交流电压。通过接收电压比上发送电压便可以得到线圈的耦合系数了。
▲ 测量耦合系数方案
根据前面分析,在LC谢振下,L1的电抗大约为16欧姆左右,并联电阻大约1k欧姆左右,所以使用并联C是为了将L1的电感对于信号的内阻的影响降低到最低。
考虑到信号源的内阻R0=50欧姆。因此在谐振下,施加在L1上的电压应该是L1的等效并联电路Rp=1059Ω与R0(50Ω)的分压: U 1 = 5 2 2 × 1059 1059 + 50 = 1.688 V U_1 = {5 \over {2\sqrt 2 }} \times {{1059} \over {1059 + 50}} = 1.688V U1=22 5×1059+501059=1.688V
其中公式中5是指DG1062设置输出信号的峰峰值为5V。
▲ 谐振电容
(1)初步测量
两个线圈相距2.5厘米,中心对准,共轴。
- 信号源频率:f0=90.1kHz; U1=1.667V
- 接收到的信号电压:U2=0.767V
可以计算出此时两个线圈之间的耦合系数: k = U 2 U 1 = 0.767 1.667 = 0.46 k = {{U_2 } \over {U_1 }} = {{0.767} \over {1.667}} = 0.46 k=U1U2=1.6670.767=0.46
▲ 测量两个线圈在相距2.5厘米下耦合系数
(2)不同距离下的耦合系数
利用 单轴步进驱动模块SH-20403 带动接收线圈逐步远离发送线圈,测量接收到的交流电压随着距离的变化。
- 起始位置:L0=2.5厘米;
- 结束位置:L1=7.5厘米
- 移动步骤:N=100步
下图是初步测量接收线圈的电压。
▲ 不同距离下测量接收线圈的电压
测量距离扩大到7.5厘米,移动步骤150步。
▲ 滑轨带动线圈逐步远离
根据输入电压为U1=1.667V,计算出两个线圈之间的耦合系数随着距离变化对应的曲线:
▲ 不同距离下的互感系数
▌03 发送与接收电路
1.接收电路
使用四个10A的肖特基二极管组成桥整流电流。根据 整流电路对应的阻抗是多少? 实验结果,在负载有滤波电容的情况,整流桥输入组口与负载电阻基本相仿。
▲ 使用10A肖特基二极管组成的整流桥
基本的负载是一个15W的200欧姆的电阻。右面在增加 基于ZIGBEE通信的功率电子负载 ,用于改变接收的功率的大小。
▲ 接收线圈的负载
使用下面快速制版,得到接收电路及其负载电路。
▲ 无线接收线路及其负载
▲ 接收电路
2.发送功率电路1
(1)发送电路
使用在 基于TPS28225功率MOS半桥电路测试 制作的高频功率MOS半桥电路驱动发送线圈。发送线圈使用
▲ 半桥驱动电路
▲ 快速制版的PCB
▲ 焊接之后的MOS半桥电路
(2)接口电路2
接口电路包括:
- 发送串联匹配电路
- 接收整流电路
▲ 接口匹配电阻与整流电路
▲ 接口匹配电路
▲ 焊接之后的电路板
(3)谐振频率
修改后的谐振电路的电容修改成两个47nF的并联,C0=94nF。对应的29uH的电感,所对应的串联的谐振频率:
f 0 = 1 2 π L 0 C 0 = 1 2 π 29 × 1 0 − 6 × 47 × 1 0 − 9 = 96.4 k H z f_0 = {1 \over {2\pi \sqrt {L_0 C_0 } }} = {1 \over {2\pi \sqrt {29 \times 10^{ - 6} \times 47 \times 10^{ - 9} } }} = 96.4\,\,kHz f0=2πL0C0 1=2π29×10−6×47×10−9 1=96.4kHz
▲ 测试电路
▌04 发送效率测试
1.测试条件
- 桥整流后负在:14.7欧姆
- 频率:98kHz
- 两个线圈之间的距离:3.5厘米
2.发送与接收
- 发送电流:U1=24V
- 发送电压:I1=2.73A
- 接收电压:U2=26.0V
发送功率: P I n = U 1 × I 1 = 24 × 2.73 = 65.52 W P_{In} = U_1 \times I_1 = 24 \times 2.73 = 65.52W PIn=U1×I1=24×2.73=65.52W
接收功率: P O u t = U 2 2 R L o a d = 2 6 2 14.7 = 45.99 W P_{Out} = {{U_2^2 } \over {R_{Load} }} = {{26^2 } \over {14.7}} = 45.99W POut=RLoadU22=14.7262=45.99W
发送与接收效率:
η = P o u t P i n = 45.99 65.52 = 70.2 % \eta = {{P_{out} } \over {P_{in} }} = {{45.99} \over {65.52}} = 70.2\% η=PinPout=65.5245.99=70.2%
▌附件
1.测量电容程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2021-02-07
#
# Note:
#============================================================
from headm import *
from tsmodule.tsvisa import *
from tsmodule.tsstm32 import *
setv = linspace(0, 2, 100)
vdim = []
cdim = []
for v in setv:
dh1766volt(v)
time.sleep(2)
meter = meterval()
vdim.append(meter[0] * 1000)
cdim.append(meter[1] * 1000)
printff(meter, '\a')
dh1766volt(0)
plt.plot(vdim, cdim)
plt.xlabel("Voltage(V)")
plt.ylabel("Current(uA)")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
2.测量LC谐振程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY -- by Dr. ZhuoQing 2020-12-27
#
# Note:
#============================================================
from headm import *
from tsmodule.tsvisa import *
dg1062open()
dm3068open()
freq = linspace(88500, 92000, 100)
vdim = []
for f in freq:
dg1062freq(1, int(f))
time.sleep(.5)
v = (dm3068vac())
vdim.append(v)
printf(f, v)
tspsave('measure1', f=freq, v=vdim)
id = vdim.index(max(vdim))
printff(freq[id], vdim[id])
plt.plot(freq, vdim)
plt.xlabel("Frequency(Hz)")
plt.ylabel("Output(V)")
plt.grid(True)
plt.tight_layout()
plt.show()
printf('\a')
#------------------------------------------------------------
# END OF FILE : TEST1.PY
#============================================================
3.滑轨控制程序
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# LSCM8.PY -- by Dr. ZhuoQing 2020-01-14
#
# Note:
#============================================================
from head import *
import serial
#------------------------------------------------------------
cmdportdef = 'COM2'
cmdport = serial.Serial(cmdportdef, baudrate=115200, timeout=0.1)
cmdport.setDTR(False)
#cmdport.setRTS(False)
printf("Open %s for LSCM8."%cmdportdef)
#------------------------------------------------------------
COMMAND_FRAME_HEAD = 0x56
COMMAND_FRAME_TAIL = 0x65
COMMAND_STATUS_WAIT = 0x0
COMMAND_STATUS_COMMAND = 0x1
COMMAND_STATUS_LENGTH = 0x2
COMMAND_STATUS_DATA = 0x3
COMMAND_STATUS_CHECK = 0x4
COMMAND_STATUS_TAIL = 0x5
#------------------------------------------------------------
COMMAND_HELLO_ECHO = 0x20
COMMAND_BEEP_ON = 0x21
COMMAND_BEEP_OFF = 0x22
COMMAND_DIR_ON = 0x23
COMMAND_DIR_OFF = 0x24
COMMAND_REL_ON = 0x25
COMMAND_REL_OFF = 0x26
COMMAND_PUL_SET = 0x27
COMMAND_PUL_STOP = 0x28
COMMAND_GOTO_HEAD = 0x29
COMMAND_GOTO_TAIL = 0x2A
COMMAND_GET_STATE = 0x2B
COMMAND_GET_PULSEOUT = 0x2C
COMMAND_CLEAR_PULSEOUT = 0x2D
#------------------------------------------------------------
def lscm8cmd(cmd, cmddata):
checksum = cmd + len(cmddata)
for cd in cmddata:
checksum = checksum + cd
checksum = (checksum & 0xff) ^ 0xff
cmdstr = b'' + byte(COMMAND_FRAME_HEAD) + byte(cmd) + byte(len(cmddata)) +\
cmddata + byte(checksum) + byte(COMMAND_FRAME_TAIL)
# printf(cmdstr)
cmdport.write(cmdstr)
def lscm8hello():
lscm8cmd(COMMAND_HELLO_ECHO, b'')
def lscm8beepon():
lscm8cmd(COMMAND_BEEP_ON, b'')
def lscm8beepoff():
lscm8cmd(COMMAND_BEEP_OFF, b'')
#------------------------------------------------------------
def lscm8relon(bits):
cmd = bits.to_bytes(1, byteorder='big')
lscm8cmd(COMMAND_REL_ON, cmd)
#------------------------------------------------------------
# bits:0:relay0, 1:relay1
def lscm8reloff(bits):
cmd = bits.to_bytes(1, byteorder='big')
lscm8cmd(COMMAND_REL_OFF, cmd)
def lscm8diron(bits):
cmd = bits.to_bytes(1, byteorder='big')
lscm8cmd(COMMAND_DIR_ON, cmd)
def lscm8diroff(bits):
cmd = bits.to_bytes(1, byteorder='big')
lscm8cmd(COMMAND_DIR_OFF, cmd)
#------------------------------------------------------------
def lscm8setpulse(bits, pulse):
cmd = bits.to_bytes(1, byteorder='big') +\
pulse.to_bytes(4, byteorder='big')
lscm8cmd(COMMAND_PUL_SET, cmd)
def lscm8stoppulse():
lscm8cmd(COMMAND_PUL_STOP, b'')
def lscm8gotohead():
lscm8cmd(COMMAND_GOTO_HEAD, b'')
def lscm8gototail():
lscm8cmd(COMMAND_GOTO_TAIL, b'')
def lscm8clearpulseout():
lscm8cmd(COMMAND_CLEAR_PULSEOUT, b'')
def lscm8mf(steps):
lscm8diron(3)
lscm8reloff(3)
lscm8setpulse(3, steps)
def lscm8mb(steps):
lscm8diroff(3)
lscm8reloff(3)
lscm8setpulse(3, steps)
#------------------------------------------------------------
if __name__ == "__main__":
time.sleep(.5)
# lscm8diron(3)
# lscm8reloff(3)
# lscm8gotohead()
# lscm8gototail()
# lscm8setpulse(3, 1000)
# lscm8diron(3)
lscm8mf(10000)
# lscm8mf(1900000)
tspbeep(1500, 100)
printf('End of the command')
#------------------------------------------------------------
# END OF FILE : LSCM8.PY
#============================================================
4. 测量不同距离下耦合系数
#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST2.PY -- by Dr. ZhuoQing 2021-02-08
#
# Note:
#============================================================
from headm import *
import lscm8
from tsmodule.tsvisa import *
dm3068open()
lscm8.lscm8mf(750000)
exit()
#------------------------------------------------------------
vdim = []
startd = 2.5
endd = 7.5
dist = linspace(2.5, 2.5*0.5*150, 150, endpoint=False)
gifid = 10
#------------------------------------------------------------
tspgiffirst(gifid)
for i in range(150):
v = dm3068vac()
vdim.append(v/1.668)
printff(i, v)
lscm8.lscm8mb(500)
tspsave('meask', v=vdim)
time.sleep(1)
tspgifappend(gifid)
plt.plot(dist, vdim)
plt.xlabel("Distance(cm)")
plt.ylabel("Voltage(V)")
plt.grid(True)
plt.tight_layout()
plt.show()
#------------------------------------------------------------
# END OF FILE : TEST2.PY
#============================================================
标签:plt,over,无线电,耦合,电路,COMMAND,线圈,100W 来源: https://blog.csdn.net/zhuoqingjoking97298/article/details/113663347