- 电池充电器的CC和CV模式:
- 电路原理图
- LM317电流调节器
- LM317稳压器
- 继电器配置在CC和CV模式之间切换
- 测量锂电池电压
- 测量充电电流
- Arduino和LCD
- 使用EasyEDA进行PCB设计和制造
- 在线计算和订购样品
- 为Arduino进行两步锂电池充电编程
- 7.4V两步式锂电池充电器的工作
电动汽车,无人机和其他移动电子设备(如IoT设备)的发展似乎对未来充满希望。所有这些中的一件事是它们全部由电池供电。根据摩尔定律,电子设备趋向于变得更小,更便携,这些便携式设备应具有自己的操作电源。如今,便携式电子产品最常见的电池选择是锂离子或锂聚合物电池。尽管这些电池具有很好的电荷密度,但它们在苛刻的条件下化学性质不稳定,因此在充电和使用时应格外小心。
在此项目中,我们将构建一个两级电池充电器(CC和CV),该充电器可用于为锂离子或锂聚合物电池充电。所述电池充电器电路被设计为7.4V的锂蓄电池组(两个串联的18650),我通常在大多数机器人使用项目,但该电路可以容易地被修改以适应较低的或稍高的电池组等,以生成3.7锂电池充电器或12v锂离子电池充电器。您可能知道有现成的充电器可用于这些电池,但是便宜的充电器非常慢,而快速的充电器非常昂贵。因此,在此电路中,我决定使用带有CC和CV模式的LM317 IC构建一个简单的粗充电器。而且,比构建自己的小工具并在此过程中学习更有趣。
请记住,锂电池应小心处理。过度充电或短路会导致爆炸和火灾危险,因此请注意安全。如果您不熟悉锂电池,那么我强烈建议您通读锂电池文章,然后再继续进行。话虽如此,让我们进入该项目。
电池充电器的CC和CV模式:
我们打算在此处构建的充电器是两步充电器,这意味着它将具有两种充电模式,即恒压(CC)和恒压(CV)。通过结合这两种模式,我们将能够比平常更快地给电池充电。
恒定充电(CC):
开始运行的第一种模式将是CC模式。此处应进入电池的充电电流量是固定的。为了保持该电流,电压将相应地变化。
恒压(CV):
一旦CC模式完成,CV模式就会启动。此处电压将保持固定,并且电流将根据电池的充电要求而变化。
在我们的案例中,我们有一个7.4V锂电池组,它只是串联连接了两个18650电池组,每个电池组的3.7V电压(3.7V + 3.7V = 7.4V)。当电压下降到6.4V(每节电池3.2V)时,应该给该电池组充电,并且可以充电到8.4V(每节电池4.2V)。因此,这些值对于我们的电池组已经是固定的。
接下来,我们确定了CC模式下的充电电流,这通常可以在电池的数据表中找到,该值取决于电池的Ah额定值。在我们的案例中,我已将800mA的值确定为恒定充电电流。因此,最初在连接电池进行充电时,充电器应进入CC模式,并根据变化的充电电压将800mA的电流推入电池。这将为电池充电,并且电池电压将开始缓慢增加。
由于我们正在以较高的电压值将大电流推入电池,因此在电池充满电之前,我们无法将其留在CC中。当电池电压达到相当大的值时,我们必须将充电器从CC模式转换为CV模式。充满电后,此处的电池组应为8.4V,因此我们可以将其从CC模式转换为8.2V的CV模式。
充电器转换到CV模式后,我们应保持恒定电压,在本例中,恒定电压值为8.6V。在CV模式下,电池消耗的电流要比CC模式少得多,因为电池本身几乎是在CC模式下充电的。因此,在8.6V的固定电压下,电池将消耗较少的电流,并且随着电池充电,该电流将减小。因此,我们必须监视电流达到非常低的值(例如小于50mA)时,我们假设电池已充满电,并使用继电器自动将电池与充电器断开连接。
总而言之,我们可以列出以下电池充电程序
- 进入CC模式,并以固定的800mA调节电流为电池充电。
- 监控电池电压,并在电池电压达到8.2V时切换到CV模式。
- 在CV模式下,请使用固定的8.6V稳压电压为电池充电。
- 监测充电电流的减小情况。
- 当电流达到50mA时,请自动从充电器断开电池。
800mA,8.2V和8.6V是固定值,因为我们有7.4V锂电池组。您可以根据电池组的要求轻松更改这些值。另请注意,存在许多舞台充电器。像这样的两级充电器是最常用的充电器。在三阶段充电器中,阶段将为CC,CV和浮动。在四级或六级充电器中,将考虑内部电阻,温度等。现在,我们对两步充电器应该如何实际工作有了一个简要的了解,让我们进入电路图。
电路原理图
可以在下面找到该锂电池充电器的完整电路图。该电路是使用EasyEDA制作的,而PCB也将使用EasyEDA制作。
如您所见,电路非常简单。我们已经使用了两个LM317可变电压调节器IC,一个用于调节电流,另一个用于调节电压。第一个继电器用于在CC和CV模式之间切换,第二个继电器用于将电池连接至充电器或从充电器断开。让我们将电路划分为多个部分并了解其设计。
LM317电流调节器
LM317 IC可以借助单个电阻器充当电流调节器。相同的电路如下所示
对于我们的充电器,我们需要如上所述调节800mA的电流。数据表中给出了计算所需电流的电阻值的公式,如下所示:
电阻(Ohms)= 1.25 /电流(Amps)
在本例中,电流值为0.8A,为此,我们获得1.56欧姆的电阻值。但是我们可以使用的最接近的值为1.5欧姆,这在上面的电路图中已提到。
LM317稳压器
如前所述,对于锂电池充电器的CV模式,我们必须将电压调节至8.6V。同样,LM317只需两个电阻即可完成此操作。相同的电路如下所示。
LM317稳压器的输出电压计算公式为:
在我们的情况下,输出电压(Vout)应为8.6V,R1(此处为R2)的值应小于1000欧姆,因此我选择了560欧姆。这样,如果我们计算R2的值,则得出的值为3.3k Ohms。或者,您可以使用任何电阻组合值,只要您将输出电压设为8.6V即可。您可以使用此在线LM317计算器简化您的工作。
继电器配置在CC和CV模式之间切换
我们有两个12V继电器,每个继电器都由Arduino通过BC547 NPN晶体管驱动。两种继电器的配置如下图所示
第一个继电器用于在充电器的CC和CV模式之间切换,该继电器由标记为“模式”的Arduino引脚触发。默认情况下,继电器在触发时处于CC模式,从CC模式变为CV模式。
同样,第二个继电器用于将充电器与电池连接或断开;该继电器由标记为“ Charge”的Arduino引脚触发。默认情况下,继电器将电池与充电器断开连接,触发后,它将充电器与电池连接。除此之外,两个二极管D1和D2用于保护电路免受反向电流的影响,而1K电阻器R4和R5用于限制流经晶体管基极的电流。
测量锂电池电压
为了监控充电过程,我们必须测量电池电压,只有在电池电压达到8.2V时,我们才能将充电器从CC模式切换到CV模式。用微控制器(如Arduino)测量电压的最常见技术是使用分压器电路。此处使用的一个如下所示。
我们知道Arduino Analog引脚可以测量的最大电压为5V,但是在CV模式下,我们的电池可能高达8.6V,因此我们需要将其降低至更低的电压。这正是由分压器电路完成的。您可以使用此在线分压器计算器来计算电阻器的值,并进一步了解分压器。在这里,我们将输出电压 减去 原始输入电压的一半,然后通过“ B_Voltage ”标签将此输出电压发送到Arduino Analog引脚。我们稍后可以在对Arduino编程时检索原始值。
测量充电电流
另一个要测量的重要参数是充电电流。在CV模式下,当充电电流低于50mA表示充电完成时,电池将与充电器断开连接。测量电流的方法有很多,最常用的方法是使用分流电阻器。相同的电路如下所示
其背后的概念是简单的欧姆定律。使流向电池的全部电流流过分流电阻器2.2R。然后根据欧姆定律(V = IR),我们知道该电阻两端的电压降将与流过该电阻的电流成比例。由于我们知道可以使用Arduino Analog引脚来测量电阻器的值和两端的电压,因此可以轻松计算出电流值。电阻两端的压降值通过标签 “ B_Current ”发送到Arduino 。我们知道最大充电电流将为800mA,因此通过使用公式V = IR和P = I 2 R,我们可以计算电阻的电阻值和功率值。
Arduino和LCD
最后,在Arduino方面,我们必须将LCD与Arduino相连,以向用户显示充电过程,并通过测量电压,电流然后触发继电器来控制充电。
Arduino Nano具有板载稳压器,因此将电源电压提供给Vin并使用经调节的5V电压运行Arduino和16x2 LCD显示屏。电压和电流可以通过模拟引脚A0和A1分别使用标签“ B_Voltage”和“ B_Current”来测量。可以通过切换通过标签“ Mode”和“ Charge”连接的GPIO引脚D8和D9来触发继电器。一旦原理图准备就绪,我们就可以进行PCB制造。
使用EasyEDA进行PCB设计和制造
为了设计这种 锂电池充电器电路,我们选择了名为EasyEDA的在线EDA工具。我以前使用过EasyEDA多次,发现它使用起来非常方便,因为它具有良好的外观集合并且是开源的。设计完PCB之后,我们可以通过低成本的PCB制造服务订购PCB样品。他们还提供元件采购服务,其中有大量的电子元件库存,用户可以与PCB订单一起订购所需的元件。
在设计电路和PCB时,您还可以公开您的电路和PCB设计,以便其他用户可以复制或编辑它们并从您的工作中受益,我们还对该电路公开了整个电路和PCB布局,请检查下面的链接:
easyeda.com/CircuitDigest/7.4V-Lithium-Charger-with-MCU
您可以 通过选择“层”窗口中的层来 查看PCB的任何层(顶层,底层,顶层丝绸,底层丝绸等)。您还可以使用 EasyEDA中的“照片查看”按钮查看锂电池充电器PCB,其外观如何 :
在线计算和订购样品
完成此锂电池充电器PCB的设计后 ,您可以通过JLCPCB.com订购PCB。要从JLCPCB订购PCB,您需要Gerber File。要下载PCB的Gerber文件,只需单击EasyEDA编辑器页面上的Generate Fabrication File按钮,然后从那里下载Gerber文件,或者您可以单击JLCPCB上的订购,如下图所示。这会将您重定向到JLCPCB.com,您可以在其中选择要订购的PCB数量,所需的铜层数,PCB厚度,铜重量以及甚至是PCB颜色,如下图所示:
单击JLCPCB按钮上的订购后,它将带您到JLCPCB网站,在此您可以以非常低的价格订购PCB,即2美元。他们的构建时间也非常短,DHL交付3-5天的时间为48小时,基本上,您将在订购一周后获得PCB。
订购PCB后,您可以 查看 日期和时间以显示 PCB的 生产进度 。您可以通过在“帐户”页面上进行检查,然后单击PCB下方的“生产进度”链接,如下图所示。
订购几天的PCB后,我得到了包装良好的PCB样品,如下图所示。
确保轨道和脚印正确后。我开始组装PCB,我使用了母接头来放置Arduino Nano和LCD,以便以后在其他项目中需要它们时可以将其卸下。完全焊接的板如下图所示
为Arduino进行两步锂电池充电编程
硬件准备就绪后,我们可以继续编写Arduino Nano的代码。该项目的完整程序位于页面底部,您可以将其直接上传到Arduino。现在,让我们将程序分成几小段,并了解代码的实际作用。
和往常一样,我们通过初始化I / O引脚开始程序。从硬件中我们知道,引脚A0和A2分别用于测量电压和电流,而引脚D8和D9用于控制模式继电器和充电继电器。定义相同的代码如下所示
const int rs = 2,en = 3,d4 = 4,d5 = 5,d6 = 6,d7 = 7;//提到LCD连接 LiquidCrystal lcd(rs,en,d4,d5,d6,d7) 的引脚号; int费用= 9; //将电池连接或断开至电路的引脚 int Mode = 8; //通过引脚在CC模式和CV模式之间切换 int Voltage_divider = A0; //测量电池电压 int Shunt_resistor = A1; //测量充电电流 float Charge_Voltage; float Charge_current;
在 设置 功能中,我们初始化LCD功能并在屏幕上显示介绍性消息。我们还将继电器引脚定义为输出引脚。然后触发充电继电器,将电池连接到充电器,默认情况下,充电器保持CC模式。
void setup(){ lcd.begin(16,2); //初始化16 * 2 LCD lcd.print(“ 7.4V Li + charger”); //简介消息行1 lcd.setCursor(0,1); lcd.print(“-CircuitDigest”); //简介消息第2行 lcd.clear(); pinMode(充电,输出); pinMode(模式,输出); digitalWrite(Charge,HIGH); //开始Chargig最初通过连接电池 digitalWrite(Mode,LOW); // CV模式为高电平,CC模式为低电平,初始CC模式 延时为1000; }
接下来,在无限 循环 功能内,我们通过测量电池电压和充电电流开始程序。将0.0095和1.78值与模拟值相乘,以将0到1024转换为实际电压和电流值,您可以使用万用表和钳形表来测量实际值,然后计算乘数。从理论上讲,它也是根据我们使用的电阻来计算乘数的值,但它不如我预期的那样准确。
//最初测量电压和电流 Charge_Voltage = AnalogRead(Voltage_divider)* 0.0092; //测量电池电压 Charge_current = AnalogRead(Shunt_resistor)* 1.78; //测量充电电流
如果充电电压小于8.2V,则进入CC模式;如果充电电压高于8.2V,则进入CV模式。每种模式都有自己的 while 循环。在CC模式循环内,我们将Mode引脚保持为LOW保持CC模式,然后继续监视电压和电流。如果电压超过8.2V阈值电压,我们将使用break语句断开CC回路。充电电压的状态也显示在CC回路内的LCD上。
//如果电池电压小于8.2V,则进入CC模式, 同时(Charge_Voltage <8.2)// CC MODE Loop { digitalWrite(Mode,LOW); //保持CC模式 //测量电压和电流 Charge_Voltage = AnalogRead(Voltage_divider)* 0.0095; //测量电池电压 Charge_current = AnalogRead(Shunt_resistor)* 1.78; //测量充电电流 //打印detials上LCD lcd.print( “V =”); lcd.print(Charge_Voltage); lcd.setCursor(0,1); lcd.print(“在CC模式下”); 延迟(1000); lcd.clear(); //检查是否必须退出CC模式if(Charge_Voltage> = 8.2)//如果是{数字写(Mode,HIGH); //更改为CV模式中断; } }
CV模式也可以遵循相同的技术。如果电压超过8.2V,则充电器通过将Mode引脚设为高电平而进入CV模式。这会在电池两端施加一个恒定的8.6V电压,并且允许充电电流根据电池要求而变化。然后监控该充电电流,当其达到50mA以下时,我们可以通过断开电池与充电器的连接来终止充电过程。为此,我们只需要关闭充电继电器即可,如下面的代码所示
//如果电池电压大于8.2V,则进入CV模式, 同时(Charge_Voltage> = 8.2)// CV MODE Loop { digitalWrite(Mode,HIGH); //保持在CV模式 //测量电压和电流 Charge_Voltage = AnalogRead(Voltage_divider)* 0.0092; //测量电池电压 Charge_current = AnalogRead(Shunt_resistor)* 1.78; //测量充电电流 //在LCD lcd.print(“ V =”);中向用户显示详细信息lcd.print(Charge_Voltage); lcd.print(“ I =”); lcd.print(Charge_current); lcd.setCursor(0,1); lcd.print(“在CV模式下”);延迟(1000); lcd.clear(); //通过监视充电电流if(Charge_current <50)//如果是 { digitalWrite(Charge,LOW); //关闭 while期间的 充电(1)//关闭充电器,直到重新启动{ lcd.setCursor(0,1); lcd.print(“充电完成。”); 延迟(1000); lcd.clear(); } } } }
7.4V两步式锂电池充电器的工作
硬件准备就绪后,将代码上传到Arduino开发板。然后将电池连接到板子的充电端子。确保以正确的极性连接它们,极性颠倒会严重损坏电池和电路板。连接电池电源后,使用12V适配器充电。您会看到一个介绍性文字,并且充电器将根据电池的状态进入CC模式或CV模式。如果电池在充电时已完全放电,它将进入CC模式,并且您的LCD将在下面显示类似内容。
随着电池充电,电压将增加,如下视频所示。当此电压达到8.2V时,充电器将从CC模式进入CV模式,现在它将显示电压和电流,如下所示。
从这里开始,电池的电流消耗将随着充电而下降。当电流达到50mA或更低时,充电器假定电池已充满电,然后使用继电器将电池与充电器断开连接,并显示以下屏幕。之后,您可以断开电池与充电器的连接,并在您的应用中使用它。
希望您理解该项目并喜欢构建它。完整的工作可以在下面的视频中找到。如果您有任何问题,请在使用论坛进行其他技术查询的以下评论部分中发布。同样,该电路仅用于教学目的,因此请谨慎使用,因为锂电池在恶劣的条件下不稳定。