Зарядка Li-Ion ( эконом )

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

ноги растут от  - http://shemu.ru/istocniki/item/11-%D0%B7%D0%B0%D1%80%D1%8F%D0%B4%D0%BD%D0%BE%D0%B5-%D1%83%D1%81%D1%82%D1%80%D0%BE%D0%B9%D1%81%D1%82%D0%B2%D0%BE-%D0%BD%D0%B0-attiny26

захотелось побыстрее, попроще, дешевле ... ( без балансировки )

питание - адаптер буковский + LM317 = 7.00 V ( 5 V - из него )

cells = 2200 mAH - много ( и не жалко )

пока работает 1 канал - нормально :) , миня устраивает !

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012
byte relayPin[ 4 ] = { 8 , 9 , 10 , 11 };       // блок реле х 8 на АКБ ( исп. - 4 )
byte uPin[ 4 ] = { A0 , A1 , A2 , A3 };         // U АКБ - пины для измерения U АКБ
float uBatt[ 4 ];                               // U АКБ - действительное
boolean charge[ 4 ];                            // режим - заряжать / не заряжать
boolean endCharge[ 4 ];                         // флаг - заряжен / не заряжен
//boolean endDischarge[ 4 ];                    // для режима контрольного разряда ( пока не исп. )
unsigned long cellTime[ 4 ];                    // для отсчёта времени ( такт !!! ) зарядки
const float uMax = 4.15;                        // установка !!! по понятиям для Li-Ion
const float uSave = 4.00;                       // гистерезис в режиме сохранения ( ?????? )
//const float uMin = 3.00;                      // для режима контрольного разряда ( пока не исп. )
const int timeCharge = 10000;                   // время зарядки - в такте !!!
const byte timeNoCharge = 100;                  // время НЕзарядки и контроля U АКБ - в такте !!!
//======================================================
void setup()
{     
  for ( byte i = 0 ; i < 4 ; i++ )
    {
      pinMode( relayPin[ i ] , OUTPUT );
      digitalWrite( relayPin[ i ] , HIGH );
      endCharge[ 4 ] = false;
      charge[ i ] = false;
    }  
  Serial.begin( 9600 );
}
//======================================================
void loop()
{
  for ( byte i = 0 ; i < 4 ; i++ )
    {
      if ( ! charge[ i ] )
        {
          uBatt[ i ] = 4.7 / 1024 * analogRead( uPin[ i ] ) * 2;
          Serial.print( " U_" ); Serial.print( i ); Serial.print( " = " ); Serial.println( uBatt[ i ] );
          if ( uBatt[ i ] > uMax )
            {
              endCharge[ i ] = true;
              charge[ i ] = false;
            }
          else
            {
              if ( ( ( endCharge[ i ] ) && ( uBatt[ i ] < uSave ) ) || ( ! endCharge[ i ] ) )
                {
                  endCharge[ i ] = false;
                  charge[ i ] = true;
                  cellTime[ i ] = millis();
                }
            }
        }
    }
  for ( int i = 0 ; i < 4 ; i++ )
    {
      if ( charge[ i ] )
        {
          Serial.print( " Charging Cells_" ); Serial.println( i );
          digitalWrite( relayPin[ i ] , LOW );
          if ( ( millis() - cellTime[ i ] ) > timeCharge )
            {
              digitalWrite( relayPin[ i ] , HIGH );
              charge[ i ] = false;
            }
          delay( timeNoCharge );
        }
    }
}
//======================================================

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

реле коммутирует 7 V на АКБ напрямую - для 2200 mAH - от 1,5 A до 0,45 A

omusman
Offline
Зарегистрирован: 21.09.2014

Зачем выкладывать скетч, если:

- ( без балансировки );

- ( 5 V - из него );

- ( и не жалко );

- миня устраивает ! ;

- реле коммутирует 7 V на АКБ напрямую - для 2200 mAH - от 1,5 A до 0,45 A - это просто сказка...

заранее благодарен за схему ....

К стати сходил по ссылке, там ноги растут от ж...пы, ничего нового....

 

inspiritus
Offline
Зарегистрирован: 17.12.2012

http://www.ebay.com/itm/251149612464?_trksid=p2059210.m2749.l2649&ssPage...

цена в нонешних ценах 70 рублёв

art100
Offline
Зарегистрирован: 09.03.2014

в железе не проверял

по коду вроде один флаг мне показался лишний

//SU-27-16 to write charger 4 cell написал заряжалку поэлементную
//art100 20141214 112200 to check sintacsis проверил на корявость
// http://arduino.ru/forum/proekty/zaryadka-li-ion-ekonom
//pins--------------------------------------------------------
byte    relayPin [4]={ 8, 9,10,11};// блок реле х 8 на АКБ ( исп. - 4 )
byte    uPin     [4]={A0,A1,A2,A3};// U АКБ - пины для измерения U АКБ
//consts------------------------------------------------------
float   uBatt    [4];              // U АКБ - действительное
boolean charge   [4];              // режим - заряжать / не заряжать
boolean endCharge[4];              // флаг - заряжен / не заряжен
unsigned long cellTime[ 4 ];       // для отсчёта времени ( такт !!! ) зарядки
const float uMax  = 4.15;          // установка !!! по понятиям для Li-Ion
const float uSave = 4.00;          // гистерезис в режиме сохранения ( ?????? )
const int  timeCharge  =10000;     // время зарядки - в такте !!!
const byte timeNoCharge=  100;     // время НЕзарядки и контроля U АКБ - в такте !!!
//-----------------------------------------------------------
void setup(){     
  for(byte i=0; i<4; i++){
    pinMode(relayPin[i],OUTPUT); digitalWrite(relayPin[i],HIGH);//ноги вверх
    endCharge[4]=false;                                         //флаги вниз
    charge   [i]=false;
  }  
  Serial.begin(9600);//контролька
}
//======================================================
void loop(){
  //анализ---------------------------------------------------------------
  for(byte i=0; i<4; i++){
    if(!charge[i]){//если не заряжено не правда
      uBatt[i]=4.7/1024*analogRead(uPin[i])*2;//читаем высчитываем сколько там
      Serial.print(" U_");Serial.print(i);Serial.print(" = ");Serial.println(uBatt[i]);//покажем на PC
      if(uBatt[i]>uMax){//если на батарее больше максимадьного???
        endCharge[i]=true;//поднимем флаг заряженности на ноге
        charge   [i]=false;//опустим флаг не заряжать не лишнее?
      }
      else{
        if(((endCharge[i]) && (uBatt[i]<uSave)) || (!endCharge[i])){//если заряжено и напр меньше мин или не заряжено
          endCharge[i]=false;//валим флаг зарядки
          charge   [i]=true;//поднимаем флаг зарядки
          cellTime [i]=millis();//запомнили время
        }
      }
    }
  }
  //анализ---------------------------------------------------------------
  //процесс заряда-------------------------------------------------------
  for(int i=0; i<4; i++){
    if(charge[i]){//если поднят флаг зарядки
      Serial.print(" Charging Cells_");Serial.println(i);//покажем на PC
      digitalWrite(relayPin[i],LOW);//опустим
      if((millis()-cellTime[i])>timeCharge){//если набежавшее время по ноге больше времени заряда
        digitalWrite(relayPin[i],HIGH);//поднимем
        charge[i]=false;//флаг опустим
      }
      delay(timeNoCharge);//постоим поковыряемся в носу покурим ничего не делая
    }
  }
  //процесс заряда-------------------------------------------------------
}
//======================================================

Выводы делать не берусь.

Как я понимаю ток определяется некими резисторами.

Думаю надо смотреть тут:

Я в этом как свинья в апельсинах. Можно мне как чайнику? А какие там токи модные теперь?

Если солнце всходит и заходит само то лучше его не трогать.

Вопрос не праздный. Мне возможно скоро прийдется чего-то мутить автоматическое поддерживающее на 4шт 12V7Аh.

 

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

art100 пишет:

Вопрос не праздный. Мне возможно скоро прийдется чего-то мутить автоматическое поддерживающее на 4шт 12V7Аh.

Там (для свинца) лучше сделать простой балансир на TL431: https://www.forumhouse.ru/threads/175055/. Работает вполне пристойно... Я делал на лампочках T10 из подфарников.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Imax B6 мутить будете? Удачи......   http://habrahabr.ru/post/150213/  

art100
Offline
Зарегистрирован: 09.03.2014

trembo пишет:

Imax B6 мутить будете? Удачи......   http://habrahabr.ru/post/150213/  

такую одиночку зарядк я пожалуй куплю при возможности.

Мне больше интересует старую стопку свинцовых попробовать автоматом зарядить побалансировать отбраковать. Поэтому ардуинкой A0 A1 A2 A3 мне кажется вполне разумно анализировать и любой пачкой одиночных заряжалок подкачивать.

Интересно еще замутить разряжалку тренировалку.

Может встречали схемы:-?

Ну как это делает например серия smart у APC Smart-UPS 750...1500 Собственно там явная "терия заговора" наблюдаю. ;) Хотя на рынке это лучшее из надежных, что можно применять.

art100
Offline
Зарегистрирован: 09.03.2014

Andrey_Y_Ostanovsky пишет:
...простой балансир на TL431...
А где-же "раскрытие теории заговора"?

Вы предлагаете шунтить и типа получать вменяемое понимание процессов в акуумуляторах? Оптимисты. :)

Считайте что этого не видел. Вам не кажется ребятки, что вы недооцениваете истребителя-27? Очень хотелось бы надеятся что я чего-то не дочитал. Смотрю нттп://форумдома.ру упал :( Разбалансировка аккумуляторв видать давно была.

 

 

art100
Offline
Зарегистрирован: 09.03.2014

SU-27-16 пишет:
...питание  7... V ....

cells = 2200 mAH - много ( и не жалко )

пока работает 1 канал - нормально :) , миня устраивает !

А можешь от руки хотябы ключ мышкой намалявать?

Что это 2200mAh фоточку бы?

 

Моя фоточка

incvizitor
incvizitor аватар
Offline
Зарегистрирован: 02.11.2018

Хотелось бы расширить типы зарязаемых акамуляторов.Подскажите,каки режимы заряда для каких типов подходят?