硬件部件:
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”之一,定义充电电流,执行测试充电,测试放电,散热器风扇测试和温度传感器测试。
该项目仍在进行中,因为电池充电过程非常耗时,并且调试需要大量时间。
责任编辑:pj
全部0条评论
快来发表一下你的评论吧 !