news 2026/6/1 0:06:08

基于INA219与Arduino的高精度直流功率计设计与校准指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于INA219与Arduino的高精度直流功率计设计与校准指南

1. 项目概述

在嵌入式硬件开发,尤其是涉及电源管理、电池充放电监控或者电子负载测试的项目里,精确测量电压、电流和功率是绕不开的基础需求。过去,我们可能习惯用单片机的ADC引脚配合分压电阻测电压,再用一个采样电阻配合运放把电流信号转换成电压来测,这套方案听起来简单,但实际做起来,精度、温漂、量程和隔离问题一大堆,调起来非常头疼。特别是当你需要测量双向电流(比如电池充电和放电)时,电路设计会更复杂。

最近在做一个太阳能充电控制器的原型,正好需要高精度地监测电池的电压、充放电电流以及瞬时功率。市面上常见的ACS712这类霍尔传感器,在小电流下的精度和线性度总让我不太放心,而自己用精密电阻搭差分放大电路,又得考虑运放的失调电压和温漂,校准起来相当麻烦。后来发现了TI的INA219这颗芯片,它把高侧电流采样、可编程增益放大器和16位ADC都集成在了一起,通过I2C直接输出数字量,精度号称能达到±0.2%。DFRobot基于这颗芯片做的模块,还把精密的采样电阻和电平转换都做好了,即插即用,这简直就是为我们这种想快速验证想法又追求精度的开发者准备的。

这个项目,我就以这块INA219模块为核心,搭配最常见的Arduino Nano和一块I2C接口的LCD屏,打造一个即直观又高精度的直流功率计。整个过程从硬件连接、PCB整合设计,到软件编程和最重要的传感器校准,我都会详细拆解。无论你是想监控你的机器人主板的功耗,还是想为你的DIY充电宝做一个精准的电量计,这套方案都能给你提供一个可靠的起点。

2. INA219模块深度解析与选型考量

2.1 为什么选择INA219而非其他方案?

在决定使用INA219之前,我对比过几种常见的电流测量方案,每种都有其明显的优缺点。

分压电阻+通用ADC方案:这是最原始的方法。在负载回路中串联一个毫欧级的小阻值采样电阻,测量其两端的压降,再利用欧姆定律计算电流。问题在于,这个压降信号通常很小(例如,10A电流流过10mΩ电阻,压降仅100mV),极易被噪声淹没。你需要一个高精度、低失调的仪表放大器来放大这个微小信号,然后再送给ADC。整个电路的精度取决于采样电阻的精度和温漂、运放的性能以及ADC的基准电压稳定性,任何一个环节都会引入误差,且无法测量双向电流,除非搭建复杂的正负电源供电电路。

霍尔效应传感器(如ACS712):这类传感器通过磁场感应电流,实现了电气隔离,这是它的巨大优势,适合测量大电流或需要隔离的场合。但其劣势也很突出:首先,它通常存在一个“零点偏移”,即没有电流时输出一个中间电压(如2.5V),需要软件补偿;其次,在小电流量程下(如±5A),其灵敏度和线性度往往不佳,温度漂移也比专用芯片大;最后,它仍然是模拟输出,需要占用一个ADC通道,精度受限于Arduino内置ADC(通常10位)的性能。

专用数字功率监测芯片(INA219):这类芯片将高精度采样电阻、可编程增益放大器(PGA)、高分辨率ADC以及数字接口全部集成。以INA219为例,它直接测量总线电压和采样电阻上的分流电压,内部进行计算,通过I2C接口直接输出已经过处理的电压、电流、功率数值。其优势是显而易见的:

  1. 高集成度:外围电路极其简单,几乎不需要额外的元器件。
  2. 高精度:内部16位ADC,配合低温漂的精密采样电阻,可实现高达±0.2%的典型误差。
  3. 双向电流测量:芯片设计支持正负电流测量,轻松区分充电和放电状态。
  4. 数字接口:I2C接口抗干扰能力强,节省单片机IO口和ADC资源。
  5. 内置计算:直接提供功率值,减轻了MCU的运算负担。

对于大多数精度要求较高的直流低压(<26V)应用,INA219这类数字方案在易用性、精度和成本之间取得了最佳平衡。

2.2 DFRobot INA219模块关键规格与硬件剖析

我使用的DFRobot Gravity系列INA219模块,可以看作是官方评估板的“产品化”版本,做了很多优化。

核心芯片:德州仪器(TI)的INA219B。这个“B”后缀很重要,它代表了更宽的工作温度范围和更高的精度等级。芯片本身负责最核心的模拟信号采集和数字化。

采样电阻:这是精度的心脏。模块使用了一颗2W功率、10mΩ的合金采样电阻。2W的功率裕量确保了在测量大电流(如8A)时,电阻自身发热导致的阻值变化(温漂)被控制在极低水平。合金材料本身也具有很低的温度系数。你可能会想,10mΩ这么小,压降更小了(80mV@8A),岂不是更难测量?这正是INA219内部PGA的用武之地,它可以选择最高8倍的增益,将这个微小信号放大到适合内部ADC的量程。

电平转换与地址选择:模块集成了I2C电平转换电路,这意味着无论是3.3V还是5V的微控制器系统,都可以直接连接,无需担心逻辑电平不匹配。模块上还有一个2位的DIP拨码开关,用于设置4个不同的I2C地址(0x40, 0x41, 0x44, 0x45)。这个设计非常实用,当你的系统需要同时监测多路电源时(比如主板上的3.3V、5V、12V轨),可以挂载多个INA219模块而不会地址冲突。

电气参数解读

  • 电压量程:0-26V。这个电压是相对于模块GND的总线电压。注意,模块的VCC供电是3.3V-5.5V,这是给芯片本身供电的,与被测总线电压是隔离的。
  • 电流量程:±8A。双向,连续测量。采样电阻是10mΩ,根据欧姆定律,满量程8A时,分流电压为80mV。INA219内部ADC的分辨率足以分辨1mA的电流变化。
  • 精度:<±0.2%(典型值)。这是相对误差,比如测量1A电流,误差在±2mA以内。但请注意,要达到这个精度,校准是必不可少的步骤,这也是后面要重点讲的。

注意:模块的测量是“高侧”测量,即采样电阻串联在电源的正极路径中。这意味着模块的GND和负载的GND之间,会有一个采样电阻的压降(虽然很小)。在有些对地电位极其敏感的应用中需要注意。对于绝大多数情况,这个压降(最大80mV)可以忽略不计。

3. 系统硬件设计与PCB整合

3.1 最小系统电路连接

对于快速原型验证,使用杜邦线连接是最快的。整个系统的连接基于I2C总线,非常简洁。

  1. 电源连接

    • 将Arduino Nano通过USB线连接到电脑供电。
    • 将INA219模块的“VCC”和“GND”分别连接到Arduino的“5V”和“GND”。这为模块的数字部分供电。
    • 将LCD屏的“VCC”和“GND”也连接到Arduino的“5V”和“GND”。
  2. I2C总线连接

    • Arduino Nano的I2C引脚是:A4 (SDA)A5 (SCL)
    • 将INA219模块的“SDA”和“SCL”分别连接到Arduino的“A4”和“A5”。
    • 将LCD屏的“SDA”和“SCL”也分别连接到Arduino的“A4”和“A5”。
    • 至此,两个设备并联在了同一条I2C总线上。
  3. 被测电路连接

    • INA219模块有“IN+”和“IN-”两个端子。测量时,需要将你的电源正极接到模块的“IN+”,将模块的“IN-”接到负载的正极。电源的负极和负载的负极直接相连,并连接到系统的公共GND(即Arduino的GND)。这样就构成了一个完整的测量回路。

实操心得:在连接被测电源时,务必先确认电压在模块的0-26V安全范围内。首次上电建议先用一个可调电源,从低电压(如5V)和小电流(如100mA)开始测试。I2C总线上建议在SDA和SCL线上各加一个4.7kΩ的上拉电阻到5V,虽然模块和LCD屏内部可能已有上拉,但加上外部上拉能使通信更稳定,尤其是在总线较长或设备较多时。

3.2 定制PCB设计思路与要点

为了提升项目的可靠性和美观度,我设计了一块集成底板(Shield)。这块PCB的核心思想是将Arduino Nano、INA219模块和LCD屏通过板对板接插件固定在一起,形成一个整体,避免杜邦线松动带来的问题。

设计要点解析

  1. 供电设计

    • Arduino Nano的Vin引脚可以接受7-12V的直流输入,并通过板载稳压器产生5V。
    • 在PCB上,我设计了一个DC插座和螺丝端子,用于接入外部7-12V电源(如电池或适配器)。此电源直接连接到Nano的Vin引脚。
    • 从Nano的5V引脚引出,作为整块板子的5V电源总线,为INA219模块和LCD屏供电。这样,只需要一个外部电源,就能驱动整个系统。
  2. 测量接口设计

    • 为了便于连接被测电路,我在PCB边缘放置了一对大电流的螺丝端子,分别标记为“PWR_IN+”和“LOAD+”。它们内部直接与INA219模块的“IN+”和“IN-”焊盘相连。
    • 同时,将系统的“GND”也引出到螺丝端子,方便连接电源和负载的负极。
  3. I2C总线与地址冲突解决

    • Arduino的A4、A5、5V、GND通过排母引出。
    • INA219模块和LCD屏的I2C引脚都直接连接到这组总线。
    • 这里有一个关键细节:LCD屏的I2C地址通常是0x27(也可能0x3F),而INA219模块通过拨码开关可以设置为0x40-0x45。必须确保这两个地址不同。我的设计中,将INA219的地址开关预留了出来,并建议用户将其设置为与LCD不同的地址(例如0x44)。
  4. 布局与布线考量

    • 大电流路径:从“PWR_IN+”螺丝端子到INA219的“IN+”,再到其“IN-”,最后到“LOAD+”端子,这条路径是承载被测电流的。在PCB布局时,我特意加粗了这条走线(宽度>2mm),以减少导线电阻和发热,确保测量精度。
    • 信号隔离:模拟测量部分(INA219的输入端)和数字部分(I2C走线、电源)适当分开,避免数字噪声干扰微弱的模拟信号。
    • 去耦电容:在Arduino的5V输出端、INA219的VCC引脚附近,都放置了100nF的陶瓷去耦电容,以滤除电源噪声。

PCB打样建议:像这样的简单双层板,嘉立创、捷配等国内厂商都能以极低的成本(甚至免费)快速打样。发送Gerber文件前,务必用查看器软件进行3D预览,检查器件封装是否正确,特别是接插件和螺丝端子的孔位。

4. 软件编程与库函数详解

4.1 库的安装与初始化

Arduino生态的优势在于丰富的库支持。这个项目需要两个库:LiquidCrystal_I2C用于驱动LCD,DFRobot_INA219是DFRobot为自家模块封装的专用库,它简化了底层配置。

在Arduino IDE中,点击“工具”->“管理库”,搜索并安装这两个库。初始化代码如下:

#include <Wire.h> // Arduino I2C库,必须包含 #include "DFRobot_INA219.h" #include <LiquidCrystal_I2C.h> // 根据模块上拨码开关的位置,选择正确的I2C地址 // 例如,开关A1=0, A0=1,则地址为0x41 DFRobot_INA219_IIC ina219(&Wire, INA219_I2C_ADDRESS4); // 这里我用了0x45地址 // 初始化LCD,地址0x27,16字符2行 LiquidCrystal_I2C lcd(0x27, 16, 2); // 校准参数,初始值,后续通过校准流程确定 float ina219Reading_mA = 1000.0; // INA219原始读数 float extMeterReading_mA = 1000.0; // 万用表实际读数

关键点

  • Wire库是I2C通信的基础,必须包含。
  • 创建ina219对象时,第二个参数是I2C地址。务必与模块硬件拨码开关的设置一致,否则无法通信。你可以先运行Arduino IDE自带的I2C Scanner示例代码,扫描总线上所有设备的地址。
  • LCD地址也需要确认,常见的是0x270x3F

4.2 主程序逻辑与数据读取

setup()函数中,我们需要初始化串口、LCD和INA219传感器。

void setup(void) { lcd.init(); // 初始化LCD lcd.backlight(); // 打开背光 lcd.setCursor(3, 0); lcd.print("Precision"); lcd.setCursor(3, 1); lcd.print("Wattmeter"); delay(2000); // 显示启动信息2秒 lcd.clear(); // 清屏准备显示数据 Serial.begin(115200); // 初始化串口,用于调试和校准 while (!Serial); // 等待串口连接(对于某些板卡需要) // 尝试初始化INA219,如果失败则报错 while (ina219.begin() != true) { Serial.println("INA219 begin failed! Check wiring and I2C address."); lcd.clear(); lcd.print("Sensor Error!"); delay(2000); } Serial.println("INA219 init success!"); // 应用线性校准参数(校准时使用,正常使用时注释掉或参数固定) // ina219.linearCalibrate(ina219Reading_mA, extMeterReading_mA); }

begin()函数会配置INA219内部的寄存器,设置默认的量程和转换时间。如果返回false,最常见的原因是I2C地址错误或接线问题。

数据读取在loop()中循环进行,非常简单:

void loop(void) { float busVoltage_V = ina219.getBusVoltage_V(); // 读取总线电压,单位伏特 float shuntVoltage_mV = ina219.getShuntVoltage_mV(); // 读取分流电阻电压,单位毫伏 float current_mA = ina219.getCurrent_mA(); // 读取电流,单位毫安 float power_mW = ina219.getPower_mW(); // 读取功率,单位毫瓦 // 在串口监视器显示 Serial.print("Voltage: "); Serial.print(busVoltage_V, 3); Serial.println(" V"); Serial.print("Current: "); Serial.print(current_mA, 2); Serial.println(" mA"); Serial.print("Power: "); Serial.print(power_mW, 1); Serial.println(" mW"); Serial.println("-----------------"); // 在LCD上显示 lcd.setCursor(0, 0); lcd.print("V:"); lcd.print(busVoltage_V, 2); // 显示2位小数 lcd.print("V "); lcd.setCursor(8, 0); lcd.print("I:"); if (current_mA >= 0) { lcd.print(" "); // 为正数时填充一个空格,对齐显示 } lcd.print(current_mA, 1); // 显示1位小数 lcd.print("mA"); lcd.setCursor(0, 1); lcd.print("P:"); lcd.print(power_mW / 1000.0, 3); // 转换为瓦特,显示3位小数 lcd.print("W"); delay(500); // 每500ms更新一次数据 }

代码优化提示

  • getPower_mW()函数计算的是负载消耗的功率,其计算方式是总线电压(V) * 电流(mA)。对于电池充电场景(电流为负),功率也会显示为负值,表示功率被输入到系统中。
  • 显示刷新频率delay(500)可以根据需要调整。INA219的转换速度可以配置,默认模式下完全够用。如果追求更快刷新,可以查阅库文件或芯片手册,修改转换时间和平均采样次数。

5. 校准:获得高精度的关键步骤

这是整个项目中最重要的一环。INA219模块出厂时,内部ADC和采样电阻存在微小的个体差异,如果不校准,测量误差可能在1%-5%之间。校准的目的,就是通过一次性的测量,让模块的输出值与真实值吻合。

5.1 校准原理与方法

DFRobot的库提供了linearCalibrate()函数,它实现的是两点线性校准法。原理是:传感器输出(y)和真实物理量(x)之间存在一个线性关系y = k * x + b。我们需要通过两个已知的测量点,求出斜率k和截距b

在代码中,我们提供两个参数:

  • ina219Reading_mA:在某个负载下,未经校准的INA219读数(单位mA)。
  • extMeterReading_mA:在同一个负载、同一时刻,用高精度万用表测量到的真实电流值(单位mA)。

库函数内部会用这两个点计算出校准系数,并写入INA219的校准寄存器。此后,所有getCurrent_mA()的读数都会自动应用这个校准系数。

5.2 详细校准实操流程

你需要准备一个可调负载(如大功率电阻、电子负载)或一个恒定功耗的设备(如一块LED屏、一个开发板),以及一个至少三位半精度、可以测量直流电流的数字万用表。

  1. 搭建校准电路

    • 将你的直流电源正极接INA219模块的“IN+”。
    • 将INA219模块的“IN-”接万用表的电流档正极(红表笔)
    • 将万用表的电流档负极(黑表笔)接负载的正极
    • 将电源负极、负载负极、系统GND全部连接在一起。
    • 务必检查接线,确保电流流经路径为:电源+ -> INA219 -> 万用表 -> 负载 -> 电源-。
  2. 上传初始代码

    • 使用前面章节的完整代码,但暂时注释掉setup()函数中的ina219.linearCalibrate(...);这一行。
    • 将代码上传到Arduino,打开串口监视器(波特率115200)。
  3. 进行第一次测量

    • 给系统上电,让负载工作。建议选择一个适中的电流,比如500mA到1A之间。电流太小(<50mA)相对误差可能变大,电流太大则要注意采样电阻和负载的发热。
    • 等待串口输出稳定。记录下此时串口打印的Current: xxx mA值,这就是ina219Reading_mA
    • 同时,读取万用表上显示的稳定电流值,精确到小数点后一位(如 0.852 A = 852.0 mA),这就是extMeterReading_mA
  4. 修改代码并完成校准

    • 在代码开头,将你记录的两个值分别赋给ina219Reading_mAextMeterReading_mA变量。
    • 取消注释setup()函数中的ina219.linearCalibrate(ina219Reading_mA, extMeterReading_mA);这一行。
    • 将修改后的代码重新上传到Arduino。
  5. 验证校准结果

    • 重新上电后,校准系数已被写入芯片的非易失性寄存器(INA219的校准寄存器断电会保存)。
    • 再次观察串口监视器输出的电流值,它应该与万用表的读数非常接近。你可以尝试改变负载大小(调节电源电压或更换负载),在不同电流点(如200mA, 1A)进行验证,误差应该在±0.5%以内。

核心注意事项

  • 校准的是电流通道。INA219的电压测量是通过内部电阻分压直接ADC采样,通常精度很高,一般不需要校准。电流校准后,功率计算自然也就准了。
  • 校准是一次性的。只要不更换INA219模块,校准系数就会一直有效。你可以将最终的ina219Reading_mAextMeterReading_mA值固化在代码中,以后上传代码都带着这行校准语句。
  • 关于“两点法”的局限:理论上,两点法只能修正增益误差和零点误差。如果传感器非线性误差很大,两点法效果会打折扣。但幸运的是,INA219在它的工作范围内线性度极好,所以两点法校准效果非常显著。

6. 常见问题排查与进阶应用

6.1 问题排查速查表

在实际制作和调试过程中,你可能会遇到以下问题:

问题现象可能原因排查步骤与解决方案
LCD或串口无任何显示1. 电源未接通或接反。
2. Arduino未正确上传程序。
3. I2C地址冲突。
1. 检查所有VCC和GND连接,用万用表测量电压。
2. 检查Arduino IDE端口和板卡选择,尝试上传一个简单的Blink程序测试。
3. 运行I2C扫描程序,确认LCD和INA219的地址是否冲突,并修改代码中的地址。
LCD有背光但无字符1. LCD对比度设置不当。
2. I2C通信失败。
1. 许多I2C LCD模块有一个蓝色的电位器,调节它直到字符显示。
2. 检查SDA、SCL接线,确认上拉电阻(如果有)。
串口显示“INA219 begin failed”1. I2C接线错误(SDA/SCL接反)。
2. INA219模块地址设置与代码不符。
3. 模块损坏。
1. 确认SDA接A4,SCL接A5。
2. 运行I2C扫描程序,查看模块实际地址,并修改代码。
3. 更换模块测试。
电流读数为0或极小1. 测量接线错误,电流未流经采样电阻。
2. 负载未工作或电流太小。
3. 校准参数严重错误。
1.重点检查:确保电源正极接“IN+”,负载正极接“IN-”,构成回路。用万用表电压档测量“IN+”和“IN-”之间应有电压(等于负载电压)。
2. 换一个已知电流较大的负载(如1W以上的LED)测试。
3. 检查校准步骤,尝试不校准(注释掉校准行)看原始读数。
电流读数跳动大1. 电源或负载本身不稳定。
2. I2C总线受到干扰。
3. 采样电阻接触不良。
1. 使用电池或线性稳压电源测试,排除开关电源噪声。
2. 缩短I2C连线,并确保SDA、SCL线有上拉电阻(4.7kΩ到10kΩ)。
3. 检查INA219模块的焊接和接插件接触。
测量值明显不准1. 未进行校准或校准错误。
2. 测量电流超出量程(>8A)。
3. 采样电阻因大电流发热导致阻值变化。
1.严格按照第5章步骤重新校准,这是最常见的原因。
2. 确认被测电流在±8A范围内。超过量程会损坏模块或得到错误读数。
3. 对于持续大电流测量,确保模块通风良好,或考虑为采样电阻增加散热。

6.2 进阶应用与扩展思路

这个基础功率计框架可以衍生出很多实用的项目:

  1. 数据记录仪:在代码中增加SD卡模块,将电压、电流、功率数据连同时间戳一起写入CSV文件,用于长时间监测设备功耗,分析电池续航。
  2. 无线传输:加入ESP8266或ESP32模块,将测量数据通过Wi-Fi发送到手机App或云平台(如ThingsBoard、Blynk),实现远程电源监控。
  3. 过流保护与报警:在代码中设置电流阈值,当测量电流超过设定值时,控制一个继电器切断电路,或让一个蜂鸣器报警,实现简单的硬件保护功能。
  4. 多路监测:利用INA219的多个I2C地址,在同一块Arduino上连接多个模块,同时监测系统内不同电压轨(如3.3V、5V、12V)的电流和功率。
  5. 库仑计(电量计):通过软件对电流进行积分(总电量 = ∑(电流 * 时间)),可以计算出电池消耗或充入的总安时(Ah)或瓦时(Wh)数。这是制作智能电池电量计的核心。需要注意,Arduino的millis()函数有溢出问题,需要妥善处理时间计算。
  6. 效率测试仪:如果你有两个INA219模块,一个接在电源输出端,一个接在负载输入端,就可以同时测量电源的输出功率和负载的输入功率,从而计算转换器或整个系统的效率。

我个人在实际操作中的体会是,INA219这类数字传感器极大地降低了高精度测量的门槛。它把最棘手的模拟信号调理问题交给了芯片专家,让我们开发者可以更专注于应用逻辑。校准步骤虽然多花十分钟,但换来的是长期稳定的测量精度,非常值得。最后一个小技巧:在最终的产品中,如果空间允许,可以在INA219的电源输入引脚附近增加一个10μF的钽电容,这对于抑制来自电机或继电器等感性负载的电压尖峰特别有效,能进一步提升测量稳定性。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 0:06:05

基于Arduino与继电器的门铃防误触系统设计与实现

1. 项目概述家里有个淘气包或者门铃按钮有点接触不良的朋友&#xff0c;大概都经历过门铃被“按死”的烦恼。要么是孩子出于好奇长按不放&#xff0c;要么是雨天受潮导致按钮内部轻微粘连&#xff0c;结果就是门铃响个不停&#xff0c;直到你手动去把按钮抠开或者干脆拔掉电源。…

作者头像 李华
网站建设 2026/5/31 23:58:09

招工动态能预判产能景气?天下工厂产业研究院拆解这个“反常识信号“

一家工厂在招人,不代表它在满产——这是天下工厂产业研究院在分析招聘数据时最先碰到的反常识结论。 天下工厂是覆盖 480 万家在产工厂的 B2B 平台,与某查、企查这类工商信息库的根本区别在于:它能分辨"这家企业是不是真正在生产的工厂",而不仅仅记录工商注册状态。正…

作者头像 李华
网站建设 2026/5/31 23:52:13

深度实战:LibreDWG终极指南 - 开源DWG文件处理的完整解决方案

深度实战&#xff1a;LibreDWG终极指南 - 开源DWG文件处理的完整解决方案 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg 你是否曾经因为AutoCAD的专有格式…

作者头像 李华
网站建设 2026/5/31 23:48:24

Qwen-Image-Lightning架构革新:8步推理重构文生图效率标准

Qwen-Image-Lightning架构革新&#xff1a;8步推理重构文生图效率标准 【免费下载链接】Qwen-Image-Lightning 项目地址: https://ai.gitcode.com/hf_mirrors/lightx2v/Qwen-Image-Lightning 在文生图技术面临速度瓶颈的背景下&#xff0c;阿里通义千问团队推出的Qwen-…

作者头像 李华