#第七届立创电赛# 基于N32G430与INA199的高精度USB电流功率表设计与实现
基于N32G430与INA199的高精度USB电流功率表设计与实现最近在捣鼓一个USB设备功耗测试的小工具发现市面上的成品要么精度不够要么价格不菲。正好借着立创电赛训练营的机会我用国民技术的N32G430单片机和TI的INA199电流检测放大器自己做了一个精度能达到1%的USB电流功率表。今天就把这个项目的完整设计过程从硬件选型、电路设计到软件配置手把手分享给大家无论你是电赛新手还是想深入了解电流检测的爱好者跟着做一遍就能掌握。1. 项目核心我们要做什么简单来说我们要做一个能插在USB充电器和用电器比如手机、开发板之间的“监测员”。它要能实时测量USB 2.0接口上的电压、电流并计算出实时功率。最终这些数据会显示在一块小OLED屏幕上让你一目了然地知道你的设备吃了多少“电”。这个项目的核心指标是测量精度达到1%。在嵌入式测量领域1%的精度已经相当不错了能满足大部分电子爱好者和开发者的日常调试需求。实现这个精度的关键在于选择了合适的“测量官”——INA199电流检测放大器和一位可靠的“数据处理员”——N32G430微控制器。2. 硬件设计电路是怎么搭起来的硬件是整个项目的骨架设计得好不好直接决定了测量的准不准。我们的电路主要分为三个部分主控单元、电流检测单元和显示单元。2.1 主控芯片为什么选N32G430C8L7我选择了国民技术的N32G430C8L7这款单片机作为大脑。对于这个项目来说它有几个特别合适的优点性能足够基于ARM Cortex-M4F内核主频高达128MHz还带硬件浮点单元FPU。这意味着它做电压、电流、功率这些乘除计算会非常快毫不费力。资源丰富它内置了12位精度的ADC模数转换器这正是我们读取电压信号所必需的。精度高测量结果才更可靠。性价比高作为国产MCU在保证性能的同时价格很有优势非常适合用于这种DIY和小批量项目。2.2 电流检测核心INA199是如何工作的测量电流最常用的方法是测量一个已知阻值的采样电阻R_sense两端的电压。根据欧姆定律U I * R知道了电压和电阻电流I自然就算出来了。但是采样电阻上的电压通常很小为了减少功耗和发热阻值选得小直接给单片机的ADC去测精度会很低。这时候就需要电流检测放大器出场了它的作用就是把这个小电压信号放大到一个适合ADC测量的范围。我用的INA199就是干这个的。它的工作原理如下图所示概念示意图 我们让USB的电流全部流过一颗**10毫欧10mΩ**的精密采样电阻。当电流为1A时电阻两端的电压只有1A * 0.01Ω 0.01V10毫伏。这个电压太小了。INA199会将这个电压放大。它的放大倍数由外部电阻决定公式是G 50 / R_g其中R_g是连接在芯片两个Gain引脚间的电阻单位kΩ。通过选择合适的R_g我们可以得到一个方便测量的输出电压。注意采样电阻的精度和温漂直接影响整体测量精度所以一定要选择1%精度甚至更高、温漂系数低的精密贴片电阻。2.3 电路连接要点供电整个系统直接从被测的USB 5V取电。N32G430和INA199都需要3.3V工作电压所以需要一个LDO低压差线性稳压器比如AMS1117-3.3将5V稳到3.3V。信号连接电流信号INA199放大后的输出电压OUT引脚连接到N32G430的某个ADC输入通道例如PA0。电压信号USB的输入电压5V经过一个电阻分压网络比如用两个电阻将5V分压到3.3V以内直接连接到N32G430的另一个ADC通道例如PA1。切记分压后的电压不能超过单片机ADC的测量上限通常是3.3V。显示接口OLED屏幕通常使用I2C接口只需要连接单片机的两个GPIO引脚例如PB6作为SCL时钟线PB7作为SDA数据线即可。3. 软件部分如何让单片机“算”出来硬件搭好了接下来就是给单片机编程让它学会“看”和“算”。3.1 开发环境与程序烧录国民技术提供了自家的集成开发环境和烧录工具。你可以按照官方指南安装好环境然后使用J-Link、ST-Link或者串口等方式把写好的程序代码烧录到N32G430芯片里。提示对于初学者使用ST-Link配合国民技术的烧录软件是比较简单可靠的方式。连接时注意SWD接口SWCLK、SWDIO要接对。3.2 代码核心逻辑解析程序的逻辑是一个清晰的循环主要做以下几件事初始化// 伪代码示例说明初始化流程 void System_Init(void) { ADC_Init(); // 初始化ADC设置采样精度、通道等 I2C_Init(); // 初始化I2C用于连接OLED屏幕 OLED_Init(); // 初始化OLED显示屏 // ... 其他外设初始化 }读取ADC原始值 程序需要周期性地启动ADC转换读取连接INA199输出和电压分压网络的两个引脚上的ADC原始值。这个值是一个0到409512位ADC之间的数字。计算实际物理值这是关键步骤计算电压// 假设ADC读到原始值为 adc_voltage_raw // 已知ADC参考电压 Vref 3.3V分压比为 R2/(R1R2) 0.5 float voltage_adc (adc_voltage_raw / 4095.0) * 3.3; // ADC引脚上的电压 float usb_voltage voltage_adc / 0.5; // 反推回USB实际电压计算电流// 假设ADC读到原始值为 adc_current_raw // 已知采样电阻 Rsense 0.01欧姆 INA199放大倍数 G 100倍 float voltage_sense (adc_current_raw / 4095.0) * 3.3; // INA199输出的电压 float voltage_across_rsense voltage_sense / 100.0; // 采样电阻两端的真实压降 float usb_current voltage_across_rsense / 0.01; // 根据欧姆定律计算电流计算功率float power usb_voltage * usb_current; // 功率 P U * I显示与输出 将计算得到的电压单位V、电流单位A、功率单位W通过I2C发送到OLED屏幕进行显示。你可以用ssd1306之类的开源驱动库来简化显示操作。3.3 一个重要的步骤校准写好的程序第一次运行时测量值很可能不准。这是因为电阻有误差放大器的增益也不是绝对精确的。所以校准是达到1%精度的必要环节。你需要一个更精确的基准源比如高精度的万用表或者可调稳压电源来辅助校准。电压校准给USB输入端一个已知的精确电压例如4.50V看看屏幕上显示多少。在代码里修改电压计算系数让显示值等于已知值。电流校准让一个已知的恒定电流例如500mA流过电流表同样调整代码中的电流计算系数。校准过程其实就是修正上面计算步骤中的“转换系数”。可以在代码里定义两个校准系数float voltage_cal_factor 1.0; // 电压校准系数 float current_cal_factor 1.0; // 电流校准系数 // 计算时加入系数 float usb_voltage (voltage_adc / 0.5) * voltage_cal_factor; float usb_current (voltage_across_rsense / 0.01) * current_cal_factor;通过修改这两个系数就能将测量结果“拉”到准确值上。3.4 根据你的设计修改引脚训练营提供的示例代码中OLED的I2C引脚SCL和SDA是定义好的。如果你的原理图中把屏幕接到了不同的单片机引脚上一定要记得去代码里找到引脚定义的地方改成你自己的。通常是在i2c.c或oled.c文件的初始化部分。不改的话屏幕是不会亮的。4. 调试与实战心得当你把硬件焊好代码烧录进去之后可能会遇到没显示或者数值乱跳的情况。别慌这是嵌入式开发的常态。按照以下顺序排查电源第一先用万用表量一下LDO输出的3.3V稳不稳单片机和各个芯片的供电脚电压是否正常。屏幕不亮检查OLED的接线VCC, GND, SCL, SDA是否正确、牢固。确认代码中的I2C引脚配置是否与你的硬件匹配。数值为零或异常检查INA199的输入采样电阻两端是否接反了。用万用表测量采样电阻两端的实际电压同时看单片机ADC引脚上的电压对比一下判断INA199是否正常工作、放大倍数是否正确。检查ADC的初始化代码通道配置对不对。数值跳动大可以在ADC采样后软件上做几次采样然后取平均值能有效滤除偶然的干扰。这个项目虽然不大但完整地走通了“传感器信号采集 - MCU处理 - 人机交互显示”的经典嵌入式流程。掌握了它你就有了做更复杂测量设备的基础。希望这篇教程能帮你做出自己的高精度USB功率表。

相关新闻

uniapp+钉钉JSAPI鉴权:为什么我的requestAuthCode总是失败?

uniapp+钉钉JSAPI鉴权:为什么我的requestAuthCode总是失败?

uniapp钉钉JSAPI鉴权:为什么我的requestAuthCode总是失败? 最近在帮团队重构一个内部管理系统,打算把它搬到钉钉工作台上。想着用uniapp一套代码搞定H5和App,再对接钉钉的JSAPI实现免登,听起来是个挺顺畅的方案。但真上…

2026/7/3 10:21:00 阅读更多 →
ESP32-P4多协议外设架构解析:SPI/I2C/I2S/TWAI协同设计指南

ESP32-P4多协议外设架构解析:SPI/I2C/I2S/TWAI协同设计指南

ESP32-P4 多协议外设深度解析与工程实践指南1. 高性能SPI子系统:从LP-SPI到GP-SPI的全栈控制能力ESP32-P4 的SPI外设体系采用分层架构设计,覆盖从超低功耗传感节点到高速Flash/RAM存取的全场景需求。其核心由三类控制器构成:通用高性能SPI&am…

2026/5/17 11:43:28 阅读更多 →
Kimi-Researcher:揭秘端到端强化学习如何重塑AI智能体研究范式

Kimi-Researcher:揭秘端到端强化学习如何重塑AI智能体研究范式

1. 从“工具”到“伙伴”:Kimi-Researcher如何重新定义AI研究 如果你用过之前的AI研究工具,不管是ChatGPT的联网搜索,还是其他一些所谓的“智能助手”,你大概会有这样的体验:你问一个问题,它给你一个答案&…

2026/5/17 3:41:22 阅读更多 →

最新新闻

2026年AI写歌软件实测 中文创作哪款效果最好

2026年AI写歌软件实测 中文创作哪款效果最好

2026年AI音乐创作已经彻底走进大众视野,从随手记录日常心情、制作短视频BGM,到独立音乐人打磨原创Demo、商用发行正式单曲,AI写歌软件都成了高效的创作工具。但很多国内用户在挑选时都容易踩坑:海外头部工具中文咬字跑调、访问不稳…

2026/7/3 10:19:06 阅读更多 →
Java计算机毕设之基于 SpringBoot 的企业薪酬发放与固定资产盘点管理系统 公司财务收支与员工绩效考评管理系统(完整前后端代码+说明文档+LW,调试定制等)

Java计算机毕设之基于 SpringBoot 的企业薪酬发放与固定资产盘点管理系统 公司财务收支与员工绩效考评管理系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/3 10:19:06 阅读更多 →
Xshell四

Xshell四

ps 静态查看进程 用途:一次性快照输出当前系统所有进程信息,属于静态查看,执行一次就结束,常用于搭配管道筛选进程。(特定时间点) 核心参数用法: -e参数指定显示所有运行在系统上的进程&#xf…

2026/7/3 10:17:03 阅读更多 →
基于虚拟机的Python Web自动化测试环境搭建与配置指南

基于虚拟机的Python Web自动化测试环境搭建与配置指南

1. 项目概述:为什么需要一个标准化的自动化测试环境?如果你是一名Web开发者或者测试工程师,每天手动在Chrome、Firefox、Safari以及各种版本的浏览器上重复点击、输入、验证,很快就会感到疲惫不堪且效率低下。更别提还要考虑不同操…

2026/7/3 10:09:00 阅读更多 →
【紧急更新】2024软考论文新大纲适配模板:3类新型命题(AI治理/信创迁移/云原生)专用结构包

【紧急更新】2024软考论文新大纲适配模板:3类新型命题(AI治理/信创迁移/云原生)专用结构包

更多请点击: https://intelliparadigm.com 第一章:软考论文新大纲核心变化与适配策略 2024年起,全国计算机技术与软件专业技术资格(水平)考试高级资格“信息系统项目管理师”论文科目正式启用全新写作大纲。本次调整不…

2026/7/3 10:06:59 阅读更多 →
如何快速定位Windows热键冲突:专业检测工具终极指南

如何快速定位Windows热键冲突:专业检测工具终极指南

如何快速定位Windows热键冲突:专业检测工具终极指南 【免费下载链接】hotkey-detective A small program for investigating stolen key combinations under Windows 7 and later. 项目地址: https://gitcode.com/gh_mirrors/ho/hotkey-detective 你是否曾经…

2026/7/3 10:04:57 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻