×

基于Arduino UNO的9V镍氢充电电池智能充电器

消耗积分:0 | 格式:rar | 大小:0.71 MB | 2022-12-21

香香技术员

分享资料个

我寻找智能充电器聊天可以在几个小时内为 9V 镍氢电池充电,但没有找到。此外,我发现的所有充电器都非常“愚蠢”。充电电流未知,电池充满后无终止充电功能。此类充电器的问题是它们会使电池过度充电并显着缩短使用寿命。所以我决定创造“智能”充电器。

第一个版本我打算保持简单,所以它允许基本的事情,比如恒流充电,电池充满电后自动终止充电,涓流充电,测量转移到电池的电量。

在下一个版本中,我将添加一些额外的有用功能,例如放电、容量测量和循环。

警告:用大电流给电池充电可能会导致电池爆炸或起火。请不要让充电器无人看管。此外,请不要尝试为不打算作为碱性电池充电的电池充电。该充电器仅使用镍氢电池进行了测试(并且您仍然需要自行承担风险使用它,如果由于设计或代码中的错误造成的任何损坏,我绝对不承担任何责任)。其他类型电池的懊恼将需要修改代码。

理论
需要记住的一些有用事实将有助于了解充电器所需的参数。

C——电流等于电池标称容量

以C倍率充电时单体电池电压可能达到1.6V。对于旧电池,此电压可能更高。

单体电池标称电压为1.2V,但充满电的电池开路电压高达1.5V。

电池充满电后,建议使用小于 0.025 C (C/40) 的涓流充电率。

给镍氢电池充电一般有两种选择:

1.快速充电。充电电流0.5C-1C。充电状态必须由 dV/dt(电压变化率)或 dT/dt(温度变化率)监控和终止

2.充电慢。充电电流0.1C。充电时间14-16小时。通过定时器终止充电。dT/dt 充电终止不可能用于低电流。根据文献,dV/dt 端接对于低于 0.5C 的电流可能不可靠。

充电电路基本参数
9V 电池通常有 7 节串联,但在某些情况下可能有 6 节或 8 节。稳压器应能提供至少高达8*1.6=12.8V的充电电压。LM317 稳压器的压降高达 2V,因此电源电压需要为 ~15V(这不考虑电流感应电阻上的压降)。

对于 200mA 的最大充电电流和 10 欧姆的电流感应电阻器,电流感应电阻器上的附加压降为 2V,因此需要 17V 的电源电压。

完全放电的电池可能具有非常低的甚至负电压。理想情况下稳压器的最小电压应为 0,但使用 LM317 可能低至 1.2V。

电路

电路说明
基本思想是测量充电电流并调整稳压器的电压,直到达到所需的电流。通过测量电流检测电阻器 R5 上的电压降来测量电流。I=V/R。

SparkFun I2C DAC Breakout - MCP4725 - 用于控制电压的 12 位数模转换器。输出电压可以通过 I2C 配置在 0 到 5V 之间。因为我们需要能够在更宽的范围内调节电压,所以使用0到15V的运算放大器LM358来放大DAC的输出电压。由电阻 R4 和 R3 设置的运算放大器的放大。Gain=1+R4/R3=1+6800/3300=3.06 所以运算放大器的输出电压大约为0到15V。

LM358 的最大输出电流为 50mA,因此 LM317 使用可调稳压器来控制更高的电流。运放输出接LM317的ADJ端。LM317 将在 ADJ 和 OUT 端子之间保持 1.2V,因此电池上的实际电压可以配置在 1.2 和 16.2V 之间。LM317 需要最小 3.5mA 电流来维持调节。因此,如果电池未连接,则使用 1kOhm 电阻器 R6 来确保调节。电容C1用于过滤输出电压,提高LM317的稳定性。

在两个不同点测得的电压。

1. 电阻 R5 连接到 Arduino 的引脚 A2。测量电阻上的电压,然后按 Icharge=V/R 计算充电电流

2. 电池电压最高可达16.2V,因此使用电阻分压器R1、R2将电压降至5V以下,Arduino允许。连接到 Arduino 引脚 A0 的分频器输出。对于 R1=5.1k Ohm 和 R2=20kOhm Vout=Vin/(20000+5100)*5100=0.2 所以电池电压除以 5。

继电器用于断开电池与充电电路的连接。您可以在我使用的照片继电器上看到,但通常可以使用任何具有 5V 控制的继电器。将电池连接到继电器的常开触点更安全。

我使用 YwRobot I2C SERIAL LCD 1602 MODULE 来显示充电器的状态,但可以使用任何其他 I2C 控制的 LCD 模块。似乎标准 LiquidCrystal_I2C 库不支持 YwRobot LCD 模块,所以我使用了New LiquidCrystal 库如果您使用不同的 LCD 模块,则需要更改此行:

Fv-QVnAJH0bGyfwwJZV3Gtb4hiMe

为数模转换器和 LCD 供电,我使用了 SparkFun 面包板电源 5V/3.3V。使用 Arduino 板的 5V 电压可能没问题。

您还需要为充电电路提供 17V 电压。如果你没有电源,你可以使用这样的可调DC/DC转换器

功能
我不想要很多电线,所以没有配置充电的按钮。懊恼电流仅在代码中配置。您需要在charger.ino 中设置所需的充电电流

FjHpX55_dxQHB1Kk0H-NbkRBVTux

target_current_mA - 恒定充电电流

max_time_for_trickle_charge - 涓流充电的最大分钟数,最多可设置为 600 (10h)

Battery_nominal_capacity_mA - 用于计算涓流电流的电池容量

一般充电电流可达标称容量。对于标称容量为 170mAh 的电池,最大充电电流为 170mA。170mAh 电池的最小充电电流通常为 C/10 - 17mA。

通电后充电器会检查电池是否连接。如果电池连接电池,电池将以配置的恒流充电,直到充满电。通过在 5 分钟内检测到负 dV/dt 来终止充电。充电完成后,充电器将切换到电流 C/40 的涓流充电。最大涓流充电时间过后,充电器将断开与电池的连接。

1 - dV/dt

2 - 以分钟为单位的充电时间

1 - 充电时间

2 - 电荷转移到电池

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

评论(0)
发评论

下载排行榜

全部0条评论

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