1、简单易用,可快速上手
2、流畅支持300个器件或1000个焊盘以下的设计规模
3、支持简单的电路仿真
4、面向学生、老师、创客
1、全新的交互和界面
2、流畅支持超过3w器件或10w焊盘的设计规模,支持面板和外壳设计
3、更严谨的设计约束,更规范的流程
4、面向企业、更专业的用户
专业版 USB可编程电源/功率监测仪-V1.0
简介:USB可编程电源/功耗监测V1.0,小程序控制, 支持USB PD3.0,BC1.2协议,支持5V~20V输入, 宽范围的输出电压,从2.7V ~ 20V可调,3A的带载能力
开源协议: GPL 3.0
——————————————————————————————————————————————————————————————
本设计支持USB PD3.0,BC1.2协议, 可通过PD/BC1.2协议使支持PD/BC1.2协议的USB电源适配器输出5V,9V,12V,15V,20V
电源给系统供电;
宽范围的输出电压,从2.7V ~ 20V可调,3A的带载能力;
输入电压电流,输出电压电流实时监测,通过320X240的TFT屏或者上位机反馈给用户;
可通过一个多功能按键或者上位机对输出电压,输入电压进行调整;
此项目为初版,硬件设计上还有一些小问题,在最后面有列举出来,如果大家想复刻的话建议在V2.0的版本上去捣腾。下面是V2.0的开源地址,
为何还要保留V1.0呢?主要是考虑到前期有小伙伴已经在捣腾V1.0版本了,在这里保留V1.0,是希望他们有资料可以查看。
【星火计划】USB可编程电源/功率监测 - 嘉立创EDA开源硬件平台 (oshwhub.com)
(点击图片看大图)
上位机微信小程序
小程序上线了,可以扫描打开小程序:
——————————————————————————————————————————————————————————————
时经常会用到一些比如12V,3.3V,5V或者模拟电池电压变化的过程等的这些电压源,又不想花那个钱去买一台可调电源,心想“我
可不可以搞一台方便携带,小巧,不依赖特定的电压源,可以满足日常大部分需求的可调电源呢”;我首先想到的是,“我是不是
可以利用现有的电源适配器(USB 适配器),外挂一个DC to DC芯片,实现升降压是不是就可以实现了?”。
10V以上的输入电压源(这不是很鸡肋吗,我为了使用你这个电压源,我还得另外再搞个专用的适配器,这不符合我的设计需求);
要不就是电路复杂,整机做的比较大,不方便携带,不方便DIY;
——————————————————————————————————————————————————————————————
SPI,USB和IO控制等,未使用的IO口都有引出。
——————————————————————————————————————————————————————————————
(点击图片看大图)
(点击图片看大图)
(点击图片看大图)
在这里我重点解释一下为何本设计选用了如图所示的输出接线端子座,其实目的就一个,方便,不依赖于特定的接线插头,随便身边一条普通
的线就可以使用;而且无需其他额外的工具就可以操作(有手就行)。
我在开源社区有看到一些类似开源项目,使用的都是一些专用的插座,有一定的局限性,不符合便携方便的需求。
U10,U11两个接线端子接入DC电源。
注意:VBUS的如下串联电阻在此版PCB中未加入,目前只是更新了原理图,如果没有串联10k电阻,在20V供电时
PD芯片会发烫,时间久了可能会损坏!!
PD协议芯片,完成BC1.2的协议交互;当不不需要协议信息交互时,可用做MCU的对外通信USB接口,另外MCU的固件
也是通过这个USB口下载的。
小电压变化的模拟信号,如电流检测,它的ADC是16位的,有一位是符号位,实际的数值表示位为15位,LSB:
是40uV,满量程为163.8mV;bus端输入可以用来测量分辨率要求不高的模拟信号,如系统输入/输出电压检测,
LSB:是8mV,满量程为32.76V。
本设计使用IN-1端检测VBUS端的输入电压,IN+1,IN-1检测VBUS的输入电流;IN-2端检测输出电压,NI+2,IN-2
检测输出电流;
为用电设备提供电源。输出电压和限流可通过I2C接口配置。
下图红框部分的电路有标注“新增”的,是后期调试时新增加的,此版PCB板没有更新,仅更新了原理图,这点需要
注意,目前是通过飞线的方式加入元器件的。SC8721支持2.7V~22V的输入电压和2.7V~22V的转换输出电压。
{BOOT1,BOOT0}=01 ,这样才能保证CODE从启动程序存储器启动;这里的BOOT1在PB2口上,PB2连接了一个
按键输入,上面有一个滤波电容,当MCU有通过电后滤波电容会储存电荷,当想进入启动程序时,有很大概率进不了,
而是进入了RAM程序段;这里的解决办法是同时按住SW1和短接BOOT0端子,然后复位或者上电MCU。
BLE芯片可通过跳线冒与MCU的UART进行物理连接,通过UART口实现数据的交互;在下载BLE芯片固件时,需取消跳
线冒,如下USB0 DP,DM用于BLE芯片固件下载口或者在正常模式下时的UART TX、RX与MCU进行通信。
——————————————————————————————————————————————————————————————
电源适配器请求的允许最大受电电压;2. 是实时显示输入源的电压与电流信息
电流和功率信息
如下是本设计使用到的多功能按键,它有三个方向的自由度,分别是逆时针旋转,顺时针旋转和中间向下按下,
它们分别代表了3个不同的按键。本项目中把逆时针旋转定义为左键(LEFT),顺时针旋转定义为右键(RIGHT),
中间按键定义为中间键(CENTER)。
下表是本项目中使用到的按键事件
按键事件 | 描述 |
DOWN | 按键按下 |
UP | 按键抬起 |
SINGLE_CLICK | 单击 |
MULTI_CLICK
|
多击,如:双击,三击,四击等 |
LP | 长按 |
VLP | 长长按 |
VVLP | 超长按 |
HOLD | 按下不放 |
按键功能描述
按键名称 |
前提条件 |
按键事件 |
触发功能 |
备注 |
CENTER |
开机状态 |
SINGLE_CLICK |
使能输出电压、输出限流的设定 |
当此功能触发后,对应可调节的选项会闪烁 |
CENTER |
输出电压/限定流设定使能 |
SINGLE_CLICK |
切换选定输出电压和电流 |
|
CENTER |
开机状态 |
MULTI_CLICK=3 |
循环设定PD协议/或者BC1.2协议的请求受电电压 |
5V->9V->12V->15V->20->5V...... |
CENTER |
开机状态 |
MULTI_CLICK=4 |
循环地打开/关闭电压和电流检测记录表功能 |
开机为打开状态,在打开状态,系统将实时采集最近250个点的电压和电流信息,并输出到LCD屏幕 |
LEFT |
输出电压/限定流设定使能 |
SINGLE_CLICK |
输出电压减少50mV |
|
LEFT |
输出电压/限定流设定使能 |
MULTI_CLICK=2 |
输出电压减少100mV |
|
LEFT |
输出电压/限定流设定使能 |
MULTI_CLICK=3 |
输出电压减少1000mV |
|
RIGHT |
输出电压/限定流设定使能 |
SINGLE_CLICK |
输出电压增加50mV |
|
RIGHT |
输出电压/限定流设定使能 |
MULTI_CLICK=2 |
输出电压增加100mV |
|
RIGHT |
输出电压/限定流设定使能 |
MULTI_CLICK=3 |
输出电压增加1000mV |
|
LEFT |
输出电压/限定流设定使能 |
HOLD |
持续减少输出电压 |
步进为50mV |
RIGHT |
输出电压/限定流设定使能 |
HOLD |
持续增加输出电压 |
步进为50mV |
——————————————————————————————————————————————————————————————
本项目使用的软件架构为本人自行开发,此软件架构的核心是所有的功能模块被独立分开,模块与模块之间以消息的方式进行
信息交互,各个模块维护各自的状态;本着以功能内聚大,以数据耦合为主,尽量不使用逻辑耦合,或者直接修改对方数据的方式。
如下是程序框架图,下面对部分模块进行简要说明,详细的大家可以看看源代码,如有不明白的地方欢迎大家留言讨论:
mcu_os:
核心是mcu_os部分,这部分实现了消息处理,任务调度,内存管理等功能,本项目中的usr_main_app、usr_input_task、
usr_display_task几个功能任务模块就是居于此基础之上进行消息传递,实现系统UI的各个功能需求。
usr_display_task:
负责接收来自usr_main_app发来的一些状态信息,在LCD屏幕上实现各种界面显示。
usr_main_app:
负责接收来自usr_input_task发出的用户输入事件,对用户输入事件进行响应,并把一些状态信息发送给usr_display_task
usr_input_task:
负责调用驱动层的io_key,读取io_key状态信息,生成按键事件并把按键事件发送给usr_main_app
主要API函数介绍:
——————————————————————————————————————————————————————————————
自行下载安装,也可以在代码仓库里的这个目录里找到我下载好的“docs\tools\ARTRY_ISP”,同时还需要安装USB DFU驱动
(Artery_DFU_DriverInstall.exe),通常在下载工具的目录里面有。
按下状态;BOOT0有一个接线端子,将两头短接到一起就可以,PCB板子上有丝印,下载程序过程中一定要保持短接状态,因为这端
子还有另外一个功能,就是切换USB接口到MCU这边。
一步直到图2,选择需要下载的固件,软后点击下一步完成关机下载;断电,恢复{BOOT1,BOOT0}=00/10;上电,这时设备应该
能正常跑起来了。
1. 按如下方式接好USB线到板子,如果芯片是空片,这里就不需要杰里的强制升级的开发工具了,这里我们只需准备一条如下图的USB数据线就可以;
后面更新程序时就不用数据线了(因为本项目的源码是打开了OTA功能的),我们可以通过杰里的OTA升级小程序更新软件,(可以在微信端搜索
“杰里OTA”)。
接上USB线到电脑后,电脑端“设备管理器”中应该可以看到如下的USB设备
2. 用VS CODE打开SDK源代码,按如下图操作,编译并下载程序(如果你的VS CODE没有安装Task Explorer插件的话自己需按装一下)。
你最终应该会看到如下的提示信息,说明程序下载完成。
3. 如果需要OTA的话OTA文件在如下的目录里。
——————————————————————————————————————————————————————————————
1. 铜柱双通:M2*6 4颗
2. 铜柱单通:M2*11+3 4颗
3. 螺丝:M2*6 8颗
——————————————————————————————————————————————————————————————
1. PD芯片CH224K的VBUS引脚需串联10k电阻,原理图有更新,PCB未更新。
2. 刷屏速度慢,肉眼可见的闪屏。
3. 电压调节电路在SC8721的CE引脚需增加一个下拉电阻,保证上电时芯片处于关闭状态,原理图有更新,PCB未更新。
4. 电压/电流调整的方式不是很方便,本人还是比较喜欢使用旋钮的方式。但是旋钮又占空间,很难把东西做到很小。
5. 输出电流检测电路需要优化,目前调节电压时会检测到有输出电流;需把检测电阻往外移,移到反馈网络和所有滤波电路的后面。
6. LCD焊盘位置有点偏上,可以适当向下偏移一点;
如果您觉得本项目不错,麻烦点个赞。
同时如果您觉得本项目有实用价值,也欢迎您点击收藏一下。
——————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————
2024-1-3
起草,构思这个项目的需求;
1. 可以将USB电源适配器通过一个DC-DC可调升降压电源芯片转换后输出一个从1.0V~30V的可调DC电源
2. 支持PD3.0协议,当使用支持PD3.0的USB电源适配器时,可以通过协议沟通,使其输出5V,9V,12V,15V,20V的电压
2. 输入电压,电流的实时检测和显示
2. 输出电压,电流的实时检测和显示
3. 输出电流可设定,超过设定输出电流关断输出
4. 一个比较友好的人机交互界面
2024-1-5
根据项目需求,选择DC-DC升降压电源芯片和其他的一些外围器件,初步选定硬件方案:
1. DC-DC Buck-Boost: 南芯SC8721QFER,Vin:2.7 V to 22V;Vout:2.7 V to 22V
2. MCU:打算使用雅特力AT32F415KCU7
3. 电流检测:打算选TI的INA3221AIRGVR
4. LCD:待定
5. PD芯片:CH224K,4V 至 22V 输入电压,支持 PD3.0/2.0,BC1.2 快充协议
2024-1-10
完成原理图,完成部分元器件布局
2024-01-24 17:50:39
完成pcb所有布线,下单PCB和SMT,整理资料,申请PCB耗材免单
2024-01-31 19:39
等了几天,终于等到你了!!今天板子已经SMT贴好,寄到深圳,一回家就拆快递咯,下面展示一下贴好的板子,免单贴了2片,终于不用手贴了,
太爽了!!有两颗芯片由于立创商城没有,所有只能手焊了。
2024-02-01
今天将未贴的物料焊接上去了,准备上电,测量供电是否正常;可以上电后发现MCU和其他的IC的3.3V供电不正常,只有1.1V左右,哎真是折腾不止啊。。
经过排查后发现电源的RC滤波电路的电阻贴错物料了。
2024-02-02
完成in3221的驱动和输入/输出电压/电流的检测。开始调试SC8721的驱动,在调试过程中我反复控制CE引脚,很不幸的事情还是发生了,
一片板子的SC8721冒烟了,很不能解释,我并没有加任何负载,为何会这样呢?
看来年前就只能到这里了,明天就回老家了,这个问题只能年后处理,不知道是硬件问题还是软件控制逻辑问题。
2024-02-20
SC8721驱动完成,可实时调节输出电压。
2024-02-26 晚上23:38
完成部分LCD的显示,并且可实时刷新监测的电压电流。还不错!!
2024-02-28 晚上23:48
完成部分LCD的全部布局显示!
2024-03-01 晚
完成全部的LCD显示及数据检测刷新功能
2024-03-02 晚 21:47
撰写开发文档,为发布项目整理开源相关的文件
2024-03-10 早上 10:38
这几天在调试蓝牙部分,因之前没有使用过这颗蓝牙芯片,在调试过程中遇到了不少问题,在此记录分享一下:
1. 芯片的供电不能超过3.5V,不然芯片可能会损坏,在这里为啥会提这个呢,是因为本人在调试过程中芯片因为这供电坏了不少;这主要是杰里的
下载工具输出的供电是5V的。这里需要想办法避免;在下载时我是这样给芯片供电的,这样就可以避免烧坏芯片了。
2. 在第一次下载程序时需确保PA9口没有外部的下拉电路,如果有需暂时先断开。因为芯片默认这个口是有低电平持续4S后有复位芯片的功能,
影响下载程序。
3. 晶振的偏差不能太大,太大将导致无法搜索到蓝牙,这个问题困扰了我大部分的调试时间,因为程序运行一切正常,就是找不到蓝牙,后面
经过排查才发现是晶振的问题。
4. 这里有个小技巧与大家分享,就是杰里的大部分芯片,如果是空片,里面没有任何程序的时候,第一次下载程序是不需要使用任何工具的,只
需要一条普通的USB数据线就可以下载了!!后续如果需要更新程序的话可以使用OTA的方式(前提是程序内部需配置打开BLE OTA的功能),然后
微信端搜索“杰里OTA”就可以找到这个小程序,通过这个小程序进行OTA升级,非常方便,这点对于只是想玩玩,不愿意花钱买工具(80多RMB)
的朋友还是一个不错的方案。
2024-03-10 晚上 21:01
今天收到了亚克力板,第一时间组装了一台,还好这次很顺利,没有出现其他的意外,下面展示一下成果吧!嗯。。。瞬间档次就上来了。
2024-03-17 晚上
微信小程序的UI界面和蓝牙通信部分基本功能已经调通。
2024-03-23 早上
完成微信小程序的全部功能。
2024-03-31 晚上
2.0版本开始布局PCB器件
2024-04-01 晚上
2.0版本线路基本全部走通,再有一轮的优化走线和排版就可以发出去了。
2024-04-06 晚上
2.0版本PCB板发出制板,准备采购一些关键物料
2024-04-07
有很多小伙伴申请了小程序体验,但是体验版本的数量只有15个体验成员,为了不辜负大家的支持,我决定上线小程序。之前没有接触过小程序,
这几天查阅了相关资料“如何上线小程序”,今天提交了相关的备案资料等待审核,审核通过后会第一时间分享出来给大家,谢谢大家的支持!!
——————————————————————————————————————————————————————————————
再迭代一个版本,把现有的一些问题点都优化掉,让她更接近于产品的要求。
透露给小伙伴们了,想给大家一个小 “惊喜”。
V2.0 已经发布,感兴趣的小伙伴可以拽下面链接:
【星火计划】USB可编程电源/功率监测 - 嘉立创EDA开源硬件平台 (oshwhub.com)
——————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————
加载中...
是否需要添加此工程到专辑?