最简单的无线充电传输电路

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最简单的无线充电传输电路相关的知识,希望对你有一定的参考价值。

  本文参照Youtube原视频链接:

 

01 线电能传输


一、背景介绍

  今天在Youtube上看到一个短视频, 给对无线电能传送进行了简明生动的说明。 特别是视频中给出了一个人人都可以重复实验的电路, 可以完成对手机的无线充电。 今天将这个短片中的电路介绍给参加全国大学生智能车竞赛的同学们, 可以帮助大家快速入门, 并开始进一步设计更加高能、高效的无线电能传送电路。

二、电路设计

1、发送电路

  这是发送电路的原理图,它包括有一个大功率MOS管, 作者将其在一个洞洞板上进行焊接, 接上5V电源,电路便开始震荡工作。 这个电路非常简单,也比较容易制作。

  下面是发送电路的原理图,实际制作的发射器可以参见本文的视频中的内容。

▲ 图1.2.1 发射电路原理图

2、接收电路

  接收电路相对比较简单,它包含有接收线圈,全桥整流,滤波电容以及稳压输出电路等。 这个电路在接收端没有使用谐振电容。 输出进行稳压之后,便可以直接对手机进行充电了。

▲ 图1.2.2 电能接收电路

 

  结 ※


  文讨论了一个Youtube上视频短片介绍的无线传输电路, 视频作者特别使用浅显易懂的方式对原理进行了介绍, 令人感兴趣的是他的实际制作,更能激起初学者进行复制学习。 这个短片值得大家看一下。

简易无线电传输电路

一、改动程序

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# SPS.PY                       -- by Dr. ZhuoQing 2022-10-03
#   Seperate speak signal into segment.
#   Usage:  sps wavefile silencevalue(int) silencetime(float)
#           sps azure               # Open AZURE link
#               a                   # Open AZURE Link
#               h                   # Head time
#               s                   # Voice speed
#               =,>                 # Head
#               x                   # Using XUNJIE
#               z                   # Using AZure
#
#   Before using sps, copy all voice string into clipboard.
#
# Note:
#============================================================

from headm import *

from scipy.io import wavfile
import pyautogui
import webbrowser
import shutil
import soundfile as sf

#------------------------------------------------------------
wavefile = r'D:\\Temp\\1.wav'

#------------------------------------------------------------
try:
    if not os.path.exists(r'd:\\temp'):
        os.makedirs(r'd:\\temp')
    if not os.path.exists(r'd:\\temp\\VOICE'):
        os.makedirs(r'd:\\temp\\VOICE')
except OSError:
    printf("Error :Creating directory of data.")

#------------------------------------------------------------
silencevalue = 100                  # Silence max value
SILENCETIME = 0.58
silencetime  = SILENCETIME          #

starttime = 2.0                     # Begin time

mp3flag = 0

#------------------------------------------------------------

XUNJIE_TITLE = '迅捷文字转语音'
XUNJIE_PROGRAM = r'C:\\Users\\SCW4000\\AppData\\Roaming\\HuDun\\XunJieVoice\\audioconverter.exe'
XUNJIE_RECT = tspgetwindowrect(XUNJIE_TITLE)
XUNJIE_FLAG = sum(XUNJIE_RECT)


#------------------------------------------------------------
azure_url = "https://azure.microsoft.com/zh-cn/products/cognitive-services/text-to-speech/#overview"
azure_title = "文本转语音"

AUDACITY_TITLE = 'Audacity'
AUDACITY_PROGRAM = r'"C:\\Program Files (x86)\\Audacity\\audacity.exe"'
#------------------------------------------------------------
def AudacityOpen():
    rect = tspgetwindowrect(AUDACITY_TITLE)
    if sum(rect) == 0:
        printf(AUDACITY_PROGRAM)
#        os.system(AUDACITY_PROGRAM)
        os.startfile(AUDACITY_PROGRAM)

#------------------------------------------------------------
spsstr = tspstring2text('-|-').split('\\r\\n')
replacestring = []
for s in spsstr:
    ss = s.split('|')
    if len(ss) == 2:
        replacestring.append(ss)

#------------------------------------------------------------
audacityflag = 0
audacityfile = r'd:\\temp\\Audacity1.wav'

def AudacityOpenFile(fname):
    tspsendwindowkey(AUDACITY_TITLE, "tv", alt=1, noreturn=1)
    time.sleep(.1)
    tspsendwindowkey(AUDACITY_TITLE, "tv", alt=1, noreturn=1)
    time.sleep(.1)

    tspsendwindowkey(AUDACITY_TITLE, "i", control=1, shift=1, noreturn=1)

    time.sleep(.5)
    clipboard.copy(fname)
    time.sleep(.25)
    OPENDIALOG_TITLE = '选择一个或多个'
    tspsendwindowkey(OPENDIALOG_TITLE, "n", alt=1,noreturn=1)
    tspsendwindowkey(OPENDIALOG_TITLE, "v", control=1, noreturn=1)
    tspsendwindowkey(OPENDIALOG_TITLE, "o", alt=1, noreturn=1)
    time.sleep(.5)
    tspsendwindowkey("警告", "\\r", noreturn=1)

#------------------------------------------------------------
def AudacitySave(fname):
    tspsendwindowkey(AUDACITY_TITLE, "fe", alt=1, noreturn=1)

    time.sleep(1)
    rect = tspgetwindowrect("导出音频")
    if sum(rect) == 0:
        printf("ERROR: Can not open the save dialog.\\a")
        exit()

    clipboard.copy(fname)
    tspsendwindowkey("导出音频", "t", alt=1,noreturn=1)
    tspsendwindowkey("导出音频", "cw", noreturn=1)
    tspsendwindowkey("导出音频", "n", alt=1, noreturn=1)
    tspsendwindowkey("导出音频", "v", control=1, noreturn=1)
    tspsendwindowkey("导出音频", "s", alt=1, noreturn=1)

    time.sleep(1)
    rect = tspgetwindowrect("警告")

    if sum(rect) != 0:
        time.sleep(.5)
        tspsendwindowkey("警告", "y", alt=1, noreturn=1)
        time.sleep(.5)

    rect = tspgetwindowrect("编辑元信息")
    if sum(rect) == 0:
        printf("ERROR: Can not open the edit dialog.\\a")

    tspsendwindowkey("编辑元信息", "\\r", noreturn=1)
    time.sleep(1.5)
#    tspsendwindowkey(AUDACITY_TITLE, "tv", alt=1, noreturn=1)

#------------------------------------------------------------
def StringVoice(s):
    global replacestring

    rps = (('8050', '8 0 5 0'), ('8550', '8 5 5 0'), ('9013', '9 0 1 3'),
           ('mV', '毫伏'), ('mAH', '毫安时'), ('mH', '毫亨'), ('uF', '微法'),
           ('nF', '纳法'), ('pF','皮法'), ('VA', "伏安"), ('M欧姆', '兆欧姆'),
           ('k欧姆','千欧姆'), ('M法拉', "兆法拉"), ('I2C', 'I方C'),
           ('mA', '毫安'), ('本文', '在这里'), ('MHz', '兆赫兹'), ('kHz', '千赫兹'),
           (':', ','), ('TB','淘宝'), ('NXP', '恩智浦'), ('Infineon','英飞凌'))

    for ss in rps:
        s = s.replace(ss[0], ss[1])

    for ss in replacestring:
        s = s.replace(ss[0], ss[1])

    #--------------------------------------------------------
    VAW = (('V','伏'), ('A', '安'), ('W','瓦'), ('M', '兆'), ('ms', '毫秒'))

    for vaw in VAW:
        if s.find("型号") >= 0: continue

        ss = s.split(vaw[0])
        for id,sss in enumerate(ss):
            flag = 0
            for ii in range(len(sss)):
                if ord(sss[-(ii+1)]) > 0x80:
                    if ii == 0: flag = 1
                    break

                if not sss[-(ii+1):].replace('.','').replace('+','').replace('-','').isdigit():
                    flag = 1
                    break

            if flag == 0:
                ss[id] = sss + vaw[1]
            elif id < len(ss) - 1:
                ss[id] = sss + vaw[0]

        s = ''.join(ss)

    #--------------------------------------------------------
    WAV = (('+', '正'), ('-', '负'), ('TSSOP', 'T S S O P'),('SOP', 'S O P '),
           ('SOT', 'S O T '), ('SSOP', 'S S O P '))

    for wav in WAV:
        ss = s.split(wav[0])
        for id,sss in enumerate(ss):
            if id < len(ss) - 1:
                if ord(sss.replace(' ','')[-1]) < 0x80:
                    ss[id] = sss + wav[0]
                else:
                    if ss[id+1][:1].isdigit():
                        ss[id] = sss + wav[1]
                    else: ss[id] = sss + wav[0]

        s = ''.join(ss)

    return s

#------------------------------------------------------------
MAX_LENGTH = 600
voicesegmentnumber = 0
voiceflag = ''
def VoiceSegment1000(strall, s):
    global voicesegmentnumber, voiceflag

    section = -1
    if len(s) > 0:
        if s.isdigit():
            section = int(s)
        else: section = 0

    #--------------------------------------------------------
    tempdim = []
    headstr = ''
    for s in strall:
        if s[:2] == '>>' or s[:2] == '<<':
            continue

        if s.find('~') >= 0:
            ss = s.split('~')
            s = ss[-1]

            if len(ss) >= 3:
                headstr = ss[1]
        else:
            if headstr in '!@#$%^&*()':
                headstr = ''

        if len(voiceflag) > 0:
            if voiceflag == '0' or voiceflag == ')':
                if len(headstr) == 0 or headstr == '0':
                    tempdim.append(s)
            elif voiceflag == '1' or voiceflag == '!':
                if headstr == '1' or headstr == '!' or headstr == '!':
                    tempdim.append(s)
            elif voiceflag == '2' or voiceflag == '@':
                if headstr == '2' or headstr == '@':
                    tempdim.append(s)
            elif voiceflag == '3' or voiceflag == '#':
                if headstr == '3' or headstr == '#':
                    tempdim.append(s)
            elif voiceflag == '4' or voiceflag == '$':
                if headstr == '4' or headstr == '¥' or headstr == '$':
                    tempdim.append(s)
            elif voiceflag == '5' or voiceflag == '%':
                if headstr == '5' or headstr == '%':
                    tempdim.append(s)
            elif voiceflag == '6' or voiceflag == '^':
                if headstr == '6' or headstr == '^':
                    tempdim.append(s)
            elif voiceflag == '7' or voiceflag == '&':
                if headstr == '7' or headstr == '&':
                    tempdim.append(s)
            elif voiceflag == '8' or voiceflag == '*':
                if headstr == '8' or headstr == '*':
                    tempdim.append(s)
            elif voiceflag == '9' or voiceflag == '(':
                if headstr == '9s' or headstr == '(':
                    tempdim.append(s)
        else:
            tempdim.append(s)

    strall = tempdim

    #--------------------------------------------------------
    sseg = []
    stemp = []
    count = 0
    for s in strall:
        if s[0] == '':
            ids = s.find('')
            if ids > 0:
                s = s[ids+1:]

        if count + len(s) > MAX_LENGTH:
            if len(stemp) > 0:
                sseg.append(stemp)
                stemp = [s]
                count = len(s)
        else:
            stemp.append(s)
            count += len(s)

    if len(stemp) > 0: sseg.append(stemp)

    for id,sg in enumerate(sseg):
        tspshowinfor("Seg%d/%d:%d;  "%(id+1, len(sg), sum([len(l) for l in sg])))

#    printf('\\a')

    #--------------------------------------------------------
    if section < 0:
        voicesegmentnumber = len(sseg)
        totallen = sum([len(l) for l in strall])
        printf("Total Segment:%d/%d"%(len(strall), totallen))
        return strall

    voicesegmentnumber = len(sseg)

    if section < len(sseg):
        return sseg[section]
    else: return []

#---------

以上是关于最简单的无线充电传输电路的主要内容,如果未能解决你的问题,请参考以下文章

第十六届智能车竞赛国赛队伍中节能信标组无线电能接收方案

功率放大器在电容耦合型无线电能传输系统中的应用

功率放大器在无线充电测试中——驱动电磁线圈的应用

2009年大学生电子大赛

使用ZVS驱动无线充电线圈

苹果无线充电器拆卸