本帖最后由 chensg 于 2015-1-4 11:29 编辑
本人不久前做了一个测量电池容量的装置,供大家参考,可以很方便测量各种电池的容量,大家可以试试,看你购买到的电池有没有虚标哦!
{:soso_e113:}
- /*
- 1602LCD接线:
- * LCD RS pin to digital pin 11
- * LCD Enable pin to digital pin 10
- * LCD D4 pin to digital pin 9
- * LCD D5 pin to digital pin 8
- * LCD D6 pin to digital pin 7
- * LCD D7 pin to digital pin 6
-
- 测量电阻串接在电路中
- 测量电阻+:接A0
- 测量电阻-:接地
- */
- #include <LiquidCrystal.h>
- LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
- float Ucr = 0, Rcs = 2.7, Vce = 1.1, Ics, capacity = 0; //Rcs为测量电阻,阻值可跟据精度、量程调整,此例中最大量程407mA.
- unsigned long Nowtime, Lasttime = 0, Cltime = 0, time = 0;
- const int analogInPin = A0;
- void setup()
- {
- lcd.begin(16, 2);
- analogReference(INTERNAL); //使用内部1.1V参考电压。
- pinMode(analogInPin, INPUT);
- }
- void loop() {
- Nowtime = millis();
- if (abs(Nowtime - Lasttime) >= 1000)
- {
- Lasttime = Nowtime;
- int Uval = analogRead(analogInPin); //读取A0口值
- Ucr = (Uval / 1023.0) * Vce * 1000.0; //换算为电压值,(mV)
- Ics = Ucr / Rcs; // (mA)
- capacity = capacity + (Ics / 60); //(mAm 毫安分钟)
- if (Ics >= 3) //小于3mA作为测试结束。
- {
- time = time + 1;
- }
- lcd.setCursor(0, 0);
- lcd.print(F("I:"));
- lcd.print(Ics, 0);
- //lcd.print(F("mA"));
- lcd.setCursor(7, 0);
- lcd.print(F("C:"));
- lcd.print(capacity, 0);
- lcd.setCursor(0, 1);
- lcd.print(F("U:"));
- lcd.print(Ucr, 0);
- lcd.setCursor(7, 1);
- lcd.print(F("T:"));
- lcd.print(time, 0);
- lcd.print(F("s"));
- }
- if ((Nowtime - Cltime) >= 5500)
- {
- lcd.clear();
- Cltime = Nowtime;
- }
- delay(20);
- }
复制代码 |