Индикатор уровня заряда аккумулятора на Arduino
Все батареи имеют определенный предел напряжения для разряда, если он выходит за установленные пределы, срок службы батареи резко сократится. Будучи энтузиастами электроники, у всех нас может быть батарея для тестирования наших прототипов. Поскольку мы концентрируемся на прототипе во время эксперимента, мы меньше заботимся о батарее. Предлагаемая схема зарядного устройства покажет вам, сколько энергии осталось в батарее, эта схема может быть подключена к аккумулятору, пока вы прототипируете свои схемы. Когда эта цепь указывает на низкую батарею, вы можете зарядить аккумулятор. Цепь имеет 6 светодиодов, один светодиод горит одновременно, чтобы указать уровень напряжения батареи. Если ваша батарея заполнена, то большинство светодиодов светится, и вы разряжаетесь или собираетесь умирать, правый светодиод горит.
Схема состоит из Arduino, который является мозгом системы, потенциальным делителем, который помогает Arduino пробовать входное напряжение. Для калибровки вышеуказанной настройки используется предустановленный резистор. Серия из 6 светодиодов отображает уровень заряда батареи.
Калибровка светодиодных индикаторов
Ниже приведена связь между уровнем светодиода и уровнем заряда аккумулятора:
LED1 - от 100% до 80%
LED2 - от 80% до 60%
LED3 - от 60% до 40%
LED4 - 40% до 20%
LED5 - от 20% до 5%
LED6 - <5% (зарядите аккумулятор)
Arduino измеряет узкий диапазон напряжения от 12,70 В до 11,90 В. Полностью заряженная батарея должна иметь напряжение выше 12.70 В после отсоединения от зарядного устройства. Низкое напряжение батареи не должно опускаться ниже 11,90 В для 12 В герметичной свинцово-кислотной батареи.
Код программы:
//--------Program developed by R.Girish---------//
int analogInput = 0;
int f=2;
int e=3;
int d=4;
int c=5;
int b=6;
int a=7;
int s=13;
float vout = 0.0;
float vin = 0.0;
float R1 = 100000;
float R2 = 10000;
int value = 0;
void setup()
{
Serial.begin(9600);
pinMode(analogInput,INPUT);
pinMode(s,OUTPUT);
pinMode(a,OUTPUT);
pinMode(b,OUTPUT);
pinMode(c,OUTPUT);
pinMode(d,OUTPUT);
pinMode(e,OUTPUT);
pinMode(f,OUTPUT);
digitalWrite(s,LOW);
digitalWrite(a,HIGH);
delay(500);
digitalWrite(b,HIGH);
delay(500);
digitalWrite(c,HIGH);
delay(500);
digitalWrite(d,HIGH);
delay(500);
digitalWrite(e,HIGH);
delay(500);
digitalWrite(f,HIGH);
delay(500);
digitalWrite(a,LOW);
digitalWrite(b,LOW);
digitalWrite(c,LOW);
digitalWrite(d,LOW);
digitalWrite(e,LOW);
digitalWrite(f,LOW);
}
void loop()
{
value = analogRead(analogInput);
vout = (value * 5.0) / 1024;
vin = vout / (R2/(R1+R2));
Serial.println("Input Voltage = ");
Serial.println(vin);
if(vin>12.46) {digitalWrite(a,HIGH);}
else { digitalWrite(a,LOW);}
if(vin<=12.46 && vin>12.28) {digitalWrite(b,HIGH);}
else { digitalWrite(b,LOW);}
if(vin<=12.28 && vin>12.12) {digitalWrite(c,HIGH);}
else { digitalWrite(c,LOW);}
if(vin<=12.12 && vin>11.98) {digitalWrite(d,HIGH);}
else { digitalWrite(d,LOW);}
if(vin<=11.98 && vin>11.90){digitalWrite(e,HIGH);}
else {digitalWrite(e,LOW);}
if(vin<=11.90) {digitalWrite(f,HIGH);}
else {digitalWrite(f,LOW);}
delay(2000);
}
//--------Program developed by R.Girish---------//