標(biāo)題: 簡易測電池容量儀制作 附Arduino代碼 [打印本頁]

作者: 252622979    時間: 2019-1-26 11:47
標(biāo)題: 簡易測電池容量儀制作 附Arduino代碼
以前做項目剩有幾十個14500鋰電池,不知是否全好的,干脆就做個測試電池容量的來測一下

原理圖:


/************************************************************
*簡易測電池容量
*電阻是已知的 電壓通過A0口測得 之后就可以通過歐姆定律算得電流
*電流乘以時間得到容量 (這個用一秒一次采樣 之后將這一秒當(dāng)成恒流放電
*算出每秒放電量再不斷疊加)
*
*電阻5歐 5瓦 可根據(jù)容量改( 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);  //電壓值保留小數(shù)點3位
Serial.print("V");
Serial.print("  I:");
Serial.print(Idown,3);   //電流值保留小數(shù)點3位
Serial.print("A");
Serial.print("  capacity:");
Serial.print(capacity,3);   //電池容量值保留小數(shù)點3位
Serial.print("mAh");
Serial.print("  time:");
Serial.print(time);   //測試時間
Serial.println("s");


delay(1000);        // 一秒刷新一次 這個與容量測試掛鉤 最好別改
}






*串口工具需要一直開著,否則會清零
*電池中途可以卸下 再接上 不影響測量 另外這個只是粗略測量
*只能測5v以下
*另外改改程序(A0-A7)就能實現(xiàn)多個電池一起測



作者: cr8526    時間: 2019-10-14 23:57
Arduino:1.6.9 (Windows 7), 開發(fā)板:"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

在文件 -> 首選項開啟
“編譯過程中顯示詳細(xì)輸出”選項
這份報告會包含更多信息。


作者: cr8526    時間: 2019-10-15 15:10
我用Arduino DUE板做的,,做不出來,,上面就是錯誤報警

作者: zhengyouhua    時間: 2019-10-15 18:30
加個顯示屏  顯示呢
作者: cr8526    時間: 2019-10-18 19:32
zhengyouhua 發(fā)表于 2019-10-15 18:30
加個顯示屏  顯示呢

論壇有的,,我看到有顯示屏的做法
作者: rimelink    時間: 2020-2-3 17:41
圖1  Arduino Pro Mini 測量 2 節(jié) 7 號電池電壓和容量


圖2  硬件連接 Arduino Pro Mini 和 電池



圖3  APP 實時顯示電池電壓和容量





謝謝您的介紹,按這個原理實現(xiàn)了 Arduino Pro Mini 測量 2 節(jié) 7 號電池(電壓=2.93V,電量=94%)。算法原理和實驗過程,請參考《花 1 小時,開源設(shè)計 LoRa 檢測電池容量》  https://blog.csdn.net/jiangjunjie_2005/article/details/104070668

作者: 252622979    時間: 2020-2-4 13:20
cr8526 發(fā)表于 2019-10-15 15:10
我用Arduino DUE板做的,,做不出來,,上面就是錯誤報警

DUE 好像不行的哦,
作者: cr8526    時間: 2021-1-6 23:39
252622979 發(fā)表于 2020-2-4 13:20
DUE 好像不行的哦,

要什么板??
作者: cr8526    時間: 2022-2-27 22:04
252622979 發(fā)表于 2020-2-4 13:20
DUE 好像不行的哦,

原來是這樣 啊,,明白了

作者: zjs500217    時間: 2022-10-11 21:02
樓主的程序計算出的容量應(yīng)該是AS(安秒),這一句“capacity=capacity+Idown;  //換算為電池容量值”改為
   “capacity=capacity+Idown/3.6;  //換算為電池容量值” 單位才能用mAh.   
作者: ziba108    時間: 2023-7-29 17:57
原來是這樣 啊,,明白了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1