Контактная сварка для аккумуляторов 18650

Небольшая статья про самостоятельное изготовление аппарата для контактной сварки аккумуляторов (18650 и аналогичных). С помощью подобного устройства можно в домашних условиях и из подручных материалов сваривать и ремонтировать аккумуляторные батареи и сборки. Дешево, сердито и доступно каждому.

Контактная сварка для аккумуляторов 18650 1
Приветствую всех!

Точечная сварка является разновидностью контактной сварки (источник).

Есть покупные варианты, тот же SUNKKO, но практически все варианты требуют доработки под свои материалы и нужны — увеличения тока, замены таймера и так далее. Проще самостоятельно изготовить вариант «под себя».

Преимущества — вы получаете заведомо функциональный вариант, с заложенными характеристиками. Какие вам нужны — такие и предусмотрите.
Базовые и проверенные варианты DIY строятся на базе мощного трансформатора (понижающего) и таймера с реле. Есть возможность сделать еще проще — просто электроды с питанием от автомобильного аккумулятора, но это не самый удобный вариант.

Конкретно требовалось:

  • высокий ток сварки (до 600…900А);
  • двойной импульс сварки;
  • подстройка длительности импульса (доли секунды);
  • питание платы без вспомогательного трансформатора;
  • открытая прошивка (Arduino) и возможность корректировки кода.

Выбранный вариант платы управления реализован на базе микроконтроллера ATmega. В плюсах — наличие преобразователя питания (Hi-Link) и гальванической развязки низковольтной части схемы.

Контактная сварка для аккумуляторов 18650 2

Плату управления можно найти в сборе, так и отдельно (печатную плату). Для самостоятельного изготовления печатной платы (ЛУТ) прикрепляю файл dot_svarka.lay6.

Контактная сварка для аккумуляторов 18650 3

Дополнительно был куплен энкодер KY-040 для управления меню и внесения регулировок.

Контактная сварка для аккумуляторов 18650 4

Для удобства был выбран OLED дисплей с диагональю 0,96″ и шиной I2C (4pin). Этот вариант корректно работает с библиотеками Arduino, и внешне прилично выглядит. Можно использовать и другие варианты, при условии соответствующих правок.

Контактная сварка для аккумуляторов 18650 5

Для подачи сигнала сварки используется кнопка или микропереключатель (концевик).
Подойдет и простая педалька, тут кому и что удобно. Это простое двух проводное подключение.

Контактная сварка для аккумуляторов 18650 6

Дополнительно потребуются провода, предохранители, вилка, коннекторы, вентилятор и так далее… Мелочевка, которую можно найти под рукой или в ближайшем радиомагазине. А у запасливого самодельщика должно быть в наличии.

Контактная сварка для аккумуляторов 18650 7

Потребуются расходные материалы, например, никелевая лента для сварки элементов.

Контактная сварка для аккумуляторов 18650 8

Есть неплохая модель 3D-печатной ручки для контактной сварки (Spot Welder Handle ZBU-4.2 w/button).

Контактная сварка для аккумуляторов 18650 9

Ссылка на скетч welding__dot.ino.

Часть кода обработки энкодера

// encoder pin and interrupt
const byte encoder_A_Pin = 3;
const byte encoder_B_Pin = 2;
const byte encoderButtonPin = 4;
const byte interruptA = 1;
const byte interruptB = 0;

boolean encoder_rotate = false;
// last state encoder A pin
boolean currentA = false;              
// last state encoder B pin
boolean currentB = false;

// Timeout for different long and short button on
const unsigned long timoutHoldButton = 9000; // 9 sec
// Timeout for bounce protect encoder button
const unsigned long debounceEncButton = 20; // 20 ms
// Time on encoder button
unsigned long timeOnEncButton = 0;
// Time off encoder button
unsigned long timeOffEncButton = 0;
unsigned int buttonEncCurrentVal = HIGH;
unsigned int buttonEncLastVal = HIGH;
boolean ignoreEncOff = false; 

void setup() {
  // encoder init
  pinMode(encoder_A_Pin, INPUT);
  digitalWrite(encoder_A_Pin, HIGH); 
  pinMode(encoder_B_Pin, INPUT); 
  digitalWrite(encoder_B_Pin, HIGH); 
  pinMode(encoderButtonPin, INPUT);
  digitalWrite(encoderButtonPin, HIGH);
  // enable encoder change interrupt
  attachInterrupt(interruptA, onA, CHANGE);
  attachInterrupt(interruptB, onB, CHANGE);
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// increment rotate
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void onA(){
  if (encoder_rotate) delay (1);
  if (digitalRead(encoder_A_Pin) != currentA ) {
    currentA = !currentA;
    if ( currentA && !currentB ) {
         Serial.println("+ encoder");
    }
    encoder_rotate = false;
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// decrement rotate
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void onB(){
  if ( encoder_rotate ) delay (1);
  if( digitalRead(encoder_B_Pin) != currentB ) {
    currentB = !currentB;
    if( currentB && !currentA ){
          Serial.println("- encoder");
    }
    encoder_rotate = false;
 }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// main loop
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  CurrentTime = millis();

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// ENCODER BUTTON
  encoder_rotate = true;
  buttonEncCurrentVal = digitalRead(encoderButtonPin);

  // Test for button pressed and store the down time
  if (buttonEncCurrentVal == LOW && buttonEncLastVal == HIGH && (CurrentTime - timeOffEncButton) > long(debounceEncButton)){
    timeOnEncButton = CurrentTime;
  }
  // Test for button release and store the up time
  if (buttonEncCurrentVal == HIGH && buttonEncLastVal == LOW && (CurrentTime - timeOnEncButton) > long(debounceEncButton)){
    if (ignoreEncOff == false){
        Serial.println(F("short enc"));
    }else{
      ignoreEncOff = false;
    }
    timeOffEncButton = CurrentTime;
  }
  // Test for button held down for longer than the hold time
  if (buttonEncCurrentVal == LOW && (CurrentTime - timeOnEncButton) > long(timoutHoldButton)){
    Serial.println(F("long enc"));
    ignoreEncOff = true;
    timeOnEncButton = CurrentTime;
  }
  buttonEncLastVal = buttonEncCurrentVal;
}

Сборка устройства не является затруднительной. Наиболее затратно для меня было найти хороший мощный понижающий трансформатор. Один из самых доступных вариантов — трансформатор от СВЧ-печи, вместо вторичной повышающей обмотки которого наматывается 1,5…2 витка толстого медного провода (сечение 50…70 кв. мм).

Сознательно не пишу про корпус устройства — никаких особых требований нет. Обычно используют корпуса для РЭА или от старых устройств. От себя могу порекомендовать экранировать корпус изнутри от помех импульса, а также предусмотреть вентилятор охлаждения трансформатора, который прилично нагревается при длительной работе.

Контактная сварка для аккумуляторов 18650 10

Схема платы сварки выглядит следующим образом.

Контактная сварка для аккумуляторов 18650 11

После сборки лучше всего провести тесты и определить оптимальные значения длительности импульса. В моем случае использован медный провод 6 кв. мм в качестве электродов.

Контактная сварка для аккумуляторов 18650 12

Двойной импульс проваривает хорошо, длительность подбираем в зависимости от толщины ленты. На отрыв держит не хуже заводской сварки.

Контактная сварка для аккумуляторов 18650 13

Теперь можно без проблем собрать большую батарею для электровелосипеда, отремонтировать батарею для гироскутера и модернизировать шуруповерт.

Контактная сварка для аккумуляторов 18650 14

Видео тестирования самодельной контактной сварки.

[embedded content]

Процесс сварки элементов 18650 в батарею.

[embedded content]

Для меня подобный вариант обошелся практически в два раза дешевле, чем заводские. Которые все равно требуют доработки. Да и результат дает самодельная контактная сварка отличный.

Let’s block ads! (Why?)

Читайте также:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *