找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10009|回复: 10
打印 上一主题 下一主题
收起左侧

简易测电池容量仪制作 附Arduino代码

  [复制链接]
跳转到指定楼层
楼主
以前做项目剩有几十个14500锂电池,不知是否全好的,干脆就做个测试电池容量的来测一下

原理图:


/************************************************************
*简易测电池容量
*电阻是已知的 电压通过A0口测得 之后就可以通过欧姆定律算得电流
*电流乘以时间得到容量 (这个用一秒一次采样 之后将这一秒当成恒流放电
*算出每秒放电量再不断叠加)
*
*电阻5欧 5瓦 可根据容量改( Rdown)



**************************************************************/

float Udown=0, Rdown=5,Vcc=5,capacity,Idown,time=0;

void setup()
{
Serial.begin(9600);  //定义串口波特率为9600
}

void loop() {
time=time+1;
Udown = analogRead(A0);  //读取A0口值
Udown=Udown/1023*Vcc;  //换算为电压值
Idown=Udown/Rdown;    //换算为电流值
capacity=capacity+Idown;  //换算为电池容量值
Serial.print("U:");
Serial.print(Udown,3);  //电压值保留小数点3位
Serial.print("V");
Serial.print("  I:");
Serial.print(Idown,3);   //电流值保留小数点3位
Serial.print("A");
Serial.print("  capacity:");
Serial.print(capacity,3);   //电池容量值保留小数点3位
Serial.print("mAh");
Serial.print("  time:");
Serial.print(time);   //测试时间
Serial.println("s");


delay(1000);        // 一秒刷新一次 这个与容量测试挂钩 最好别改
}






*串口工具需要一直开着,否则会清零
*电池中途可以卸下 再接上 不影响测量 另外这个只是粗略测量
*只能测5v以下
*另外改改程序(A0-A7)就能实现多个电池一起测


评分

参与人数 1黑币 +80 收起 理由
admin + 80 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏7 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:373684 发表于 2019-10-14 23:57 | 只看该作者
Arduino:1.6.9 (Windows 7), 开发板:"Arduino Due (Programming Port)"

Arduino:1: error: 'float time' redeclared as different kind of symbol

In file included from c:\users\administrator.user-20161022ou\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\arm-none-eabi\include\stdlib.h:11:0,

                 from C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Arduino.h:24,

                 from sketch\Arduino.ino.cpp:1:

c:\users\administrator.user-20161022ou\appdata\local\arduino15\packages\arduino\tools\arm-none-eabi-gcc\4.8.3-2014q1\arm-none-eabi\include\time.h:47:11: error: previous declaration of 'time_t time(time_t*)'

time_t    _EXFUN(time,     (time_t *_timer));

           ^

D:\360娴忚鍣ㄤ笅杞絃BV\绗簲绔犲簲鐢ㄨ繘闃禱5.4娓╂箍搴︽祴閲廫Arduino\Arduino.ino: In function 'void loop()':

D:\360娴忚鍣ㄤ笅杞絃BV\绗簲绔犲簲鐢ㄨ繘闃禱5.4娓╂箍搴︽祴閲廫Arduino\Arduino.ino:9:11: warning: pointer to a function used in arithmetic [-Wpointer-arith]

Arduino:9: error: assignment of function 'time_t time(time_t*)'

Arduino:9: error: cannot convert 'time_t (*)(time_t*) {aka long int (*)(long int*)}' to 'time_t(time_t*) {aka long int(long int*)}' in assignment

Arduino:24: error: call of overloaded 'print(time_t (&)(time_t*))' is ambiguous

D:\360娴忚鍣ㄤ笅杞絃BV\绗簲绔犲簲鐢ㄨ繘闃禱5.4娓╂箍搴︽祴閲廫Arduino\Arduino.ino:24:18: note: candidates are:

In file included from C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Stream.h:26:0,

                 from C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/HardwareSerial.h:24,

                 from C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Arduino.h:195,

                 from sketch\Arduino.ino.cpp:1:

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:61:12: note: size_t Print::print(char) <near match>

     size_t print(char);

            ^

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:61:12: note:   no known conversion for argument 1 from 'time_t(time_t*) {aka long int(long int*)}' to 'char'

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:62:12: note: size_t Print::print(unsigned char, int) <near match>

     size_t print(unsigned char, int = DEC);

            ^

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:62:12: note:   no known conversion for argument 1 from 'time_t(time_t*) {aka long int(long int*)}' to 'unsigned char'

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:63:12: note: size_t Print::print(int, int) <near match>

     size_t print(int, int = DEC);

            ^

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:63:12: note:   no known conversion for argument 1 from 'time_t(time_t*) {aka long int(long int*)}' to 'int'

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:64:12: note: size_t Print::print(unsigned int, int) <near match>

     size_t print(unsigned int, int = DEC);

            ^

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:64:12: note:   no known conversion for argument 1 from 'time_t(time_t*) {aka long int(long int*)}' to 'unsigned int'

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:65:12: note: size_t Print::print(long int, int) <near match>

     size_t print(long, int = DEC);

            ^

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:65:12: note:   no known conversion for argument 1 from 'time_t(time_t*) {aka long int(long int*)}' to 'long int'

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:66:12: note: size_t Print::print(long unsigned int, int) <near match>

     size_t print(unsigned long, int = DEC);

            ^

C:\Users\Administrator.USER-20161022OU\AppData\Local\Arduino15\packages\arduino\hardware\sam\1.6.8\cores\arduino/Print.h:66:12: note:   no known conversion for argument 1 from 'time_t(time_t*) {aka long int(long int*)}' to 'long unsigned int'

exit status 1
'float time' redeclared as different kind of symbol

在文件 -> 首选项开启
“编译过程中显示详细输出”选项
这份报告会包含更多信息。

回复

使用道具 举报

板凳
ID:373684 发表于 2019-10-15 15:10 | 只看该作者
我用Arduino DUE板做的,,做不出来,,上面就是错误报警
回复

使用道具 举报

地板
ID:264926 发表于 2019-10-15 18:30 | 只看该作者
加个显示屏  显示呢
回复

使用道具 举报

5#
ID:373684 发表于 2019-10-18 19:32 | 只看该作者
zhengyouhua 发表于 2019-10-15 18:30
加个显示屏  显示呢

论坛有的,,我看到有显示屏的做法
回复

使用道具 举报

6#
ID:689745 发表于 2020-2-3 17:41 | 只看该作者
图1  Arduino Pro Mini 测量 2 节 7 号电池电压和容量


图2  硬件连接 Arduino Pro Mini 和 电池



图3  APP 实时显示电池电压和容量





谢谢您的介绍,按这个原理实现了 Arduino Pro Mini 测量 2 节 7 号电池(电压=2.93V,电量=94%)。算法原理和实验过程,请参考《花 1 小时,开源设计 LoRa 检测电池容量》  https://blog.csdn.net/jiangjunjie_2005/article/details/104070668
回复

使用道具 举报

7#
ID:85865 发表于 2020-2-4 13:20 | 只看该作者
cr8526 发表于 2019-10-15 15:10
我用Arduino DUE板做的,,做不出来,,上面就是错误报警

DUE 好像不行的哦,
回复

使用道具 举报

8#
ID:373684 发表于 2021-1-6 23:39 | 只看该作者
252622979 发表于 2020-2-4 13:20
DUE 好像不行的哦,

要什么板??
回复

使用道具 举报

9#
ID:373684 发表于 2022-2-27 22:04 | 只看该作者
252622979 发表于 2020-2-4 13:20
DUE 好像不行的哦,

原来是这样 啊,,明白了
回复

使用道具 举报

10#
ID:593198 发表于 2022-10-11 21:02 | 只看该作者
楼主的程序计算出的容量应该是AS(安秒),这一句“capacity=capacity+Idown;  //换算为电池容量值”改为
   “capacity=capacity+Idown/3.6;  //换算为电池容量值” 单位才能用mAh.   
回复

使用道具 举报

11#
ID:138707 发表于 2023-7-29 17:57 | 只看该作者
原来是这样 啊,,明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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