Справочници, схемотехника, теория > Батерии, зарядни и десулфатизиращи устройства

"Разрядно" устройство, или как да измерим капацитета на батерията

(1/3) > >>

juliang:


Това засега е сглобено "на коляно", с подръчни елементи. Единственото което прави в момента е да мери напрежение и време. Идеята в бъдеще е следната:
1. Ограничаване на минималното напрежение до което да пада батерията, за да не се повреди необратимо. Теста трябва да прекъсне при достигане на 3.0 волта (или ако съм садист - до 2.5 волта :) ).
2. "Наръч" от резистори, с възможност за избор на оптималния според капацитета на батерията.
3. Много евентуално и много напред в бъдещето - и функция за зареждане, и функция за балансиране ... абе нещо такова:


В момента ползвам наскоро дошлите ми Ардуино Уно, LCD Shield и real-time clock модул. Резистор 10 вата 5.1 ома като товар. Едно це-ка ключенце с което може да се прекъсне товара и едновременно с това да се спре часовника (ако човек иска да похапне и да не оставя батерията без надзор).

Код:

--- Код: ---#include <virtuabotixRTC.h>
#include <LiquidCrystal.h>


// Creation of the Real Time Clock Object
//SCLK -> 6, I/O -> 7, CE -> 8
virtuabotixRTC myRTC(10, 11, 12);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

byte oldSeconds;
int analogPin = 1;
int startMeasurementPin = 3;
float voltage = 0.0;
String text;
float batteryCapacity = 0;
int elapsedTime = 0;

void setup() {
  Serial.begin(9600);
  pinMode(startMeasurementPin, INPUT);
  lcd.begin(16, 2);              // start the library
  // Set the current date, and time in the following format:
  // seconds, minutes, hours, day of the week, day of the month, month, year
  //myRTC.setDS1302Time(00, 22, 20, 2, 21, 2, 2017);
}

void loop() {
  // This allows for the update of variables for time or accessing the individual elements.
  myRTC.updateTime();
  if (oldSeconds != myRTC.seconds)
  {
    oldSeconds = myRTC.seconds;
    elapsedTime++;
    voltage = analogRead(analogPin) / 204.38;
    batteryCapacity += voltage / 5.1;
    lcd.setCursor(0, 0);
    lcd.print(String(voltage) + "V   ");
    if (digitalRead(startMeasurementPin) == LOW)
    {
      lcd.setCursor(6, 0);
      lcd.print(String(elapsedTime) + "s");
      lcd.setCursor(11, 0);
      lcd.print("RUN ");
      lcd.setCursor(0, 1);
      lcd.print("Capacity " + String(batteryCapacity / 3.6) + "mAh");
      //    lcd.print(getTimeAsString(myRTC));
    }
    else
    {
      lcd.setCursor(11, 0);
      lcd.print("STOP");
    }
  }
}

String getTimeAsString(virtuabotixRTC rtc)
{
  String result;
  result = "Time:";
  if (rtc.hours < 10) {
    result = result + "0";
  }
  result = result + rtc.hours + ":";
  if (rtc.minutes < 10) {
    result = result + "0";
  }
  result = result + rtc.minutes + ":";
  if (rtc.seconds < 10) {
    result = result + "0";
  }
  result = result + rtc.seconds;
  return result;
}
--- Край на кода ---

И по кода има неща за издялкване ... ма като за 1/2 час с налучкването на правилните библиотеки - толкоз :)

Коев:
Ако го направиш да изключва разряда при достигане на 3,6 волта, ще става за тестване и на оловнокисели батерии/с две клетки/.За зареждане след теста може да се ползват зарядни за таблет-5в, 1или2А, на първо време.

Радико:
Юлияне аз лично проявявам интерес към това как точно си се справил с модула за точно време.
Би ли споделил повече за ,от къде го купи, имаше ли проблем с библиотеките, изобщо всичко за него защото и аз мисля да ползвам такъв модул и всяка информация би била полезна. 

juliang:

--- Цитат на: Радико в Февруари 25, 2017, 11:26:14 am ---Юлияне аз лично проявявам интерес към това как точно си се справил с модула за точно време.
Би ли споделил повече за ,от къде го купи, имаше ли проблем с библиотеките, изобщо всичко за него защото и аз мисля да ползвам такъв модул и всяка информация би била полезна.

--- Край на цитат ---
Модула го взех от али-то - поръчах една камара модули за всякакви функции, без да подбирам много конкретното реализиране. Ето този точно:

Реално самия модул представлява един чип DS1302 ( https://datasheets.maximintegrated.com/en/ds/DS1302.pdf), кварцов резонатор на 32768 херца и гнездо за батерийка. Има 5 писти на кръст, никаква допълнителна логика - каквото предлага чипа, това е. В али-то има и по-евтини, и по-функционални модули за реално време.
Колко ще е точен модула зависи изцяло от точността на кварца. Чипа само брои и превръща броя импулси в удобен за човека вид - смята си дни от седмицата, съобразява се с високосни години и т.н. Един път като "го свериш" с определена команда от библиотеката можеш да го откачаш от ардуиното и да го оставяш някъде по чекмеджетата и той ще си цъка от батерийката. Специално моя не е много точен... бяга около минута на ден :)
Коя библиотека ще се ползва зависи изцяло от това какъв чип се ползва в определения модул. Има библиотеки които могат да се оправят с различни чипове, има специализирани (и съответно по-малки като обем) библиотечки които могат да обслужват само един чип. Но общо-взето предлагат четене на дата и час и запис на дата и час. Връщат цялата информация в един клас, пък ти си взимаш каквото ти е нужно.
Този чип DS1302 има и 31 байта памет в него, която също се крепи от батерията и там можеш да си запишеш някаква дата/час - примерно за аларма. Идеята е да не товариш това инфо в ардуиното и да не се грижиш за запазването му. Но и за там имаш само четене/запис - чипа няма да те уведоми че времето е настъпило, трябва сам да сравняваш.
Другото което не можах да намеря е фукнционалност за elapsed time - разлика между две времена, или нещо като хронометър. Нито хардуерно, нито като библиотека (не че търсих много де :) ). Трябва сам да си правиш сметките колко дни, часа, минути и секунди са изтекли между двете дати. Вероятно някой по-добър чип има тази функционалност.

vsl:
Здравейте,

Ако се използва резистор за разреждане на батерия то тока няма да константен. Напрежението пада във всеки момент и тока също би намалил. Това което се използва е електронен товар или electronic load. Пускам примерен сайт и схема за Ардино.

http://jasper.sikken.nl/electronicload/index.html

Навигация

[0] Списък на темите

[#] Следваща страница

Премини на пълна версия