|
最近实在太忙, 好久没有浮水, 为了不让这个项目拖的很久, 阿力可能最近比较忙, 我来顶阿力段时间, 我先写了部分程序.
1
菜单简单定了下, 目前还没有作充电部分的程序, 先做了察看电池状态的程序. 电压测试精度还可以 应该在 0.01V 以内.
大家烧入程序后上电. ( 5V DC )
进入如下的菜单:
2
按下按键, 选择到 3.Bettery Stat
3
</font>
然后按 Enter 进入
4
选择 1:Bettery0 按 Enter 进入第一通道电池的状态.
因为我的第一路电池没有装上, PWM 输出占空比也为 1 / 255, 测出的电压接近于输入电压减去几个管子的管压将,因此也就是 4.6V 左右. 电流为 0A
5
按 Cancel 按键可以退出到上一个菜单选项. 按下的话大家可以看到除了可以查看第一通道外,还可以查看第二通道 或者 两通道一起看
6
选择 第二通道 ( Bettery1 ) 进入可以看到第二节电池的状态.
因为我没有放入实际的电池,一般的镍氢电池的内阻为 0.6 ohm 左右, 因此我选择了两个 1ohm/2W 的大功率电阻并联代替电池来测试.
1
因为我buck输出电路占孔比大概设了 0x007f / 0x01ff ,这样输出电压大概为 0.5V, 和 0.1左右的电阻分压后测出大约为 410 mV, 电流么就是电压除以电阻
大约为0.8A 左右,由于电阻的误差, 测出 0.85A 属于正常范围.
7
如果选择 3.Both B0 & B1 这个选项, 那么同时可以看出两路的电压也电流状态.
8
程序版本: PRMCharger_V0.04.rar CVAVR 1.25.7a 版本编译通过
点击下载: 点击此处下载ourdev_227315.rar(文件大小:211K)
附: 目前我们定下的菜单框架
1
==============================================================================================================================
PRMCharger_V0.042:
备注: 程序修改Bug中, 菜单改为支持多线程模式, 完善 LCD 程序,完善按键底层程序,增加按键去抖动,增加按键长按功能。
2008.03.010 20:28
(1) 定 F 参数
F1: 电池种类
F2: 电池容量 mAH
F3: 预充起点电压 mV
F4: 预充结束电压 mV
F5: 预充电流 mA
F6: 放电起点电压 mV
F7: 放电结束电压 mV
F8: 放电电流 mA
F9: 快充起点电压 mV
F10: 快充结束电压 mV
F11: 快充电流 mA
F12: 电池电压上限 mV
F13: 超过电池电压上限保持时间 S
F14: 超过上限电压结束方式
F15: 保护温度上限 C
F16: 超过保护温度结束方式
F17: 保护温度后再充间隔时间 S
F18: 单次充电温度保护次数限定
F19: 补充充电电流 mA
F20: 补充阶段时间 S
F21: 涓流充电电流 mA
F22: 涓流阶段时间 S
F23: 单次充电额定时间 Hour
F24: 单次充电电压下限 mV
F25: 需修复电池电压上限 mV
F26: 最大修复时间 Min
F27: 满电保持功能
程序版本: PRMCharger_V0.042.rar CVAVR 1.25.7a 版本编译通过
PRMCharger_V0.042.rar(文件大小:229K)
LCDMenuPatch 0.042.rar(文件大小:5K) (Add by 村长,08.03.11)
==============================================================================================================================
PRMCharger_V0.044: (2008年03月13日02点24分)
备注:
1.安哥更新:增加 PID ,已经可以正常运行,接下来需要通过经验和试验拟定参数。
2.村长更新:修改菜单程序。
程序版本: PRMCharger_V0.044.rar CVAVR 1.25.7a 版本编译通过
(1)点击此处下载ourdev_229695.rar(文件大小:255K)
(2)点击此处下载ourdev_229696.rar(文件大小:6K) (Add by 村长,08.03.13)
==============================================================================================================================
PRMCharger_V0.045: (2008年03月13日23点33分)
备注:
调试完成PI算法,定P参数为 5.2 , I参数为0.01, 已经可以控制电压电流。
不过硬件上面有些误差,在低压测量的时候有30mV以下的误差,不过基本断定为放大电路电阻误差造成的。明天更换精密电阻再作测试。
程序版本: PRMCharger_V0.045.rar CVAVR 1.25.7a 版本编译通过
点击下载:点击此处下载ourdev_230355.rar(文件大小:255K)
==============================================================================================================================
PRMCharger_V0.047: (2008年03月15日23点33分)
备注:
完成基本的充电程序,基本功能已经写完,待测试
程序版本: PRMCharger_V0.047.rar CVAVR 1.25.9 版本编译通过
点击下载:点击此处下载ourdev_231536.rar(文件大小:303K)
==============================================================================================================================
PRMCharger_V0.048: (2008年03月16日19点45分)
备注:更新完参数,写完参数部分的菜单设置
更新F参数表
// 根据全局数据表的PWM相关定义
#define PID_FLAG para[44] // 直接控制还是使用 PID 运算
//BAT0
#define Bat0_Class para[45] // F1: 电池种类
#define Bat0_Volume_L para[46] // F2: 电池容量 mAH
#define Bat0_Volume_H para[47]
#define Bat0_Vol_Repair_Min_L para[48] // F3: 需修复电池电压下限 mV
#define Bat0_Vol_Repair_Min_H para[49]
#define Bat0_Vol_Charge_Min_L para[50] // F4: 可充电电压范围下限 mV
#define Bat0_Vol_Charge_Min_H para[51]
#define Bat0_Vol_Discharge_Min_L para[52] // F5: 需放电电压范围下限 mV
#define Bat0_Vol_Discharge_Min_H para[53]
#define Bat0_Vol_PowerFull_Min_L para[54] // F6: 满电电压下限 mV
#define Bat0_Vol_PowerFull_Min_H para[55]
#define Bat0_VOL_ClassErr_MIN_L para[56] // F7: 电池种类错误下限 mV
#define Bat0_VOL_ClassErr_MIN_H para[57]
#define Bat0_Cur_DisCharge_L para[58] // F8: 放电电流 mA
#define Bat0_Cur_DisCharge_H para[59]
#define Bat0_Vol_DisCharge_OVER_L para[60] // F9: 放电结束电压 mV
#define Bat0_Vol_DisCharge_OVER_H para[61]
#define Bat0_Cur_Repair_L para[62] // F10: 电池修复电流 mA
#define Bat0_Cur_Repair_H para[63]
#define Bat0_Vol_Repair_OVER_L para[64] // F11: 修复结束电压 mV
#define Bat0_Vol_Repair_OVER_H para[65]
#define Bat0_Time_Repair_MAX_L para[66] // F12: 最大修复时间 Min
#define Bat0_Time_Repair_MAX_H para[67]
#define Bat0_Cur_Pre_CHARGE_L para[68] // F13: 预充电流 mA
#define Bat0_Cur_Pre_CHARGE_H para[69]
#define BAT0_Vol_Rre_CHARGE_OVER_L para[70] // F14: 预充结束电压 mV
#define BAT0_Vol_Rre_CHARGE_OVER_H para[71]
#define BAT0_Cur_Fast_CHARGE_L para[72] // F15: 快充电流 mA
#define BAT0_Cur_Fast_CHARGE_H para[73]
#define BAT0_Vol_Fast_CHARGE_MAX_L para[74] // F16: 快冲最高电压 mV
#define BAT0_Vol_Fast_CHARGE_MAX_H para[75]
#define BAT0_Time_Fast_CHARGE_MAX_L para[76] // F17: 最高电压保持时间 S
#define BAT0_Time_Fast_CHARGE_MAX_H para[77]
#define BAT0_Mode_Fast_CHARGE_OVER para[78] // F18: 结束方式 1:转为涓流 0:直接结束
#define BAT0_DeltaV_Fast_VHARGE para[79] // F19: 快冲结束-△V *10 mV
#define BAT0_Cur_Add_CHARGE_L para[80] // F20: 补充充电电流 mA
#define BAT0_Cur_Add_CHARGE_H para[81]
#define BAT0_Time_Add_CHARGE para[82] // F21: 补充维持时间 Min
#define BAT0_Cur_Stream_CHARGE_L para[83] // F22: 涓流充电电流 mA
#define BAT0_Cur_Stream_CHARGE_H para[84]
#define BAT0_Time_Stream_CHARGE_L para[85] // F23: 涓流维持时间 Min
#define BAT0_Time_Stream_CHARGE_H para[86]
#define BAT0_PowerFull_Retain para[87] // F24: 满电保持功能 1:开启 0:关闭
#define BAT0_Time_CHARGE_MAX para[88] // F25: 单次充电最大时间 Hour
//BAT1
#define Bat1_Class para[120] // F1: 电池种类
#define Bat1_Volume_L para[121] // F2: 电池容量 mAH
#define Bat1_Volume_H para[122]
#define Bat1_Vol_Repair_Min_L para[123] // F3: 需修复电池电压下限 mV
#define Bat1_Vol_Repair_Min_H para[124]
#define Bat1_Vol_Charge_Min_L para[125] // F4: 可充电电压范围下限 mV
#define Bat1_Vol_Charge_Min_H para[126]
#define Bat1_Vol_Discharge_Min_L para[127] // F5: 需放电电压范围下限 mV
#define Bat1_Vol_Discharge_Min_H para[128]
#define Bat1_Vol_PowerFull_Min_L para[129] // F6: 满电电压下限 mV
#define Bat1_Vol_PowerFull_Min_H para[130]
#define Bat1_VOL_ClassErr_MIN_L para[131] // F7: 电池种类错误下限 mV
#define Bat1_VOL_ClassErr_MIN_H para[132]
#define Bat1_Cur_DisCharge_L para[133] // F8: 放电电流 mA
#define Bat1_Cur_DisCharge_H para[134]
#define Bat1_Vol_DisCharge_OVER_L para[135] // F9: 放电结束电压 mV
#define Bat1_Vol_DisCharge_OVER_H para[136]
#define Bat1_Cur_Repair_L para[137] // F10: 电池修复电流 mA
#define Bat1_Cur_Repair_H para[138]
#define Bat1_Vol_Repair_OVER_L para[139] // F11: 修复结束电压 mV
#define Bat1_Vol_Repair_OVER_H para[140]
#define Bat1_Time_Repair_MAX_L para[141] // F12: 最大修复时间 Min
#define Bat1_Time_Repair_MAX_H para[142]
#define Bat1_Cur_Pre_CHARGE_L para[143] // F13: 预充电流 mA
#define Bat1_Cur_Pre_CHARGE_H para[144]
#define BAT1_Vol_Rre_CHARGE_OVER_L para[145] // F14: 预充结束电压 mV
#define BAT1_Vol_Rre_CHARGE_OVER_H para[146]
#define BAT1_Cur_Fast_CHARGE_L para[147] // F15: 快充电流 mA
#define BAT1_Cur_Fast_CHARGE_H para[148]
#define BAT1_Vol_Fast_CHARGE_MAX_L para[149] // F16: 快冲最高电压 mV
#define BAT1_Vol_Fast_CHARGE_MAX_H para[150]
#define BAT1_Time_Fast_CHARGE_MAX_L para[151] // F17: 最高电压保持时间 S
#define BAT1_Time_Fast_CHARGE_MAX_H para[152]
#define BAT1_Mode_Fast_CHARGE_OVER para[153] // F18: 结束方式 1:转为涓流 0:直接结束
#define BAT1_DeltaV_Fast_VHARGE para[154] // F19: 快冲结束-△V *10 mV
#define BAT1_Cur_Add_CHARGE_L para[155] // F20: 补充充电电流 mA
#define BAT1_Cur_Add_CHARGE_H para[156]
#define BAT1_Time_Add_CHARGE para[157] // F21: 补充维持时间 Min
#define BAT1_Cur_Stream_CHARGE_L para[158] // F22: 涓流充电电流 mA
#define BAT1_Cur_Stream_CHARGE_H para[159]
#define BAT1_Time_Stream_CHARGE_L para[160] // F23: 涓流维持时间 Min
#define BAT1_Time_Stream_CHARGE_H para[161]
#define BAT1_PowerFull_Retain para[162] // F24: 满电保持功能 1:开启 0:关闭
#define BAT1_Time_CHARGE_MAX para[163] // F25: 单次充电最大时间 Hour
1
程序版本: PRMCharger_V0.048.rar CVAVR 1.25.9 版本编译通过
点击下载:点击此处下载ourdev_231996.rar(文件大小:321K)
LCD Menu 补丁(Add by 村长)
点击下载:<LCD_MENU_PATCH_V0.048.rar(文件大小:10K)
==============================================================================================================================
PRMCharger_V0.049: (2008年03月21日23点08分)
备注:
参数设置部分的下位机程序都完成了。
程序版本: PRMCharger_V0.049.rar CVAVR 1.25.9 版本编译通过
点击下载:点击此处下载ourdev_236035.rar(文件大小:368K)
加入全功能测试的版本,包括GUI部分,PROTOCOL部分(已经可以和上位机通讯)(Add by 村长,2003-03-21)
PRMCharger_V0.0482.rar(文件大小:425K)
==============================================================================================================================
1
2
3
PRMCharger_V0.1: (2008年03月23日01点23分)
备注:
终于可以充电了。这个版本可以作为公测版了
选择菜单 FunctionSelt 中的 Normol Charge 选项进入充电状态。
可以进入 Battery Stat 选项下面察看电池通道1的充电状态,电压和电流。如果选择Both ,那么两个通道都可以看到。
重点基本分为4个状态:
当电池满足充电状态时,即正常充电的电池,因为现在放电程序还没有作,所以只支持没有电的电池充电。
(1) 预充 400 mA 恒流 红灯闪
(2) 快充 1.2A 恒流 绿灯闪
(3) 补充 300 mA 恒流 红灯亮 为了测试方便 仅设了1分钟
(4) 涓流 50 mA 恒流 绿灯亮 为了测试方便 仅设了1分钟
充电完成 红绿灯一起亮
目前时间不够,暂 -DV 还没有测试,别的功能都测试完成,一切正常。
程序版本: PRMCharger_V0.1.rar CVAVR 1.25.9 版本编译通过
点击下载:PRMCharger_V0.1.rar.rar(文件大小:421K)
==============================================================================================================================
PRMCharger_V0.11: (2008年03月23日19点55分)
备注:
此版本修正了下 -DV 监测 的延时3秒钟测量。因为刚开始进入快充模式 PID 算法上面需要稳定的时间,必须等稳定了才能测量。
-DV 监测正常。
正常充满一节电池。开心中。。。。。
无奈的是放电程序稍微有点问题 呵呵!
这个就留给各个网友去玩了。 最近比较忙,我暂时就玩到这里了。留下的功能慢慢完善了。
接下来我还会做一版下位机程序,就是和村长配合,做完充放电程序。
备注:目前只支持通道1,通道2程序我没有仔细测试,所以不敢冒然充电。
程序版本: PRMCharger_V0.11.rar CVAVR 1.25.9 版本编译通过
点击下载:PRMCharger_V0.11.rar.rar(文件大小:427K)
==============================================================================================================================
PRMCharger_V0.12: (2008年03月23日22点24分)
备注:
不好意思,发觉 -DV 设置的有点点大了 因此重新设置了个版本
现调整参数
-DV 的设置变为 -8 mV 或者 - 10mV 的选择。
放心充电吧!!
程序版本: PRMCharger_V0.12.rar CVAVR 1.25.9 版本编译通过
点击下载:PRMCharger_V0.12.rar(文件大小:427K)
==============================================性感的分割线=================================================================
PRMCharger_V0.12b: (2008年04月02日)
注释:
呵呵,终于回来了,接手安哥的 0.12 版本继续开发。
0.12b 修改使用村长的新版本的LCDGUI,空出很多程序空间,
修改了AD 采集,使用中断集束采集21次,抛弃第一次,做后20次的平滑处理。
修改时间片调度方式,集中进行时间片处理。(main.c)
菜单操作进行MenuID的传递,触发进行事件管理和调度。(menu.c 和 application.c)
新增 application.c 用于放置充电函数 和 其它应用函数。
整理所有的 include 文件,集中放置在 main.c 的头部。
很傻、很天真地告诉各位童子,这个只是中间过渡版本,所有充电、放电的函数都剥离了,只能看看 ~ ~ !
充电器软件0.12b(中间过渡版本)ourdev_243940.rar(文件大小:375K) (原文件名:PRMCharger_V0.12b.rar)
**========================================** 终于等到新版本的分割线 **=====================================================**
PRMCharger_V0.12c: (2008年04月05日)
注释:
AD采集后的处理变异成为混合数字滤波,趋于稳定。
大范围的增加了全局数组的定义(详见 para.h),各种参数、运行控制均使用全局数组进行控制。
修改了PID和PWM的处理,接受全局数组控制,初步测试PID控制充电、放电均可以运行。
增加LED控制函数,通过全局数组(LED0_MODE 和 LED1_MODE)可以进行控制——常亮、闪烁、暴闪、三色轮闪、三色暴闪。
控制接口全部完成了,简单说一下,
首先需要设置,是控制电流还是电压(BAT0_CV / BAT1_CV)
如果使用PID,则需要打开全局的PID标志 PID_FLAG,非零为PID使能。
使用PID,就必须设置PID的参考值,请根据选择的电压或电流进行设置,是不一样的,BAT0_Ref_Cur_L / BAT0_Ref_Cur_H (电流);BAT0_Ref_Vol_L / BAT0_Ref_Vol_H (电压)
如果不使用PID,请把PID_FLAG清零,并请设置数组中相关的PWM直接设置单元,如BAT0_Charge_PWM_L / BAT0_Charge_PWM_H 等
然后,设置BAT0_MODE/BAT1_MODE 开启 充电/放电 模式,模式开启后也可以修改 PID的参考值 或 PWM的值。
BAT0_MODE/BAT1_MODE 具有关闭状态。
0.12c 中包含两个简单的演示应用程序,一个为慢速充电、一个为慢速放电,请在菜单中用enter键选取
1.Function Sel -> 1.Normal Charge 慢速充电 (菜单缩写 1-1)
1.Function Sel -> 5.Normal Discha 慢速放电 (菜单所写 1-5)
进去后可以通过按 cancel 键退出,退出同时将停止充放电。
菜单1-2 为红色LED暴闪,1-3为三色闪,1-4为三色暴闪。其他部分未变化。
菜单的新增、删除或修改,请使用 村长 的LCDGUI 2.0,具体使用方法可咨询 村长。 ^_^
目前程序中没有完整的充电功能,请不要用这个版本充电!!!!!
期待功能完整的充电应用函数的出现,欢迎测试 0.12c !
0.12c 的目标是 —— 伪:没有蛀牙!! 真:只使用 para 数组,就能操作整个充电器。
智能充电器软件 PRMCharger V0.12courdev_245294.rar(文件大小:416K) (原文件名:PRMCharger_V0.12c.rar)
=================================== 只是修改了一点点,所以是未发育的分割线 ======================================
4月6日,听取一些童子的意见,做了一些很小的修改,主要集中在menu部分的事件处理简化(menu.c 和 application.c),并增加部分代码的注释(sio.c)。
继续吸收各类意见、建议,您将受到热烈的欢迎,如果带着香烟来的话,那将是更加热烈的欢迎。 当然指责、谩骂、殴斗也是可以的,但是将不受欢迎。
哈哈,下面让我们欢迎新的小号版本 0.12ca
小号的版本,0.12ca,修改了少量代码 ====>> ourdev_245882.rar(文件大小:417K) (原文件名:PRMCharger_V0.12ca.rar)
=================================== 畸形发育,需要整形矫正的分割线 ======================================
在虫子的抛头颅撒热血的努力奋斗下,我们终于解决了0.12改版发育畸形的问题,终于……………………………………
**============================================** 热烈欢迎 0.13虫版 的分割线 **=======================================================**
为了感谢小虫子的丰功伟绩,决定0.13版命名为 0.13虫版!
经过虫子辛苦的啃噬,问题这个大苹果已经只剩下核了。
代码已经梳理干净,功能均已完成,可以进行完整过程的充电了。
虫子还冒着电池爆炸的巨大危险,坚持进行调试,并不断完善参数与功能。
各位童鞋,为了让虫子的事业更加的发扬光大,我们坚决要立刻下载、立刻测试,并坚决地把测试情况汇报给广大人民群众!
充电器 0.13虫版 软件、源代码ourdev_249022.rar(文件大小:446K) (原文件名:PRMCharger_V0.13.rar)
**============================================** 新虫版 0.14 的分割线 **=======================================================**
虫子花了很大的心思,终于完成了具有历史意义的0.14版
点击此处下载 ourdev_253803.rar(文件大小:878K) (原文件名:0.14.rar)
**============================================** 听说 已经有第二版硬件 的分割线 **=======================================================**
**============================================** 村长修正LCDGUI 的分割线 **=======================================================**
村长修正LCDGUI,加入数字输入。Patch V0.13p.rarourdev_250964.rar(文件大小:15K) (原文件名:Patch V0.13p.rar) |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|