USB充电检测仪-2.USB充电检测仪硬件设计

news2025/6/2 4:52:06

本系列文章的最终目标是制作一个USB充电检测仪,支持的功能:

  • 显示USB充电电压、电流、功率、充电量(单位WH);
  • 实现Typec口和USB-A口的相互转换(仅支持USB 2.0);

当然网上有很多卖这种东西的,嫌麻烦的用户可以直接买成品。本文重点在于制作过程,接下来将分几篇文章介绍USB充电检测仪的制作过程。

文章链接:

  • USB充电检测仪-1.USB充电检测仪外观
  • USB充电检测仪-2.USB充电检测仪硬件设计

PCB图

硬件上要求支持:

  1. USB-A输入输出:大部分安卓手机的充电线一边是USB-A口,另外一端是typec接口,满足一般应用场景;
  2. TypeC输入输出:Typec输入端为公口,可以直接连接Typec类型的充电器,输出端为母口。
  3. USB-A、Typec混合输入输出:可以是USB-A输入、Typec输出;也可以是Typec输入、USB-A输出。

PCB板设计如下

在这里插入图片描述

输入输出端口自不必说,这里有个【独立按钮】,此按钮在使用Typec输入、USB-A输出时使用。由于Typec协议要求,直接将充电检测仪插入到Typec的充电头上后,可能不会通电,此时可以长按【独立按钮】待Typec正常供电后,松开按钮即可。

PCB正面图:
在这里插入图片描述

PCB反面图:

在这里插入图片描述

原理图

完整的原理图:

在这里插入图片描述

MCU选择

原理图上的MCU使用的是STM32F103C8,而我手上只有STM32F051C8芯片了,所以就直接使用STM32F051C8了。两种芯片相比,只有4个引脚不一样,参考下图:

在这里插入图片描述

为了兼容,我这里直接将36脚连接到VDD,35号脚连接到GND,当使用F103时,直接将两个引脚设置为输入模式就可以了,这样从硬件上,两个芯片就完全兼容了。

Typec输入配置

USB Type-C 接口共有 24 个引脚,采用对称设计(正反插均可工作),下面是Type-C母头引脚定义(手机/电脑端均为母头):

在这里插入图片描述

其中CC1和CC2用于检测插入方向、模式协商(USB PD协议关键引脚),用于识别设备类型(Host/Device)、功率协商等。

按照Typec接口规范要求DPF(Sink)端需要在CC引线上配置Rd电阻后,UPF端才会正常供电(关于Typec协议,有另外一篇文章单独说明,这里仅对用到的知识做大概的介绍),也就是,如果期望Typec插入到充电器上后能开始供电,必须配置好Rd电阻才行。

在这里插入图片描述

Rd电阻值要求参考下图,使用最低10%精度的5.1K的电阻:

在这里插入图片描述
在这里插入图片描述

接下来回到原理图。

USB1是Typec公口,插入到Typec充电上。USB2是Typec母口,对外提供电源,两者的CC1和CC2是直连的:

另外,为了给CC线上提供下拉电阻,在CC2和GND之间串联了一个按钮和一个5,1K的电阻。设备连接到Typec充电器上后正常不供电,此时用户可以按下按钮,此时将在CC2上加上一个5.1K的电阻,UPF端检测到此电阻后,将在VBUS上提供电源,单片机能够正常供电。

按钮和电阻的连接点接到到单片机的ADCCC2引脚,单片机上电后测量此引脚电压,如果小于0,1V则证明是通过下拉CC2线启动,此时将ADCCC2引脚转为输出模式,并输出0。接下来用户松开按钮后,此下拉电阻依旧生效,从而实现了从Typec上取电的能力。

测量电流

电流测量电路如下:

在这里插入图片描述

采样电阻使用两个0,13欧姆的电阻并联(我手上刚好有这个阻值的电阻),两个的电阻并联后最大功率是0.5W。如果充电电流为2A,那么两个电阻的功率为0.26W,一般来说没有什么问题。

即便是以2A的电流充电,在2个0,13欧姆并联的电阻上产生的压降依旧很小,所以这里需要增加放大电路。放大电路采用轨到轨的运算放大器LMV321,放大倍数为14倍。

以2.5A为例,放大后的最大电压为:

2.5*(0.13/2)*14 = 2.275V

满足要求。

测量DP/DN引脚电压

USB DN/DP引脚电压范围为 0~5V,而STM32F系列单片机,ADC最高电压为3,3V,所以不能直接测量这两个引脚的电压。

接近办法也必将简单:使用分压电阻。为了避免电阻对USB协议产生影响,电阻值应尽量大,这里使用了2个300K的电阻串联分压。

在这里插入图片描述

测量温度

增加热敏电阻测量充电过程中的温度。热敏电阻采用3950 100K,分压电阻使用62K。根据分压值就可以测量出热敏电阻阻值,从而计算出温度值。

在这里插入图片描述

LCD显示屏

我用的是一个0.96寸 128x64 的TFT显示屏,驱动器为ST7735(并口)。我手上刚好有这个显示屏,此显示屏非常古老,现在不一定能买到。

LCD引脚定义如下:

在这里插入图片描述

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

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

相关文章

AU6815集成音频DSP的2x25W数字型ClaSS D音频功率放大器(替代TAS5805)

1.特性 ● 输出配置 - 立体声 2.0: 2x25W (8Ω,21V,THD N 1%) - 立体声 2.0: 2x23W (6Ω, 18V,THD N 1%) ● 供电电压范围 - PVDD:4.5V-21V - DVDD: 1.8V 或者 3.3V ● 静态功耗 - 31.5mA at PVDD12V,BD - 18.5mA at PVDD12V,1SPW ● 音频性能指标 - Noise: ≤38uVrms - TH…

DeepSeek R1开源模型的技术突破与AI产业格局的重构

引言​ 2025年,中国AI企业深度求索(DeepSeek)推出的开源模型DeepSeek-R1,以低成本、高性能和开放生态为核心特征,成为全球人工智能领域的技术焦点。这一模型不仅通过算法创新显著降低算力依赖,更通过开源策…

什么是VR全景相机?如何选择VR全景相机?

VR全景相机的定义、原理及特点 定义:VR全景相机是利用特殊镜头设计和图像处理技术,能够捕捉到360度全方位、无死角的高清影像,并通过虚拟现实技术将用户带入沉浸式全景环境的相机设备。 原理:VR全景相机通过集成多个鱼眼镜头&am…

如何创建和使用汇编语言,以及下载编译汇编软件(Notepad++,NASM的安装)

一、汇编语言基础:用文本文档(Windows自带)初步尝试 1. 什么是汇编语言? 汇编语言是一种面向处理器(CPU)的低级编程语言,通过助记符(如MOV、ADD)直接控制硬件。它需要通过编译器(如…

Python训练营打卡Day40(2025.5.30)

知识点回顾: 彩色和灰度图片测试和训练的规范写法:封装在函数中展平操作:除第一个维度batchsize外全部展平dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropout # 先继续之前的代码 import torch import …

SpringBoot+vue+SSE+Nginx实现消息实时推送

一、背景 项目中消息推送,简单的有短轮询、长轮询,还有SSE(Server-Sent Events)、以及最强大复杂的WebSocket。 至于技术选型,SSE和WebSocket区别,网上有很多,我也不整理了,大佬的链…

哈工大计算机系统大作业 程序人生-Hello’s P2P

计算机系统 大作业 题 目 程序人生-Hello’s P2P 专 业 计算机与电子通信 学   号 2023111772 班   级 23L0503 学 生 张哲瑞     指 导 教 师 …

计算机一次取数过程分析

计算机一次取数过程分析 1 取址过程 CPU由运算器和控制器组成,其中控制器中的程序计数器(PC)保存的是下一条指令的虚拟地址,经过内存管理单元(MMU),将虚拟地址转换为物理地址,之后交给主存地址寄存器(MAR),从主存中取…

Halcon联合QT ROI绘制

文章目录 Halcon 操纵界面代码窗口代码 Halcon 操纵界面代码 #pragma once#include <QLabel>#include <halconcpp/HalconCpp.h> #include <qtimer.h> #include <qevent.h> using namespace HalconCpp;#pragma execution_character_set("utf-8&qu…

力扣面试150题--二叉树的右视图

Day 53 题目描述 思路 采取层序遍历&#xff0c;利用一个high的队列来保存每个节点的高度&#xff0c;highb和y记录上一个节点的高度和节点&#xff0c;在队列中&#xff0c;如果队列中顶部元素的高度大于上一个节点的高度&#xff0c;说明上一个节点就是上一层中最右边的元素…

江西某石灰石矿边坡自动化监测

1. 项目简介 该矿为露天矿山&#xff0c;开采矿种为水泥用石灰岩&#xff0c;许可生产规模200万t/a&#xff0c;矿区面积为1.2264km2&#xff0c;许可开采深度为422m&#xff5e;250m。矿区地形为东西一北东东向带状分布&#xff0c;北高南低&#xff0c;北部为由浅变质岩系组…

C# 类和继承(所有类都派生自object类)

所有类都派生自object类 除了特殊的类object&#xff0c;所有的类都是派生类&#xff0c;即使它们没有基类规格说明。类object是唯 一的非派生类&#xff0c;因为它是继承层次结构的基础。 没有基类规格说明的类隐式地直接派生自类object。不加基类规格说明只是指定object为 基…

02业务流程的定义

1.要想用好业务流程&#xff0c;首先必须得了解流程与认识流程&#xff0c;什么是业务流程。在认识流程之前&#xff0c;首先要理清两个基本概念&#xff0c;业务和流程。 业务指的是&#xff1a;个人的或者摸个机构的专业工作。流程&#xff0c;原本指的是水的路程&#xff0…

cursor rules设置:让cursor按执行步骤处理(分析需求和上下文、方案对比、确定方案、执行、总结)

写在前面的话&#xff1a; 直接在cursor rules中设置一下内容&#xff1a; RIPER-5 MULTIDIMENSIONAL THINKING AGENT EXECUTION PROTOCOL 目录 RIPER-5 MULTIDIMENSIONAL THINKING AGENT EXECUTION PROTOCOL 目录 上下文与设置 核心思维原则 模式详解 模式1: RESEARCH…

Linux操作系统之进程(四):命令行参数与环境变量

目录 前言&#xff1a; 什么是命令行参数 什么是环境变量 认识环境变量 PATH环境变量 HOME USER OLDPWD 本地变量 本地变量与环境变量的差异 核心要点回顾 结语&#xff1a; 前言&#xff1a; 大家好&#xff0c;今天给大家带来的是一个非常简单&#xff0c;但也十…

Typora-macOS 风格代码块

效果&#xff1a; 替换 Typora安装目录中 themes 文件夹下的 base.user.css 文件&#xff0c;直接替换即可&#xff0c;建议先备份。 css&#xff1a; /* 语法高亮配色 */ .CodeMirror-line .cm-number { color: #b5cea8; } /* 数字 - 浅绿色 */ .CodeMirror-line .…

ansible自动化playbook简单实践

方法一&#xff1a;部分使用ansible 基于现有的nginx配置文件&#xff0c;定制部署nginx软件&#xff0c;将我们的知识进行整合 定制要求&#xff1a; 启动用户&#xff1a;nginx-test&#xff0c;uid是82&#xff0c;系统用户&#xff0c;不能登录 启动端口82 web项目根目录/…

20250526惠普HP锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U)的显卡驱动下载

20250526惠普HP锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U)的显卡驱动下载 2025/5/26 14:44 百度&#xff1a;AMD 7700 显卡驱动 amd APU 显卡驱动 https://item.jd.com/100054819707.html 惠普HP【国家补贴20%】锐14 AMD锐龙 14英寸轻薄笔记本电脑(八核R7-7730U 16G 1T…

2025年5月蓝桥杯stema省赛真题——象棋移动

上方题目可点下方去处&#xff0c;支持在线编程&#xff5e; 象棋移动_scratch_少儿编程题库学习中心-嗨信奥 程序演示可点下方&#xff0c;支持源码和素材获取&#xff5e; 象棋移动-scratch作品-少儿编程题库学习中心-嗨信奥 题库收集了历届各白名单赛事真题和权威机构考级…

AI重构SEO关键词精准定位

内容概要 随着AI技术深度渗透数字营销领域&#xff0c;传统SEO关键词定位模式正经历系统性重构。基于自然语言处理&#xff08;NLP&#xff09;的智能语义分析引擎&#xff0c;可突破传统关键词工具的局限性&#xff0c;通过解析长尾搜索词中的隐含意图与语境关联&#xff0c;…