
本帖最后由 点点&木木 于 2019-4-13 10:16 编辑 ) n' E& W; \* b- j$ z 带网络接口和USB的WiFi数字控制直流电源。 ![]() 这个项目中使用的东西
介绍 欢迎来到我的下一个项目!原帖是从这里开始的:http://www.stupid-projects.com/wifi-digital-control-dc-power-supply-with-web-interface-and-usb/ 我在我的一个“神奇”组件柜中有一堆这些可调节的LM2596 DC-DC板,你可以在eBay上找到相当便宜的价格(约1.5美元)。 ![]() 正如您所看到的,它由几个元件组成,如电感器,电容器,电阻器等。您应用直流输入电压,然后在另一侧获得降压DC输出。您可以使用10KΩ电位器控制输出电压(蓝色电池装置顶部带有螺丝)。那很棒。但这意味着每次需要更改输出电压时,需要多次旋转螺丝才能获得它。好处是,如果你有一个好的万用表,你可以获得非常精确的输出电压,因为POT是模拟的。不好的是,每次需要更改输出电压时都需要手动操作。 我们的想法是简单地用数字POT改变模拟POT,然后找到一种远程控制它的方法。那么,为什么不使用UART端口,甚至更好的USB端口。哦,等等......为什么不让它控制WiFi并且还有一个网络界面?为此,我们需要以下组件。 组件 数字电位计 eBay上有几个数字电位器,价格便宜,但这里的诀窍是找到一个有足够抽头点(或步骤)的数字电位器。为什么你需要很多步骤?数字电位器的“步长”定义了它的分辨率,因此对于具有100步的10KΩ电位器(如X9C103P),每一步都是10KΩ/ 100 =100Ω。当它用在电压分压器(如LM2596电路板上的电位器)时,它非常大。另一方面,通过使用具有256级步长的MCP41010这样的数字电位器,分辨率变得更高。您可以在eBay上找到这些微芯片数码相机,每个约1.5美元。 ![]() MCP41010采用SPI接口控制,这意味着您需要一个微控制器。这很酷,因为这意味着你也可以使用ESP8566 WiFi模块,如果控制器附带它,为什么不能使用USB接口。 微控制器 我喜欢ARM处理器。我最喜欢的主板是stm32f103c8t6,你可以在eBay上找到2美元的板。它们非常便宜,几乎可以为我的项目提供任何界面,并且它们还有一个非常好的API来编程它们。stm32f103有一个USB端口,超过了需要的2个UART和一个用于控制数字电位器的SPI接口。 . K4 {7 Z# l) d: g: o ![]() 该板由USB连接器或5V或3.3V板载引脚供电。切勿同时使用它们! 7 _$ w& p. U) P/ \/ R ESP8266 ESP8266再次出现在这个项目上,也出现在第一个项目上。上一篇文章中的复制粘贴如下:使用SDK修改源代码很容易,您也可以使用任何支持网络的设备与它们进行交互。我将来会写一篇关于ESP8266的单独帖子,以及如何为这些模块编写自己的代码。你可以在eBay找到它们,它们的成本约为2.50美元。这个模块有几种类型,它们有不同的闪存大小(512KB,1MB),但你现在唯一需要关心的是它需要支持9600波特率而不仅仅是115200,因为我正在使用Arduino的软件串行库,在较低的波特率下表现得更好。请注意,ESP8266仅为3V3设备。这是模块: ![]() 输出继电器 在输出中,我使用了一个继电器来打开和关闭LM2596的输出; 你可能不想这样做,但拥有它很好。在eBay中有许多便宜的光电耦合继电器,价格为1美元至2美元,如下所示: ![]() 我更喜欢高级驱动继电器作为微处理器,通常在复位后它们将引脚驱动为低电平,这是安全的,因为当mcu复位时继电器不会被激活。您可以将参考电源的正电压输出连接到COM和NC端子。另外,请确保继电器符合您要使用的直流输出,因此请勿使用30V继电器输出40V。最后,确保使用3V3输入触发器激活继电器。 6 H. D5 o/ x; J# h5 @ q 降压(AMS1117-3.3) 您还需要一个降压型直流电源模块来为组件供电,例如AMS1117-3.3。在eBay上有一些便宜的预焊接模块与AMS1117,它们看起来像这样: ![]() 如果您使用面包板或双面原型PCB,它们非常方便,因为它们只有3个引脚,所有需要的组件都在模块上。它还有一个LED指示灯,表示它已通电。 5 U: A! N* g. z+ H5 X! L ( x+ Q1 h; a# ?1 d9 P% x7 G" I 原型板 如果你想在没有设计PCB的情况下组装电路,那么你可以在eBay上以低于1美元的价格购买这些便宜的原型面包板。 % E) x: `- N9 [![]() " G9 {, o9 T" t) l" ^ 图像来自各种PCB尺寸,您只需要一个适合焊接所需的一切。 2 n! F) H1 u/ P2 z ST-链接 最后,您需要一个ST-Link编程器来上传固件。一般来说,我有原始的ST-Link V2和Segger J-link程序员,但说实话,我大多数时候都在使用这些便宜的st-link副本,我发现在限制使用上更方便工作区。当然,我建议您购买原始的,但如果您的空间有限,那么从eBay购买其中一个。 ) h( q7 [% H6 a![]() . O$ K2 [1 b# K- z' A 制作项目 我没有为这个项目制作PCB,它只是我面包板上的概念证明。这些是您需要构建的电路原理图。 ![]() 0 V6 S9 x; i. V* p8 a: k) q 当stm32连接到PC或AMS1117-3.3时,它可以通过USB端口供电。因此,您需要小心,如果您要使用USB适配器或将stm32连接到PC,则需要移除K1跳线。如果您不打算使用USB接口,请放置跳线。 从LM2596 PSU模块拆下蓝色电阻POT时,PCB上会有三个空孔。LM2596-POT1和LM2596-POT2端子连接到OUT +输出旁边的PCB孔。有两个主电源输入,一个是VIN连接到AMS1117-3.3并为电路供电,另一个是PSU V+,它来自您将用于LM2596的外部电源。因此,[LM2596-POT1 / 2]和[PSU V +输入/输出]连接到LM2596 PSU。USB_UART(P1)不需要使用,它只是调试UART端口。 您可以从我的Github项目下载源文件:https://github.com/dimtass/stm32f103_wifi_usb_psu 阅读README.md文件,因为它有你需要的所有细节,但我仍然会在这里解释一些事情。您不必构建代码来使用它,但我建议您在需要更改源文件中的一些参数时执行此操作。最新版本的预构建二进制文件位于固件文件夹中,因此您可以使用Windows上的ST-Link实用程序在Linux上刷新hex文件或st-flash实用程序以刷新bin文件。要上传固件,只需连接stm32f103板上的USB电缆并运行README.md文件中的闪烁命令即可。 如果您需要构建代码,那么您将找到适用于Windows和Linux的cmake文件和脚本。因此,如果您有Windows操作系统,那么您需要为ARM cortex-M3安装cmake,make和gcc工具链。阅读本文,了解如何做到这一点。 * x. c7 X, N u1 X$ h% R( ~ 在设置完所有内容之后,您需要做的就是运行build.cmd(在Windows上)或build.sh(在Linux上)来构建代码。Cmake将在build-stm / src文件夹中创建二进制文件,但也将在build-stm文件夹中创建.cproject和.project文件。这意味着您可以将此项目导入eclipseCDT IDE并在其中编辑代码。 您可能需要编辑的一件事是src / http_server.h文件中的IP地址定义(HTTP_IP_ADDRESS)。这是AP分配给ESP8266模块的地址。这意味着您需要将AP路由器配置为,将始终相同的IP分配给ESP8266的MAC地址。然后,您可以重新构建代码并在stm32上刷新新的二进制文件。建议在上传固件之前擦除stm32的闪存,因为闪存的最后1K(地址:0x0800FC00)用于存储配置数据,如APSSID,密码和预定义的POT值。 / t+ x3 p( F' `" l 固件更新后第一次stm32上电,它将尝试从闪存加载配置数据。如果找不到有效配置,则会创建默认配置。在默认配置中,stm无法连接到任何AP,并且预定义的POT值都设置为127(这意味着5KΩ)。您可以使用USB或UART接口更新AP SSID和密码的配置数据。要做到这一点,只需通过计算机上的USB线连接stm并打开终端(我总是喜欢使用Bray的终端)。无论使用什么终端,都要确保LFchar被处理为(CR&LF)。Bray的终端通过选中设置区域中的[CR = LF]复选框和[ - >Send]按钮旁边的[+ CR]来选择该选项。 如果您已经在项目文件夹中重新生成README.md文件,您知道要使用哪些命令。作为一个例子,我假设AP SSID名称是“Router”,WPA2密码是“MyPassword”; 当然,你需要用自己的方式改变这些。要更新配置,请将以下命令发送到终端。 SSID=Router PASS=MyPassword RECONNECT 第一个命令存储SSID名称,第二个命令存储密码,第三个命令启动重新连接到路由器。如果最后一个不起作用,只需移除并重新施加电源。当stm启动时,如果没有连接ESP,LED将每隔250ms开始闪烁,当连接时,LED每隔500ms闪烁一次。当它连接时,您最终可以打开浏览器并通过在地址栏上写入其IP地址来连接到Web界面。这就是你会得到的: ( K4 I8 c( L+ P- n) U& v ![]() 这是一个非常简单的HTML页面,因此有最小的Javascript自动化,这意味着Web界面不会自动恢复PSU状态,因此您不知道它是否打开/关闭以及使用了哪个预定义的输出。因此,请记住这一点。在某些浏览器上,您可能需要先在按钮上进行虚拟点击,这样您可以单击“关闭”按钮1-2次。如您所见,Web界面非常简单。在第一行中有“Power&Trim”按钮,用于关闭或打开输出继电器,并通过更改digi-pot值来调整输出电压。+/-按钮在每次单击时将数字步骤改为1,而 - / ++按钮将步长改为5.您需要使用这些按钮修剪输出并将值保存在预定义的一个上值。 假设这是在新的固件更新和全闪存擦除后,第一次打开Web界面,因此没有任何配置数据。还假设您已选择src/ http_server.c文件中的预定义值为(2V5),(3V3),(5V),(6V)和(12V)。现在您需要执行校准过程,因为所有预定义值默认设置为数字电位器(5KΩ)的步骤127。 首先将输入功率[ΙΝ+ /ΙΝ-]连接到LM2596(例如12V)和输出中的万用表以测量电压,然后单击关闭按钮的1-2倍,单击需要设置的预定义值然后单击“开”按钮。在万用表上,您将看到与数字电位器步骤127(5KΩ)对应的输出值。现在您需要更改输出。为此,请按住( - )按钮(或++),直到接近预定义值。然后使用( - / +)按钮进一步修剪并获得所需的输出。不要指望输出非常精确,因为10K数字电位器的256步每步只有39Ω。当您获得所需值的最近值时,按(保存)按钮将存储该值。 然后按下一个预定义按钮(3V3)并重复此过程,直到设置所有值,这就是校准的完成方式。 由于LM2596的电压下降约为0.7V,因此不要期望输出电压为12V。当您获得所需值的最近值时,按(保存)按钮将存储该值。然后按下一个预定义按钮(3V3)并重复此过程,直到设置所有值,这就是校准的完成方式。 数字电位器是一个线性电阻器,不像你在LM2596上更换的电位器那样对数。这意味着如果您使用12VPSU作为参考,您将在5V下获得更好的分辨率,但是在此电压下,分辨率会显着下降。 如果由于某种原因改变了LM2596的输入电压,则需要再次重复校准程序。此外,最好不时地做到这一点,以确保它已经过校准,并且在连接电路之前总是用万用表检查输出。如果您需要另一个输出电压,那么只需在输出端连接万用表,按下更接近所需输出的预定义电压,然后使用(+/-)按钮获取它。 最后,您可以使用USB连接和README.md文件中说明的命令来完成所有这些操作。您也可以使用USB接口来设置这样的精确数码步长值。 POT=127 您可以设置0到255之间的任何值。 这是Web界面实际上在使用中的截图。 & j& U# O6 y1 T+ Z" x. c# S ![]() 您可以在src / http_server.c源代码文件中编辑html文件。您可以右键单击您的浏览器并查看页面源,因为它对C格式非常神秘,然后您可以进行任何您喜欢的更改。只是不要在那里添加太多东西,因为界面将需要更多的时间来加载。您也可以更改CSS样式以更改颜色,然后重新构建代码并上载固件。 : B4 w8 V3 @$ `7 q摘要 嗯,这项目构建起来非常简单。所有需要的组件成本约为10美元。这是eBay上的组件列表及其近似价格(您可能会发现这些更便宜)。 LM2596 PSU~ $ 1.5 MCP41010(10KΩ数码电位器)~1.5美元 STM32F103C8T6开发板〜$ 2 ESP8266-05模块〜$ 2.5 光电耦合继电器板〜$ 1.5 AMS1117-3.3模块〜$ 0.20 双面原型面包板〜$ 1 : }3 z% W- n3 Z' n. C0 j q( C" |, L0 a 这是在面包板上的照片。 ![]() & h9 E: {8 b% M0 z2 K0 v8 E |
好项目,去GITHUB找了到了源码,留个记录。 |
意法半导体推出STM32微处理器专用高集成度电源管理芯片
开源一个F334的多功能数控电源,基于HAL库编写,手头有一...
基于STM32F334的BUCK同步降压数字电源设计
基于STM32F334的数字电源
意法半导体八路输出高边开关
意法半导体STM32支持 UCSI 规范,加快Type-C供电广泛应用
如何打造更小的数字输入模块
NFC赋能减碳节能
基于STM32电池管理应用芯片
Gridspertise和意法半导体20年合作新里程赋能美国等地智能电表客户积极参与能源转型