РАДИОСХЕМЫ



СТАРЫЙ ФОРУМ

ФОРУМ НА ЭЛВО

РАДИОФОРУМЫ


СХЕМЫ И СТАТЬИ
  • БЛОГИ
  • НОВОЕ
  • СХЕМЫ
  • РАЗНОЕ
  • ТЕОРИЯ
  • ТЕЛЕВИДЕО
  • СВЕТОДИОД
  • МЕДТЕХНИКА
  • БЫТТЕХНИКА
  • ИЗМЕРИТЕЛИ
  • СПРАВОЧНИК
  • ТЕХНОЛОГИИ
  • РЕМОНТ СХЕМ
  • МОБИЛЬНИКИ
  • КОМПЬЮТЕРЫ
  • НАЧИНАЮЩИМ
  • ЗАРЯДКИ И АКБ
  • СИГНАЛИЗАЦИИ
  • АУДИОТЕХНИКА
  • АВТОВЕЛОМОТО
  • БЛОКИ ПИТАНИЯ
  • РАДИОПРИЁМНИКИ
  • МЕТАЛЛОИСКАТЕЛИ
  • МИКРОКОНТРОЛЛЕР
  • РАДИОПЕРЕДАТЧИКИ

  • Курс по ускорению работы Мозга на 100%


    Архив - только для чтения
    Тестер литиевых и железофосфатных аккумуляторов
    Вт, 10.03.2020, 20:23 | Сообщение # 101        
    iharl
    аватар
      Постов: 119   Друзья 
    булат,
    Попробую Ваш вариант. Спасибо .
    Если получится впихнуть кусок кода.
    Вт, 10.03.2020, 20:45 | Сообщение # 102        
    nolpofaze
    аватар
      Постов: 442   Друзья 
    Цитата булат ()
    ГОСТ Р МЭК 61960-2007

    Хороший документ, из которого и видно, что сопротивление измеренное этим прибором - оценочное, на уровне больше-меньше, если только не для аккумулятора какой-то определенной ёмкости, для измерения сопротивления лучше пользоваться методом переменного тока... В принципе, если подать килогерц через кондер, сделать выборки на 10kS, что ацп позволяет с легкостью (для тока и напряжения) можно попробовать определить сопротивление методом ac. Нужна свободная нога.

    Добавлено (10.03.2020, 22:35)
    ---------------------------------------------
    Для разряда можно попробовать прикрутить 3 битную R2R цепочку, получим 7 уровней разряда, вместо 3-х.

    Ср, 11.03.2020, 09:33 | Сообщение # 103        
    iharl
    аватар
      Постов: 119   Друзья 
    Цитата Лекс59 ()
    Быть может у вас просто плохой контакт?

    Можно и так сказать.
    Проблема заключалась в следующем:
    Ток на R10 прибор показывал как 120 мA даже с отпаянным резистором то-есть снятым с платы.
    Оказалось слишком большим падение напряжение на переходе К-Е ключа.
    Уменьшение номиналов R8,R13 до 150 Омм понизило разброс показаний до приемлемых 5%.
    Теперь данные прибора можно использовать для сравнения (так как нет эталона ).
    Приятным бонусом уменьшения вдвое номиналов резисторов R8,R13, стало отсутствие нагрева на ключах при токе 0,7 А.

    Всем спасибо за участие. Теперь задача одновременная проверка нескольких батарей одновременно.

    Добавлено (12.03.2020, 18:44)
    ---------------------------------------------
    Забыл упомянуть помимо уменьшение номиналов R8,R13 до 150 Омм
    был изменен алгоритм замера на проложенный булат,
    Цитата булат ()
    Точно!надо менять...

    Только уменьшил обратный отсчет до 60 сек (нежили багато......)
    Пауза 60 сек 10 сек малая нагрузка (у меня 0,08А), 3 сек большая (у меня 0,8А). Подсчет.
    Порядок цифр по тесту ( 0,189, 0,187, 0,179, 0,182, 0,189, 0,183)
    Тест (только замер внутреннего сопротивления ) R - сброс данных на терминал и повтор и так по кругу.
    Чт, 12.03.2020, 17:55 | Сообщение # 104        
    булат
    аватар
      Постов: 554   Друзья 
    Я тоже так гонял,примерно одинаковые результаты

    Добавлено (12.03.2020, 22:07)
    ---------------------------------------------
    Мой исходник
    -После включения ждем подключения аккумулятора,если не подключен тест не включается
    -После подключения аккумулятора включается заряд,если не нажимать кнопки то только заряд,через 10 сек гашение подсветки,после полного заряда аккумулятора поддержание заряда,каждые 10 минут включается подсветка на 10 сек и гаснет
    Нажатие кнопки Тест-все по старому,но:
    -Отключение подсветки через 10 сек после последнего нажатия кнопки (удобно когда тестируешь всю ночь,подсветка вкл на 10 сек при переходе из режима в режим на 10 сек и гаснет)

    Код
    #include <util/delay.h>
    #include <LiquidCrystal.h>
    const int tled=10000; //время включения подсветки 10 сек
    const int led = 9; //подсветка дисплея
    const int button1 = 11; //кнопка пуск
    const int button2 = 12; //вкл подсветки
    //const int button3 = 13; //не используется
    const int buzzer = 10; //буззер
    const int razrad1 = A0; //транзистор ключа нагрузки 22 ом
    const int razrad2 = A1; //транзистор ключа нагрузки 10 ом
    const int zarad = 2; //вывод 8 TP4056
    const int garg_off = 13; //к зеленому светодиоду TP4056
    const float TL431 = 4.30; //напряжение на выв Aref Atmega328p
    const float R5 = 3154; //задаём сопротивление резистора на выв 2 TP4056,задающего ток заряда
    const float R10 = 17.5; //задаём сопротивление разрядного резистора R10,по схеме 22 ом
    const float R15 = 7.095; //задаём сопротивление разрядного резистора R15,по схеме 10 ом
    const int analogV = A2; //напряжение с аккумулятора
    const int analogVC = A5; //выв 2 TP4056 через резистор 470 ом
    const int analogVD = A3; //назначаем аналоговый вход разряда R10
    const int analogVD2 = A4; //назначаем аналоговый вход разряда 2 R15
    //float coeff = 0.0; //поправка на нестабильность напряжения
    float volt = 0.0; //задаем переменные
    float R = 0.0; //внутреннее сопротивление аккумулятора
    float voltC = 0.0; //Напряжение при заряде
    float voltD = 0.0; //Напряжение при разряде
    float voltD2 = 0.0; //Напряжение при разряде
    float Vc = 0.0; //Конечное напряжение заряда
    float Vd = 0.0; //Конечное напряжение разряда
    float am = 0; //милиамперы
    float amR = 0; //милиамперы, ток определения внутреннего сопротивления
    float amR2 = 0; //милиамперы, ток определения внутреннего сопротивления
    float amC = 0; //милиамперы заряд
    float capvrem= 0; //временная емкость
    float cap= 0; //емкость
    float voltTEMP= 0; //временная переменная для рассчёта внутреннего сопротивления
    byte counteR = 0; //счётчик циклов замера внутреннего сопротивления
    byte knop = 0; //переменная для хранения состояния кнопки
    byte knop_menu = 1; //переменная для хранения состояния кнопки
    byte TIK = 0;
    byte SEK = 0; //секунды
    byte MIN = 0; //минуты
    byte HOUR = 0; //часы
    byte akk_type = 0; //переменная типа аккумулятора
    byte discharge_type = 1; //переменная типа разряда
    byte recharge_control = 0; //переменная для однократного подзаряда в конце
    unsigned long perMillis = 0;
    unsigned long ledMillis = 0;
    // initialize the library with the numbers of the interface pins
    //LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
    LiquidCrystal lcd(3, 4, 5, 6, 7, 8); // 19 - pinA5

    void setup()
    {
    pinMode(analogV , INPUT); //определяем тип порта (вход), АЦП
    pinMode(analogVC , INPUT); //определяем тип порта (вход), АЦП
    pinMode(analogVD , INPUT); //определяем тип порта (вход), АЦП
    pinMode(analogVD2 , INPUT); //определяем тип порта (вход), АЦП
    //pinMode(analogV_TL431 , INPUT); //определяем тип порта (вход), АЦП
    pinMode(button1, INPUT); //определяем тип порта (вход), кнопка
    pinMode(button2, INPUT); //определяем тип порта (вход), кнопка
    digitalWrite(button1, HIGH);
    digitalWrite(button2, HIGH);
    pinMode(buzzer, OUTPUT); // бузер
    pinMode(razrad1, OUTPUT); // разряд
    pinMode(zarad, OUTPUT); // заряд
    pinMode(led, OUTPUT); // подсветка дисплея
    pinMode(garg_off, INPUT); //заряд окончен,с TP4056
    pinMode(razrad2, OUTPUT); //разряд2
    lcd.begin(16, 2); // размер дисплея
    lcd.clear(); // Чистим экран
    analogReference(EXTERNAL);
    // menu(); //вызов меню для начальной конфигурации
    digitalWrite(led,HIGH);
    Vd=3.3;
    Vc=4.2;
    // digitalWrite(razrad1,HIGH);
    }

    void loop()
    {

    if (digitalRead(button2)==LOW)ledMillis=millis();
    volt = float (analogRead(analogV))*TL431/1024; // напряжение на аккумуляторе
    voltC = float (analogRead(analogVC))*TL431/1024; // Напряжение заряда TP4056
    voltD = float (analogRead(analogVD))*TL431/1024; // Напряжение разряда R10
    voltD2 = float (analogRead(analogVD2))*TL431/1024; // Напряжение разряда 2 R15
    if (digitalRead(button1)==LOW) //нажатие кнопки пуск теста
    {
    if (millis()-ledMillis<tled)
    { knop++;
    lcd.clear(); //чистим экран
    if (knop>4){knop=0;} // обнуляем четвёртое нажатие.
    }
    TIK = 0;ledMillis=millis();digitalWrite(led,HIGH);
    _delay_ms(500);
    }
    if (volt<3){knop = 0;ledMillis=millis();}
    if (millis()-ledMillis>=tled){digitalWrite(led,LOW);}else {digitalWrite(led,HIGH);}
    if (knop==0){ //сценарий устройство включено но незапущен тест
    digitalWrite(razrad1,HIGH);
    digitalWrite(razrad1,LOW);
    volt = float (analogRead(analogV))*TL431/1024;
    lcd.setCursor(0, 0);
    lcd.print("Li-Ion 3.3V-4.2V");
    // digitalWrite(zarad,LOW);
    lcd.setCursor(0, 1);
    lcd.print("Connect battery!");

    while (volt<3)
    {
    digitalWrite(led,HIGH);
    volt = float (analogRead(analogV))*TL431/1024; // напряжение на аккумуляторе
    }
    lcd.clear();
    ledMillis=millis();
    digitalWrite(zarad,HIGH); //включаем ключ зарядки аккумулятора
    digitalWrite(razrad1,LOW); //отключаем ключ нагрузки
    digitalWrite(razrad2,LOW); //отключаем ключ нагрузки
    //ждем нажатия кнопки пуск теста
    while(digitalRead(button1)==HIGH) //просто заряд аккумулятора,без теста
    {
    if (digitalRead(button2)==LOW)ledMillis=millis(); //если нажата кнопка2 то вкл подсветку если выключена
    if (millis()-ledMillis>=tled){digitalWrite(led,LOW);}else {digitalWrite(led,HIGH);} //выключение подсветки по истечении tled/1000 секунд
    volt = float (analogRead(analogV))*TL431/1024; // напряжение на аккумуляторе
    voltC = float (analogRead(analogVC))*TL431/1024;
    amC=((1200*voltC)/R5)*1000; //считаем ток заряда в mA
    lcd.setCursor(0, 0);
    lcd.print("U=");
    lcd.print(volt); //выводим напряжение на аккумуляторе
    lcd.print("V ");
    lcd.setCursor(0, 1);
    lcd.print("I=");lcd.print(amC,0);lcd.print(" mA ");
    //если аккуамулятор заряжен то моргаем каждые 10 мин
    if((digitalRead(garg_off)==LOW) and (millis()-ledMillis>=600000)) {ledMillis=millis();digitalWrite(led,HIGH);}

    _delay_ms(250);
    }

    digitalWrite(led,HIGH);
    _delay_ms(250);

    }
    //-------------------------------------------------
    if (knop==1){ //отработка сценария зарядки после подключения
    lcd.clear(); //чистим экран
    cap= 0; //обнуляем переменные
    am = 0;
    amR = 0;
    amR2 = 0;
    amC = 100;
    R = 0;
    //TIK = 0;
    SEK = 0;
    MIN = 0;
    HOUR = 0;
    counteR = 0;
    voltTEMP = 0;
    recharge_control = 0;
    //prMillis=millis();
    if (volt<TL431)
    {
    digitalWrite(zarad,HIGH); //включаем ключ зарядки аккумулятора
    digitalWrite(razrad1,LOW); //отключаем ключ нагрузки
    digitalWrite(razrad2,LOW); //отключаем ключ нагрузки
    amC=((1200*voltC)/R5)*1000; //считаем ток в mA =Uтекущее/Rнагрузки, *1000 получаем mA
    lcd.setCursor(0, 0);
    lcd.print("CHARGE: ");
    lcd.print(volt); //выводим напряжение на аккумуляторе
    lcd.print("V ");
    //lcd.setCursor(1, 1);
    // lcd.print("I=");
    //lcd.print(TIK);//для теста
    lcd.setCursor(8, 1);
    lcd.print("I=");lcd.print(amC,0);lcd.print(" mA ");

    }
    //если аккумулятор зарядился включаем подсветку и идем мерить Rакк
    if(digitalRead(garg_off)==LOW) {TIK =TIK+1;if(TIK>3) {knop = 2;digitalWrite(led,HIGH);ledMillis=millis();TIK =0;}} else TIK =0;
    _delay_ms(350);
    }
    //----------------------------------------------------------------------------------------------------
    if (knop==2) //замер внутреннего сопротивления
    {
    if (counteR<=224) //1 цикл проверки,пауза
    {
    if (counteR==0){
    lcd.clear(); // Чистим экран
    digitalWrite(zarad,LOW); //отключаем ключ зарядки аккумулятора
    digitalWrite(razrad2,LOW); //отключаем ключ нагрузки 2
    digitalWrite(razrad1,LOW); //выключаем ключ нагрузки
    lcd.setCursor(0, 0);
    lcd.print("Testing Rint ");
    //counteR = 220;
    }
    lcd.setCursor(1, 1);lcd.print("Pause=");
    lcd.print((224-counteR)/2);lcd.print(" ");
    lcd.print("sec ");
    _delay_ms(500);counteR++;
    }
    if (counteR>224 and counteR<=244) //2 цикл проверки,малая нагрузка
    {
    if (counteR==225){
    lcd.clear(); // Чистим экран
    digitalWrite(zarad,LOW); //отключаем ключ зарядки аккумулятора
    digitalWrite(razrad2,LOW); //отключаем ключ нагрузки 2
    digitalWrite(razrad1,HIGH); //включаем ключ нагрузки
    lcd.setCursor(0, 0);
    lcd.print("Testing Rint1");
    }
    amR=(voltD/R10); //считаем ток
    lcd.setCursor(0, 1);lcd.print(amR*1000,0);lcd.print("mA "); //выводим значение тока разряда в мА
    lcd.setCursor(8, 1);lcd.print(volt,2);lcd.print("V "); //выводим напряжение на аккумляторе под нагрузкой
    _delay_ms(500);counteR++; //задержка,инкрементируем счётчик
    lcd.setCursor(0, 1); //ставим курсор в первый столбец, вторую строку
    lcd.print(" "); //чистим строку
    if (counteR==244){voltTEMP = volt;} //окончание первого цикла проверки
    }

    if (counteR>244 and counteR<=250) //3 цикл проверки
    {
    if (counteR==245) { lcd.clear(); // Чистим экран
    digitalWrite(zarad,LOW); //отключаем ключ зарядки аккумулятора
    digitalWrite(razrad1,HIGH); //отключаем ключ нагрузки
    digitalWrite(razrad2,HIGH); //включаем ключ нагрузки 2
    lcd.setCursor(0, 0);
    lcd.print("Testing Rint2");
    }
    amR2=(voltD2/R15)+(voltD/R10); //считаем ток
    lcd.setCursor(0, 1);lcd.print(amR2*1000,0);lcd.print("mA "); //выводим значение тока разряда в мА
    lcd.setCursor(8, 1);lcd.print(volt,2);lcd.print("V "); //выводим напряжение на аккумляторе под нагрузкой
    _delay_ms(500); counteR++; //инкрементируем счётчик
    lcd.setCursor(0, 1); //ставим курсор в первый столбец, вторую строку
    lcd.print(" "); //чистим строку
    }

    if (counteR==251) //заканчиваем проверку сопротивления
    {

    R = ((voltTEMP-volt)/(amR2-amR)); //считаем внутреннее сопротивление аккумулятора
    digitalWrite(razrad1,LOW); //выключаем ключ нагрузки
    digitalWrite(razrad2,LOW); //выключаем ключ нагрузки 2
    digitalWrite(zarad,LOW); //выключаем ключ зарядки аккумулятора
    counteR++; //инкрементируем счётчик
    lcd.clear(); // Чистим экран
    lcd.setCursor(0, 1); //ставим курсор в первый столбец, вторую строку
    lcd.print("Rin="); //
    lcd.print(R,3); //выводим значение внутреннего сопротивления
    ledMillis=millis();
    digitalWrite(led,HIGH);
    _delay_ms(1500);
    TIK=0;
    }
    if (counteR>=252) //восстанавливаем заряд аккумулятора перед тестом ёмкости, переходим в разряд
    {
    digitalWrite(razrad1,LOW); //выключаем ключ нагрузки
    digitalWrite(razrad2,LOW); //выключаем ключ нагрузки 2
    digitalWrite(zarad,HIGH); //включаем ключ зарядки аккумулятор
    lcd.setCursor(0, 0); //ставим курсор в первый столбец, первую строку
    lcd.print("CHARGE: "); //дозарядка до полного
    lcd.setCursor(11, 1); //ставим курсор в 12й столбец, вторую строку
    lcd.print(volt); //вывод текущего напряжения на аккумуляторе
    lcd.print("V"); //
    _delay_ms(350);
    lcd.setCursor(10, 0);lcd.print("*");
    amC=((1200*voltC)/R5)*1000;
    lcd.setCursor(11, 0); //ставим курсор в 16й столбец, первую строку
    lcd.print(amC); //lcd.print("*"); //мигающий значок заряда
    _delay_ms(350);
    lcd.setCursor(10, 0); //ставим курсор в 16й столбец, первую строку
    lcd.print(" "); //мигающий значок заряда
    lcd.setCursor(11, 1); //ставим курсор в 12й столбец, вторую строку
    lcd.print(" "); //

    if(digitalRead(garg_off)==LOW) //если зарядился - переходим в разряд
    {
    TIK=TIK+1;
    if (TIK>3){
    ledMillis=millis();
    digitalWrite(led,HIGH);
    digitalWrite(zarad,LOW); //выключаем ключ зарядки аккумулятора
    knop = 3; //фиксация окончания замера внутреннего сопротивления, переход к замеру ёмкости
    tone(buzzer, 1000, 150); //тональный сигнал смены цикла
    TIK=0;}
    }
    else
    TIK=0;
    }
    }

    //----------------------------------------------------------------------------------------------------------------
    if (knop==3){ //проверка сценария для разрядки
    lcd.clear(); // Чистим экран
    if (volt>Vd)
    {
    digitalWrite(zarad,LOW); //отключаем ключ зарядки аккумулятора
    if (discharge_type==1)
    {
    digitalWrite(razrad1,HIGH); //включаем ключ нагрузки
    digitalWrite(razrad2,LOW); //выключаем ключ нагрузки
    }
    if (discharge_type==2)
    {
    digitalWrite(razrad2,HIGH); //включаем ключ нагрузки
    digitalWrite(razrad1,LOW); //выключаем ключ нагрузки
    }
    if (discharge_type==3)
    {
    digitalWrite(razrad2,HIGH); //включаем ключ нагрузки
    digitalWrite(razrad1,HIGH); //включаем ключ нагрузки
    }
    //#########цикл отсчета
    if (millis()-perMillis>=5000){
    perMillis=millis();
    SEK=SEK+5;
    if (discharge_type==1)
    {
    am=(voltD/R10)*1000; //считаем ток в mA =Uтекущее/Rнагрузки, *1000 получаем mA
    }
    if (discharge_type==2)
    {
    am=(voltD2/R15)*1000; //считаем ток в mA =Uтекущее/Rнагрузки, *1000 получаем mA
    }
    if (discharge_type==3)
    {
    am=((voltD/R10)*1000)+((voltD2/R15)*1000); //считаем ток в mA =Uтекущее/Rнагрузки, *1000 получаем mA
    }
    capvrem=am/720; cap=cap+capvrem; //считаем емкость в mAh, при замере раз в 5 сек (в часе 3600сек / 5 = 720)
    if (SEK>59){SEK=0;MIN++;}
    if (MIN>59){MIN=0;HOUR++;}
    if (HOUR>23) HOUR=0;
    }
    //########################
    lcd.setCursor(0, 0);
    lcd.print("DisCh ");
    lcd.print("I="); //вывод на экран
    lcd.print(am, 0); //вывод на экран
    lcd.print("mA "); //вывод на экран
    lcd.setCursor(0, 1);
    lcd.print(volt);
    lcd.print("V Q="); //вывод на экран
    lcd.print(cap, 0); //вывод на экран
    lcd.print("mAh "); //вывод на экран
    lcd.setCursor(12, 1);
    }
    _delay_ms(500);
    if (volt<=Vd){knop=4; tone(buzzer, 1000, 150);_delay_ms(500);
    tone(buzzer, 1000, 150);_delay_ms(500);
    tone(buzzer, 1000, 150);} //фиксация окончания разрядки и замера емкости
    }
    //-------------------------------------------------
    if (knop==4){ //сценарий окончания подсчета емкости, вывод на экран и зарядка.
    lcd.setCursor(10, 1);
    lcd.print(volt, 1); //вывод на экран текущего напряжения аккумулятора
    lcd.print("V");
    ledMillis=millis();
    digitalWrite(led,HIGH);
    switch (recharge_control)
    {
    case 0: //тест окончен, но аккумулятор полностью разряжен, выводим результаты на экран
    digitalWrite(zarad,HIGH); //включаем ключ зарядки аккумулятора
    digitalWrite(razrad1,LOW); //выключаем ключ нагрузки
    digitalWrite(razrad2,LOW); //выключаем ключ нагрузки 2
    //digitalWrite(led,LOW); //выключаем светодиод заряда
    lcd.setCursor(0, 0); //выводим значение внутреннего сопротивления
    lcd.print("R=");
    lcd.print(R,3);
    lcd.print(" ");
    lcd.setCursor(8, 0);
    if (HOUR<10){ lcd.print("0");} //вывод времени разряда на экран
    lcd.print(HOUR);
    lcd.print(":");
    if (MIN<10){ lcd.print("0");} //вывод на экран
    lcd.print(MIN);
    lcd.print(":");
    if (SEK<10){ lcd.print("0");}
    lcd.print(SEK);
    lcd.setCursor(0, 1);
    // lcd.print("Q="); //вывод на экран
    lcd.print(cap, 1); //вывод на экран
    lcd.print("mAh "); //вывод на экран
    recharge_control=1; //инкремент счётчика
    _delay_ms(5);
    break; //выход из case

    }
    }
    }


    Добавлено (12.03.2020, 22:08)
    ---------------------------------------------
    Лекс59, спасибо за прибор!!!
    Пт, 13.03.2020, 14:05 | Сообщение # 105        
    alyns85
    аватар
      Постов: 139   Друзья 
    iharl, Вы на мега8 собрали прибор, или мне причюделось?
    Пт, 13.03.2020, 15:32 | Сообщение # 106        
    iharl
    аватар
      Постов: 119   Друзья 
    Цитата alyns85 ()
    мне причюделось?

    На mega328 собирал можно собрать 168 будет работать,
    на плате марос от меги8
    а так если код перенести в С++ без ардуино можно и мегу8 впихнуть.
    Пт, 13.03.2020, 16:07 | Сообщение # 107        
    alyns85
    аватар
      Постов: 139   Друзья 
    iharl, Ой я с кодом дуб-дубом, просто в одном из ваших постов видел упоминание про мегу8 вот и подумал неплохо было-бы на ней собрать, у меня оных штук пять без дела, а 328-я всего одна.
    Собирать буду на вашей плате, можно кстати увидеть финальную на сей момент, если вы её переделывали?
    Пт, 13.03.2020, 16:26 | Сообщение # 108        
    iharl
    аватар
      Постов: 119   Друзья 
    Цитата alyns85 ()
    Собирать буду на вашей плате

    Плата далека от окончательной на плате есть ошибки кнопки вынесены на др поры.
    Одним словом все очень сырое. Не факт что будет финальная версия.
    Резисторы и выводы можно задать в программе.
    Вот код работает но требует допила с меня программист еще тот. biggrin
    Файлы: TesterBAT_mod.ino (32.4 Kb) · 7389546.jpg (243.8 Kb)
    Пт, 13.03.2020, 16:37 | Сообщение # 109        
    Лекс59
    аватар
      Постов: 1082   Друзья 
    Цитата булат ()
    -После подключения аккумулятора включается заряд,если не нажимать кнопки то только заряд

    В принципе можно иначе алгоритм работы прибора организовать.
    Те же три режима.
    Третий можно отдать просто под заряд.
    Можно первый - полный цикл и заряд до хранения.
    Второй - полный цикл и заряд до полного.

    Это имею в виду мой вариант прибора. Без ТР4056. У себя этого делать не стану. Этот прибор не заточен под зарядку в исходном виде.

    Переделывать на ТР4056 тоже не стану. Прибор - лишний для простого заряда. Не вижу смысла.

    Цитата булат ()
    Лекс59, спасибо за прибор

    Ну мой личный вклад не столь велик. tekagi стоит благодарить. Но и он не считает себя автором И называет автором Бодрого 2014.

    Мои плата. Незначительное изменения схемы. Некоторая правка кода. Ну и популяризация.
    Пт, 13.03.2020, 17:10 | Сообщение # 110        
    iharl
    аватар
      Постов: 119   Друзья 
    Цитата Лекс59 ()
    В принципе можно иначе алгоритм работы прибора организовать.
    Те же три режима.
    Третий можно отдать просто под заряд.
    Можно первый - полный цикл и заряд до хранения.
    Второй - полный цикл и заряд до полного.


    Точно авто определение типа АКБ. Одна кнопка тест только R. Другая полный тест.
    Замер сопротивления, емкости. А напряжение заряда вставлять вручную тумблером.
    Программа точно влезет в мегу8.
    Дешево и сердито.
    Поиск:

    Внимание! Форум переехал на Tehnodium.ru



    © 2010-2022 "Форум Радиосхемы". All Rights Reserved  Почта  PDA