首页 > 解决方案 > 使用 Arduino 了解电池的电量百分比

问题描述

我正在使用 Arduino Nano 和各种 9.9V、6.6V 和 3.7V 的 Li-Fe、Li-Po 电池。我可以使用 Arduino 读取电池的电压。我的 Arduino 工作电压为 5V,因此对于 9.9V 和 6.6VI 等电池,使用了使用两个 10k 电阻的分压器。但问题是我需要读取充电电池的百分比,我在代码中尝试了一些东西,但我不确定关于它。请任何人帮助我。我的代码是:

#define cellPin A0

const float mvpc = 4.55 ; //measured voltage of arduino through voltmeter
float counts = 0;  //battery volts in millivolts
float mv = 0;
float multiplier = 2;
float output = 0;
int charge = 0;

void setup() {
  // put your setup code here, to run once:
Serial.begin(115200);
}

void loop() {
  // put your main code here, to run repeatedly:
counts = analogRead(cellPin);
Serial.println(counts);

mv = counts * mvpc;
Serial.println(mv);

output = (mv * multiplier)/1000 ;
Serial.print(output);
Serial.println("V");

charge = (counts/1024)*100;
Serial.print(charge);
Serial.println("%");

delay(1000);

}

标签: arduinoarduino-idebatterybatterylevel

解决方案


为了准确确定充电电池的百分比,您需要每个电池的放电图。锂电池的放电图通常是非线性的。放电曲线基本上是电压与充电百分比的关系,并且对于充电和放电电池来说是不同的。

如果您有放电曲线,您可以为每个百分比创建一个映射到相应的电压值。然后,您可以将每个电压映射到您创建的映射中的 % 值。

例如:

100% -> 5.00 V 99% -> 4.95 V .... 0% -> 3.23 V

创建一个数组来存储大小为 100 的映射(对于每个 %):[5.00, 4.95, ... 3.23]

然后,您可以使用电压找到 %s。希望你能找到放电图,否则你可以自己手动找到,用安全电流给电池放电


推荐阅读