基于NE555制作的电池内阻测量电路软件仿真

📅 2026/7/7 19:30:53 👁️ 阅读次数 📝 编程学习
基于NE555制作的电池内阻测量电路软件仿真

简 介:文章通过LTspice仿真分析了基于NE555的电池内阻测量电路特性。该电路利用NE555产生方波,通过恒流源和无极性电容耦合交流信号至待测电池,测量其两端交流电压有效值以反映内阻。仿真发现: 输入电压需超过10V才能稳定输出电流; 负载电阻超过12Ω后电流显著下降,串联10Ω电阻可改善0-12Ω范围内的线性度; 增大耦合电容(如1000μF)可将测量上限扩展至22Ω,但需注意低阻区(<10Ω)的非线性误差; 必须测量电压有效值而非峰峰值以保证线性关系。最终结论指出,优化后的电路可在12Ω内实现较精准

关键词基于NE555的电池内阻测量电路

  • 电容对于555测量电池内阻电路的影响
  • 电池内阻测量电路:555

01【电池内阻测量电路】

一、背景

这是前几天制作测试的基于NE555这款实际芯片, 对电池内阻测量。 电路中利用NE555产生方波交流电压, 使用三端稳压器来产生恒流, 这样便可以测量待测电池的内阻, 它主要是使用输出恒定的交流电流通过无极性电容耦合到待测电池中, 然后使用交流万用表测量电池两端的交流电压有效值, 来反映出电池的内阻大小。 但是在评估这个电路特性的时候出现了问题, 由于手头并没有特别好的能够设定电阻的小值电阻箱, 也就是阻值在五欧姆以下的电阻箱, 这样就无法来测试这样一个交变电路测量电池内阻方案, 它究竟能够测量电池内阻多大范围, 以及它测量电池内阻的线性度如何? 下面我们通过LT Spice进行仿真, 来评估一下这个电路, 它测量电池内阻的范围以及线性特性。

二、LTspice仿真

这是在Ltspice中搭建的仿真电路, 上面是刚刚测试了基于三端稳压器LT1085制作的恒流源, 输出负载电阻R1是100欧姆, 它可以设定输出电流的大小大约是50毫安左右, 下面是用NE555搭建的振荡电路, 这个原理和网络上给定的参考原理图是一样的, 通过100微法的耦合电容, 将输出电流耦合到负载R4上, 这个R4代表着待测电池内阻。 我们也可以修改C4, 使它的容值更大一些。 不过在这里呢我们使用100微法的耦合电容。


我们可以看到仿真结果, 在右侧波形图中,绿色曲线表示, 电路工作电压从0伏上升到20伏, 蓝色波形表示负载电阻R1上的电流波形, 它本身是一个交变电流, 可以看到当电压输入超过10伏之后, 它的电流幅度就变得恒定了, 将数据从Ltspice导出, 更能反映出当输入电压与输出电流之间的关系。 很有趣的是,这个仿真结果与之前实际电路测试的结果是相匹配的, 这是之前直接使用实际电路测量出输出的负载电阻上的交流电压有效值与输入电压之间的关系, 当输入电压超过10伏左右的时候, 输出,假负载上交电压就变成恒定值。


下面我们来测试一下电池内阻对于输出电流的影响。 首先我们讲原来串联的电阻R3, 从原来的10欧姆减小到0.001欧姆, 使得整个电路工作电压固定在12伏, 这样我们来改变电池内阻负载R4的阻值。 设定它从0.1欧姆变化到10欧姆, 每隔0.1欧姆变化一步。 我们来观察在这过程中输出电流幅度的变化, 理想情况下输出电流不应该。 由负的电阻R14所影响, 但实际测量结果可以显示输出电流大小随着负载电阻R4增加而减小。 由此也说明了这个电路实际上并不能够产生恒定的交变电流输出, 这个电流随着负载电阻的变化, 最终会使得输出测量数值精度降低。 我们将仿真结果从Ltspice导出, 绘制出负载电阻R4的阻值与输出电流峰峰值之间的关系。 输出电流的峰峰值的变化, 随着负载电阻R4增加而减小,注意, 这是负载电阻上的电压峰峰值的变化, 那么对于它的有效值测量, 在这里呢并没有反映出。


下面我们将测量输出电压峰峰值改为测量输入电压的有效值, 这样可以看到当电阻超过六欧姆之后, 对应的电流有效值逐步趋向于一个恒定的电流, 那这里我就看出了原来它串联的电阻R3还是有作用的, 这个R3的电阻,它不仅起到了一定的对输出电流限流的作用, 同时它也能使得输出电流的数值保持稳定, 下面我们将它修改为10欧姆, 重新测量待测电阻R4从0.1欧姆变化到10欧姆过程中,输出电流的变化。 那在这里我们仍然观察到输出电流的峰峰值, 还是随着电阻的变化而下降, 但是我们统计输出电流的有效值, 也就讲输出电流平方, 之后累加,再取平均值, 最后开方,可以看到这时它的电流的有效值, 随着负载电阻的变化而呈现出恒定的关系。 这就意味着如果使用频带比较宽的交流万用表, 测量输出电压的有效值, 这个有效值于电池内阻的大小成线性关系。


接下来我们讲负的电阻的变化范围, 修改到从0.1个欧姆变化到50欧姆,主要查看一下。 这个电路工作在12伏下, 它测量电池内阻的最大范围是多少? 通过测量数据,我们可以看到, 当待测电阻超过12欧姆之后, 输出电流便随着电阻的增加而下降,小于12欧姆之前。 输出电流的有效值是恒定的, 也就是在12欧姆之内, 能够保证测量电池两端的电压有效值与它内阻之间呈现线性关系。


下面再查看一下电路中的两个电容,对测量范围的影响 将C1和C4都改为1000微法,这样可以使得振荡器工作电压更加的稳定 ,我们仍然将R3改为很小的电阻值 ,重新测量R4从0.1欧姆变化到50欧姆过程中,输出电流的变化 。测量结果显示在一定范围内,R4的电阻不会影响输出电流有效值 。但是当R4超过22欧姆之后,电流的有效值会随着电阻的增加而下降 ,在中间这一段电阻的阻值与输出电流之间最为稳定 ,当电阻小于10欧姆,对应的电流变化比较大 ,所以电路中R3串联在输出回路上,的确可以减少前面这一段电流变化大的部分对测量结果的影响, 中间的一段电池电阻的变化对输出电流有效值并没有影响,进而电阻上的电压与阻值之间呈现准确的线性关系。

结 ※


文通过LtSpice仿真软件, 对这款基于AE555测量电池内阻电路进行仿真实验。 通过实验我们可以看到, 工作在12伏的电压下, 该电路最大可以测量的电阻大约是22欧姆。 但是在前10欧姆的情况下, 输出电流会随着电阻的变化而产生比较大的波动, 所以在其中串联一个10欧姆的R3电阻, 可以将前面非线性部分进行消除, 剩下的12欧姆范围内是待测电池内阻的测量范围。 最后还要强调的是,我们需要通过测量电池上的交变电压的有效值, 他才与电池的内阻成正比, 而不能够通过测量它的交变电压的峰峰值。

#!/usr/local/bin/python# -*- coding: gbk -*-#============================================================# TEST2.PY -- by Dr. ZhuoQing 2026-07-07## Note:#============================================================fromheadmimport*length,data,time=tspload('bb','length','data','time')#length, data, time = tspload('cc', 'length', 'data', 'time')length,data,time=tspload('dd','length','data','time')length,data,time=tspload('ee','length','data','time')dvdim=[]rdim=linspace(0.1,50,len(length))printf(rdim)foriinrange(len(length)):stid=sum(length[:i])edid=sum(length[:i+1])d=data[stid:edid]t=time[stid:edid]dn=len(d)//3# dv = max(d[dn:]) - min(d[dn:])dv=sqrt(sum(d[dn:]**2)/(len(d)-dn))dvdim.append(dv)plt.plot(rdim,dvdim,lw=3)plt.xlabel("Rload(Ohm)",color="steelblue",fontsize=24)plt.ylabel("Cpp(A)",color="steelblue",fontsize=24)plt.grid(True,which='both',linestyle='--',alpha=0.7)plt.tight_layout()plt.show()# plt.plot(t, d, lw=3)# if i >= 5: break#plt.xlabel("Time(s)", color="steelblue", fontsize=24)#plt.ylabel("Current(A)", color="steelblue", fontsize=24)#plt.grid(True, which='both', linestyle='--', alpha=0.7)#plt.tight_layout()#plt.show()#------------------------------------------------------------# END OF FILE : TEST2.PY#============================================================

▲ 图1.1 耦合电容为100微法,测量结果
#!/usr/local/bin/python# -*- coding: gbk -*-#============================================================# TEST2.PY -- by Dr. ZhuoQing 2026-07-07## Note:#============================================================fromheadmimport*length,data,time=tspload('aa','length','data','time')dvdim=[]rdim=linspace(0.3,30,len(length))printf(rdim)foriinrange(len(length)):stid=sum(length[:i])edid=sum(length[:i+1])d=data[stid:edid]t=time[stid:edid]dn=len(d)//3# dv = max(d[dn:]) - min(d[dn:])dv=sqrt(sum(d[dn:]**2)/(len(d)-dn))dvdim.append(dv)plt.plot(rdim,dvdim,lw=3)plt.xlabel("Rload(Ohm)",color="steelblue",fontsize=24)plt.ylabel("Cpp(A)",color="steelblue",fontsize=24)plt.grid(True,which='both',linestyle='--',alpha=0.7)plt.tight_layout()plt.show()# plt.plot(t, d, lw=3)# if i >= 5: break#plt.xlabel("Time(s)", color="steelblue", fontsize=24)#plt.ylabel("Current(A)", color="steelblue", fontsize=24)#plt.grid(True, which='both', linestyle='--', alpha=0.7)#plt.tight_layout()#plt.show()#------------------------------------------------------------# END OF FILE : TEST2.PY#============================================================


■ 相关文献链接:

  • 电容对于555测量电池内阻电路的影响-CSDN博客
  • 电池内阻测量电路:555