1 2 3 4 5 6 7 8 9 10 10/10 10,00оценок: 2

Стенд для проведения КТЦ АКБ

Тема в разделе "Бесперебойное (аварийное) электропитание", создана пользователем Strangeman, 01.12.14.

  1. Strangeman
    Регистрация:
    24.07.11
    Сообщения:
    14.618
    Благодарности:
    9.124

    Strangeman

    Стремящийся к автономии

    Strangeman

    Стремящийся к автономии

    Регистрация:
    24.07.11
    Сообщения:
    14.618
    Благодарности:
    9.124
    Адрес:
    Ростовская обл. д. Золотарево
    Реле лучше отдельные, на то есть как минимум пара причин.
    1. Между зарядом и разрядом рекомендуется пауза.
    2. Вы же не хотите себе этакого Тамагочу? :) чтобы потом ловить конец заряда. С двумя реле просто укажете требуемое количество КТЦ и отключите заряженный или разряженный аккумулятор когда будет удобно.
     
  2. Sapienz
    Регистрация:
    07.04.12
    Сообщения:
    547
    Благодарности:
    256

    Sapienz

    Живу здесь

    Sapienz

    Живу здесь

    Регистрация:
    07.04.12
    Сообщения:
    547
    Благодарности:
    256
    Адрес:
    Санкт-Петербург
    Если надо я могу дать очень сырой но рабочий код на ардуине. Выпилите оттуда что вам надо. Изначально проектировался для солнечного зарядника и разрядника соответственно. Только времени нет его оттестировать на реальном аакумуляторе и расчесать индикацию. На первый взгляд от бп с щелочниками - работал.
     
    Последнее редактирование: 30.11.15
  3. ubuser
    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428

    ubuser

    Изобредатель

    ubuser

    Изобредатель

    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428
    Адрес:
    Нерезиновая область
    Чего мне его ловить, за сутки по любому зарядится...
    Сначала заряжаем сутки, потом разряд, потом снова заряд сутки, снова разряд...
    Делаем нужное количество циклов (я думал штуки 4) и в конце просто оставляем на заряд до выключения из розетки.
     
  4. Strangeman
    Регистрация:
    24.07.11
    Сообщения:
    14.618
    Благодарности:
    9.124

    Strangeman

    Стремящийся к автономии

    Strangeman

    Стремящийся к автономии

    Регистрация:
    24.07.11
    Сообщения:
    14.618
    Благодарности:
    9.124
    Адрес:
    Ростовская обл. д. Золотарево
    Либо будет долго заряжаться, либо сильно "кипеть", а при желании получить разряженный, получите излишне разряженный.
     
  5. ubuser
    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428

    ubuser

    Изобредатель

    ubuser

    Изобредатель

    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428
    Адрес:
    Нерезиновая область
    У меня нет желания получить разряженный. Да и нельзя свинцовые АКБ долго держать разряженными.
    Кипеть не будет - при 14.4 обильного кипения не бывает. Просто долго заряжаться будет. Ну поэтому сутки зарядка идет.
     
  6. ubuser
    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428

    ubuser

    Изобредатель

    ubuser

    Изобредатель

    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428
    Адрес:
    Нерезиновая область
    Пошукал программки, посмотрел как народ делает.
    А народ вообще не заморачивается - тупо текущий ток умножает на dt, которое вычисляет с помощью millis(); и складывает в стопочку.
    Никаких прерываний, все и так работает норм. Таймер millis() переполняется через 50 дней - для сельской местности пойдет (с) :)
     
  7. Strangeman
    Регистрация:
    24.07.11
    Сообщения:
    14.618
    Благодарности:
    9.124

    Strangeman

    Стремящийся к автономии

    Strangeman

    Стремящийся к автономии

    Регистрация:
    24.07.11
    Сообщения:
    14.618
    Благодарности:
    9.124
    Адрес:
    Ростовская обл. д. Золотарево
    Логично. Я как-то упустил из виду, что у Вас свинец. Для щелочи опция может быть полезной при замене электролита.

    Исключительно для сельской местности :)
     
  8. Sliderrr
    Регистрация:
    12.05.12
    Сообщения:
    130
    Благодарности:
    124

    Sliderrr

    Живу здесь

    Sliderrr

    Живу здесь

    Регистрация:
    12.05.12
    Сообщения:
    130
    Благодарности:
    124
    Адрес:
    Ом
    Можно и так на ардуино сделать, замер 8 АКБ сразу:
    Накопилось снова около 50 АКБ от УПСов, всех перетестить, надо полгода ежедневного присутствия. А приблудой за 2-3 недели (+пара недель на написание проги и сборки) большему числу провёл КТЦ по 3 раза (другим и 1го хватило чтоб их определить в утиль). Заряжал в параллель от мощного БП.
    20151029.jpg
    20151010_113846.jpg
    20151010_113948.jpg
    20151009_090525.jpg
    дисплей можно приляпать почти любой от китайского тлф.
    http://arduino.ru/forum/apparatnye-voprosy/arduino-i-displei-ot-sotikov-mobilnykh-telefonov#comment-146701
    Или к примеру шилд для уно и уно с выведенными доп. пинами A6 A7.
    Можно и зарядку им организовать, для этого стабилизаторы LM317 подключить через диодные мосты, чтоб в обратку стабилизировали ток заряда. это правильней. чтоб после разряда, сразу был заряд. Просто это мне не потребовалось.

    До этого делал для лития приборчик для КТЦ (ардуинка мини + дисп. 1602). Так там для большого тока разряда до 5А (вместо LM317) использовал ШИМ c ардуинки -> RCцепь -> операционник (чтоб с слабых 5ти вольт получить мощных 12в) -> мощный биполярник (мосфет оказался не очень - не прямольнейная ВАХ у него). Нужный ток разряда устанавливался в меню, и адруинка по падению напряжения на низкоомном резисторе, поддерживала ШИМом одинаковый ток по мере разряда аккумулятора. Ну и показывала замеренную емкость. после чего ставила на заряд, через отдельный зарядник.
     
  9. ubuser
    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428

    ubuser

    Изобредатель

    ubuser

    Изобредатель

    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428
    Адрес:
    Нерезиновая область
    @Sliderrr, недурственно, оптовый подход.
    А у нас тут свет в округе уже пятые сутки отсутствует, хотел знакомым занести девайс на тест аккума первого уже, придется ждать.
    Сам-то я в автономке.
     
  10. ubuser
    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428

    ubuser

    Изобредатель

    ubuser

    Изобредатель

    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428
    Адрес:
    Нерезиновая область
    Выкинул RTC. Набросал скетчик.
    charger12v1.GIF
    Код:
    #include <LiquidCrystal_I2C.h>
    #include <Wire.h>
    int lcdaddr=0x27;
    LiquidCrystal_I2C lcd(0x27, 20, 4); // Set the LCD address to 0x27 for a 40 chars and 4 line display
    int ledpin=13;
    float BatCurrent; // ток разряда в А
    int currentpin=6; // пин для подсчета величины тока
    float BatVoltage; // напряжение на АКБ
    int voltagepin=7; // пин для подсчета напряжения на АКБ
    int relaypin=2; // пин реле переключения заряд(0)-разряд(1)
    byte cycle=1; // номер цикла разряд-заряд
    unsigned long PrevMillis ; // предыдущее значение таймера
    unsigned long MillisPassed ; // прошло мсек
    float SelectedMinThreshold = 10; // до какого напряжения разряжать АКБ
    float SelectedMaxThreshold = 14.3; // до какого напряжения заряжать АКБ и включать таймер заряда по напряжению
    boolean chargeflag = false; // флаг перехода к заряду
    float TotalCurrent = 0; // емкость, Ач
    
    void setup()
    {
      lcd.begin(); // инициализируем экран
      lcd.backlight();
      lcd.clear();
      Serial.begin(9600); // будем данные в компорт выдавать когда-нибудь
      Wire.begin();
      pinMode(ledpin,OUTPUT);
      digitalWrite(ledpin,LOW);
      pinMode(relaypin,OUTPUT);
      digitalWrite(relaypin,LOW);
      analogReference(DEFAULT);
      lcd.setCursor(0, 1);
      lcd.print("12V Bat Ah Tester v1");
      delay(20000); // время чтобы подключить сеть и АКБ
      lcd.setCursor(0, 0);
      lcd.clear();
      PrevMillis = millis();
      BatVoltage = float(analogRead(voltagepin))/69;
    }
    
    void loop()
    {
      if (BatVoltage > SelectedMinThreshold && cycle<5 && !chargeflag) // если напруга на АКБ больше порога и при этом цикл от 1 до 4 и не стоит флаг заряда
      {
        digitalWrite(relaypin,HIGH); // включим разряд
        delay(1000);
        BatVoltage = float(analogRead(voltagepin))/69; // вычисляем напругу на АКБ
        BatCurrent = float(analogRead(currentpin))/200; // и ток разряда
        MillisPassed = millis()- PrevMillis; //сколько прошло мсек
        PrevMillis = millis();
        TotalCurrent = TotalCurrent + (float(MillisPassed)/3600000)*BatCurrent; // к прошлому значению емкости добавляем время(ч)*ток(А) за период
        LcdVolCur(); // выводим текущие напряжение и ток в верхнюю строку экрана
        LcdAh(); // выводим текущую емкость
        if (BatVoltage <= SelectedMinThreshold) {chargeflag=true;} // если достигли порога разряда, то переходим к заряду
      }
      else {BatVoltage = float(analogRead(voltagepin))/69;
            digitalWrite(relaypin,LOW); // включаем заряд
            if (BatVoltage>SelectedMaxThreshold) // если напруга достигла порога
            {
              chargeflag=true; // чтобы не было глюков после всех циклов
              LcdVolCur(); // выводим текущее напряжение в верхнюю строку экрана
              delay(43200000); // сутки - 86400000, 12ч - 43200000
              BatVoltage = float(analogRead(voltagepin))/69;
              LcdVolCur(); // выводим текущее напряжение в верхнюю строку экрана
              chargeflag=false; //окончание заряда
              cycle++; // прибавляем номер цикла
              TotalCurrent = 0; // сбрасываем счетчик Ач для нового цикла
              PrevMillis = millis(); // устанавливаем значение на случай, если будет переход к разряду
              if (cycle > 4)  // если закончен последний цикл заряда
              {
               lcd.setCursor(0, 1);
               lcd.print("=======DONE!!!======"); // выводим сообщение
              }
            }
            else
            {
              LcdVolCur(); // выводим текущее напряжение в верхнюю строку экрана
              delay(1000);
            }
           }
    }
    
    // Функция вывода напряжения и тока на экран
    void LcdVolCur(void)
    {
      lcd.setCursor(0, 0);
      lcd.print("                    ");
      lcd.setCursor(0, 0);
      lcd.print(BatVoltage);
      lcd.print("V ");
      if (chargeflag)
      {
       lcd.print("Charging");
      }
      else {lcd.print("DisCh ");
            lcd.print(BatCurrent);
            lcd.print("A");}
    }
    // Функция вывода емкости на экран
    void LcdAh(){
      if (cycle==1){lcd.setCursor(0, 2);}
      else if (cycle==2){lcd.setCursor(10, 2);}
      else if (cycle==3){lcd.setCursor(0, 3);}
      else {lcd.setCursor(10, 3);}
      lcd.print("          ");
      if (cycle==1){lcd.setCursor(0, 2);}
      else if (cycle==2){lcd.setCursor(10, 2);}
      else if (cycle==3){lcd.setCursor(0, 3);}
      else {lcd.setCursor(10, 3);}
      lcd.print(cycle);
      lcd.print(".");
      lcd.print(TotalCurrent);
      lcd.print("Ah");
    }
    
    Результат на тестовом убитом аккуме:
    2015-12-09 00-13-41.JPG
    Теперь надо бы delay (12 часов) как-то убрать.
    repeat-until, я так понимаю, в ардуине отсутствует?
     
    Последнее редактирование: 09.12.15
  11. Sapienz
    Регистрация:
    07.04.12
    Сообщения:
    547
    Благодарности:
    256

    Sapienz

    Живу здесь

    Sapienz

    Живу здесь

    Регистрация:
    07.04.12
    Сообщения:
    547
    Благодарности:
    256
    Адрес:
    Санкт-Петербург
    Посмотрите на код работы со временем. Он учитывает время затраченное на замеры и обработку
    информации.
    -
    timing = millis() + prevtiming;
    if (timing>1000){
    prevtiming= (millis()%1000) - millis();
    sec=sec+1;
    AhBaterry = AmpBaterry/3600 + AhBaterry;
    -
    Если я правильно понял назначение этой строчки - вместо delay можно добавить счетчик и пусть считает каждую секунду сколько нужно. Вместо Delay - проверка достижения значения - обнуление, новый цикл или продолжение.
     
  12. ubuser
    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428

    ubuser

    Изобредатель

    ubuser

    Изобредатель

    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428
    Адрес:
    Нерезиновая область
    Счетчик да, можно запилить...
    Еще такой прикол вчера был, я не понял вообще что за безобразие.
    У меня на ноуте среда ардуино версии 1.6.3, прогу я писал в ней.
    Вчера на отдельный комп поставил последнюю версию 1.6.6, подкинул те же самые библиотеки, скомпилил скетч и загрузил в девайс. У меня слетела вся индикация, съехали строки на дисплее и т. д.
    Сама среда сказала, мол есть обновления для библиотек. Ну, обновил библиотеки, в т. ч. LiquidCrystal_I2C.
    Так оно потом вообще компилиться отказалось.
    Пришлось искать версию 1.6.3 и опять старые библиотеки подкладывать.
    Это что за...?
    А еще компилятор какой-то слабоватый, соответствие типов не проверяет, потом сиди ищи глюки...
     
  13. ubuser
    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428

    ubuser

    Изобредатель

    ubuser

    Изобредатель

    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428
    Адрес:
    Нерезиновая область
    Прогнал дохлый аккум полноценными циклами. Как мы можем наблюдать, труп со временем розовеет :) Аккум Panasonic 35Ah с Nissan March.
    2015-12-11 22-44-24.JPG
    Но радикально лучше ему не стало. На втормет пойдет.
     
    Последнее редактирование: 12.12.15
  14. ubuser
    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428

    ubuser

    Изобредатель

    ubuser

    Изобредатель

    Регистрация:
    24.05.10
    Сообщения:
    1.110
    Благодарности:
    428
    Адрес:
    Нерезиновая область
    Хочу поделиться кой-какими наблюдениями.
    Взял пару убитых автоаккумов емкостью примерно 65Ач. Посадил в ноль. Зарядил в обратную сторону, получил почти половину емкости, около 30Ач после 4х КТЦ. Снова посадил в ноль. Зарядил в прямую сторону. Емкость стала примерно 20Ач после 4х КТЦ.
    То есть злостный сульфат таки растворяется. Видимо, надо подольше погонять аккум в обратной полярности, и емкость восстановится сильнее.
     
  15. wcreader
    Регистрация:
    19.11.13
    Сообщения:
    8.401
    Благодарности:
    1.509

    wcreader

    Живу здесь

    wcreader

    Живу здесь

    Регистрация:
    19.11.13
    Сообщения:
    8.401
    Благодарности:
    1.509
    Адрес:
    Россия, Ленинградская область
    Так на обратной было больше.