首页/新闻资讯/正文详情

车载IGBT模块AQG324测试与功率循环可靠性验证

发布时间:2026/9/23 13:57:48 来源:云帆数科 栏目:资讯中心
车载IGBT模块AQG324测试与功率循环可靠性验证
简介面向新能源汽车电驱动系统开发场景聚焦车载电机控制器中IGBT模块的欧标AQG324测试要求这份资料适合电机控制器硬件工程师、功率模块测试工程师、可靠性工程师以及需要对接第三方认证的质保人员。内容围绕车规级IGBT模块的可靠性验证展开梳理高温反偏、高温栅偏、湿热高压、功率循环等关键测试项目并关联AEC-Q101等车规可靠性标准有助于理解考核流程、条件设置与失效判定思路。资源为PDF格式共1个文件压缩包约910KB便于直接查阅或归档。已有137人浏览学习适合刚接触车规认证或需要快速了解AQG324测试框架的读者。资料虽篇幅精简但主线清晰可作为车载电机控制器功率器件选型、可靠性评估及测试方案设计的参考索引帮助读者建立从标准要求到具体试验项目的对应关系。1. 车载电机控制器为什么需要AQG324做IGBT模块测试标准电机控制器内部就是“功率模块驱动电路控制板”的组合功率模块以IGBT为主。整车环境比工业变频器恶劣得多频繁启停、回馈制动、路面振动、冷却液温度随季节和工况波动。很多开发团队在样机阶段只做绝缘耐压、短时过流和温升测试等到整车路试时才暴露出键合线脱落、焊料层开裂、栅极氧化层退化等隐性失效。欧标AQG324是针对车用功率半导体模块的认证测试规范它把可靠性验证拆解成可执行的测试项目、样本方法和判定条件。下文面向电机控制器硬件、可靠性和测试工程师讲清AQG324怎么读、测试计划怎么写、功率循环怎么做、数据怎么反推散热。2. AQG324核心测项功率循环、反偏测试与失效模型2.1 测试项目不是“一条一条过”而是分层AQG324把功率模块认证测试分成“寿命相关测试”和“环境验证测试”两大类。寿命相关测试主要模拟功率半导体在实际工况中的热、电应力包括功率循环、温度循环、高温反偏、高温栅极偏置等。环境验证测试则侧重于机械和外部环境比如振动、冲击、恒定湿热这些对电机控制器在整车上的安装状态同样关键。AQG324本身是欧洲电力电子中心ECPE发布的技术指南它不是强制法规但几乎所有欧洲车规功率模块供应商都把通过AQG324作为交付条件。很多整车厂还把AQG324的测试项引用到自己的零部件测试规范中所以它实际承担了“欧标”的角色。下面列出常见的核心测项便于对照自己的测试资源。测试项缩写主要模拟对象常关注参数功率循环秒级PCsec牵引电机高频启停引起的结温快速波动ΔTj、Tjm、循环次数功率循环分钟级PCmin爬坡、长时间行驶导致的冷却液和散热器温升ΔTj、Tavg、Tcase温度循环TC环境温度变化和冷却液温度变化环境温度、循环次数高温反偏HTRB关断状态下承受母线电压母线电压、Tvj、时长高温栅极偏置HTGB栅极氧化层在高温和电压下的稳定性栅极电压、Tvj、时长高湿高压反偏H3TRB/THB潮湿环境下的漏电和电化学迁移湿度、电压、温度上表只是把每个测试项的目的和主要观察点列出来。实际执行时温度、电压、时间不是孤立设定的需要从电机控制器的任务剖面和IGBT模块的数据手册里取。比如HTRB的电压一般按IGBT阻断电压的80%选取而功率循环的负载电流则要能产生足够大的结温波动不能只拿额定电流。2.2 功率循环的物理本质与寿命模型功率循环是AQG324里最能反映车载电机控制器实际情况的测项。它的本质是给IGBT模块通一个大电流靠导通损耗把结温加热到目标值然后关断电流让模块通过冷却液冷却。重复这个过程让模块内部材料反复承受应力和应变。由于硅、铜、铝、焊料等材料的线膨胀系数不同每次升温降温都会在键合线、芯片背面焊料层和铜基板之间产生剪切应力最终造成疲劳失效。秒级功率循环PCsec的加热时间在1到5秒冷却时间10到30秒结温波动幅度可以做到80到100K主要疲劳位置是键合线。分钟级功率循环PCmin的加热时间可能是几分钟到几十分钟主要考验芯片底部焊料层和基板铜层。电机控制器里两类工况都存在堵转或急加速时秒级电流冲击频繁持续大扭矩爬坡时又会出现分钟级的热积累。寿命预测一般用Coffin-Manson型公式常见形式N_f A · ΔTj^{-α} · exp( Ea / (k_B · Tjm) )N_f 是失效循环数ΔTj 是结温波动幅度Tjm 是整个循环中的平均结温或最大结温α 通常在2到5之间Ea 是与失效机理相关的激活能键合线疲劳的Ea大约在0.5到0.7eV。这个公式是用来做外推的如果样机在ΔTj100K下测出10万次失效那么在ΔTj70K的整车工况下寿命会显著变长但比值不是线性关系需要用对数坐标看。功率循环的数据记录不能只记循环次数。每个循环周期里还要采样Vce(sat)、散热器温度、模块壳温必要时用虚拟结温法计算ΔTj。常见的工程判据是盯住饱和压降Vce的变化率当它比初始值增加5%左右时就可以认为模块接近寿命终点。具体阈值需要参考AQG324条款、供应商协议和相关失效分析报告这里只说通用逻辑。2.3 反偏与栅极偏置测试为什么会失效高温反偏HTRB是在模块全部处于关断状态时把母线电压加到接近额定值并在高温下保持数百小时。这个测试逼着IGBT芯片内的电场长期承受高温和高偏压。同时在模块表面和封装内部离子迁移效应也会逐渐增强如果芯片终端设计不好漏电流将明显上升。电机控制器在整车运行时母线电压并不固定刹车回馈时会出现高于电池电压的过冲HTRB相当于把这部分应力单独抽出来做加速考核。高温栅极偏置HTGB则针对驱动电压对栅极氧化层的影响。IGBT栅极氧化层比低压MOS厚但这不代表它没有缺陷。持续加在栅极上的正电压或负电压会在氧化层里建立电荷陷阱陷阱密度升高后阈值电压会漂移栅极漏电也会变大。对电机控制驱动电路来说阈值电压漂移会改变开关时刻严重时导致上下管直通。栅极偏置测试常分为正栅压和负栅压两种正栅压模拟IGBT常通状态负栅压模拟关断状态下驱动电路给出的负压。测试后需要对比阈值电压Vge(th)、栅极漏电Iges和米勒平台电压的变化。如果阈值电压漂移超过初始值的20%基本可以判定栅极氧化层出了问题。测这些参数时漏电流表的量程至少要能分辨纳安级别否则模块本底噪声会掩盖真实退化。3. 按AQG324设计车载IGBT模块测试计划3.1 从数据手册里读出初始条件做测试计划前先要把被测IGBT模块的数据手册当输入条件。以典型的750V/600A车规IGBT模块为例先确认最大结温Tvjop、封装热阻RthJC、连续直流额定电流和Vce(sat)随结温变化的曲线。功率循环的加热电流要能在一个可控时间内把结温推到目标值。如果只看数据手册上的额定电流600A不结合散热条件可能几秒钟就把模块烧掉也可能永远推不到目标ΔTj。我一般先按模块的热阻和目标ΔTj估算初始加热电流。假设目标ΔTj80K模块的RthJC约为0.15 K/W那么需要产生的损耗约P_loss ΔTj / RthJC ≈ 533W。再根据Vce(sat)在150°C时约1.8V得到加热电流约I P / Vce ≈ 296A。这个数值低于额定电流具体还要看冷却液温度、流量和当前壳温。计算时要注意RthJC是芯片到壳体的热阻散热器到冷却液的热阻要单独考虑。不能把测试台架上的铝散热器当成整车的水冷板否则数据差很多。选择冷却液温度时也要按电机控制器的真实工作范围来找。常见的车用功率模块测试条件冷却液温度会定在65°C或90°C目的是让Tjm接近数据手册允许的最大工作结温150°C循环应力最大失效时间相对短。如果冷却液温度偏低模块散热太好ΔTj上不去测试就变得不痛不痒。3.2 样本数量和验收判据怎么定AQG324对样本数量的要求是“最少3个模块”用于寿命类测试但实际认证和预研阶段建议留出余量。工程上常按每组5个模块来做3个跑寿命2个做中途性能检测防止中途测量损坏样本。如果样品只有3个其中1个在测试中意外损坏就很难判断是验证失败还是操作失误。测试计划中需要给出的不只是样本数还有每个阶段要测的参数。下面是一个简化但完整的功率循环计划示例可以在写内部测试大纲时直接借用。测试项样本数条件示例监测参数验收判据初始电性能525°CVce、Vge(th)、Ices、Rth记录基线各项符合数据手册秒级功率循环3Tcool65°CΔTj90Kton2stoff8sVce、Tcase、ΔTj10万次后Vce上升5%分钟级功率循环3Tcool65°CΔTj70Kton90stoff120s热阻、Tcase5万次后Rth增加20%离线电性能复查525°C重复初始测试与基线对比阈值漂移5%上表中的“ΔTj90K”和“10万次”是常用参考值不是AQG324原文的强制值。很多供应商会依据内部失效模型和客户需求调整循环次数。写测试计划时一定要把测量设备和校准偏差也写进去否则最终报告里的Vce数值会有小数点后两位的争议。3.3 测试台架的最小系统用脚本控制循环并记录数据功率循环测试台架的最小系统包括直流电源、IGBT驱动器、温度采集板、水冷循环装置和上位机。直流电源给IGBT提供加热电流驱动板负责通断温度采集板记录壳温和散热器温度。最简单的控制方式是用上位机脚本完成“加热-冷却-记录”的状态机。下面给一个用Python描述的状态机骨架实际工程中会在这段代码的基础上对接自有采集设备import time import csv heating_time 2.0 # 加热时间单位秒 cooling_time 8.0 # 冷却时间单位秒 target_delta_t 90.0 # 目标结温波动单位K def read_temperature(): # 返回壳温/散热器温度由传感器采集得出 return 65.0 def set_heating(on): # 控制驱动板使能IGBT导通由GPIO或PLC完成 pass def calculate_delta_tj(t_case, vce): # 用Vce(T)曲线换算结温返回结温波动 return target_delta_t with open(pc_cycle.csv, w) as f: writer csv.writer(f) writer.writerow([cycle, vce, t_case, delta_tj]) for cycle in range(1, 100001): set_heating(True) time.sleep(heating_time) vce measure_vce() # 实际采集模块饱和压降 t_case read_temperature() delta_tj calculate_delta_tj(t_case, vce) set_heating(False) time.sleep(cooling_time) writer.writerow([cycle, vce, t_case, delta_tj]) if cycle % 1000 0: print(fcycle {cycle}, vce{vce}, delta_tj{delta_tj})代码里的set_heating是占位调用在试验台上可能是控制交流接触器或高压直流继电器的信号。measure_vce需要实际在导通期间用隔离放大器采集采样时刻必须放在加热阶段的中段等电流稳定后再读否则会混入电流建立过程中的压降尖峰。calculate_delta_tj通常不用代码里的固定值而是通过Vce(T)校准曲线换算传统上用一个固定的校准电流在导通末尾测Vce再对照数据手册曲线反查结温。冷却时间的设置也有讲究。如果冷却时间过短下一次加热前结温还没回到初始值环境温度会缓慢爬升导致ΔTj逐渐变大最终脱离目标工况。所以控制脚本里除了定时还要有一个安全逻辑当壳温超过设定上限时就强制停止加热并记录异常。不然循环跑了一个通宵早上来看到的数据全是因冷却失效而漂移的结果。4. 车载IGBT模块功率循环测试中的驱动与测控4.1 栅极驱动电路中的推挽、米勒平台和负压关断IGBT是电压驱动型器件但驱动电路不能像普通三极管那样只给一个基极电流。栅极信号要能快速给栅极电容充放电还要在开关瞬间扛住米勒平台的电压稳定。常见做法是用两级三极管做成推挽结构上管负责给栅极电容充电下管负责放电配合栅极电阻RG能控制开关速度。测试台上的IGBT驱动电路应该尽量复刻量产电机控制器的驱动参数。比如栅极电阻选2.5Ω时开关速度快、开关损耗小但关断瞬间的di/dt很高可能在母线寄生电感上产生尖峰电压。栅极电阻选10Ω时尖峰小一点开关损耗却上去了。功率循环测试关注的是导通期间的损耗和温度应力但开关损耗变化会影响平均壳温进而影响ΔTj的稳定性所以不能小看这个参数。参数常用范围影响栅极正电压15V ~ 18V越高Vce越低但栅极氧化层应力越大栅极负压-8V ~ -10V防止关断时dv/dt误开通负压过大加速栅极退化栅极电阻RG2.2Ω ~ 10Ω影响开关速度和EMI米勒钳位可选抑制桥臂中管子的米勒电流对功率循环测试而言负压特别重要。测试中母线电压可能达到300V以上冷却过程中IGBT处于关断状态此时如果驱动负压不足集电极dv/dt会通过米勒电容耦合到栅极造成动态误开通。一旦上下桥臂直通模块还没跑到目标循环数就直接炸掉。测试台上一定要用示波器实时监测栅极电压在关断瞬间是否有超过Vge(th)的毛刺。4.2 用DSP28379搭一个轻量级测控循环实际做功率循环控制时上位机脚本只负责慢速记录快速通断还是需要单片机或FPGA来做。DSP28379在电机控制器领域用得很多拿它做测试测控也很顺手。下面是一段基于DSP28379的功率循环控制框架用GPIO控制IGBT驱动使能用片内ADC读取NTC温度用定时器中断切换加热/冷却状态。// 功率循环状态机常量 #define HEATING_MS 2000 // 加热2秒 #define COOLING_MS 8000 // 冷却8秒 #define TEMP_LIMIT 120 // 壳温上限单位℃ volatile Uint32 cycleCount 0; volatile Uint16 phase 0; // 0加热, 1冷却 // 定时器0中断周期1ms interrupt void timer0_isr(void) { Uint16 temp readNtcTempFromADC(); static Uint32 phaseTimer 0; if (temp TEMP_LIMIT) { GPIO_Write(GPIO_IGBT_EN, 0); // 超温立即断开IGBT phase 0; return; } if (phase 0 phaseTimer HEATING_MS) { GPIO_Write(GPIO_IGBT_EN, 0); // 加热结束进入冷却 phase 1; phaseTimer 0; } else if (phase 1 phaseTimer COOLING_MS) { GPIO_Write(GPIO_IGBT_EN, 1); // 冷却结束重新加热 phase 0; phaseTimer 0; cycleCount; } phaseTimer; }代码里的readNtcTempFromADC读的是模块底部的NTC热敏电阻不是结温因此它只作为安全保护。真正的ΔTj控制还要在上位机根据Vce换算DSP的任务是确保通断时序稳定。GPIO_IGBT_EN控制的不是IGBT栅极直接信号而是驱动板的使能端这样可以在紧急情况下把整个驱动板断电防止故障扩大。定时器中断周期不能选太短比如1ms控制继电器开关已经足够如果加热时间只有200ms中断周期就要到50us才够分辨。定时器中断里也不要放浮点运算否则中断超时会严重影响时序。把状态切换放在中断里数据记录放到后台这一点和电机控制算法里的控制周期调度逻辑类似。4.3 结温测量到底信Vce还是信热仿真功率循环测试的难点是不知道芯片结温真实结温只能通过热敏感参数间接测量。比散热器温度更接近芯片的是模块内部的NTC但NTC在模块里离IGBT芯片有一段距离时间常数很大。用红外热像仪可以看整体温度分布但需要拆掉灌封胶只能用于前期摸底。因此工程上最常用的依然是Vce(T)法在加热阶段末用一个小电流替代大电流测量饱和压降再根据校准曲线换算成结温。Vce(T)法的关键是要避开大电流关闭后的电压瞬时突变。测试中先让大电流稳定导通数秒在关断前几十微秒内切到测量用小电流并采样压降。切换瞬间电流变化大采样必须延迟到电流稳定。更有经验的做法是开通2秒后在最后20%时间内用差分电压隔离放大器连续采样并取中间一段平均值。加热阶段最后100us 1. 关闭大电流源 2. 开启小电流源如100mA 3. 等待20us采集Vce 4. 立即关闭小电流源开启大电流源继续下一周期这个序列如果用DSP实现需要把电流源切换和ADC触发做成硬件同步不能靠软件延时否则时间抖动会引入几十毫伏误差。换算结温时要预先在不同温度下用恒温箱校准模块的Vce与小电流的关系而不是直接使用数据手册里的典型曲线。手册曲线通常是多模块的统计数据和手上样品有差异。校准温度点至少取25°C、75°C、125°C三点做二次拟合误差能控制在5K以内。5. 用AQG324思路快速筛查IGBT模块散热与键合线寿命在实际开发中不一定每次都要跑完完整AQG324那太费样机和时间。更常用的技巧是用AQG324里的功率循环核心逻辑做一个“预筛查”把ΔTj调到100K以上把加热时间缩短到1秒左右跑几千个循环然后用Vce变化率来快速判断模块的散热设计够不够。这样做的前提是选择相同的封装工艺和相近的冷却条件否则不能直接外推。我先看Vce的变化率。如果前5000次循环里Vce上升小于2%说明键合线健康状况良好。如果每1000次循环Vce上升超过1%就要警惕键合线根部出现微裂纹。为什么看Vce呢因为键合线断裂或截面缩小时导通电流路径截面变小饱和压降随之增大。Vce变化率比直接量热阻更敏感而且测量简单。只要在相同电流、相同壳温下定期停下来测Vce就能跟踪模块内部退化。这个筛查方法可以直接对应到电机控制器的散热设计上如果发现某批IGBT模块在循环中Vce快速上升优先检查水冷板流道设计并利用功率循环数据修正热仿真模型。例如把散热器到冷却液的热阻RthCH做成关于流量的函数再用数据反算回结温而不是固定用一个常数。下表是可以直接用的经验阈值取自工程实践具体以材料验证结果为准。筛查指标当前阶段关注阈值建议动作Vce上升率0-1000次循环1%通过继续测试Vce上升率1000-5000次循环2%关注散热系统轻微差异Vce上升率5000-20000次循环5%密切跟踪准备整改热阻相对变化任意阶段20%检查焊料层扩展疲劳设计高速筛查时冷却液温度要刻意提高让ΔTj容易上去同时减小实验时间。比如冷却液温度从65°C提到85°C同样加热电流下ΔTj会增大加速效果明显。但整个过程要保护好栅极驱动不要让壳温超过模块允许上限。如果模块在100K循环下不失效再回到80K跑满一个常规AQG324功率循环整个测试规划会更有说服力。最后一个技巧记录每个循环的Vce初始值和结束值用一阶指数拟合外推失效点。比如数据在第1万次时Vce上升3%拟合结果显示在第6万次会到5%那就可以在正式认证前预留一个降额空间。这个做法对电机控制器开发者最直接的价值是提前发现批量问题而不是等整车场测触发过流故障。本文还有配套的精品资源点击获取

相关推荐

中标麒麟linux环境配置踩坑全记录,附完整示例
中标麒麟linux环境配置踩坑全记录,附完整示例

中标麒麟linux环境配置踩坑全记录,附完整示例 刚接手国产服务器项目,最让人头大的就是环境配置。明明在CentOS上跑通的脚本,一到中标麒麟Linux就报错,折腾半天还是没搞定。这种“配置环境就卡半天”的经历,相信很多从国外Linux转战… · 2026/9/23 13:57:35

Spring Boot毕设选题平台:从工程恢复到部署避坑全解析
Spring Boot毕设选题平台:从工程恢复到部署避坑全解析

简介:面向高校毕业设计管理场景的完整Web选题平台项目,以Java后端与Vue前端实现,覆盖课题发布、浏览选择、审核、管理全流程,并引入人工智能算法优化选题推荐,适合计算机相关专业学生作为毕设参考或课程设计。压缩包内… · 2026/9/23 13:57:35

C语言extern加不加有什么区别?一文讲透声明与定义
C语言extern加不加有什么区别?一文讲透声明与定义

C 语言群里,每隔几天就会冒出一个类似的问题:为什么头文件里写了extern int x;,另一个文件里写int x 5;,有时候能编译过,有时候报重复定义?还有人问得更直接——加 exten 和不加 exten 到底有什么区别&… · 2026/9/23 13:57:35

3个维度拆解手机充电桩:从协议到落地的实战项目选型指南
3个维度拆解手机充电桩:从协议到落地的实战项目选型指南

3个维度拆解手机充电桩:从协议到落地的实战项目选型指南 你是不是也卡在这里?Python语法背得滚瓜烂熟,LeetCode刷了几百道,但真让你做一个能跑起来的 实战项目 ,脑子里全是浆糊。… · 2026/9/23 17:53:53

水塔水位控制器手写实现优化:从卡顿到丝滑的实战复盘
水塔水位控制器手写实现优化:从卡顿到丝滑的实战复盘

水塔水位控制器手写实现优化:从卡顿到丝滑的实战复盘 很多刚入行嵌入式或者物联网开发的朋友,手里攥着《C语言程序设计》或者《Python编程:从入门到实践》,语法背得滚瓜烂熟,一碰到实际项目就傻眼。特别是做水塔水位控制器这种硬件逻辑时,发现代… · 2026/9/23 17:53:40

RecRecNet深度学习畸变矫正实战:推理、训练与部署指南
RecRecNet深度学习畸变矫正实战:推理、训练与部署指南

简介:基于RecRecNet深度网络实现广角图像畸变矫正,所附Python源码适用于高校计算机相关专业学生与教师,可支撑毕业设计、课程设计及初学进阶。压缩包共26个文件,主要包含py源码、C辅助工具、Shell脚本、Markdown说明与示例图片&am… · 2026/9/23 17:53:40

3个技巧搞定顶上性能优化,高频面试题全解析
3个技巧搞定顶上性能优化,高频面试题全解析

3个技巧搞定顶上性能优化,高频面试题全解析 版本升级后 API 全变了,代码跑不通、性能还卡顿,这是无数开发者深夜崩溃的真实写照。更扎心的是,当你试图修复时,发现连基本的性能瓶颈都定位不准。别慌,今天不聊虚的,直接拆解“顶上”这个看似简单却… · 2026/9/23 17:53:40

ASP.NET Boilerplate 迁移到 MySQL:EF6 与 ASP.NET MVC 5.x 完整集成指南
ASP.NET Boilerplate 迁移到 MySQL:EF6 与 ASP.NET MVC 5.x 完整集成指南

后端Web框架依赖注入认证鉴权 【免费下载链接】aspnetboilerplate ASP.NET Boilerplate - Web Application Framework 项目地址: https://gitcode.com/gh_mirrors/as/aspnetboilerplate 点击查看 免费下载 ASP.NET Boilerplate 的官方免费启动模板默认针对 SQL Ser… · 2026/9/23 17:53:33

阶乘算法核心:小T的魔法数字与末尾零计数法
阶乘算法核心:小T的魔法数字与末尾零计数法

开学第一周,ACM社团的新生群里就炸开了锅,好几个大一小朋友都在刷同一道题:ZZULIOJ 2871,题目名很唬人,叫“小T的魔法数字”,标签是“阶乘算法(大一水平)”。说实话,光看… · 2026/9/23 17:53:27

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码