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

от автора

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



Приветствую всех!

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

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

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

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

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

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

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

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

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

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

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

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

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

Ссылка на скетч 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 кв. мм).

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

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

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

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

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

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

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

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


ссылка на оригинал статьи https://habr.com/ru/post/460973/


Комментарии

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

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