数字电源DIY图解

电子说

1.2w人已加入

描述

第1步:功能和成本

数字电源

功能

由USB C提供支持

通过蓝牙的Android应用程序控制

通过USB通过USB C进行控制

恒定电压和恒定电流模式

使用低噪声线性稳压器,先跟跟踪预调节器,以最大限度地降低功耗

由ATMEGA32U4提供支持,使用Arduino IDE进行编程

可以通过USB C电池组供电以便携带

USB C和Apple充电器检测

18 mm隔离香蕉插头,与BNC适配器兼容

规格

0 - 1A,步骤1 mA(10位DAC)

0 - 25V,步长为25 mV(10位DAC)(真正的0V操作)

电压测量:25 mV分辨率(10位ADC)

电流测量:

《40mA:10uA分辨率(ina219)《80mA:20uA分辨率(ina219)《160mA:40uA分辨率(ina219)》 320mA:1mA分辨率(10位ADC)

成本

完整的电源供应花了我100美元左右,所有一次性组件。虽然这可能看起来很昂贵,但是功耗远远低于性能和功能通常比这更昂贵。如果您不介意从ebay或aliexpress订购您的组件,价格将降至70美元左右。部件进入需要更长的时间,但这是一个可行的选择。

第2步:原理图和操作原理

数字电源

要了解电路的运行情况,我们将不得不看一下原理图。我将它划分为功能块,以便更容易理解;因此,我将逐步解释操作。

这部分内容非常深入,需要良好的电子知识。如果您只想知道如何构建电路,可以跳到下一步。

主模块

该操作基于LT3080芯片:它是一个线性稳压器,可根据控制信号降压。该控制信号由微控制器产生;如何完成,将在后面详细说明。

电压设置

LT3080周围的电路会产生适当的控制信号。首先,我们将了解电压的设置方式。微控制器的电压设置为PWM信号(PWM_Vset),由低通滤波器(C23和R32)滤波。这会产生一个模拟电压 - 介于0和5 V之间 - 与所需的输出电压成正比。由于我们的输出范围为0 - 25 V,因此我们必须将系数放大5倍。这可以通过U7C的非反相运算放大器配置来完成。设定引脚的增益由R31和R36决定。这些电阻容差为0.1%,可最大限度地减少误差。 R39和R41在这里无关紧要,因为它们是反馈环路的一部分。

电流设置

此设置引脚也可用于第二个设置:当前模式。我们想要测量电流消耗,并在超过所需电流时关闭输出。因此,我们再次通过微控制器产生的PWM信号(PWM_Iset)重新启动,该信号现在经过低通滤波和衰减,从0-5 V范围变为0-2.5 V范围。现在通过运算放大器U1B的比较器配置将该电压与电流检测电阻(ADC_Iout,见下文)上的电压降进行比较。如果电流过高,则会打开LED,并将LT3080的设定线拉至地(通过Q1),从而关闭输出。电流的测量和信号ADC_Iout的产生如下进行。输出电流流过电阻器R22。当电流流过该电阻时,它会产生一个我们可以测量的电压降,并且它被放置在LT3080之前,因为它上面的电压降不应该影响输出电压。使用差分放大器(U7B)测量电压降,增益为5.这导致电压范围为0 - 2.5 V(稍后更多),因此电流的PWM信号处的分压器。缓冲器(U7A)用于确保流入电阻器R27,R34和R35的电流不会通过电流检测电阻,这将影响其读数。另请注意,这应该是轨到轨运算放大器,因为正输入端的输入电压等于电源电压。非反相放大器仅用于测量过程,但对于非常精确的测量,我们在板上安装了INA219芯片。该芯片允许我们测量非常小的电流,并通过I2C进行寻址。

其他内容

在LT3080的输出端,我们还有更多东西。首先,有一个电流吸收器(LM334)。这样可以获得677 uA的恒定电流(由电阻R46设置),以稳定LT3080。然而,它不接地,而是接入VEE,即负电压。这需要LT3080工作电压低至0 V.当接地时,最低电压约为0.7 V.这似乎足够低,但请记住,这可以防止我们完全关闭电源。不幸的是,这个电路处于LT3080的输出端,这意味着它的电流将对我们想要测量的输出电流产生影响。幸运的是,它是恒定的,所以我们可以校准这个电流。齐纳二极管D7用于在输出电压高于25 V时钳位输出电压,电阻分压器将输出电压范围从0 - 25 V降至0 - 2.5 V(ADC_Vout)。缓冲器(U7D)确保电阻器不从输出吸取电流。

电荷泵

我们之前提到的负电压是由好奇的小电路:电荷泵。

它由微控制器(PWM)的50%PWM提供。

升压转换器

现在让我们来看看主模块的输入电压:VCC。我们看到它是5 - 27V,但等待,USB最多可以提供5 V?实际上,这就是我们需要通过所谓的升压转换器来提升电压的原因。无论我们想要什么输出,我们总能将电压提升至27 V;然而,这会浪费LT3080的大量功率,事情会变得很热!因此,我们不会将电压提升到比输出电压更高的电压。考虑到电流检测电阻的电压降和LT3080的压差,大约高出2.5 V是合适的。电压由升压转换器输出信号上的电阻设置。为了在运行中改变这个电压,我们使用数字电位器MCP41010,它通过SPI控制。

USB C

这导致我们实际输入电压:USB端口!使用USB C的原因(确切地说USB类型3.1,USB C只是连接器类型)是因为它允许3A的电流为3A,这已经是相当大的功率。但是有一个问题,设备需要兼容以获取此电流并与主机设备“协商”。实际上,这是通过将两个5.1k下拉电阻(R12和R13)连接到CC1和CC2线来完成的。

对于USB 2兼容性,文档不太清楚。简而言之:只要主机可以提供它,您就可以绘制所需的任何电流。这可以通过监控USB总线电压来检查:一个电压降至4.25V以下,器件消耗的电流过大。这由比较器U1A检测到并将禁用输出。它还向微控制器发送信号以设置最大电流。

作为奖励,增加了电阻器以支持检测苹果和三星充电器的充电器ID。

5V稳压器

arduino的5 V电源电压通常直接来自USB。但由于USB电压根据USB规范可能在4.5到5.5 V之间变化,因此这不够精确。因此,使用5V稳压器,可以从更低和更高的电压产生5V。尽管如此,该电压并不十分精确,但这可以通过校准步骤来解决,其中相应地调整PWM信号的占空比。该e电压由R42和R43形成的分压器测量。但由于我没有更多的自由输入,我不得不做一个引脚拉双重任务。当电源启动时,此引脚首先设置为输入:它测量电源轨并自行校准。接下来,它被设置为输出并且它可以驱动电位计的芯片选择线。

2.56 V电压基准

这个小芯片提供非常精确的2.56 V基准电压。这用作模拟信号ADC_Vout,ADC_Iout,ADC_Vbatt的参考。这就是我们需要分压器将这些信号降至2.5 V的原因。

FTDI

这个电源的最后一部分是与残忍的连接,外面的世界。为此,我们需要将串行信号转换为USB信号。幸运的是,这是由ATMEGA32U4完成的,这是与Arduino Micro中使用的芯片相同。

蓝牙

蓝牙部分非常简单:增加了一个现成的蓝牙模块,为我们提供一切照顾。由于它的逻辑电平为3.3V(微控制器为VS 5V),因此使用分压器对信号进行电平转换。

这就是它的全部!

第3步:PCB和电子设备

数字电源

数字电源

数字电源

现在我们了解了电路的工作原理,我们可以开始构建它了!您可以从您最喜欢的制造商在线订购PCB(我的成本大约10美元),Gerber文件可以在我的GitHub上找到,还有材料清单。然后,组装PCB基本上是根据丝网印刷和材料清单将元件焊接到位。

虽然我以前的电源只有通孔元件,但我的新电源尺寸限制了这不可能。大多数元件仍然比较容易焊接,所以不要害怕。作为一个例子:我的一个朋友,他之前没有焊过,设法填充这个设备!

最简单的方法是首先在前面做组件,然后在后面做完组件,然后完成通孔组件。这样做时,焊接最困难的元件时PCB不会摇晃。

最后焊接的元件是蓝牙模块。

除了2个香蕉插座外,所有元件都可以焊接,我们将在下一步安装!

第4步:案例和汇编

数字电源

数字电源

数字电源

随着pcb的制作,我们可以继续前进。我专门为铝制20x50x80mm外壳(https://www.aliexpress.com/item/Aluminum-PCB-Instr 。..)设计了PCB,因此不推荐使用其他外壳。但是,您始终可以3D打印具有相同尺寸的外壳。

第一步是准备终端面板。我们需要为香蕉插座钻一些孔。我是手工完成的,但是如果你可以使用CNC,那将是一个更准确的选择。将香蕉插座插入这些孔中并将其焊接在PCB上。

现在添加一些丝垫是个好主意,并用一小滴超级胶水将它们固定到位。这些将允许LT3080和LT1370与外壳之间的热传递。别忘了他们!

我们现在可以专注于前面板,只需拧紧就位。在两个面板就位后,我们现在可以将组件插入壳体并将其全部关闭。此时硬件已经完成,现在剩下的就是用软件吹掉一些生命!

第5步:Arduino代码

数字电源

这个项目的大脑是ATMEGA32U4,我们将使用Arduino IDE进行编程。

在本节中,我将介绍代码的基本操作,详细信息可以在代码中找到注释。

代码基本上循环执行以下步骤:

向app发送数据

从应用程序读取数据

测量电压

测量当前

投票按钮

USB过流由中断服务程序处理,以使其尽可能响应。

在通过USB编程芯片之前,应该刻录引导加载程序。这是通过ISP编程器通过ISP/ICSP端口(3x2公头)完成的。选项包括AVRISPMK2,USBTINY ISP或作为ISP的arduino。确保电路板接通电源并按下“刻录引导加载程序”按钮。

现在可以通过USB C端口将代码上传到电路板(因为芯片有一个引导加载程序)。主板:Arduino Micro程序员:AVR ISP/AVRISP MKII现在我们可以看看Arduino和PC之间的交互。

第6步:Android应用程序

数字电源

我们现在有一个功能齐全的电力供应,但还没办法控制它。很烦人。因此,我们将制作一个Android应用程序来控制蓝牙的电源供应。

该应用程序是使用MIT应用程序发明者程序制作的。可以包含所有文件以克隆和修改项目。首先,将MIT AI2伴侣应用程序下载到手机上。接下来,在AI网站上导入.aia文件。这也允许您通过选择“构建》应用程序(为.apk提供QR码)”在您自己的手机上下载应用程序。

要使用该应用程序,请从列表中选择一个蓝牙设备:它将显示作为HC-05模块。连接后,可以更改所有设置,并可以读取电源的输出。

第7步:Java代码

数字电源

为了通过PC记录数据和控制电源,我做了一个java应用。这使我们可以通过GUI轻松控制电路板。与Arduino代码一样,我不会详细介绍所有细节,而是概述。

我们首先创建一个带按钮,文本字段等的窗口;基本的GUI东西。

现在有趣的是:添加USB端口,我使用了jSerialComm库。选择端口后,java将侦听任何传入数据。我们还可以将数据发送到设备。

此外,所有传入的数据都保存到csv文件中,以便以后进行数据处理。

运行.jar文件时,我们应该首先从下拉菜单中选择正确的端口。连接后数据将开始进入,我们可以将设置发送到powersupply。

虽然程序非常基础,但通过PC控制它并记录它的数据非常有用。

步骤8:

数字电源

数字电源

完成所有这些工作后,我们现在拥有一个功能齐全的电力供应!

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分