切换到宽版
爱科技/爱创意/爱折腾/爱极致;技术知识分享平台,点击进入新版数码之家网站
  • 38685阅读
  • 13回复

[电源]DIY无线充电器接收端电路,QI协议无线充电器诱骗器 [复制链接]

上一主题 下一主题
离线yhj416606438
 

发帖
564
M币
8888
专家
14
粉丝
66
只看楼主 倒序阅读 我要置顶 楼主  发表于: 2018-02-04
之前在淘宝上用淘金币买了一块无线充电的发射板,由于当时不知道无线充电还有QI协议,所以认为买回来做一个线圈就能接收电能了,主控是IDTP9035


买回家用自绕的线圈测试,发现LED是间隙闪烁,占空比非常低,当时以为坏了,后来查手册才知道接收端通过线圈发射信号给发射端有点类似有RFID,所以感觉被坑了,本来想买一接收板的,但是觉得没必要,自己应该也能做一个出来,然后通过查数据手册和相关的QI协议资料终于弄明白是咋回事了,最终成功让无线发射板持续稳定的供电,下图是用单片机去驱动控制板在驱动线圈可以长时间点亮LED不熄灭,单片机和控制板都是线圈供电


下面就简单的讲一下QI协议吧,或者可以看百度文库,https://wenku.baidu.com/view/f9600a96336c1eb91a375ded.html 讲的很详细,还可以参见英文版QI协议


这两个是驱动电路,我用的是电阻调制电路


这个编码格式采用差分双相编码,频率2KHz


这个单个数据格式,一共有11位,偶校验






这个包格式
前导: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;
    }

    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(0x71^0x10^0x00^0x01^0x00^0x01^0x00^0x00);
    LED3_Off();
}
void config (void)//配置包
{
    Header();
    Code(0x51);
    Code(0x0a);
    Code(0x00);
    Code(0x00);
    Code(0x00);
    Code(0x00);
    Code(0x51^0x0a^0x00^0x00^0x00^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);
        }
}
这个代码没有话,没有进入睡眠模式,电路方面全桥整理效率也比较低,这次主要是为了熟悉QI协议而做的实验




[ 此帖被yhj416606438在2018-02-05 10:47重新编辑 ]
本文内容包含图片或附件,获取更多资讯,请 登录 后查看;或者 注册 成为会员获得更多权限
本帖最近打赏记录:共2条打赏M币+23
听雨亭 M币 +8 謝謝分享 2018-11-09
liufabing M币 +15 優秀文章,原創內容 2018-08-11
离线jjd99699

发帖
883
M币
2025
专家
0
粉丝
2
只看该作者 1楼 发表于: 2018-02-04
请登录后查看

发帖
16077
M币
7554
专家
263
粉丝
240
只看该作者 2楼 发表于: 2018-02-04
请登录后查看
离线asiafox

发帖
9293
M币
652
专家
2
粉丝
51
只看该作者 3楼 发表于: 2018-02-04
请登录后查看
离线orsonzou

发帖
1402
M币
2729
专家
39
粉丝
178
只看该作者 4楼 发表于: 2018-02-04
请登录后查看
离线yhj416606438

发帖
564
M币
8888
专家
14
粉丝
66
只看该作者 5楼 发表于: 2018-02-04
回 orsonzou 的帖子
请登录后查看
离线2545889167

发帖
13268
M币
20754
专家
302
粉丝
4860
只看该作者 6楼 发表于: 2018-02-04
请登录后查看
离线温力口

发帖
60313
M币
51283
专家
569
粉丝
908
只看该作者 7楼 发表于: 2018-02-04
请登录后查看
[ 此帖被温力口在2018-02-04 18:20重新编辑 ]
离线yhj416606438

发帖
564
M币
8888
专家
14
粉丝
66
只看该作者 8楼 发表于: 2018-02-04
请登录后查看
离线dralausky

发帖
3176
M币
10636
专家
8
粉丝
35
只看该作者 9楼 发表于: 2018-02-04
请登录后查看
快速回复
限80 字节
“新手上路”发帖需审核后才能显示(请认真发帖),达到数码9级后取消此限制
 
上一个 下一个