avatar_UriBas

Моргалка на Arduino. Этюды для начинающих.

Автор UriBas, 08 Март 2017 в 16:08

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Dunkel

Цитата: Кass от 25 Янв. 2018 в 14:56Что бы говорить о том, нормально прошел заряд или нет, нужно провести несколько десятков КТЦ и посмотреть динамику. Потом желательно смотреть еще плотность, что там с ней.

Вы каждый раз так делаете при зарядке АКБ?
Мне, например, вполне достаточно вольтметра.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Кass

Цитата: Кass от 25 Янв. 2018 в 14:56Вы каждый раз так делаете при зарядке АКБ?

Каждый раз, опробывая новый, придуманный алгоритм заряда. Без этого делать выводы не берусь.
АРМ стенда онлайн: http://scada.kontar.ru Пользователь: Электротранспорт, Пароль: 111111

Гербалайф от всех болезней, Кашпировский лучший врач,  Орифлейм самая лучшая косметика, а МММ самый лучший способ вложения денег. Кто бы спорил. ;)

Dunkel

Мне каж
Цитата: Кass от 25 Янв. 2018 в 15:45Каждый раз, опробывая новый, придуманный алгоритм заряда. Без этого делать выводы не берусь.

Мне кажется, Вы слишком увлеклись оживлением покойников.
Я заряжал практически новый и совершенно здоровый аккумулятор, алгоритм уже неоднократно проверенный.
С какого перепугу делать несколько десятков КТЦ? Угробить новую АКБ чтобы потом заняться переполюсовкой?
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Кass

Цитата: Dunkel от 25 Янв. 2018 в 15:58Мне кажется, Вы слишком увлеклись оживлением покойников.

Отнюдь. Тут люди так же распинались в других темах про чудодейственные свойства импульсного заряда, а когда проводились сравнительные тесты со множеством и на новых АКБ, все оказывалось в корне не так, а как у меня на аватаре. ;)

М моей практике по импульсным зарядам на протяжении примерно лет 15 тоже такие же результаты, что плюсы импульсов есть только в лечении сильно больных подопечных, и только на период лечения. Как бы не помогали вам антибиотики, жрать их постоянно нельзя. Слишком много побочных эффектов.
АРМ стенда онлайн: http://scada.kontar.ru Пользователь: Электротранспорт, Пароль: 111111

Гербалайф от всех болезней, Кашпировский лучший врач,  Орифлейм самая лучшая косметика, а МММ самый лучший способ вложения денег. Кто бы спорил. ;)

Dunkel

Цитата: Кass от 25 Янв. 2018 в 16:26Тут люди так же распинались в других темах про чудодейственные свойства импульсного заряда

Ни разу не упоминал про чудодейственные свойства, они меня вообще мало интересуют. На мой взгляд, восстановление покойников не имеет никакого практического смысла, только ради интереса.
Я просто сделал недорогую и достаточно несложную в изготовлении зарядку. 
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Кass

Цитата: Dunkel от 25 Янв. 2018 в 16:38Ни разу не упоминал про чудодейственные свойства, они меня вообще мало интересуют.  На мой взгляд, восстановление покойников не имеет никакого практического смысла, только ради интереса.

Так вот есть такое предположение, и эксперименты это подтверждает, что импульс нужен только очень больным АКБ, а здоровым он вреден.

Цитата: Dunkel от 25 Янв. 2018 в 16:38Я просто сделал недорогую и достаточно несложную в изготовлении зарядку. 

Недорогая зарядка на ИБП, к примеру с профилем IUI продается в магазине примерно за 1500 рублей. Так вот по тестам она как ни странно выигрывает у импульсного заряда на новых АКБ. Поэтому я лично пришел к тому, что импульсы нужно добавлять к ЗУ как специи, очень в меру.
АРМ стенда онлайн: http://scada.kontar.ru Пользователь: Электротранспорт, Пароль: 111111

Гербалайф от всех болезней, Кашпировский лучший врач,  Орифлейм самая лучшая косметика, а МММ самый лучший способ вложения денег. Кто бы спорил. ;)

Dunkel

Цитата: Кass от 25 Янв. 2018 в 16:58Так вот есть такое предположение, и эксперименты это подтверждает, что импульс нужен только очень больным АКБ, а здоровым он вреден.

Возможно, только в реальной жизни заряд АКБ с помощью ЗУ происходит довольно редко, максимум несколько раз в год. Вряд ли это может как-то заметно повредить АКБ.
А учитывая себестоимость моргалки в 300-500руб., получается вполне конкурентноспособное изделие.

Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

AleksBelg

А чем можно заменить TLP 250? Не могу найти в продаже в своем городе. Транзистор нашел.
Вопрос к знатокам, если в схеме стоит обычный n- мосфет irf например, можно ли его заменить n-мосфетом с логическим входом, типа irl?

Кass

Цитата: Dunkel от 25 Янв. 2018 в 17:12А учитывая себестоимость моргалки в 300-500руб., получается вполне конкурентноспособное изделие.

Я думаю, вы немного не правильно посчитали себестоимость. Наверное вы забыли оценить собственное время, которое наверняка что то стоит. Если нет, я готов вас привлечь к интерсной работе. ;) Потом к этой моргалке нужен блок питания, и достаточно мощный, который будет стоить дороже самой моргалки. В итоге себестоимость окажется куда выше. ;)

Цитата: AleksBelg от 25 Янв. 2018 в 18:17Вопрос к знатокам, если в схеме стоит обычный n- мосфет irf например, можно ли его заменить n-мосфетом с логическим входом, типа irl?


Ну зависит разумеется от конкретной схемы. Нужно смотреть, что подается на вход обычного фета. Может быть там амплитуда выше, чем логические уровни.
АРМ стенда онлайн: http://scada.kontar.ru Пользователь: Электротранспорт, Пароль: 111111

Гербалайф от всех болезней, Кашпировский лучший врач,  Орифлейм самая лучшая косметика, а МММ самый лучший способ вложения денег. Кто бы спорил. ;)

ИС-Х

.
Цитата: AleksBelg от 25 Янв. 2018 в 18:17можно ли его заменить n-мосфетом с логическим входом, типа irl?
Можно конечно, но фронты и спады импульсов будут затянуты и я не знаю важны ли они в данной схеме с данным алгоритмом. Возможен также излишний нагрев фета
Моя первая моргалка: https://electrotransport.ru/index.php?msg=588520
Вторая моргалка: https://electrotransport.ru/index.php?topic=31184.0
Третья моргалка: https://electrotransport.ru/index.php?msg=1130718
Еще в багажнике валяется BL1204 на всякий пожарный...

Alex_N

Да далась вам эта TLP250 ( хотя на али их полно ). Ставьте любой драйвер нижнего плеча, да и вся любовь.

Dunkel

Цитата: UriBas от 25 Янв. 2018 в 18:53
[user]Dunkel[/user], Если Вы заметили, то тут два лагеря"  отношения к импульсному заряду.  Одни придерживается классического метода заряда - т.е. заряд постоянным током и считают, что импульсный может работать только как десульфатор в каких то исключительных случаях, но вреден и не эффективен для здоровых АКБ. 
Другие считают, что классика себя изжила и передовым является как раз импульсный метод заряда, и во всех отношениях эффективнее.  Ну и правда, стоит ли городить разные моргалки, если простой транс + диодный мост с элементарной стабилизацией, легко и лучше справляется с зарядом?  Вот в этом и суть.  Поэтому пожалуй стоит сделать пробный тест - сравнение.. хотя бы для себя убедится, что все это не зря.

Да мне и сравнивать-то особо не с чем, есть старый Сонар УЗ-201, но я не думаю, что его можно считать эталоном CCCV. Большого желания этим заниматься тоже нет, здесь и без меня хватает любителей фаллометрии.
Я не являюсь сторонником какого-то метода заряда,  главное чтобы заряжало. И чем проще и дешевле зарядка - тем лучше.
А функционал должен обеспечиваться за счет правильного алгоритма. Вот им и надо заниматься.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Dunkel

Цитата: AleksBelg от 25 Янв. 2018 в 18:17А чем можно заменить TLP 250?

Есть такая схема на IR2101 и n-fet:



Принцип измерения напряжения на схеме нарисован, т.к. измеряем в паузе - напряжение БП можно принять как константу.

Скетч:

Спойлер



// 21/01/2018 v6.3
// (c)dunkel
// PRO MINI, питание стаб. 5V на Vcc
// БП 19,7В 3А, АКБ 7а/ч
// n-fet , драйвер IR2101
// Pin12 - заряд, на затвор мосфета
// PinА1 - напряжение с делителя АКБ 2k/510

//Лог пишется в 9 каналов, через Serail Oscilloscope
//  http://x-io.co.uk/serial-oscilloscope/
//
//1 UAKB -Напряжение на АКБ
//2 UK   -НРЦ
//3 UK + delta  -НРЦ+Дельта
//4 i    -Количество импульсов в пачке (0 в паузе)
//5 imp  -Длительность импульса (кванта)
//6 dop_pause + pause  -Длительность паузы между импульсами
//7 MAX  -Максимум за время заряда
//8 MAXP -Максимум в пачке
//9 kvasec  -Квант в милисекунду
//
//В начало лога пишутся значения изменяемых параметров


unsigned long time;
int pin = 12 ; // на затвор мосфета
int raz = 10 ; //Пауза между пачками в сек
int pause = 2000 ; //Пауза в мкc
float U14 = 14.4; // Напряжение отсечки 14.4В
float UK = 0; //Контрольное напряжение перед зарядом (НРЦ)
float UAK = 0; //Напряжение АКБ
float UAKM = 0; //Напряжение АКБ MAX за секунду
float MAX = 0; // MAX Напряжение АКБ
float MAXP = 0; // MAX Напряжение АКБ в пачке
long flag = 0; //Счетчик превышений 14,4В
boolean kalibr = 1; //Необходимость калибровки
float dU0 = 0; // dU/dT
long sec = 0; // Время работы в сек.
float kvasec = 0; //  kvasec=imp*1000/(imp+pause+dop_pause)-Квант в милисекунду

// Изменяемые параметры:

int pachka = 10000; // Ограничитель пачки
int imp = 1 ; //Импульс в мкc
float imp_kor = 0.95; // Корректировка импульса
int dop_pause = 4000 ; //Добавка к паузе в мкc
int pause_kor = 20; // Корректировка паузы
float delta = 0.5; // Дельта - увеличение напряжения в импульсе, В
float dop_delta = 0; //Корректировка Дельты
float dUdT = 5; // dU/dT, mV

void setup() {
  Serial.begin(115200);
  pinMode(pin, OUTPUT); // - на затвор мосфета
  digitalWrite(pin, LOW); //
  for (int j = 1; j <= 5; j++) {
    Serial.print(j); Serial.println(", 0, 0, 0, 0, 0, 0, 0, 0");
    delay(1000);
  }
  Serial.println("6 , 3, 0, 0, 0, 2, 0, 0, 5"); //v6.3 2k/0,5
  Serial.println(pachka);
  Serial.println(imp);
  Serial.println(imp_kor);
  Serial.println(dop_pause);
  Serial.println(pause_kor);
  Serial.println(delta);
  Serial.println(dop_delta);
  Serial.println(dUdT);
}
void loop() {

  if ( kalibr == 1 ) { //Калибровка импульса
    Serial.println("0, 0, 0, 0, 0, 0, 0, 0, 0");

    do {
      imp = imp * 2;
      dop_pause = dop_pause / 2;
      kvasec = (float)imp * 1000 / ((float)imp + (float)pause + (float)dop_pause);
      UK = readU016();
      time = millis();
      long i = 0;
      do {
        i++;
        digitalWrite(pin, HIGH); //
        delayMicroseconds(imp); //Импульс длительностью imp
        digitalWrite(pin, LOW); //
        UAK = readU0(); //Пауза длительностью 1ms
        delayMicroseconds(dop_pause); //Добавка к паузе в мкc
        if (UAKM < UAK) UAKM = UAK; //Максимальное напряжение за секунду
        if ( (millis() - time) >= 1000 ) { // Выводим значение каждую сек.
          sec++;
          Serial.print(UAKM); //  график
          Serial.print(" , ");
          Serial.print(UK);
          Serial.print(" , ");
          Serial.print(UK + delta + dop_delta);
          Serial.print(" , ");
          Serial.print(i);
          Serial.print(" , ");
          Serial.print(imp);
          Serial.print(" , ");
          Serial.print(dop_pause + pause);
          Serial.print(" , ");
          Serial.print(MAX);
          Serial.print(" , ");
          Serial.print(MAXP);
          Serial.print(" , ");
          Serial.println(kvasec);
          time = millis();
          UAKM = 0;
        }
      }
      while ( (UAK - UK) < (delta + dop_delta) && i < pachka ) ;
      for (float j = 1; j <= 5; j++) {
        Serial.println(j / 10);
        delay(1000);
      }
    }
    while ( (UAK - UK) < (delta + dop_delta) ) ;
    kalibr = 0; //Конец калибровки
    Serial.println("1, 1, 1, 1, 1, 1, 1, 1, 1");
  }

  //Начало пачки импульсов

  UK = readU016(); // Напряжение НРЦ
  time = millis();
  long i = 0;
  MAXP = 0;
  do {   //Пачка i импульсов
    i++;
    digitalWrite(pin, HIGH); //
    delayMicroseconds(imp); //Импульс длительностью imp
    digitalWrite(pin, LOW); //
    UAK = readU0(); //Пауза длительностью 1ms
    delayMicroseconds(dop_pause); //Добавка к паузе в мкc
    if (UAKM < UAK) UAKM = UAK; //Максимальное напряжение за секунду
    if (UAK > MAX) MAX = UAK; //Фиксируем максимальное напряжение заряда
    if (UAK > MAXP) MAXP = UAK; //Фиксируем максимальное напряжение пачки
    if (UAK > U14) flag++; //Счетчик касаний 14,4В
    if ( (millis() - time) >= 1000 ) { // Выводим значение каждую сек.
      sec++;
      Serial.print(UAK); //  график
      Serial.print(" , ");
      Serial.print(UK);
      Serial.print(" , ");
      Serial.print(UK + delta + dop_delta);
      Serial.print(" , ");
      Serial.print(i);
      Serial.print(" , ");
      Serial.print(imp);
      Serial.print(" , ");
      Serial.print(dop_pause + pause);
      Serial.print(" , ");
      Serial.print(MAX);
      Serial.print(" , ");
      Serial.print(MAXP);
      Serial.print(" , ");
      Serial.println(kvasec);
      time = millis();
    }
    if ( i > 500000 ) { //Пора на повторную калибровку
      kalibr = 1;
      break;
    }
  }
  while ( (UAK - UK) < (delta + dop_delta) ) ; //Выходим из цикла при достижении Дельты
  if ( i < pachka ) {  // Если пачка короче XXX имп
    imp = imp * imp_kor ; // Уменьшаем длительность импульса
    dop_pause = dop_pause + pause_kor ; //Увеличиваеи добавку к паузе
  }
  if (imp < 1) imp = 1; // Импульс не укорачивается менее 1мкс
  if (dop_pause > 3000) dop_pause = 3000; //Ограничитель роста паузы
  kvasec = (float)imp * 1000 / ((float)imp + (float)pause + (float)dop_pause);
  raz = raz + 1; //Увеличиваем паузу между пачками импульсов

  //Конец пачки импульсов, Начало паузы между пачками

  float dU0K = readU016();
  for (int h = 1; h <= raz; h++) { //Пачка импульсов - пауза длительностью raz
    delay(900);
    UAK =  readU016();  //1c
    float dU0 = (dU0K - UAK) * 1000; //mV
    dU0K = UAK;
    if (dU0 <= dUdT) raz = raz - 1 ;// Если скорость падения напряжения ниже XXмВ - уменьшаем паузу
    Serial.print(UAK); //  график
    Serial.print(" , ");
    Serial.print(UK);
    Serial.print(" , ");
    Serial.print(UK + delta + dop_delta);
    Serial.print(" , ");
    Serial.print("0");    //!!!
    Serial.print(" , ");
    Serial.print(imp);
    Serial.print(" , ");
    Serial.print(dop_pause + pause);
    Serial.print(" , ");
    Serial.print(MAX);
    Serial.print(" , ");
    Serial.print(MAXP);
    Serial.print(" , ");
    Serial.println("0");
  }
  dU0 = 0;
  dop_delta = 0;

  if (i < 500 && (MAX - MAXP) > 0.1) { //Раскачка больных АКБ
    dop_pause = dop_pause / 2 ;
    dop_delta = 1.0;
  }

  //Конец паузы между пачками
}

// Измерение UAK, длительность 2мс
float readU0() {
  long U1 = 0; //Напряжение на АКБ
  float result = 0.0;
  float V1 = 0.0;
  //float K1 = 0.003622; // 8 1ms   3,3k/680
  float K1 = 0.003003; // 8 1ms  2k/510
  delayMicroseconds(1100);
  for (int j = 1; j <= 8; j++) {
    U1 += analogRead(A1);
  }
  V1 = U1 * K1;
  result = 19.7 - V1;
  return result;
}

// Измерение UAK 128, длительность 100мс
float readU016() {
  long U1 = 0; //Напряжение на АКБ
  float result = 0.0;
  float V1 = 0.0;
  //float K1 = 0.0002259; // 128 14ms  3,3k/680
  float K1 = 0.0001876; // 128 14ms 2k/510
  delay(86);
  for (int j = 1; j <= 128; j++) {
    U1 += analogRead(A1);
  }
  V1 = U1 * K1;
  result = 19.7 - V1;
  return result;
}


Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

Кass

Цитата: Dunkel от 25 Янв. 2018 в 21:12Есть такая схема на IR2101 и n-fet

А как вы ток измеряете и емкость?
АРМ стенда онлайн: http://scada.kontar.ru Пользователь: Электротранспорт, Пароль: 111111

Гербалайф от всех болезней, Кашпировский лучший врач,  Орифлейм самая лучшая косметика, а МММ самый лучший способ вложения денег. Кто бы спорил. ;)

Dunkel

Цитата: Кass от 25 Янв. 2018 в 22:02А как вы ток измеряете и емкость?

Никак, только напряжение. Это очень простая моргалка.
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

AleksBelg

Цитата: Кass от 25 Янв. 2018 в 18:40Ну зависит разумеется от конкретной схемы. Нужно смотреть, что подается на вход обычного фета. Может быть там амплитуда выше, чем логические уровни
Собрал я такую схемку ради интереса https://electrotransport.ru/index.php?topic=16528.0#topmsg Там на выходе таймера на мосфет подается напряжение равное питанию (14.4В). Я поставил irl3103 (по даташиту на вход можно подавать до 16В. Все что больше 1 В принимает за логическую единицу). В паузе там 0В. Работает. Фронты не смотрел.

Добавлено 25 Янв. 2018 в 23:05

Цитата: Alex_N от 25 Янв. 2018 в 19:13Да далась вам эта TLP250 ( хотя на али их полно ). Ставьте любой драйвер нижнего плеча, да и вся любовь
Можете подсказать конкретный экземпляр?

Dunkel

[user]AleksBelg[/user], а причем здесь Ардуино? Темой не ошиблись?
Не хватало тут только реле поворотников...
Многофункциональная облачная моргалка/логгер:
https://morgalka78.wordpress.com/

AleksBelg

Цитата: Dunkel от 25 Янв. 2018 в 21:12Есть такая схема на IR2101 и n-fet:
Спасибо!
Вообще б конечно хотелось бы сравнить эфффективность вашего ЗУ. Алгоритм на мой взгляд толковый. Нарпимер, как алгоритм справляется с десульфатацией, как по сравнению с мигалкой того же Павла Валерьевича. Да и вообще интересно мнения тех кто попробовал алгоритм Dunkel

Добавлено 25 Янв. 2018 в 23:16

Цитата: Dunkel от 25 Янв. 2018 в 23:08а причем здесь Ардуино? Темой не ошиблись?
Согласен, не совсем по теме