搜索
bottom↓
回复: 115

用足avr资源,画了一个充电器电路,期待高手们讨论

[复制链接]

出0入0汤圆

发表于 2007-11-13 14:21:06 | 显示全部楼层 |阅读模式
希望大家多多提供修改意见,争取一版搞定,不想在pcb打样上花太多钱。谢谢


点击此处打开ourdev_180702.pdf(文件大小:48K)

设计目标:
1:4路镍电池2A快冲,单节控制。带放电,固定电流。
2:dV检测,约10mV,暂定,dT检测,maxT设定,max time设定。
3:自动充电电流控制,300mA-2A。允许5号7号混充。
4:双色led显示,单色12864lcd显示,6键键盘。
5:外接开关电源,使用我笔记本的电源,13.5V,3.5A
6:快冲采用脉冲方式充电,暂定1S快速充电,50ms检测,50ms放电,消除枝晶生长,避免充坏电池,50ms检测
7:整个充电阶段分为预充->快充->补充->涓流四个阶段
7:充放电内阻测试,先不考虑精度。
8:rs232与电脑通讯,最后再做。先把接口留好
9:修复电池,还不知道要怎么做,也许做不了。
10:最终成品希望能放到我几年前20块买的烂充电器外壳里,呵呵。

设计说明:
1:采用mega16/32,视程序容量而定
2:ad部分采用vcc做基准源
3:使用avrx作抢占式的多任务系统
4:电流检测用差分方式,10倍增益
5:电压检测用普通方式
6:恒流pwm采用10bit精度
7:单节电池电流控制用io作低速低精度,4bit pwm
8:温度检测采用温敏电阻对电容充电测量时间的方式,节省AD
9:按键采用单线AD方式
10:lcd用串行方式
11:有几个参数需要校准,AD参考电压,电流检测电阻,电压检测分压系数,放电电阻。
12:预留jtag接口用来仿真,下载。和led共用端口,仿真時先不接led。
13:尽量采用贴片元件,减小体积,普通阻容采用0603封装。

几个问题:
1:内阻测试可不可以用 (充电电压-空载电压)/充电电流 或 (空载电压-放电电压)/放电电流 来计算
2:mos管不太懂,这几个型号好不好买,参数适不适合,有什么型号可以替换
3:华强北赛格这些元件好不好买,如果只买几个的话。能推荐柜台就最好了。主要是mos管,功率电阻,温敏电阻,双色发光管

另外,有没有人愿意和我一起搞,主要是分摊pcb费用,一起采购元件,软件互通有无。
我不敢保证最后可以做出来,只想通过这个来学习。看得再多也没有自己动手做学得快。

出0入0汤圆

发表于 2007-11-13 16:28:35 | 显示全部楼层
是自己设计的吗?我没有看懂充电器四个回路中的MOS管的作用,能说说吗?

出0入0汤圆

 楼主| 发表于 2007-11-13 16:38:10 | 显示全部楼层
其实很简单,两个mos是互斥的,当上面那个导通时,下面那个截止,电流就会通过电池构成回路。而如果上面那个截止,电流就完全通过下面那个mos流到下一节电池那里去了。这样虽然4节电池是串联的,但可以单独控制每一节电池的充电。
不算是自己设计的,参考了网上找到的电路修改成的

出0入0汤圆

发表于 2007-11-13 17:13:52 | 显示全部楼层
avr资源真少,还给你用光了啊,看来AVR只可以做充电器

出0入0汤圆

 楼主| 发表于 2007-11-13 17:43:18 | 显示全部楼层
不明白楼上的意思。
不明白为什么我发的帖子回的人都很少?

出0入0汤圆

发表于 2007-11-14 08:31:49 | 显示全部楼层
先支持一下.

出0入0汤圆

发表于 2007-11-14 09:22:45 | 显示全部楼层
在电源滤波部分,采用了一个小电感, 该电感需要什么特性?多大感抗?

出0入0汤圆

发表于 2007-11-14 10:27:01 | 显示全部楼层
顶一下吧,希望高手能为你解答

出0入0汤圆

 楼主| 发表于 2007-11-14 11:30:28 | 显示全部楼层
如果你说的是avcc和vcc之间的那个电感,手册上有,10uH,我想普通色环就好了
如果是buck电路的那个,今天看了alien2006的帖子,以现有参数重新计算了一下,估计要300uH,用黄白磁环,0.6漆包线绕制,体积不会小。所以我现在考虑是不是把pwm精度减低到8位,以提高频率。

出0入0汤圆

发表于 2007-11-14 11:46:19 | 显示全部楼层
电压、电流检测电路需要改进。建议通过运放处理后再送单片机!

出0入0汤圆

 楼主| 发表于 2007-11-14 12:00:07 | 显示全部楼层
嗯,楼上的能不能说下原理,我觉得这样直接ad采样似乎没什么不妥。
用运放增加输入阻抗吗?ad的输入阻抗100M应该够了吧。

出0入0汤圆

发表于 2007-11-14 13:12:24 | 显示全部楼层
建议增加硬件电压电流保护

出0入0汤圆

 楼主| 发表于 2007-11-14 14:46:50 | 显示全部楼层
嗯,这个好像很有必要,我想想怎么加。
过压保护似乎应该每节电池都加,要不然单节的时候保护没啥用,好像很麻烦,而且这个电压不好决定,设的小了电池充不满,稍微高点恐怕还没保护,就已经爆了,充电电池再快充饱时温度上升很快。这个恐怕不好加。
过流保护加在电流采样电阻上似乎可行,要加一个基准源。这个可以保证cpu万一死掉,快速关断mos管。嗯,想一下怎么加。唉,硬件水平太低。

出0入0汤圆

发表于 2007-11-14 15:18:18 | 显示全部楼层
我手头有2款专业充电器(5014;BC6-PRO),控制芯片使用的是ATMEGA48。拆解后看到,电流、电压的采样都是通过LM324或LM358处理后再送到单片机的。我想有它存在的道理吧,如果没有必要,商家肯定会省去的!(电阻、电容能省的都省了,何况IC)

出0入0汤圆

 楼主| 发表于 2007-11-14 16:18:11 | 显示全部楼层
嗯,那我想那个运放是用来作差分放大的,可以提高电压采样精度,硬件水平太低,只能抄抄别人的电路。画一个也不是不行,没高手给把关心里毛毛的,担心最后调不出来,我找找有没有现成的电路。呵呵

出0入0汤圆

 楼主| 发表于 2007-11-15 09:24:54 | 显示全部楼层
运放的问题研究了一下,还是不加了,首先直接测的精度理论上可以做到10mv左右,我想差不多够了,即使不够,用软件方法提高分辨率也是可行的。其次如果用普通运放由于电阻等的误差调试很困难,还需要校准,如果用仪表放大器简单是简单就是太贵了,而且5个仪表放大器会占用很大面积。
不过如果板子空间够,可以加上仪表放大器的电路。暂定ad622。
还要加上isp接口,不然最后没法下载了。呵呵

出0入0汤圆

发表于 2007-11-15 10:18:28 | 显示全部楼层
这个电路问题多多

出0入0汤圆

 楼主| 发表于 2007-11-15 11:09:19 | 显示全部楼层
说说看啊,别光说这么一句啊,对别人没好处,你还浪费时间。

出0入0汤圆

发表于 2007-11-15 11:17:56 | 显示全部楼层
看不清楚,发pdf文件,或者干脆把原始pcb发上来

出0入0汤圆

 楼主| 发表于 2007-11-15 11:45:54 | 显示全部楼层
有pdf啊,在图纸下面
头像被屏蔽

出0入0汤圆

发表于 2007-11-15 12:15:13 | 显示全部楼层
对,同意【18楼】 dack  所说的。有问题就应该指出来,这样我们的交流才有意义。

出0入0汤圆

发表于 2007-11-15 13:00:51 | 显示全部楼层
图中Q13A,Q14A,Q15A,Q16A是否画错了,这样接的话,通过二极管,电源会一直给电池充电的.....

出0入0汤圆

发表于 2007-11-15 13:09:15 | 显示全部楼层
还有,当CH1~CH4都是低时,串在电源与地之间的就只有4个cmos管和R42了,会不会发热太厉害或烧坏??需要注意下,最好加保护.

再提下意见,可以考虑在电池端加短路保护等.....增加误操作的安全.....

出0入0汤圆

 楼主| 发表于 2007-11-15 13:11:38 | 显示全部楼层
更新了,增加了过流保护,isp接口。运放不太会用,各位看看有没有问题

点击此处打开ourdev_180981.pdf(文件大小:49K)

出0入0汤圆

 楼主| 发表于 2007-11-15 13:21:10 | 显示全部楼层
谢谢zhoud,我对mos管不熟,那个管子我也觉得有问题,但我网上找到的两份类似图纸都是这样画的,奇怪。我再找本书看看。
如果ch1-ch4都为低时,要把pwm停掉,这个是用软件控制的
电池端的短路保护是有的,如果采样到电池上的电压太低,是不会打开mos管充电的,软件控制。

出0入0汤圆

 楼主| 发表于 2007-11-15 13:49:14 | 显示全部楼层
那个mos管的方向是对的,如果有电池的话,在下面管子导通,上面管子截止时,二极管是反向偏置,因为电池电压,反过来会造成电池通过两个管子放电。

出0入0汤圆

发表于 2007-11-30 22:57:13 | 显示全部楼层
24楼:Q22的G极控制有问题,因为Q19,Q21无论何时都是截止状态。Q20是软件控制的过电压信号输出,SENSE是过硫信号,包括运放到Q22,D14是续流管,原理上都没问题。参数不考虑,此图只有Q19,Q21有问题,导致Q22的G极电压不确定。把Q21拿掉,Q19换成3906电路可以走通。运放改为比较器要好以点。如果在324的3处到POWER处接个二极管作为短路保护,那么电路更完备了,当然可能出现新问题,但可以设法克服的,不用CPU,把PWM接到比较器输出,比较器的输入接电压输出端也是可以的。DCin<15V。其余参数没有检查。

出0入0汤圆

发表于 2007-11-30 23:07:13 | 显示全部楼层
24楼:23楼有误,用CPU,PWM调制充电。这部分不能用比较器。

出0入0汤圆

发表于 2007-11-30 23:17:13 | 显示全部楼层
24楼:用CPU,PWM调制控制Q22开关时间,作充电电源。这部分不能用比较器。但是这种方式POWER点的电压很难控制。充电电流也很难控制了。

出0入0汤圆

发表于 2007-12-1 09:25:17 | 显示全部楼层
R35~R38好象功率不够吧

出0入0汤圆

 楼主| 发表于 2007-12-2 22:07:45 | 显示全部楼层
to shalixi:q22推挽控制方式我觉得没有什么问题,q22是一个p沟道mos管,q21导通时vgs为负,q22导通(这里似乎有一个问题,就是如果只充一节电池,power端电压可能较低,vgs电压不够高,我再仔细研究一下),q19导通时q22截至。换成单管驱动恐怕mos管会过热。根据监测到的电流控制pwm占空比调整输出电流应该不太难。
to martal:功率是有点不够,我最后决定用2个2o 2w并联,放电电流大点,阿莫这里有卖,比较好买。

出0入0汤圆

 楼主| 发表于 2007-12-3 11:30:35 | 显示全部楼层
to shalixi:找到问题了,q22的d、s引脚画反了。反过来应该就对了,谢谢帮我找到这个问题

出0入0汤圆

发表于 2007-12-3 11:47:24 | 显示全部楼层
to dack:不管q19基极和q21基极的电压是多少,q19基极偏置电压-q21基极偏置电压永远等于0,q19和q21总是不通的。这个充电器的电源部分就有问题。做电路板前,用DXP仿真一下。power端的电压由PWM的占空比和充电电流定的,PWM的占空比是程序控制的。

出0入0汤圆

 楼主| 发表于 2007-12-3 12:48:47 | 显示全部楼层
to shalixi:还是没明白,我觉得q19和q21总会有一个是通的,这个应该是一个标准的推挽电路。为什么你说两个都不同呢?

出0入0汤圆

发表于 2007-12-3 14:37:02 | 显示全部楼层
此图必须VQ19b>VQ19e且VQ21e>VQ21b时,这两个管子才通,由此得出VQ19b>VQ21b.但图上是VQ19b=VQ21b,所以VQ19和VQ21永远不会导通。

出0入0汤圆

 楼主| 发表于 2007-12-3 17:47:53 | 显示全部楼层
谢谢你,不过还是不懂,这两个管子不是同时通的,一个通,另一个截止。为什么必须VQ19b>VQ19e且VQ21e>VQ21b

出0入0汤圆

发表于 2007-12-4 14:10:10 | 显示全部楼层
看不在明白,回去慢慢看

出0入0汤圆

发表于 2007-12-4 14:32:04 | 显示全部楼层
在正常工作时,VQ22g的电压是时高(5V-15V)时低(0V),但这里Q19、Q21的状态一直是不通的,所以VQ22g的电压始终是不确定的。

出0入0汤圆

发表于 2007-12-4 14:35:50 | 显示全部楼层
按27楼的方法试试看。

出0入0汤圆

 楼主| 发表于 2007-12-4 17:09:45 | 显示全部楼层
to shalixi:
http://www.ouravr.com/bbs/bbs_content_all.jsp?bbs_sn=801983
26楼的图纸和我这个似乎没有本质区别,他那个已经经过验证,我觉得这样不会有问题。

出0入0汤圆

 楼主| 发表于 2007-12-5 15:49:51 | 显示全部楼层
原理图应该差不多了,已经开始布板,由于想放到一个烂充电器的外壳里,空间有限,而且为了省钱准备布单面板,用热转印方式或感光方式做。布板很困难,普通线15mil,2a电流部分用100mil线宽,放电大约1.4a至少用50mil线宽,会占用大量pcb面积。不知道会不会由于布得太密造成最后有问题不得而知。布线新手,慢慢搞吧。
想做成一个开源项目,决定放弃protel,改用免费的eagle。从没用过,刚刚研究了两天。
另外有谁知道这种项目,有没有什么开源网站可以提供空间让我放上去。国外的就好,最好能和单片机avr之类有关的。放到linux开源网站上似乎有点不伦不类。

出0入0汤圆

 楼主| 发表于 2007-12-20 09:49:32 | 显示全部楼层
layout好累啊,剩几根线就是布不通,还是布的双面板。
eagle挺好用的。

出0入0汤圆

发表于 2007-12-20 13:35:14 | 显示全部楼层
参考下这个电路吧,毕竟是经过验证量产的成熟电路 http://www.ouravr.com/bbs/bbs_content.jsp?bbs_sn=866238&bbs_page_no=4&bbs_id=1000

出0入0汤圆

 楼主| 发表于 2007-12-20 14:28:31 | 显示全部楼层
谢谢

出0入0汤圆

 楼主| 发表于 2007-12-26 11:46:48 | 显示全部楼层
定稿,pcb画好。不过打样又出问题。
本来公司采购小姐说可以免费打样,等我画好了又说不行了,唉,估计要出血了。

附上原理图,pcb图。pdf版(pcb是gerber分层打印的)和eagle版(rar文件)。
点击此处下载ourdev_193514.rar(文件大小:167K)
点击此处打开ourdev_193515.pdf(文件大小:643K)

出0入0汤圆

 楼主| 发表于 2007-12-27 12:03:09 | 显示全部楼层
好了,送去打样了,gerber文件没问题。1.6 玻纤板,表面喷锡。就是pcb厂说做不了70um铜厚,只能做35um的,不过我在线宽设计上留了较大的余量,应该没问题,而且大电流部分阻焊开了槽,实在不行还可以手工加一层锡,再不行还可以飞线,呵呵。

出0入0汤圆

发表于 2007-12-27 18:18:23 | 显示全部楼层
粗看了一下,给几个建议吧,太不习惯eagle了:

1、IC2:78L05输出10V,建议改R62为5V稳压管。

   但这里最好改成一个电阻简单滤波比较好。

2、过流保护信号有错:SENSE信号控制的Q22只能让MOS管Q10导通,而不能强行关断。

3、C5由104改成475以上比较好。

我对你做的PCB板比较有兴趣,能否给我三张?

以前我做过(不带放电的)这个电路,并量产过了。

出0入0汤圆

发表于 2007-12-27 20:07:32 | 显示全部楼层
等你好消息哈!

出0入0汤圆

 楼主| 发表于 2007-12-27 21:45:02 | 显示全部楼层
to:I use AVR too
谢谢,那个过流保护确实错了,我发现我还是太马虎了。呵呵 c5多大我搞不清,谢谢你的建议。但我想那个10v电源没必要改稳压管了吧,这个电源要求不高,我是因为mos管的vgs只有10v才加的。我后来打样了一个10v3A的电源这个电路现在可以省了。
至于pcb板,3张太多了,我总共才打样了5张。为啥对我的pcb感兴趣啊?头一次用eagle,虽然以前也画过板,但都是玩玩,从来没真正做过板子。所以画的肯定不好。
你的电路量产了,肯定经验丰富,给讲讲你的pwm频率,精度,电感大小等几个参数阿。

出0入0汤圆

发表于 2007-12-28 17:53:17 | 显示全部楼层
嗯,对这个PCB感兴趣有几个原因:
一是这个充电器电路可以实现的规格其实是非常高的:不会仅仅是充AA和AAA的镍氢。
二是这个电路是我在论坛上看到的最强的充电器电路,我也可以助你完成它。
三是我以前做的电路没有加入放电,用的单片机容量也小,功能做得比较简单。

电感和PWM的问题其实是非常简单的,如果对我的提议有兴趣的话,加我QQ聊吧:124614145
我可以提供板上的绝大多数元件。

出0入0汤圆

 楼主| 发表于 2008-1-3 15:10:35 | 显示全部楼层
哈,pcb打样回来了,上图
包装

正面

背面

那块小板是usb转并口,atmega8做的。顺便打样的.可是我还没有atmega8.过些日子再试

出0入0汤圆

 楼主| 发表于 2008-1-3 15:18:06 | 显示全部楼层
顺便show一下我准备使用的外壳

出0入0汤圆

发表于 2008-1-5 11:39:47 | 显示全部楼层
不错,做出来的板比文件上看到的漂亮多了。


谢谢楼主分的PCB了,我有ATMEGA8,到时一并寄给你。

出0入0汤圆

 楼主| 发表于 2008-1-8 13:00:18 | 显示全部楼层
谢谢I use AVR too
这两天开始写程序,由于用了avrx,调试比较困难。adc中断在还没有启动adc的时候(打开aden)就会进一次。不过adc测出的值还比较稳定,adc键盘测出的值最多有1的变化。甚至用2分频(16M晶振)都是一样。

出0入0汤圆

 楼主| 发表于 2008-1-8 13:22:20 | 显示全部楼层
找到问题了,由于avrx在空闲的时候执行了sleep指令进入空闲模式,造成adc启动一次转换。这个似乎关不掉,只好想办法让avrx不要进入sleep空闲模式。找了一天才找到这个问题。

出0入0汤圆

发表于 2008-1-8 17:12:25 | 显示全部楼层
顶一顶!

出0入0汤圆

 楼主| 发表于 2008-1-9 16:08:23 | 显示全部楼层
Adc驱动写好,现在是阻塞block的,等待采样完成返回结果,还需要加入消息返回的方式。
键盘驱动写好,消息驱动机制,如果有键按下、保持按下状态超过0.5秒后每隔0.25秒、键释放会发送消息到系统queue。
pwm做了试验,能控制输出电压。电流检测adc返回值很稳定。还没用示波器看过波形。

出0入0汤圆

 楼主| 发表于 2008-1-11 10:03:55 | 显示全部楼层
似乎gcc的printf函数只支持两个变量,如printf(" %d %d %d"a,b,c);执行结果c永远显示为0。编译不报错。

出0入0汤圆

 楼主| 发表于 2008-1-11 13:14:40 | 显示全部楼层
莫名其妙烧掉两个mos,一个是ds短路,一个是gs短路。都是ch3通道的。怀疑是五金接触不好,但想不明白为什么会烧掉。
刚用示波器看了一下波形,纹波有3、4百毫伏,应该说不算太大。2A的时候,电感,mos都有点发热,电感线可能有点细了。我用的0.5的线,200uh。

出0入0汤圆

发表于 2008-1-11 15:58:26 | 显示全部楼层
进展不错。我的电源板PCB也回来了,暂时没空测试了。

换我寄的电感试试看,那个电感是肯定能用的。

出0入0汤圆

 楼主| 发表于 2008-1-11 20:33:40 | 显示全部楼层
嗯,回头试试。
现在在写pwm程序,怎样快速安全的达到设定电流,一级一级调整无疑是最安全的,但是很慢。由于电流对应pwm值不是线性关系,pwm值越大电流增长越快,所以一次调几级可能会一下超出设定电流很多,安全性不能保证。甚至会过流保护。鱼与熊掌,还真有些头痛。等下周测一个pwm与电流值的关系图出来,看看有没有好的办法。

出0入0汤圆

 楼主| 发表于 2008-1-16 10:30:29 | 显示全部楼层
pwm 控制终于写好了,大概测试了一下,4节电池0-2A稳定下来需要大约100mS。安全性应该还可以,不好测试。我手上也只有几节垃圾电池。
稳定了以后每5ms检测一次,我想应该够了。电池电流还是比较稳定的。只有在突然拔掉电池的时候会瞬间降为0,这是要关断pwm

出0入0汤圆

 楼主| 发表于 2008-1-18 09:26:35 | 显示全部楼层
温度测量部分写好了,就是我的+-3%的温敏电阻精度不怎么好,随便焊了四个上去,最大和最小就差了5%,测出的温度室温下差别有1度多。本来对充电器来说,差个一两度没啥关系,不过要是显示出来就不好看了,一个17.9一个19.1.给人感觉很差。不行回头加个校准。

出0入0汤圆

发表于 2008-1-25 21:18:05 | 显示全部楼层
很是感兴趣 严重关注中。。。。。

出0入0汤圆

发表于 2008-1-25 21:24:59 | 显示全部楼层
其实很简单,两个mos是互斥的,当上面那个导通时,下面那个截止,电流就会通过电池构成回路。而如果上面那个截止,电流就完全通过下面那个mos流到下一节电池那里去了。这样虽然4节电池是串联的,但可以单独控制每一节电池的充电。
不算是自己设计的,参考了网上找到的电路修改成的

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
以上是引用 dack的这种做法 貌似三洋的M55 M56什么的全部都是这样设计的
我也想做一个充电器 但是水平很次 希望能得到dack  I use AVR too 等各位等帮助
现在斗胆开口 请问dack能把你收集到的有关做充电器的资料发给我看看吗?
谢谢    little.worm@yahoo.com.cn

出0入0汤圆

发表于 2008-1-25 23:22:59 | 显示全部楼层
楼主和I use avr too两位大侠,我有一客户正在找合适的充电器用于产品配套,要求是成品,电池是2200mAH,24V的Ni-Cd,量不大,每个月大概用50-200个,不知道二位是否有兴趣,如果有的话请联系我:QQ412265013

出0入0汤圆

发表于 2008-1-27 15:12:45 | 显示全部楼层
MOS管用的太多了,做给自已玩玩还可以,实际生产可不行了,我们公司用8颗MOS管给锂电充电就行了(12。6V,2200mA),如果能找到无内置二极管的MOS管就不需要这么多了。

出0入0汤圆

 楼主| 发表于 2008-1-28 09:17:41 | 显示全部楼层
to:litteworm,我很少下载资料,一般都是网上搜到看看,很少保存的。ouravr上有几篇我觉得不错,一篇是在充电器项目里有一本书,很老了,但很有用。还有一篇是一位大侠写的,有关于电感等问题的解决办法,用“闲来无事”搜应该可以搜到。还有我经常上maxim网站看看maxim的充电ic的datasheet。也比较有用。sorry,帮不上你。
to:zlf667788,我这个主要是自己写写玩,练练手。要做到商业化,谈何容易。看看I use avr too能不能帮上你吧。
to:sctwp,mos管恐怕不太容易减少,把接电池正极的四个换成二极管应该是可行的。但大电流情况下,容易发热。我也没打算商品化,其实9926管子也不算太贵,我买了10个,每个2块钱。

最近没有更新进度,两个原因,一是公司有新项目。25个工作日写一个体月旨计步器。我写这个的时间少了。二是剩下的部分不太好分模块了,恐怕要都写的差不多了才能更新进度了。现在刚刚把数据结构初步定了一下。

出0入46汤圆

发表于 2008-2-22 16:03:00 | 显示全部楼层
留个记号!

出0入0汤圆

 楼主| 发表于 2008-3-12 09:25:23 | 显示全部楼层
那个项目告一段落了,10号开始想继续写程序,却发现一点思路都没了,现在我的记忆力简直就是0。稍微放放就忘了。只能看以前的源码慢慢回想一下。这两天找了一下上位机的编译器,不想用商用的。要开源的。我现在找到Code::Blocks(IDE)+MinGW(编译器gcc)+wxWidgets(界面工具),三个工具都比较好用。都是开源的跨平台的。谁还有更好的推荐希望能告诉我。
这阵子想先写一下上位机的程序,不过以前没搞过windows编程,pc上的程序只用bc31写过一些小的dos程序。所以现在要边学边写。

出0入0汤圆

 楼主| 发表于 2008-3-26 09:58:44 | 显示全部楼层
我发现window编程比单片机麻烦多了,mcu只要有一本datasheet(不是很烂的话)基本上不需要查什么资料了,windows编程太多东西了,这几天基本上都在查资料。好多东西(象api函数的说明)连微软官方的资料都说的不清不楚,也许是我不熟的原因吧。
这么长时间只把串口通讯初步调通,界面做了一部分。
不过找到一个好用的界面设计软件,还是开源的。名字叫wxFormBuilder,很好用。之前还找到一个DialogBlocks,也不错,不过不是免费的,免费版有功能限制。这两个软件都是配套wxwidgets使用的。两个软件比较起来我还是喜欢wxFormBuilder,功能不错,使用起来也比较简单。DialogBlocks有点复杂了。

出10入210汤圆

发表于 2008-4-6 15:44:05 | 显示全部楼层
楼主孤军奋战,辛苦了。

出0入0汤圆

 楼主| 发表于 2008-4-7 09:14:32 | 显示全部楼层
呵呵,主要是用来学习。没时间压力,谈不上辛苦。
这几天没进展,研究了几天的linux,linux速度确实比较快(相同配置下),就是安装软件比较费劲。
我找了一个小型的linux,叫puppy。可以安装在u盘上使用,不过我那个老512Mu盘速度很慢,启动起来要2分钟时间。不过还是比windows快多了。如果电脑ram比较大,完全可以在u盘上使用。我的电脑都太老了,只有256的ram,安装软件有时候内存不够,不过如果在硬盘上开一个200M的交换分区就没有问题了。回头搞一个2g的高速U盘,把整套的开发工具装上,就是一个移动开发工具。随便哪里有电脑就可以开发了。其实移动硬盘也不错,没有flash的寿命问题,还可以分个交换分区。就是体积大了点。
后来我还是在我的笔记本上装了一个硬盘版的,因为我那个u盘不知道为什么不能在我的笔记本上启动。分了2g的硬盘给puppy用。安装了中文支持,安装了gcc,code::blocks,wxwidgets,wxformbuilder,firefox,还剩了1.5g的空间。avr的开发环境还没搞,写代码用code::blocks就可以,但似乎现在还没有图形界面的debug工具,只能下载测试,不太习惯。
总体来说,puppy硬件驱动很不错,我的usb无线网卡直接就可以用,其他硬件驱动也都没发现问题。而且体积很小,不到100M(加上gcc就超过100M了)。缺点就是不象ubutu那么普及,基本上软件没有专门为puppy编译的2进制包,安装软件大部分时候需要自己从源代码编译。这个比较麻烦。没接触过linux的人恐怕不好上手,比如我,研究了几天才大概有点了解了。目录结构什么的和windows有很大不同,链接文件什么的,windows下根本没有这个概念(有还是有的,例如我的文档,但一般人都不管)。

出0入0汤圆

发表于 2008-4-7 09:48:44 | 显示全部楼层
【73楼】 dack
支持你,加油做好!

出0入0汤圆

发表于 2008-4-7 13:37:58 | 显示全部楼层
直接用VCC做ADC的基准,会不会因为电源的纹波而导致采样不准呢?不过,按
“pwm做了试验,能控制输出电压。电流检测adc返回值很稳定。还没用示波器看过波形。”
似乎也没太大问题?不知道是否已经测试过大电流时的ADC的值呢?

出0入0汤圆

 楼主| 发表于 2008-4-7 17:29:34 | 显示全部楼层
回楼上,vcc做基准应该没有大问题,2a电流实测很稳定。

出0入0汤圆

发表于 2008-4-7 18:40:35 | 显示全部楼层
嗯。我用silcion的就不行,。没什么功耗,不稳定,使用外部基准源,就OK了。

出0入0汤圆

 楼主| 发表于 2008-8-21 16:45:36 | 显示全部楼层
好久没更新了,主要是没心情,怎么也进不了状态。从上次搞了几天linux后好久都没动了。上个星期突然想起来,写了一段,有点感觉了。不过放了好久,有很多以前的想法都忘记了。又要重新读代码。

现在的状态是镍氢电池可以正常充电了,上位机可以收到数据并能画出电压曲线,lcd可以显示当前电流电压状态等,led还没有(口和jtag共用的,暂时还不做),按键驱动做好了,还没实际用途,放电程序还没有。硬件在电感后面加了一个电阻做空载时候的负载。

现在有几个问题要解决,一个是电压采样精度只能到6mv,够用是够用了,但是画出曲线很不好看。控制用mos管烧了3个了,不晓得是电路问题还是mos质量不行。lcd驱动要改写,以前用并行模式,可以读出数据,现在用串行模式,不能读,但又不能在ram里做镜像,太占内存了。所以要改写一下,减少ram占用。avrx很好用,我现在有6个常驻任务,但是很耗ram。现在ram紧张,16肯定是不行了,32也比较紧张。后期界面估计还有10个非常驻(我对avrx的改写主要是在这里,非常驻任务结束后不占ram)任务,ram估计会非常紧张。avrx还有一个问题是不好调试,它自带的调试模式还没研究,再就是任务堆栈和系统堆栈的大小不太好控制,设的小了会出现奇怪的故障,很难判断哪里出问题,稍后需要修改avrx增加堆栈溢出警告功能。

后续工作
1.加上菜单,完善脱机功能,参数设置,增加锂电池充电,以及稳压输出。电池激活,循环充放电等功能。测试模式。校准功能。led显示。
2.上位机软件完善,控制功能,测试模式,参数设置。电脑太慢,编译一次要好几分钟,最后再作。

源码在这里可以看
https://opensvn.csie.org/viewcvs.cgi/?root=Charger
svn用户应该可以在这里checkout,我没试过
http://opensvn.csie.org/Charger
其中Charge_p下的upload是上位机软件,我使用的mingw编译,用了wxwidgets库,需要编译的自己去下。界面编辑用wxformbuilder,好用。ide用的code::blocks,很好用,集成mingw,就是在我的烂电脑(256内存)上编译很慢。上位机软件做了国际化和跨平台的考虑,后期可以简单的增加各种语言支持,修改串口驱动部分(这部分区别太大)后可以在linux下运行,当然这些都是wxwidgets的功劳。
Charge_p下是avr源码,用了avrx库(这个库的源码在Avrx2.6f下,我对原版的avrx做了一点修改,用原版的会有问题),winavr编译。
以上所用软件都是开源或免费版本
btw:布板用的eagle,稍微超出免费版的大小限制,用了一下盗版,不要去举报啊

出0入0汤圆

 楼主| 发表于 2008-8-27 08:46:04 | 显示全部楼层
菜单骨架写完了,增加了一个常驻standby任务,把界面完全和充电部分独立出来。另外做了一点小修改减少ram的使用。atmega32的ram预计刚刚够用,如果不够还要进一步想办法节省ram,这是一个头疼的问题,中断禁止嵌套应该可以节省100多字节的ram,不过实时性就要差点,应该影响不大。

btw:to阿莫:怎样才能修改主帖的标题?这个帖子一开始是个求助贴,现在主要功能已经实现,软件也可以下载了。我想改个标题。

出0入0汤圆

 楼主| 发表于 2008-8-27 16:26:21 | 显示全部楼层

上位机截图 (原文件名:充电.jpg)
截个图给大家看看

放电也做得差不多了,测试过之后checkin

出0入0汤圆

 楼主| 发表于 2008-8-29 15:30:57 | 显示全部楼层
0v电池充电,循环充放电都写好了,0v电池没有测试。
增加了充电规则菜单,可以从内置规则(暂定4个)或者用户规则(暂定16个,存在eeprom中)中调取充电规则,并可以对规则进行修改(可以修改充电电流大小,充电还是放电,循环次数,多大内阻停充,以及0v电池的开关等),稍后加上修改后的规则的存储。
设置lcd亮度,校准功能下周再做

出0入0汤圆

发表于 2008-8-29 16:57:57 | 显示全部楼层
记号

出0入0汤圆

 楼主| 发表于 2008-8-29 17:18:28 | 显示全部楼层
修改后的规则的存储写完了。中午吃坏肚子,拉的人脚软。

出0入0汤圆

发表于 2008-8-29 22:02:57 | 显示全部楼层
同样找到一个喜欢用codeblocks的伙计了!
DACK为何一定得坚持图形化的DEBUG呢?
直接在板运行再通过别人方式把内部数据显示出来不也很好?

LINUX 呵呵!
马上就要重新拾起来了!

出0入0汤圆

 楼主| 发表于 2008-8-30 10:57:16 | 显示全部楼层
这个主要是习惯问题,有人喜欢通过串口或者lcd等调试,我比较喜欢设断点,看watch的方式。
个人觉得这样调试比较快捷。
codeblocks主要问题是自带的编译器比较慢,也是我的电脑不行。我这么简单的上位机软件,编译一次需要好几分钟,期间什么也不能干。真是受不了。当然主要是因为那个wxwidgets库比较大。我也没用过其他编译器,不知道其他编译器是不是也很慢。

出0入0汤圆

 楼主| 发表于 2008-9-2 15:12:53 | 显示全部楼层
锂电池和稳压输出功能算是写好了,锂电池充电还没测,稳压输出功能测了一下,没负载的时候稳不住,ocr1a经常只有几,跳一格影响很大。加上100ma负载,稳定度还行,但是跟踪速度很慢,负载变化大的话,输出电压变化很大,万用表都量得到很大变化。基本不实用。
不过对锂电充电来说,应该还可以。

锂电充电测试以后,加上lcd亮度调整,校准(出厂校准),和led显示(这个等最后做,占用了jtag口,暂时还要用到jtag口),脱机工作部分就算完成了,然后就是接收上位机的控制命令,完善上位机功能了。

出0入0汤圆

 楼主| 发表于 2008-9-2 15:37:29 | 显示全部楼层
对了,原来还设想了一个自动判断电池类型(针对镍氢电池5号7号),自动调整充电电流的功能,判断方式还没想好,初步考虑根据充电内阻,电池升温幅度来判断。这个要用大量不同的电池来试验才知道能不能做,怎么做。最后再说吧。属于锦上添花的东西。

还曾设想一个功能,就是电池挑选,买电池的时候测试用的,尤其是买工包电池的时候。设想是做一个短时间的充放电(挑电池不可能花太长时间),例如一分钟,检查电池充放电内阻,温升等。这个也同上要用大量不同的电池来试验才知道能不能做,怎么做。最后再说吧。也属于锦上添花的东西。

出0入0汤圆

发表于 2008-9-2 17:47:44 | 显示全部楼层
楼主好韧性

出0入0汤圆

 楼主| 发表于 2008-9-2 19:36:59 | 显示全部楼层
这是夸我吗?我就当是夸我了,呵呵。

出0入0汤圆

发表于 2008-9-2 19:50:59 | 显示全部楼层
呵呵去年的帖子!

出0入0汤圆

发表于 2008-9-2 20:27:28 | 显示全部楼层
这个好,全部资源都用了,对AVR整体设计有帮助

出0入0汤圆

发表于 2008-9-2 22:46:35 | 显示全部楼层
做个记号!

出0入0汤圆

发表于 2008-9-2 22:49:31 | 显示全部楼层
楼主进度如何了?

出0入0汤圆

 楼主| 发表于 2008-9-3 06:57:34 | 显示全部楼层
进度我都写在上面了。

出0入0汤圆

 楼主| 发表于 2008-9-3 11:41:08 | 显示全部楼层
lcd亮度写完调试好了。
我买的中基学生电脑(现在没人不知道这个吧)也到了,搞完这个就开始搞arm。

出0入0汤圆

发表于 2008-9-3 12:36:42 | 显示全部楼层
不错,

出0入0汤圆

 楼主| 发表于 2008-9-4 12:45:09 | 显示全部楼层
校准功能写完了,因为需要恒压和恒流源,所以没有测试。
下一步该搞上位机软件了,avr这边要做的就是应答上位机命令,返回数据。

出0入0汤圆

发表于 2008-9-8 14:06:56 | 显示全部楼层
mark,看过再讨论

出0入0汤圆

 楼主| 发表于 2008-9-18 13:34:12 | 显示全部楼层
上位机软件真难写啊,2个星期才搞好一个充电规则的读写与修改。经常是为了写一条语句,查几天的资料。累啊。

又想到一个点子,最后要加上bootload,通过上位机更新程序。

程序写的越多,就发现还没写的就越多,不知道啥时候才能搞完。

贴张上位机设置界面的图。



&nbsp;(原文件名:充电.jpg)&nbsp;

出0入0汤圆

发表于 2008-12-10 12:10:49 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-6 13:45

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表