技术热线: 4007-888-234

使用NodeMCU开发一个带WiFi模块的电池电压监控系统

更新时间: 2019-11-06
阅读量:6242

测量太阳能电池板、UPS和其他日常使用电池的电压会花费大量时间。如果,给这些设备添加一个WiFi模块,是不是读取电压更方便了?为此,英锐恩单片机开发工程师分享了一个来自国外的基于NodeMCU开发的带WiFi模块的电池电压监控系统。

使用该系统可以连接到我们本地家庭WiFi的WiFi设备,可以从控制器读取电压,并向最终用户更新当前电池电量。为此,在本方案中使用nodemcu WiFi模块。它不仅可以用作控制器,还可以将其自身作为服务器或客户端连接到WiFi网络。电池监控电路是传统的分压器电路。我要测量12伏电池。可以修改电路以测量24伏电池,甚至更多48伏并联电池组。

Nodemcu是一个很小的设备,它的工作电压为3.3伏。由于其工作电压为3.3伏,因此其引脚只能提供和吸收3.3伏的电压。大于5伏的电压可能会烧断引脚或炸掉节点MCU。在我们的情况下,我们要测量12伏电池,nodemcu adc(模拟至数字通道)只能接受3.3伏。我们需要在这里聪明地比赛。我们要做的是将两个电阻器之间的电压分压,并仅测量一个电阻器上的电压,剩余的电阻器电压将通过数学计算。典型的分压器电路和公式如下:

QQ截图20191106173404.png


接下来,我们来计算一下Rtop和Rbottom的值。在这里,我们需要认真考虑一些重要的因素。

(1)低欧姆电阻会吸收大量电流,并且电线可能会立即被加热。因此,电线可能在几秒钟内熔化。因此,对于较大的安培小时电池,请始终使用足够数量的电阻。这里选择了一个电阻Rbottom为10k欧姆。

(2)在充电过程中,电池电压可能会增加到18伏。例如,在充满阳光的情况下,150瓦的太阳能电池板在6安培时输出17伏特,输出电压甚至可以达到18伏特以上。太阳能控制器还输出电压大约等于15伏,可为电池充电。

公式计算

我将测量Rbottom两端的电压,并随机决定其值为10k欧姆。我们知道Vout可以高达3.3伏,因为nodemcu可以工作并且在其I/O引脚接受最大3.3伏。电池充电时Vin为18伏,现在我们可以计算Rtop的值。

voltage-devider.png


现在,如果电池侧有18伏电压,则将在电阻器之间分配电压,在10k电阻器上将下降3.3伏,在44.54k电阻器上将剩下14.7伏。44.54 k ohm电阻在市??场上不可用,我将使用高于该额定值的电阻,可以在任何电子产品商店中找到47 k ohm电阻。如果电池没有充电,并说提供12伏电压,电阻两端的压降将是多少?

voltage-drop.png


从以上讨论可以明显看出,Rbottom两端的电压现在不会超过3.3伏。我希望读者对计算有意义。现在的问题是如何通过nodemcu将3.33伏转换为12伏,或者如何从3.33伏预测电池侧的电压为12伏。这里涉及更多的数学。由于电阻值是固定的,因此我们可以计算电阻两端相对于电源的电压比,并将其用于代码中表示电源的实际电压。比率的计算方法如下:

voltage-divider-ratio_orig.png


上面给出了两种情况,当电源为18伏时和电源为12伏时,两种情况的比率均为恒定值。该比率在代码中用于预测实际的电源/电池电压。比率乘以Rbottom处的实际电压值。

方案电路图如下。我正在使用nodemcu的ADC0通道来测量电池电压。电池和nodemcu电源都必须接地,以完成电路。这是一个最常见的错误,将测量两个接地未一起接地的电压。如果未将nodemcu接地与电池接地绑在一起,则adc0引脚将变为浮动引脚,并开始读取浮动值。

QQ截图20191106174258.png


在完成电路之后,是时候继续编写代码了。代码是用arduino IDE编写的。我在代码中使用了ESP8266WiFi.h库,因此请首先确保将此库安装在arduino库文件夹中。如果不存在,请从github下载并首先安装。然后输入要与您的nodemcu连接的WiFi网络的SSID和密码。最有可能的是您的家庭WiFi。因此,只需输入ssid和密码。现在,将代码上传到nodemcu中。上传之前,请确保您从arduino开发板上选择了正确的开发板。如果nodemcu没有出现在您的面板下拉菜单中,则从面板管理器导入其链接并安装其必要文件。

在浏览器中点击分配的IP后,您将看到显示电池状态和按钮的页面。随时按此按钮可获得更新的温度。

注意:Nodemcu和要查看其电压的客户端移动设备或台式机必须连接到同一WiFi。如果您的服务器节点计算机和客户端移动设备或计算机,便携式计算机等连接到不同的网络,则在点击IP后无法查看任何内容。


源代码附件:

带WiFi模块的电池电压监控系统.txt


以上就是英锐恩单片机开发工程师们分享的基于NodeMCU开发的带WiFi模块的电池电压监控系统。