shusheng 发表于 2006-2-28 01:14:13

[原创]M8+LCD1602+LM35的电池容量测试仪----原理图+源程序

http://cache.amobbs.com/bbs_upload782111/files_5/armok01104426.JPG

http://cache.amobbs.com/bbs_upload782111/files_5/armok01104427.JPG



http://cache.amobbs.com/bbs_upload782111/files_5/armok01104428.JPG

http://cache.amobbs.com/bbs_upload782111/files_5/armok01104429.JPG

http://cache.amobbs.com/bbs_upload782111/files_5/armok01104430.JPG

http://cache.amobbs.com/bbs_upload782111/files_5/armok01104431.JPG

http://cache.amobbs.com/bbs_upload782111/files_5/armok01104432.JPG

http://cache.amobbs.com/bbs_upload782111/files_5/armok01104433.JPG

http://cache.amobbs.com/bbs_upload782111/files_5/armok01104434.jpg



点击此处下载armok01104435.rar






-----此内容被shusheng于2006-02-28,01:27:18编辑过

coole 发表于 2006-2-28 07:57:12

楼主强,顶!!

armok 发表于 2006-2-28 07:59:19

强!

benladn911 发表于 2006-2-28 08:02:02

谢谢了哦,又是一份宝贵的学习资料

shusheng 发表于 2006-2-28 14:35:05

红色的是第一次放电的曲线

粉红色的是充电的曲线

黄色的是充完电后放电的曲线



当然这个放电器不具备充电功能

HJJourAVR 发表于 2006-2-28 14:44:50

不建议两节电池串联放电。



单节电池独立放电才行。可以做多路。

mutoudonggua 发表于 2006-2-28 15:01:53

LZ有德劲的1102还是1103?呵呵,看见你的电池就有很亲切的感觉!!

jackiezeng 发表于 2006-2-28 15:14:15

楼主,好人啊~~~~!

终于等到了.

shusheng 发表于 2006-2-28 16:43:29

呵呵



收藏了1102+1103*2+1105



所以有大量的DEGEN1300mAh的电池

jackiezeng 发表于 2006-2-28 19:56:11

楼主,源程序是 ICCAVR ?GCC ?还是什么?

shusheng 发表于 2006-2-28 22:41:27

ICCAVR 6.31A

ztavr 发表于 2006-3-10 20:14:05

楼主:

    你好,你写的程序确实很厉害,能否将确定容量的程序思路讲的详细点,我有点笨笨的,还不能理解里面的数据为何如此?

shusheng 发表于 2006-4-5 00:10:09

楼上的过奖了

    容量的计算是通过对放电电流进行积分而得到的

li0713 发表于 2006-4-5 11:44:32

接触电子时间不长,能解释一下程序中的电压、电流转化和这部分电路图么?

http://cache.amobbs.com/bbs_upload782111/files_5/armok01112959.JPG

shusheng 发表于 2006-4-5 15:32:26

pwm输出经三阶低通滤波器后变成平滑的直流电压,该电压经运放构成的射极跟随器去驱动2SD882对电池进行放电,只要调节PWM的占空比,就能调节运放的输出电压的大小,从而实现对放电电流大小的控制。



R5、R6组成电流采样电路,R11、R12和LM358-2组成一个同相输入的十倍放大电路,对电流信号进行放大。



R8、R9、R10和C4组成电池电压采样电路。

ywwgff 发表于 2006-4-5 16:19:58

顶!不错 收藏

jackrich 发表于 2006-4-5 16:35:17

好好学习

ztavr 发表于 2006-4-5 16:46:38

shusheng 书生:

      你好,能否给出(放电电流进行积分)容量公式.为何不每秒采样电流,然后折算成1mah等于多少个字,来累加计算容量.

例如:             采样电流2000mA,每个字代表1024/2000=0.512mA

                则每秒采样一次,每个字代表0.512/3600mAh,进而可知

                每mAh代表3600/0.512个字∶每mAh代表7031.25即1b77,

shusheng 发表于 2006-4-6 01:38:15

容量公式的公式就是这么简单:

if(sc_bt1==0)

{BT1_mAh+=BT1_I;sc_bt1=450;}//容量统计,每3.6秒计一次

每3.6秒把采样到的电流加上到BT1_mAh这个变量里就可以了



这样的优点:

程序精简、不用浮点运算、容易看得明、CPU占用率低、而且BT1_mAh里的数除以1000就是容量。

我自己是这样想的,不知合不合理,希各位DX指教。





另:楼上的意思是不是说,当最大采样电流为2000mAh时,每7031.25代表1mAh?

ztavr 发表于 2006-4-7 08:32:05

是这样的

shusheng 发表于 2006-4-7 15:03:53

等有空再做个4通道单节电池放电的,取消恒流,用定阻加场效应管放电,这样会简单一点,也更实用

dengchongguang 发表于 2006-4-7 15:17:04

好东西.收藏.

ztavr 发表于 2006-5-29 16:06:53

shusheng 书生:

      你好,请教一个关于容量的问题。

      对电池有充电还有放电,放电不恒流。放电电流400A,浮充5A。测电流用互感器,互感器出来红、蓝、黑三根线,正向红黑为0~5v蓝黑为0v,反向时红黑为0v蓝黑为0~5v。红、蓝分别接ADC0、ADC1,

测容量,如何判断是充电还是放电?容量如何计算?

SW7005 发表于 2006-5-29 20:03:25

顶!

yexrui 发表于 2006-5-29 22:11:18

强一个!

shusheng 发表于 2006-7-8 14:23:22

回22楼

    不好意思,互感器没有用过,不是很明白。

zsulrq 发表于 2006-7-10 11:52:31

楼主:

   请问最后那个绘图的软件是什么软件来的?能否共享?谢谢!

xidongs 发表于 2006-7-10 13:39:00

楼主是玩收音机的朋友,电池是德劲收音机带的。

我买1103时带了4节。

shusheng 发表于 2006-7-20 17:19:09

回26楼:

那是用EXECL绘出来的图

shusheng 发表于 2006-7-20 17:22:37

手头上有13节德劲的1300mAh的电池!

有几节还未破_处,等有空测测它。

cao_zhihong_0 发表于 2006-9-21 09:27:35

顶,楼主!

joson 发表于 2006-9-21 09:43:09

很好!

ssshhh 发表于 2006-9-27 17:15:22

能加上测量电池内阻功能就更好了

shunpu 发表于 2006-9-28 17:05:13

确实不错

wenhuawei885 发表于 2006-10-28 14:50:55

楼主顶!厉害!!

okay51 发表于 2006-10-29 12:36:17

果然厉害 我很羡慕模电厉害的高手 学习中!

gxf0505 发表于 2006-10-29 23:10:40

好,收藏学习!

xuwukong 发表于 2006-10-31 22:04:16

楼上看懂了的,请说一下本例的测量原理。

还有程序好象是用了时间调度操作系统,能说下它的框架吗?

各位大虾弄上的范例能不能多加点注释,我们虾米看着困难,但是东西又太好,不看不行

gengchuanbin 发表于 2006-11-1 18:37:07

谢谢



强人!!!

cnpollux 发表于 2006-11-2 09:20:04

相当于 安时计 + 核对性放电

chenpeng 发表于 2006-11-23 23:27:40

楼主厉害,羡慕中

wentao 发表于 2006-11-24 12:17:44

强悍

sunli_suzhou 发表于 2006-11-24 12:38:32

顶!不错 收藏

ken524012 发表于 2007-4-10 11:53:43



能否移植到GCC上?ICC不会用,呵呵

vxvvxv 发表于 2007-4-10 12:34:44

强,但是ICC编译出错,pageuppagdown没定义

ken524012 发表于 2007-4-10 13:09:07

临时学用ICC,但怎么编译还是出错啊?我是菜鸟,希望前辈们帮帮忙!!!!





D:\ICC\icc\bin\imakew -f 电池放电器V2.0.mak

    iccavr -c -ID:\ICC\icc\include\ -e-l -g -Wa-WD:\毕业设计\AVR官方设计的充电器\液晶\AVR\电池放电器\软件V2.0\main.c

!W D:电池放电器\软件V2.0\main.c(55): calling function without prototype may cause errors

!W D:电池放电器\软件V2.0\main.c(71): calling function without prototype may cause errors

!W D:电池放电器\软件V2.0\main.c(71): calling function without prototype may cause errors

!W D:电池放电器\软件V2.0\main.c(71): calling function without prototype may cause errors

!W D:电池放电器\软件V2.0\main.c(71): calling function without prototype may cause errors

!W D:电池放电器\软件V2.0\main.c(73): calling function without prototype may cause errors

!W D:电池放电器\软件V2.0\main.c(109): declaration of `taskmgr' does not match previous declaration at D:AVR\电池放电器\软件V2.0\main.c(55)

!W D:电池放电器\软件V2.0\main.c(166): declaration of `welcome' does not match previous declaration at D:电池放电器\软件V2.0\main.c(73)

!W D:电池放电器\软件V2.0\main.c(284): declaration of `desktop2' does not match previous declaration at D:电池放电器\软件V2.0\main.c(71)

!E D:电池放电器\软件V2.0\main.c(288): insufficient number of arguments to `LCD_write_time'

!W D:电池放电器\软件V2.0\main.c(296): declaration of `desktop1' does not match previous declaration at D:电池放电器\软件V2.0\main.c(71)

!W D:电池放电器\软件V2.0\main.c(326): declaration of `desktop3' does not match previous declaration at D:电池放电器\软件V2.0\main.c(71)

!W D:电池放电器\软件V2.0\main.c(378): declaration of `desktop4' does not match previous declaration at D:电池放电器\软件V2.0\main.c(71)

!E D:电池放电器\软件V2.0\main.c(402): insufficient number of arguments to `LCD_write_time'

D:\ICC\icc\bin\imakew.exe: Error code 1

Done: there are error(s). Exit code: 1

ken524012 发表于 2007-4-10 14:56:57

编译出错,有些错误不会改,谁能把编译通过的源码上传上来啊!

lizq 发表于 2007-4-10 15:40:22

点击此处下载armok01149780.rar

lizq 发表于 2007-4-10 15:40:43

点击此处下载armok01149780.rar

lizq 发表于 2007-4-10 15:44:39

刚才上串的是在我的ICC6.31下编译通过的程序

gengchuanbin 发表于 2007-4-10 16:24:26

顶一下

ken524012 发表于 2007-4-11 09:16:19

to:lizq



谢了

ken524012 发表于 2007-4-11 10:03:31

to:lizq

你是不是上传错了?

怎么我编译时跟原来楼主上传的一样?

刚开始就有pageup pagdown没定义和insufficient number of arguments to `LCD_write_time'

lizq 发表于 2007-4-11 11:14:44

没有呀,让你看看我是不是错了

http://cache.amobbs.com/bbs_upload782111/files_7/armok01149940.JPG

ken524012 发表于 2007-4-11 12:18:46

晕哦,怎么这么多多重定义multiple definition of `X'累死我了,终于成功编译出来了,哈哈

shusheng 发表于 2007-4-11 17:14:09

好怀念那张陪我渡过几年大学生活的桌子啊



桌面上的孔孔就是钻板的时候钻出来的



桌子呀,您在学校还好吗?

ken524012 发表于 2007-4-18 18:50:00

呵呵,正在考虑如果把它加在充电器电路上~~~~

wenhuawei885 发表于 2007-5-4 22:00:06

楼主好,能不能提供点写程序的思路,比如流程图,这样比较方便我们初学者看明白程序!还有想问一下,显示的电压是不是两节电池实际的电压之和!谢谢

wenhuawei885 发表于 2007-5-4 22:25:29

楼主,方便的话留个email联系方式,还有很多问题想请教你!

battery 发表于 2007-11-13 11:29:50

楼主画的PCB板画得不好,元件编号跟原理图的不符,有些参数不符,有些地方的连接也不符。

jevenhuang 发表于 2007-11-14 09:28:05

不是一般的强 而是很强 呵呵

ljy99731 发表于 2007-11-14 13:29:53

留个名,强人

YQSH 发表于 2007-11-14 14:13:13

请问那个串口用了两个三极管,买的USB转串口要以用吗?

cyhu0215 发表于 2007-11-14 17:40:52

1r5,r6是放电电流这部分,解释一下电流流向!
2放电电压监控部分也会有电流,是否精确考虑。2.8/60k

cyhu0215 发表于 2007-11-14 17:42:32

放电电流可以改变,但感觉变化范围有限,望解释!

maskiss 发表于 2008-1-26 14:31:12

呵呵,原程序好像有问题……刚试过了,好像不行,得找找问题
C:\icc\bin\imakew -f 电池放电器V2.0.mak
    iccavr -c -IC:\icc\include\ -e -DATMega8-l -g -Mavr_enhanced_small -Wa-WD:\我的文件\软件V2.0\main.c
!W D:\我的文件\软件V2.0\main.c(55): calling function without prototype may cause errors
!W D:\我的文件\软件V2.0\main.c(71): calling function without prototype may cause errors
!W D:\我的文件\软件V2.0\main.c(71): calling function without prototype may cause errors
!W D:\我的文件\软件V2.0\main.c(71): calling function without prototype may cause errors
!W D:\我的文件\软件V2.0\main.c(71): calling function without prototype may cause errors
!W D:\我的文件\软件V2.0\main.c(73): calling function without prototype may cause errors
!W D:\我的文件\软件V2.0\main.c(109): declaration of `taskmgr' does not match previous declaration at D:\我的文件\软件V2.0\main.c(55)
!E D:\我的文件\软件V2.0\main.c(110): undeclared identifier `pageup'
!E D:\我的文件\软件V2.0\main.c(114): undeclared identifier `pagedown'
!W D:\我的文件\软件V2.0\main.c(166): declaration of `welcome' does not match previous declaration at D:\我的文件\软件V2.0\main.c(73)
!E D:\我的文件\软件V2.0\main.c(200): undeclared identifier `pagedown'
!E D:\我的文件\软件V2.0\main.c(228): undeclared identifier `pagedown'
!W D:\我的文件\软件V2.0\main.c(284): declaration of `desktop2' does not match previous declaration at D:\我的文件\软件V2.0\main.c(71)
!E D:\我的文件\软件V2.0\main.c(288): insufficient number of arguments to `LCD_write_time'
!W D:\我的文件\软件V2.0\main.c(296): declaration of `desktop1' does not match previous declaration at D:\我的文件\软件V2.0\main.c(71)
!W D:\我的文件\软件V2.0\main.c(326): declaration of `desktop3' does not match previous declaration at D:\我的文件\软件V2.0\main.c(71)
!W D:\我的文件\软件V2.0\main.c(378): declaration of `desktop4' does not match previous declaration at D:\我的文件\软件V2.0\main.c(71)
!E D:\我的文件\软件V2.0\main.c(402): insufficient number of arguments to `LCD_write_time'
C:\icc\bin\imakew.exe: Error code 1
Done: there are error(s). Exit code: 1

maskiss 发表于 2008-1-26 15:06:54

问题真多……
解决一个又出现下面这样的问题
C:\icc\bin\imakew -f 电池放电器V2.0.mak
    iccavr -c -IC:\icc\include\ -e -DATMega8-l -g -Mavr_enhanced_small -Wa-WD:\我的文件\软件V2.0\discharger.c
    iccavr -o 电池放电器V2.0 -LC:\icc\lib\ -g -Wl-W -bfunc_lit:0x26.0x2000 -dram_end:0x45f -bdata:0x60.0x45f -dhwstk_size:16 -beeprom:1.512 -fihx_coff -S2 @电池放电器V2.0.lk
!E main.o(543): multiple define: '_main'
!E main.o(544): multiple define: '_system'
!E main.o(545): multiple define: '_Capacitance_setting'
!E main.o(546): multiple define: '_discharge'
!E main.o(547): multiple define: '_timer2_ovf_isr'
!E main.o(548): multiple define: '_bt1_v_record'
!E main.o(549): multiple define: '_discharge_init'
!E main.o(550): multiple define: '_discharge_stop'
!E main.o(551): multiple define: '_record_setting'
!E main.o(554): multiple define: '_system_clock'
!E main.o(555): multiple define: '_discharge_speed'
!E main.o(556): multiple define: '_timer'
!E main.o(561): multiple define: '_BT1_I_Ctrl'
!E main.o(570): multiple define: '_hour'
!E main.o(571): multiple define: '_mAh_set'
!E main.o(572): multiple define: '_speed'
!E main.o(573): multiple define: '_sec'
!E main.o(574): multiple define: '_min'
!E main.o(575): multiple define: '_RunTab'
!E main.o(610): multiple define: '_BT1_I_SET'
!E main.o(611): multiple define: '_sc_eeprom'
!E main.o(612): multiple define: '_BT1_time'
!E main.o(613): multiple define: '_sc_discharge'
!E main.o(614): multiple define: '_RunTab_old'
!E main.o(615): multiple define: '_sc_key_delay'
!E main.o(616): multiple define: '_bt1_v_temp'
!E main.o(617): multiple define: '_sc_lcd_write'
!E main.o(618): multiple define: '_PWM'
!E main.o(619): multiple define: '_mAh'
!E main.o(620): multiple define: '_sc_bt1_record'
!E main.o(621): multiple define: '_sc_bt_ctrl'
!E main.o(622): multiple define: '_sc_bt1_v_temp'
!E main.o(623): multiple define: '_BT1_V_num'
!E main.o(624): multiple define: '_sc_bt1'
!E main.o(625): multiple define: '_BT1_mAh'
!E main.o(626): multiple define: '_BT1_V_num_temp'
!E main.o(627): multiple define: '_BT1_state'
!E main.o(628): multiple define: '_keyboard'
!E main.o(630): multiple define: '_BT1_I'
!E main.o(631): multiple define: '_BT1_P'
!E main.o(632): multiple define: '_BT1_T'
!E main.o(633): multiple define: '_BT1_V'
!E main.o(635): multiple define: '_bt1_v_temp_1'
!E main.o(637): multiple define: '_D882_P'
!E system_init.o(127): multiple define: '_delay_nms'
!E system_init.o(128): multiple define: '_delay_nus'
want size 4250
lo 7000 hi 8192 size 1193
!E <library>(257): area 'text' not large enough
want size 30
lo 8176 hi 8192 size 17
!E <library>(257): area 'text' not large enough
want size 66
lo 8176 hi 8192 size 17
!E <library>(257): area 'text' not large enough
want size 66
lo 8176 hi 8192 size 17
!E <library>(257): area 'text' not large enough
C:\icc\bin\imakew.exe: Error code 1
Done: there are error(s). Exit code: 1

ndust 发表于 2008-1-26 16:37:36

收藏

li3081 发表于 2008-3-18 15:50:07

主要是看算法,我觉得用哪个编译器到是没所谓的,同样的意思在不同的编译器里实现是不一样的。谢谢楼主,顶。

guoyuhuaxie 发表于 2008-3-25 16:28:16

牛人!

525133174 发表于 2008-3-26 00:58:25

太晚了,未能细看,应该不错,作个记号

Yun0 发表于 2008-4-17 11:22:31

谢谢楼主哈~

dory 发表于 2008-4-22 18:08:36

谢谢楼主。顶一个!!!

weiwgml 发表于 2008-4-22 19:20:44

马上收下……

duqinglin 发表于 2008-4-23 10:17:09

非常好

monlika 发表于 2008-4-23 12:08:31

感谢~~~~~~~~~

liqu 发表于 2008-4-23 13:00:25

学习硬件。

shusheng 发表于 2008-4-23 14:35:17

迟点有空再做一个电池容量测试仪,正在研究VC,希望做到可以连接电脑。

bxs19830629 发表于 2008-6-23 21:11:47

收藏

wanghm35 发表于 2008-6-23 21:17:08

不错!

liming 发表于 2008-6-23 23:25:26

好东西!lz很厉害呀!

Canbus007 发表于 2008-6-26 15:21:31

学习,,,
牛人!!

yzlyear 发表于 2008-6-26 15:32:53

強人

gumogumo 发表于 2008-6-26 17:13:07

不错啊

ywl0409 发表于 2008-6-26 21:50:12

电池的容量计算还要添加进电池本身的泄漏电流对电池容量的损耗,这在大部分的电池里面是会存在这个电流的.
如果能把这个功能加进去,那就很完美了.

很多笔记本电脑里面用的电池电量的测量芯片是非常复杂而又昂贵的.并且测量出来的效果也并不好,往往看指示还有很多电,其实已经快没有了.

ainet 发表于 2008-6-27 08:48:46

如何算毫安时

icefire 发表于 2008-7-2 15:45:53

收藏^_^

Canbus007 发表于 2008-7-7 09:53:38

顶一下!

qkj1575 发表于 2008-7-7 10:44:45

能测试蓄电池就好了

makathy 发表于 2008-7-8 14:37:41

不错啊

talimu1 发表于 2008-8-20 10:36:45

做的很不错哦

thefrogking 发表于 2008-8-20 22:02:44

LZ 厉害

cb0610506009 发表于 2008-8-23 22:17:30

好资料。

顶一下~~~~~~~·

avr_appli 发表于 2008-8-24 08:00:15

mark

fu2008 发表于 2008-8-27 22:06:19

mark

zhong110109 发表于 2008-9-8 22:32:51

佩服,学习中

yxlcarter 发表于 2008-9-11 14:56:41

楼主厉害,学生能单独设计出来,算是比较NB的学生了。

bbandpp 发表于 2008-9-12 17:58:59

学习

proco 发表于 2008-10-21 13:28:30

好东西&nbsp;谢谢楼主

bbandpp 发表于 2008-10-21 14:17:52

学习
页: [1] 2 3
查看完整版本: [原创]M8+LCD1602+LM35的电池容量测试仪----原理图+源程序