#第七届立创电赛#【2022暑训营】基于N32G430C8L7的模块化USB电压电流功率表设计与开源分享

news2026/3/15 2:05:27
基于N32G430C8L7的模块化USB电压电流功率表设计与制作最近有不少朋友在问有没有一种简单又强大的工具能精确测量USB设备的电压、电流和功率特别是现在USB PD快充这么普及动不动就几十瓦的功率。正好我之前为立创电赛和暑训营设计过这么一个项目今天就来和大家详细拆解一下从硬件选型到PCB布局手把手教你做一个模块化、可扩展的USB电压电流功率表。这个表的核心是国民技术的N32G430C8L7单片机它性能足够性价比高。最关键的是我们采用了24针满针脚的USB 3.1 Gen2接口这意味着所有数据线都连接上了是真正的“满血”接口不仅能测常规USB设备甚至能支持测量雷电Thunderbolt协议的硬盘盒等设备。整个设计是模块化的方便你后期升级比如把LDO供电换成效率更高的DCDC或者更换更精密的电流采样芯片。板上还预留了多余的IIC和ADC接口想加个温度传感器什么的飞根线就行。下面咱们就一步步来看这个项目是怎么做出来的。1. 项目核心功能与设计思路首先咱们得搞清楚这个USB表要干什么以及为什么这么设计。1.1 它能做什么简单说这就是一个USB“万用表”。你把它串联在电脑或充电头和你的手机、平板、移动硬盘等USB设备之间它就能实时显示电压VUSB端口输出的实际电压比如5V、9V、12V、20VPD协议。电流A设备消耗的电流。功率W电压乘以电流得到实时功率。它的高级之处在于使用了24针的USB 3.1 Gen2 Type-C公母座。普通的USB表可能只用4根或9根线供电和低速数据而我们把24根针脚全部引出并走线。这样做最大的好处是保留了所有高速数据通道TX/RX差分对使得这块表具备测量雷电Thunderbolt设备的基本硬件条件通用性极强。1.2 模块化设计的好处我在设计时特意把电路分成了几个相对独立的部分主控模块核心是N32G430C8L7 MCU。电源模块使用SE8633 LDO为整个系统提供3.3V稳压。采样模块电流检测部分设计了兼容INA199和INA226两种芯片的焊盘可以二选一焊接。这种堆叠、模块化的思路让后期修改变得非常灵活。比如你觉得LDO在高压输入时发热大完全可以自己画一个小板子把SE8633换成一颗DCDC降压芯片然后替换掉原来的电源模块。采样精度不够换个更精密的电流采样芯片也行。这就像拼乐高哪个部分不满意就升级哪个。2. 硬件设计与关键元器件选型硬件是项目的骨架选对元器件项目就成功了一半。2.1 主控芯片N32G430C8L7我们选用国民技术的N32G430C8L7作为大脑。这是一颗基于ARM Cortex-M4F内核的MCU主频最高128MHz带硬件浮点单元FPU做功率计算浮点乘法很快。它内置的ADC模数转换器精度不错正好用来读取采样电路送来的电压信号。关键它性价比高资源也够用驱动个屏幕、处理一下采样数据绰绰有余。2.2 电源管理SE8633 LDO给单片机、屏幕、采样芯片供电需要稳定干净的3.3V。这里选择了SE8633这款低压差线性稳压器LDO。为什么用LDO电路相对简单噪声小对模拟采样电路干扰小。SE8633的特点它的输入电压范围很宽最高支持80V输入这意味着即使你测量的是20V的PD快充电压直接进入USB表SE8633也能稳稳地将其降到3.3V保证了高压情况下的安全性。当然高压输入时LDO的功耗发热会比较大所以我在设计思路上留了后路——你可以后期把它模块化替换成高效的DCDC电路。2.3 电流采样方案INA199 与 INA226测量电流的核心是“采样电阻放大器”。我们在USB的电源路径VBUS上串联一个毫欧级别的小电阻采样电阻测量电阻两端的微小压降根据欧姆定律I V/R算出电流。直接测量这个微小电压很难所以需要专用的电流检测放大器。板子上设计了两种芯片的焊盘INA199这是一款高侧电流检测放大器增益固定可选50V/V、100V/V等电路简单。INA226这款就更强大了它集成了电流检测放大器、ADC甚至一个IIC接口。MCU可以直接通过IIC总线从INA226读取已经计算好的电流、电压和功率值精度高还能减轻MCU的ADC负担。你可以根据手头芯片和精度要求选择其中一种焊接这就是模块化灵活性的体现。2.4 接口与PCB布局要点这是本项目硬件上最具特色的部分。24针满针接口我们使用了USB 3.1 Gen2的Type-C公头和母座24个引脚全部利用。这不仅是为了供电和USB2.0数据D D-更是为了那多组高速差分线TX/RX。PCB布局与走线等长走线对于USB3.0及以上速率的高速差分信号线如TXp/TXn RXp/RXn我们进行了等长走线处理。目的是让一对差分信号同时到达终点减少信号失真保证通信质量。阻抗匹配未完成在原始设计中差分线的阻抗没有进行匹配。这意味着在极高速度如10Gbps的USB 3.1 Gen2下信号反射可能会比较严重影响稳定性。对于测量功能来说可能够用但若想完美兼容雷电协议这一步是需要优化的。屏蔽建议原文特别提到“需要自行贴铝箔屏蔽”。这是因为高速差分线RXTX很容易成为辐射源也会受到外界干扰。自己贴一层接地铝箔能有效屏蔽干扰让测量更稳定。这是个非常实用的后期加固技巧。扩展接口板上特意引出了几组空闲的IIC和ADC引脚。IIC可以接各种传感器如温湿度、气压ADC可以直接测量外部模拟电压。你想增加一个温度监控功能只需要找一个IIC接口的温度传感器飞线接上再写几行代码读取就可以了。3. 软件部分与程序烧录软件方面这个项目采用了比较务实的方案。原文提到“使用非官方方案代码微改”。我理解是可能参考了市面上已有的开源USB表代码框架然后针对我们这块板子使用的N32G430C8L7芯片、特定的屏幕驱动以及采样电路进行了适配和修改。比如初始化芯片的时钟、配置ADC去读取采样电压、驱动OLED屏幕显示数值等等。注意虽然代码有修改但原文也指出“刷入官方方案也能亮屏”。这说明硬件设计可能与某个流行的开源USB表方案比如“USB PD诱骗器”社区的一些方案的硬件兼容性较高。如果你手头有那些方案的固件烧进去屏幕可能能点亮但测量功能大概率是不准的因为采样电路、校准参数肯定不同。对于想复现这个项目的朋友最理想的路径是获取为本项目特定硬件编写的源代码原项目已开源。使用Keil、IAR或GCC等工具针对N32G430C8L7芯片进行编译。通过SWD/JTAG调试器如ST-Link、DAP-Link将程序烧录到芯片中。4. 制作、调试与扩展建议如果你拿到了这个项目的开源资料原理图、PCB文件、代码准备自己打板焊接这里有几个实操建议焊接顺序建议先焊接电源部分SE8633 LDO及其周边电容焊接完后用万用表测量一下确保3.3V输出正常。然后再焊接主控MCU和电流采样芯片最后焊接USB接口和屏幕等外设。电流采样校准这是精度关键。你需要一个相对精确的万用表和可调负载。给USB表输入一个固定电压如5V接上负载让电流稳定在某个值如1A。同时用你的万用表测量实际电流然后在代码中调整校准系数使USB表显示的值与万用表一致。最好在多个电流点如0.5A 1A 2A进行校准。扩展功能实战——加装温度传感器 板上预留了IIC接口我们以添加一个常用的LM75温度传感器为例硬件连接找到板子上引出的IIC引脚通常是SCL和SDA以及3.3V和GND。将LM75的对应引脚飞线连接。软件修改在原有代码中初始化IIC总线然后添加读取LM75寄存器的函数。LM75的地址通常是0x48。显示在屏幕显示布局里分出一小块区域来显示读取到的温度值。// 示例代码片段读取LM75温度需根据实际使用的IIC驱动调整 float Read_LM75_Temperature(void) { uint8_t buffer[2]; float temp; // 假设LM75地址为0x48 温度值寄存器地址为0x00 I2C_ReadBytes(0x48, 0x00, buffer, 2); // LM75返回11位精度的数据 temp (int16_t)((buffer[0] 8) | buffer[1]) / 256.0; return temp; }关于雷电协议设备测量再次强调这个硬件具备了连接雷电设备的物理基础24针全通但由于高速信号线阻抗未匹配可能无法进行高速数据传输但测量其供电电压和电流是完全可以的。贴上铝箔屏蔽层能更好地保证在复杂电磁环境下测量的稳定性。这个项目从一颗MCU开始到一块能显示精准功率的USB表涉及了电源设计、模拟采样、高速PCB布局、单片机编程等多个嵌入式开发的关键环节。希望这份详细的拆解能帮你不仅做出一个工具更能理解背后的设计思路。所有硬件和软件资料都是开源的你可以完全复刻也可以在此基础上魔改做出属于你自己的、功能更强的测试仪器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2413093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…