×

9V镍氢充电电池智能充电器开源分享

消耗积分:2 | 格式:zip | 大小:0.70 MB | 2022-10-27

李鸿洋

分享资料个

描述

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

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

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

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

理论

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

C - 等于电池标称容量的电流

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

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

电池充满后,建议涓流充电率低于 0.025 C (C/40)。

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

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

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

poYBAGNYqT-AfO6zAACp93M6CY4029.png
 

充电电路基本参数

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

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

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

电路

pYYBAGNYqUOAPUV6AAIUvduMiBw447.png
木板
 
pYYBAGNYqUiAUTcxAAEaFiz_QSE908.png
 

电路说明

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

SparkFun I2C DAC Breakout - MCP4725 - 用于控制电压的 12 位数模转换器。输出电压可通过 I2C 在 0 到 5V 之间进行配置。因为我们需要能够在更宽的范围内调节电压,所以使用 0 到 15V 的运放 LM358 来放大 DAC 的输出电压。运算放大器的放大由电阻R4和R3设置。增益=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。测量电阻上的电压,然后计算充电电流 Icharging=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 模块,则需要更改此行:

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // set the LCD address to 0x27 for a 16 chars and 2 line display

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

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

 
 
 
poYBAGNYqUyAULMjAAOMBgXYPdQ111.jpg
 
1 / 3
 

功能性

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

//*************************** Charging parameters *****************************************
//*****************************************************************************************
float target_current_mA=30;				//Charging current mA
float battery_nominal_capacity_mA=170;	//Nominal capacity of battery mA
float max_time_for_trickle_charge=6;  //Maximum trickle charge time in minutes
//*****************************************************************************************
//*****************************************************************************************

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 的涓流充电。最长涓流充电时间过后,充电器将自行断开与电池的连接。

poYBAGNYqU-AL8xiAAKDkVT6C-E463.jpg
屏幕一
 

1 - dV/dt

2 - 充电时间(分钟)

pYYBAGNYqVWAPsVBAAJQywl9vQ4493.jpg
屏幕 2
 
poYBAGNYqVeAEDzEAAJfcN_Ns_8907.jpg
屏幕 3

1 - 充电时间

2 - 电荷转移到电池

 

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

评论(0)
发评论

下载排行榜

全部0条评论

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

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.lene-v.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'9V镍氢充电电池智能充电器开源分享',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.lene-v.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);