当前位置: 首页 > web >正文

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

本系列文章的最终目标是制作一个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.xdnf.cn/news/10099.html

相关文章:

  • 写作-- 复合句练习
  • Python Day38
  • 特伦斯 S75 电钢琴:重塑音乐感知,臻享艺术之境
  • ADUM3201ARZ-RL7在混合动力电池监控中的25kV/μs CMTI与系统级ESD防护设计
  • Tornado WebSocket实时聊天实例
  • 58-dify案例分享-用 Dify 工作流 搭建数学错题本,考试错题秒变提分神器-同类型题生成篇
  • PHP学习笔记(十一)
  • 顶会新热门:机器学习可解释性
  • VScode-使用技巧-持续更新
  • 鸿蒙OSUniApp智能商品展示实战:打造高性能的动态排序系统#三方框架 #Uniapp
  • Kotlin JVM 注解详解
  • MySQL之数据库的内嵌函数和联合查询
  • Dify理论+部署+实战
  • 利用计算机模拟和玉米壳废料开发新型抗病毒药物合成方法
  • 详解Seata的核心组件TC、TM、RM
  • YOLOv8分割onnx实战及tensorRT部署
  • 黑森林实验室 FLUX.1Kontext:革新图像修改的 AI 力量
  • React 事件处理与合成事件机制揭秘
  • 计算机视觉入门:OpenCV与YOLO目标检测
  • 优化版本,增加3D 视觉 查看前面的记录
  • MySQL 的 super_read_only 和 read_only 参数
  • 板凳-------Mysql cookbook学习 (九)
  • MQTT的Thingsboards的使用
  • WebFuture:设置不自动删除操作日志
  • Celery简介
  • 全面解析:npm 命令、package.json 结构与 Vite 详解
  • 基于LBS的上门代厨APP开发全流程解析
  • 鸿蒙OSUniApp复杂表单与动态验证实践:打造高效的移动端表单解决方案#三方框架 #Uniapp
  • 特伦斯 S75 电钢琴:奏响极致音乐体验的华丽乐章
  • 大话软工笔记—分离之业务与管理