Como fazer Solda Ponto PROFISSIONAL para Baterias 18650 e mais! Construa sua própria bicicleta elétrica #1!
Nesse vídeo vamos construir uma solda ponto para baterias de lítio com Arduino que solda perfeitamente bem e tem muito baixo custo! Durante a construção vamos aprender muita eletrônica e programação! Bora lá!
Atenção esse projeto está licenciado sobre a licença abaixo, se não utilizar dentro dos termos da licença aplicaremos as punições cabíveis.
Como fazer Solda Ponto PROFISSIONAL para Baterias 18650 © 2023 by Marlon Nardi Walendorff is licensed under Attribution-NonCommercial-ShareAlike 4.0 International
A seguir temos a lista de materiais necessários:
- 1 – Arduino NANO;
- 1 – Fonte Hilink 5VDC/600mA;
- 1 – Módulo Encoder Rotativo KY-040;
- 1 – Rele estado sólido de 25A modelo SSR- 25 DA | Clique aqui para comprar no mesmo lugar que eu;
- 1 – Knob para encoder;
- 1 – Cabo de força para tomada;
- 1 – Display OLED I2C 0.96Inch 128×64;
- 1 – Conector tipo Jack fêmea de 5.5mm;
- 1 – Cabo duplo retirado de fonte de modem com conector Jack macho de 5.5mm;
- 1 – Transformador de microondas;
- 2 – Metros de cabo flexível de cobre de 35mm²;
- 2 – Terminais de compressão tipo olhal para cabo de 35mm²;
- 2 – Duas barras de cobre de cobre chatas 3/4 x 3/16 (19mm x 4,76mm) com 25 cm cada | Clique aqui para comprar no mesmo lugar que eu;
- 1 – Mola de mesa de impressora 3D fina;
- Diversos parafusos para montagem (ver vídeo);
- Peças impressão em 3D;
- 5 – Metros fios elétricos flexíveis de 0,5mm²;
Arquivos para impressão 3D:
Clicando aqui você pode baixar os arquivos .STL e imprimir na sua impressora 3D.
O código a ser carregado:
Abaixo segue a programação utilizada. Para carregar o código no Arduino você terá que adicionar algumas bibliotecas na IDE do Arduino e essas bibliotecas estão disponíveis aqui em baixo para download. O resto das bibliotecas utilizadas são nativas da IDE do Arduino e não precisam ser instaladas a parte.
Biblioteca Adafruit_SSD1306;
Biblioteca RotaryEncoder;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 |
/********************************************* Autor: Marlon Nardi Walendorff Projeto: Solda ponto para baterias de lítio com Arduino Detalhes do projeto:https://marlonnardi.com/2023/12/03/como-fazer-solda-ponto-profissional-para-baterias-18650-e-mais-construa-sua-propria-bicicleta-eletrica-1/ /**********************************************/ //==================== Inclusão de Bibliotecas =================// #include <Adafruit_SSD1306.h> #include <RotaryEncoder.h> //==================== Mapeamento de Hardware ==================// #define pin_Encoder_CLK 3 #define pin_Encoder_DT 2 #define pin_Encoder_SW 4 #define pin_Trigger 5 #define pin_Triac 9 #define min_Power_ms 3 #define max_Power_ms 120 //==================== Instânciando Objetos ====================// Adafruit_SSD1306 Display(128, 64, &Wire, -1, 400000, 400000); RotaryEncoder EncoderOne(pin_Encoder_CLK, pin_Encoder_DT); //==================== Variáveis Globais ==================// byte aux2 = 0; int16_t valorEncoder = 0; uint16_t time_ms = 0; void setup() { Serial.begin(9600); //Configura pino como saída pinMode(pin_Triac, OUTPUT); //Configura pino como entrada PULL-UP pinMode(pin_Encoder_SW, INPUT_PULLUP); //Configura pino como entrada PULL-UP pinMode(pin_Trigger, INPUT_PULLUP); //================= Interrupção Externa ========================// /* Vincula duas interrupções externas no pino 2 e 3 nas funções ISR0 e ISR1 para garantir que o encoder sempre seja lido com prioridade.*/ attachInterrupt(digitalPinToInterrupt(2), ISR0, CHANGE); attachInterrupt(digitalPinToInterrupt(3), ISR1, CHANGE); EncoderOne.setPosition(25); // Energia inicial em 25% //Inicializa o OLED 128X64 0.96 INCH com endereço I2C 0x3C Display.begin(SSD1306_SWITCHCAPVCC, 0x3C); Display.setTextColor(WHITE); //Define a cor do texto //Limpa o display, necessário para apagar a imagem inicial da adafruit Display.clearDisplay(); //Atualiza o display Display.display(); Display.setTextSize(1); //Define o tamanho da fonte do texto //Posição Largura/Altura Display.setCursor(0, 0); Display.print("Acesse o projeto em:"); Display.setTextSize(1); //Define o tamanho da fonte do texto //Posição Largura/Altura Display.setCursor(0, 25); Display.print("marlonnardi.com"); Display.display(); delay(2000); Display.clearDisplay(); Display.display(); }//endSetup -------------------------------------- void loop() { trigger(); screenOne(); }//end_void_loop ---------------------- void trigger() { if (digitalRead(pin_Trigger) ) //Se o botão está solto { aux2 = 1; } if (!digitalRead(pin_Trigger) && aux2 == 1) //Se o botão está pressionado { digitalWrite(pin_Triac, HIGH); delay(time_ms); digitalWrite(pin_Triac, LOW); delay(time_ms); aux2 = 0; } }//----------------------- end_selecionaTela //================== ISRs Interrupções Externas =======================// /* Caso qualquer pino do encoder envie sinal, o metodo .tick() sempre será chamado, atualizando o valor do encoder via sua biblioteca. */ void ISR0()// Função ligada a uma interrupção ISR logo não pode retornar valor e deve ser mais rápida possível { EncoderOne.tick();// Começa a ler o valor do encoder }//-------------------------endISR0 void ISR1()// Função ligada a uma interrupção ISR logo não pode retornar valor e deve ser mais rápida possível { EncoderOne.tick();// Começa a ler o valor do encoder }//------------------------endISR1 void screenOne() { Display.clearDisplay(); Display.setTextSize(2); //Define o tamanho da fonte do texto //Posição Largura/Altura Display.setCursor(27, 0); Display.print("Energy:"); if (valorEncoder <= 9) { Display.setTextSize(4); //Define o tamanho da fonte do texto //Posição Largura/Altura Display.setCursor(46, 25); Display.print(valorEncoder); //Posição Largura/Altura Display.setCursor(71, 25); Display.print("%"); } if (valorEncoder >= 10 && valorEncoder <= 99) { Display.setTextSize(4); //Define o tamanho da fonte do texto //Posição Largura/Altura Display.setCursor(31, 25); Display.print(valorEncoder); //Posição Largura/Altura Display.setCursor(81, 25); Display.print("%"); } if (valorEncoder >= 100) { Display.setTextSize(4); //Define o tamanho da fonte do texto //Posição Largura/Altura Display.setCursor(18, 25); Display.print(valorEncoder); //Posição Largura/Altura Display.setCursor(92, 25); Display.print("%"); } valorEncoder = EncoderOne.getPosition();//Captura o valor do encoder if (EncoderOne.getPosition() < 1) { EncoderOne.setPosition(1); valorEncoder = 1; } if (EncoderOne.getPosition() > 100) { EncoderOne.setPosition(100); valorEncoder = 100; } time_ms = map(valorEncoder, 1, 100, min_Power_ms, max_Power_ms); Serial.println(time_ms); Display.display(); }//end_screenOne ---------------------- |
O circuito eletrônico:
Para ver a imagem do circuito em alta resolução clique aqui
ATENÇÃO: Esse projeto trabalha com tensão da rede de distribuição residencial e pode causar a morte, portanto cuidado ao manusear. Crianças, chamar um adulto para orientar na montagem.
Veja o vídeo para mais informações:
Custo total do projeto:
Custo total do projeto comprando as peças no Brasil: 340,00 reais