前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >无线充电原理与QI协议详解[通俗易懂]

无线充电原理与QI协议详解[通俗易懂]

作者头像
全栈程序员站长
发布2022-07-21 16:20:27
6.3K0
发布2022-07-21 16:20:27
举报

大家好,又见面了,我是你们的朋友全栈君。

一 、无线充电基本原理 无线充电的基本原理就是我们平时常用的开关电源原理,区别在于没有磁介质耦合,那么我们需要利用磁共振的方式提高耦合效率,具体方法是在发送端和接收端线圈串并联电容,是发送线圈处理谐振状态,接收端线圈也是如此

111.JPG
111.JPG

下图就是实际电路应用

34234234.JPG
34234234.JPG

无线充电工作基本原理图

23456.JPG
23456.JPG

发射板主要有控制ic,驱动ic,发射线圈,谐振电容组成

234234234.JPG
234234234.JPG

这个是接收线圈,扎数比发射线圈多所以谐振电容可以小一些,方便安装在手机后盖

一 、无线充电通讯协议 上面说了原理,但是为什么无线充电还需要协议呢,原因如下

1、发射板需要确认接收线圈是不是已经放置在发射线圈上方,如果没有接收线圈,发射端不工作降低功耗

2、如果在线圈上放了金属制品会产生涡流导致金属品发热,比如在发射板上放了钥匙那么钥匙就会发热,需要避免这种情况 3、手机充电时电流不同,比如正常充电时1A,充满电的时候电流会降到几十MA,那么发射板功率如果一直恒定不变,当手机充满电时发射线圈接收端的电压会很高,这是负载变小电压升高的原因,所以需要当负载变化时发射线圈功率也需要跟着调节,就像开关电源一样需要电压反馈控制

解决方法:

1通过无线通讯机制来判断是不是金属制品或者没有放置接收线圈,比如接收端线圈必须间隙发送确认信号

2通过无线通讯机制来调节发射端功率

具体方法其实类似RFID,区别在于无线充电是单向通讯,接收端发送信号,发射端接收信号

主要通讯流程如下

1,上电后发射端线圈发射脉冲信号,然后接收端线圈收到信号后返回一个身份识别包信号,然后在发送配置包,比如功率设置

2,当时发射线圈接收到接收线圈发来的信号就可以正常工作了,这个时候接收线圈必须在规定时间内发送信号强度包来调整功率,如果在规定时间内发射线圈没有收到信号就认为接收线圈已经不在发射板上方,导致重新建立握手

各种通讯包格式

76_956751_6fb5e1fcf982c62.jpg
76_956751_6fb5e1fcf982c62.jpg

包格式如下

76_956751_2b7fcf82e10fc90.jpg
76_956751_2b7fcf82e10fc90.jpg

这是数据的编码格式,频率为2KHz

76_956751_c3cbaf02c9670af.jpg
76_956751_c3cbaf02c9670af.jpg
2233.jpg
2233.jpg

调制方式有两种,下图是电容调制和电阻调制,电容调制是接收板常用电路

在这里插入图片描述
在这里插入图片描述
76_956751_83a50e1edcdf1b1.jpg76_956751_942fb7c137ddecb.jpg
76_956751_83a50e1edcdf1b1.jpg76_956751_942fb7c137ddecb.jpg

三、实验验证 用单片机模拟接收线圈控制IC,通过观察发射板的供电情况,我用的是电阻调制,因为比较简单,主要是看下能不能通讯,下面是自己写的代码

这个包格式 前导:11个-25个1 包头: 常用的就是0X01,0X51,0X71,0X03,0X04, 发包顺序是0X01,0X71,0X51,包中间间隔小于21ms 然后0X03和0X04包在充电中发出,间隔小于1.5S和23S 信息:这个就看我发的链接发内容比较多 校验:把包头和包信息异或检验 下面是用NV32开发板的程序,LED3就是调制波形, LED3_On();调制MOS管栅极为高电平

void Header (void)//前导11到25个1,这里用18个1 { uint8 i; for(i=0;i<18;i++) { LED3_On(); delay_us(250); LED3_Off(); delay_us(250); } } void Code (uint8 aa)//字节编码 { uint8 i,j=0; LED3_Toggle();//起始位 delay_us(500); for(i=0;i<8;i++)//数据位 { if(aa&0x01) { j+=1; LED3_Toggle(); delay_us(250); LED3_Toggle(); delay_us(250); } else { LED3_Toggle(); delay_us(500); } aa>>=1; }

代码语言:javascript
复制
if(j%2)//检验位
{
      LED3_Toggle();
        delay_us(500);

}
else
{
        LED3_Toggle();
        delay_us(250);
        LED3_Toggle();
        delay_us(250);
}

 LED3_Toggle();//停止位
 delay_us(250);
 LED3_Toggle();
 delay_us(250);

} void ping (void)//PING包 { Header(); Code(0x01); Code(0x80); Code(0x01^0x80); LED3_Off(); } void id (void)//id包 { Header(); Code(0x71); Code(0x10); Code(0x00); Code(0x01); Code(0x00); Code(0x01); Code(0x00); Code(0x00); Code(0x710x100x000x010x000x010x00^0x00); LED3_Off(); } void config (void)//配置包 { Header(); Code(0x51); Code(0x0a); Code(0x00); Code(0x00); Code(0x00); Code(0x00); Code(0x510x0a0x000x000x00^0x00); LED3_Off(); } void ConErr (void)//误差控制包 { Header(); Code(0x03); Code(0x02); Code(0x03^0x02); LED3_Off(); } void RecPWR (void)//接收功率包 { Header(); Code(0x04); Code(0xff); Code(0x04^0xff); LED3_Off(); } int main (void) { sysinit(); SysTick_SetCallBack(SysTick_CallBack); delay_us(500); LED3_Init(); ping();delay_ms(10); id();delay_ms(10); config();delay_ms(50); while(1) { ConErr();//修改包数据可以改变功率 delay_ms(500); } }

把IO接到调制MOS管上,发射板就能持续供电了,说明通讯协议是对的,大家可以用其他开发板试一下,就能自己设计无线充电接收线圈了,

下次再用单片机设计一个无线充电发射板控制IC,难点主要是接收信号的处理和解码

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/124863.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月4,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档