本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页

基于Arduino的NiMh电池的自动充电器
发布时间:2021-03-01
分享到:
基于Arduino的NiMh电池的自动充电器
发布时间:2021-03-01
分享到:

硬件部件:

  • atmega328p-pu×    1个        
  • 带按钮的旋转编码器×    1个        
  • 2.5伏参考电压,ad680jtz×    1个        
  • 8 MHz晶振×    1个        
  • 电容22 pF×    2个        
  • 电容100 nF×    5        
  • 电阻1M欧姆×    2个        
  • 电阻10k欧姆×    10        
  • 电阻4.75k欧姆×    1个        
  • 电阻1k欧姆×    7        
  • 电阻220欧姆×    1个        
  • 电阻100欧姆×    7        
  • 电容1 µF×    2个        
  • 电容器100 µF×    1个        
  • 电容1000 µF×    1个        
  • ams1117-5.0×    1个        
  • 二极管1n400×    1个        
  • mosfet N通道ao3400×    3        
  • Mosfet P通道A03407×    2个        
  • JST XH插座。3p,4p,5p×    1个        
  • LED(通用)×    1个        
  • 散热器×    1个        
  • 风扇40x40 12v×    1个        
  • 功率PNP晶体管1SB1375×    2个        
  • 通用晶体管PNP×    2个        
  • 通用晶体管NPN×    4        
  • 1欧姆1W 1%电阻×    2个        
  • 2.2欧姆5W电阻×    2个        
  • 齐纳单二极管,5.1 V×    2个        
  • LCD i2c显示器16x2或20x4×    1个        
  • Maxim Integrated DS18B20可编程分辨率1-Wire数字温度计×    3        
  • AA电池座×    2个        

软件应用程序和在线服务

  • Arduino IDE            

手动工具和制造机

  • 烙铁(通用)

该项目致力于为NiMh AA电池充电。
声明:这是一项正在进行的工作,该软件仍处于Alpha阶段。
该充电器可用于为电池缓慢和快速充电,也可以恢复旧电池。该充电器基于Arduino微控制器atmega328p-pu,可将全部可用信息显示到16x2或20x4 LCD字符屏上。它最多可以独立为两节电池充电。您只能给一个电池充电,也可以同时给两个不同容量的电池或两个类似的电池充电。在为电池充电之前,必须为每个电池插槽设置电池容量,充电速度和循环计数,然后将电池插入插槽,然后过程开始。
充电器支持三种充电模式:
•    快速充电。电池应在5个小时内充满电。充电电流取决于电池容量,等于0.2C。
•    充电缓慢。电池应在10小时内充满电。充电电流等于0.1C。
•    恢复充电。此模式下的充电电流限制为40mA。恢复时间取决于电池容量。此模式可用于恢复电池容量并为其他充电器无法充电的旧电池充电。
充电过程包括以下几个阶段:
•    放电阶段。电池通过内部电阻放电至0.9 v。
•    预充电阶段。电池以小电流充电,大约30mA,直到电池电压变为1.0v。
•    主充电阶段。根据计算的电流对电池充电,具体取决于电池容量和充电模式(快速,缓慢还原)。如果检测到电压下降或电池过热或达到电压上限,则电池充电阶段结束。
•    充电后阶段。电池以小电流充电,直到另一个电压下降或电压上限。
•    完成阶段。电池会以短电流脉冲充电,直到将其从充电器中取出为止。
如果在给电池充电之前未设置环路,则充电过程将贯穿整个阶段。如果选择运行多个充电循环,则充电器将在主充电阶段完成后立即重新开始放电过程,直到达到循环计数为止。您可以使用多个循环充电来恢复电池容量。
充电器具有三个温度传感器:一个用于每个电池插槽,另一个用于控制安装在功率晶体管上方的内部散热器的温度。为了降低内部散热器的温度,在充电器内部安装了一个小风扇。散热器温度达到最高限制时,风扇会自动打开。当散热器变冷时,风扇将关闭。
充电器原理图如下图所示。为了简化原理图的读数,它分为三个部分:控制器部分和两个通道。两个充电通道都非常相似,唯一的区别是输出和输入信号以及组件编号。

充电器的控制器部分:

如上图所示,为增加电池电压测量,已实现外部基准电压源AD680JTZ。其精度为0.4%,并且控制器可以检查高达0.001伏的电池电压。您可以用运行在8 MHz或更高频率的Arduino板(uno,nano,pro mini)替换atmega328p-pu IC。
这是套接字说明:
•    J1可以像Arduino pro mini一样通过UART端口对微控制器进行编程。
•    J2连接电池温度传感器DS18b20
•    X2 12伏电源连接器
•    U3连接i2c LCD显示器。平滑改变显示屏亮度所需的亮度引脚
•    U4连接旋转编码器。
•    U5连接安装在散热器上的12v 40x40x10mm风扇。

通道“ A”原理图:

通道“ B”的原理图:

在这里,您可以找到该项目的完整原理图和PCB板。

让我解释一下充电器如何在通道“ B”上工作。晶体管Q9和Q10是达林顿对,可为连接到插座J4的电池提供充电电流。Arduino控制器通过PWR_B端口将PWM信号提供给Q13晶体管。PWM占空比越大,在Q9集电极上产生的电流就越大。

Q11 mosfet用于启用或禁用电池充电电流。Q12 MOSFET用于通过R26电阻对电池放电。

要测量R31电阻上的充电电流电压,请检查。

为了向电池提供所需的电流,充电器中使用了PID算法。

定义温度传感器的正确顺序

您必须对充电器进行一些初始配置,因为在此项目的单条总线上有三个温度传感器ds18b20。在启动过程中,充电器以某种特定顺序检测所有传感器。您必须指定正确的传感器顺序,充电器才能正常工作。
将NiMh_Serial固件加载到您的控制器,并将终端连接到UART端口。选择“温度”菜单项。按下编码器按钮。您可以看到所有温度传感器的值。加热一些传感器,并记住它在列表中的位置。对每个传感器重复此过程。现在,您可以定义充电器的正确传感器顺序。将NiMH_Charger代码加载到Arduino IDE并找到“ core.init(SO_BHA);”行。在setup()函数中。要定义正确的传感器顺序,您必须为core.init()方法指定正确的SO_ *代码。温度传感器有6种可能的组合:
SO_ABH-通道“ A”,通道“ B”,内部散热器。
SO_BAH-通道“ B”,通道“ A”,内部散热器等。
此过程只能执行一次。
串行固件的其他可能性
* _serial固件是一种功能强大的工具,可用于调试充电器硬件。使用串行菜单,您可以选择电池通道“ A”或“ B”之一,定义充电电流,执行测试充电,测试放电,散热器风扇测试和温度传感器测试。
该项目仍在进行中,因为电池充电过程非常耗时,并且调试需要大量时间。

 

加入微信技术交流群

技术交流,职业进阶

关注与非网服务号

获取电子工程师福利

加入电路城 QQ 交流群

与技术大牛交朋友

讨论