Componentes · 20 min de leitura

Como ajustar o conversor buck LM2596 para 5 V ou 3,3 V

Como ajustar o conversor buck LM2596: defina 5 V ou 3,3 V com o trimpot e o multímetro, alimente Arduino e servos a partir de 12 V e entenda calor, corrente e a diferença para o 7805.

Ajustar um LM2596 significa alimentar a entrada do módulo e girar o parafuso de latão do trimpot azul enquanto você mede a saída com o multímetro, até chegar à tensão desejada, por exemplo 5 V ou 3,3 V. O módulo step-down (buck) LM2596 é um regulador de tensão barato e muito comum que transforma, com boa eficiência, a tensão de uma fonte de 12 V, de uma bateria de carro ou de um pack Li-ion 2S em uma tensão menor para Arduino, ESP32, servos e fitas de LED. Ele aceita de 4,5 a 40 V na entrada, reduz para qualquer valor entre cerca de 1,25 V e 35 V e fornece até 3 A. A regra de ouro cabe em uma frase: sempre ajuste e meça a saída antes de ligar a carga.

Neste guia você vai aprender como funciona um conversor buck, quais são os pinos e as peças do módulo, como ajustar 5 V e 3,3 V passo a passo com o trimpot e o multímetro e a fórmula Vout = 1,23 × (1 + R2 / R1), que define a saída. Depois veremos como alimentar Arduino e servos a partir de 12 V, o limite de corrente e o aquecimento, a eficiência e a diferença para o 7805 e os erros mais comuns (polaridade invertida, queda de tensão sob carga), antes de passar aos códigos que medem a saída com Arduino, ESP32 e Raspberry Pi Pico.

Módulo conversor buck step-down LM2596
Módulo buck LM2596: entrada IN+ / IN−, saída OUT+ / OUT−, um trimpot azul multivoltas que define a saída, um indutor grande que armazena energia e capacitores de entrada e de saída, tudo em uma só placa.

O que é o LM2596 e como ele funciona?

O LM2596 é um CI regulador abaixador chaveado, criado originalmente pela National Semiconductor e fabricado hoje pela Texas Instruments. Reguladores lineares como o 7805 eliminam o excesso de tensão transformando-o em calor; o LM2596, em vez disso, liga e desliga o transistor de potência interno cerca de 150.000 vezes por segundo (150 kHz). Enquanto o transistor está ligado, a corrente passa pelo indutor até a carga e o indutor armazena energia em seu campo magnético; quando o transistor desliga, o indutor continua entregando essa energia à carga através de um diodo Schottky. O capacitor de saída suaviza esses pulsos. A fração do tempo em que o transistor fica ligado se chama ciclo de trabalho (duty cycle), aproximadamente D ≈ Vout / Vin: para obter 5 V a partir de 12 V, a chave fica ligada cerca de 42% do tempo.

Como nenhuma energia é queimada, a eficiência fica em torno de 80–90% e a corrente puxada da entrada é menor que a corrente entregue na saída: um módulo que fornece 2 A em 5 V a partir de 12 V puxa só cerca de 1 A da entrada. Quem mantém a tensão de saída estável é o pino FB (feedback, realimentação). O chip compara a tensão no FB com sua referência interna de 1,23 V e ajusta o ciclo de trabalho de acordo. No módulo pronto, um dos braços do divisor de tensão ligado ao pino FB é um trimpot multivoltas; girar o parafuso muda a relação do divisor e, portanto, a tensão de saída. Também existem versões fixas do LM2596 de 3,3 V, 5 V e 12 V, mas no mundo Arduino a mais comum é o módulo azul feito com a versão ajustável (ADJ).

CaracterísticaChip LM2596 (datasheet)Módulo pronto (típico)
Tensão de entrada4,5–40 V (máximo absoluto 45 V)4,5–40 V; pelo menos 1,5–2 V acima da saída
Tensão de saídaADJ: 1,23–37 V; fixas: 3,3 / 5 / 12 VCerca de 1,25–35 V com o trimpot
Corrente de saída3 ACerca de 2 A contínuos sem dissipador, 3 A com dissipador
Frequência de chaveamento150 kHz (127–173 kHz)150 kHz
Referência de realimentação1,23 V1,23 V
Eficiência73–90% (conforme tensão e corrente)Tipicamente 80–88% de 12 V → 5 V
Corrente quiescenteTíp. 5 mA, máx. 10 mA; 80 µA quando desligado pelo ON/OFF5–10 mA + LED de alimentação (se houver)
Limite de correnteTíp. 4,5 A de pico (3,6–6,9 A)Não ajustável (só as versões CC/CV têm ajuste)
ProteçãoLimitação de corrente e desligamento térmicoSem proteção contra polaridade invertida

Pinos do módulo e peças da placa

O módulo azul LM2596 tem quatro pontos de ligação: IN+ e IN− são a entrada, OUT+ e OUT− a saída. IN− e OUT− são ligados entre si na placa; um conversor buck não isola a entrada da saída, então a fonte, o módulo e a placa que você alimenta compartilham um GND comum. Na placa você encontra o chip LM2596S de cinco pinos (encapsulamento TO-263: VIN, saída, GND, FB e ON/OFF), um indutor grande de 33–47 µH normalmente marcado 330 ou 470, um diodo Schottky de 3 A como o SS34, um capacitor eletrolítico na entrada e outro na saída (normalmente de 100–220 µF) e um trimpot multivoltas marcado 103 (10 kΩ). Você pode decifrar a marcação do indutor com a ferramenta Código do indutor. Na maioria dos módulos, o pino ON/OFF do chip está ligado ao GND, então o módulo começa a funcionar assim que recebe alimentação.

Pino do móduloFunçãoOnde ligar
IN+Positivo da entrada (4,5–40 V)Positivo da fonte, da bateria ou do pack de baterias
IN−Negativo da entrada (GND)Negativo da fonte
OUT+Positivo da saída regulada5V ou Vin do Arduino, 5V do ESP32, VSYS do Pico, fio vermelho do servo
OUT−Negativo da saída (mesmo GND do IN−)GND da placa, fio marrom ou preto do servo
Os módulos LM2596 não têm proteção contra polaridade invertida. Se você ligar a entrada ao contrário, mesmo por um instante, o chip e o diodo normalmente queimam na hora; às vezes o chip entra em curto internamente e, a partir daí, passa a tensão de entrada direto para a saída. Antes de ligar, leia duas vezes as marcações IN+ e IN−, confira a polaridade da fonte com o multímetro e, em circuitos permanentes, coloque um diodo Schottky em série na entrada (por exemplo um SS34 ou 1N5822, com queda de cerca de 0,4–0,5 V). Trocar a entrada pela saída e ligar a fonte no lado OUT também destrói o módulo.

Como ajustar o LM2596 passo a passo: 5 V ou 3,3 V com o multímetro

  1. Não ligue nada na saída. O módulo é ajustado sem carga; você só liga o Arduino ou o ESP32 depois de ver a tensão correta.
  2. Ligue na entrada a fonte real que você vai usar no projeto (por exemplo uma fonte de 12 V 2 A): positivo no IN+, negativo no IN−. Se a placa tiver LED, ele acende.
  3. Coloque o multímetro em tensão contínua (escala de 20 V ou automática); encoste a ponta de prova vermelha no OUT+ e a preta no OUT−. A primeira leitura pode estar perto da tensão de entrada, porque o ajuste de fábrica é desconhecido.
  4. Com uma chave de fenda pequena, gire o parafuso de latão do trimpot 2–3 voltas em um sentido e observe o display. Se a tensão cair, você está girando no sentido certo; se subir, gire para o outro lado. O sentido pode mudar de um módulo para outro, conforme a ligação do trimpot.
  5. Em um trimpot multivoltas de cerca de 25 voltas, percorrer a faixa inteira pode levar 20 voltas ou mais. O parafuso não tem batente; no fim do curso ele patina com um leve clique e a tensão para de mudar. Se isso acontecer, volte girando para o outro lado.
  6. Ao se aproximar do valor desejado, continue em quartos de volta e depois em passos ainda menores. Para 5 V, deixe entre 5,00–5,10 V; para 3,3 V, entre 3,30–3,35 V. Em placas de 3,3 V como o ESP32 e o Pico, nunca passe de 3,6 V.
  7. Ligue a carga, ou teste com um resistor de 10 Ω / 5 W que puxa cerca de 500 mA em 5 V, e repita a medição sob carga. Se a tensão cair mais de 0,1–0,2 V, verifique a fonte e a fiação.
  8. Quando terminar, pingue uma gota de esmalte de unha ou de cola quente no parafuso do trimpot; em robôs que vibram, o ajuste pode se desregular com o tempo.
Por que tanto cuidado? Ligar uma saída que ainda está em 12 V no pino 5V do Arduino ou no pino 3V3 do ESP32 destrói a placa em segundos. Se você ainda não tem prática com medições, leia o guia como usar o multímetro. Mesmo nos módulos LM2596 com um pequeno voltímetro de 3 dígitos, confirme o primeiro ajuste com o multímetro; esses displays podem errar em cerca de 0,1 V.

A fórmula da saída: Vout = 1,23 × (1 + R2 / R1)

O LM2596 ajusta a saída para que a tensão no pino FB seja de 1,23 V. Se chamarmos de R2 o resistor entre a saída e o FB, e de R1 o resistor entre o FB e o GND, a saída é Vout = 1,23 × (1 + R2 / R1). No módulo, o trimpot de 10 kΩ ocupa o lugar de R2, enquanto R1 é um pequeno resistor fixo da placa. A fórmula traz duas consequências importantes: mesmo com R2 perto de zero, a saída não fica abaixo de 1,23 V; e, por maior que seja R2, a saída não ultrapassa a entrada. Se você girar o trimpot demais para cima, o chip deixa a chave ligada o tempo todo e a saída fica presa cerca de 1–2 V abaixo da entrada. Essa é a causa mais comum da reclamação “meu módulo não abaixa a tensão”.

Se você quiser resistores fixos no lugar do trimpot em um projeto que vibra ou que vai durar muito, siga o datasheet e escolha R1 entre 240 Ω e 1,5 kΩ. Com R1 = 1 kΩ, para 5 V você obtém R2 = 1 kΩ × (5 / 1,23 − 1) ≈ 3,07 kΩ; com um resistor de 3,09 kΩ e 1%, a saída fica em 5,03 V. Para 3,3 V, R2 ≈ 1,68 kΩ, e um de 1,69 kΩ e 1% dá 3,31 V. No fundo, isso é só um divisor de tensão; você pode conferir as relações com a ferramenta Divisor de tensão.

Saída desejadaEntrada mínima recomendadaUso típico
3,3 V5 VPino 3V3 do ESP32 ou do Pico, sensores de 3,3 V
4,0–4,1 V6 VMódulo GSM SIM800L
5,0 V7 VPino 5V do Arduino, pino 5V do ESP32, servos SG90, LEDs WS2812B
6,0 V8 VServos MG996R (limite superior para SG90 e MG90S)
7,5–9 V10–11 VConector DC ou pino Vin do Arduino
12 V14–15 VVentoinhas, relés e fitas de LED de 12 V em um sistema de 24 V

Os valores mínimos de entrada da tabela valem para uma carga de 2–3 A: a chave do LM2596 tem queda típica de 1,16 V em 3 A, e o indutor e a fiação somam mais algumas centenas de milivolts. Com carga leve (cerca de 1 A), a diferença cai para cerca de 1,5 V. Um pack Li-ion 2S de 7,4 V cai para cerca de 6,4 V à medida que descarrega; isso ainda basta para uma linha de 5 V com 1 A, mas não para uma linha de 6 V para servos. Para ajustar um módulo GSM que precisa de 4 V, veja o artigo SIM800L.

Como alimentar um Arduino com uma fonte de 12 V ou uma bateria

Há duas formas corretas de alimentar um Arduino com um LM2596. A primeira é ajustar o módulo para 5,0 V e ligar a saída direto no pino 5V. Como isso passa por fora do regulador da própria placa, quase não gera calor e é a opção mais eficiente; mas não sobra nada para proteger a placa. Se o trimpot se desregular ou o módulo queimar e passar a entrada para a saída, os 12 V vão direto para o microcontrolador. Se você também conectar o cabo USB nessa ligação, a alimentação USB do computador e a saída do módulo ficam interligadas; desconectar o módulo durante o carregamento do código é o mais seguro.

A segunda forma é ajustar o módulo para 7,5–9 V e ligá-lo no conector DC ou no pino Vin. Assim o regulador da placa faz a regulação final, e o diodo da entrada do conector protege contra polaridade invertida. Ligar 12 V direto no conector também funciona, mas com uma carga de 200 mA o pequeno regulador da placa gera (12 − 5) × 0,2 = 1,4 W de calor; ajuste o LM2596 para 7,5 V e essa perda cai para (7,5 − 5) × 0,2 = 0,5 W. Você encontra todas as opções de alimentação no artigo alimentação do Arduino e a posição dos pinos em pinagem do Arduino Uno.

LigaçãoAjuste do LM2596VantagemAtenção
Pino 5V do Arduino5,0–5,1 VA opção mais fria e mais eficienteSem proteção; não conecte o USB ao mesmo tempo
Conector DC do Arduino7,5–9 VProtegido pelo diodo contra polaridade invertida e pelo regulador da placaO diodo tem queda de cerca de 0,7 V
Pino Vin do Arduino7,5–9 VDispensa o conector, o regulador da placa protegeSem proteção contra polaridade invertida
Pino 5V (VIN) do ESP325,0 VO LDO da placa gera 3,3 VNunca ligue 5 V no pino 3V3
Pino 3V3 do ESP323,30 VPassa por fora do regulador da placaAcima de 3,6 V o ESP32 pode ser danificado
Pino VSYS do Pico5,0 VO VSYS aceita 1,8–5,5 VUse um diodo Schottky se o USB também estiver conectado
Seja qual for a ligação escolhida, o OUT− do módulo precisa estar ligado ao GND da placa; em um sistema com GND separado, os sinais perdem a referência e os sensores leem valores aleatórios. Quando levar para outro projeto um módulo que já foi ajustado, meça a saída de novo: na semana passada ele pode ter sido ajustado para uma fita de LED de 12 V.

Alimentação de servos e motores: como calcular a corrente

O uso mais comum do LM2596 é como fonte para servos. Um SG90 puxa 100–250 mA em movimento e salta para 600–700 mA na partida e sob carga. Um MG996R chega a cerca de 2,5 A quando travado em 6 V. Ao escolher o módulo, não conte pela média: some a corrente de todos os servos que podem ficar sob carga ao mesmo tempo. Esperar 2 A contínuos de um LM2596 sem dissipador é realista: 3 SG90 funcionam com folga, mas alimentar um braço robótico com 4–6 MG996R a partir de um único módulo é pedir reinicializações e tremedeira. Nesse caso, use um módulo separado para cada um ou dois servos, ou um módulo de 5 A como o XL4015.

Servo motor MG996R
Servo MG996R: funciona com 4,8–7,2 V e puxa até 2,5 A sob carga; com um LM2596 ajustado para 6 V, uma linha separada para cada um ou dois MG996R é a escolha segura.

Também é preciso calcular a corrente de entrada, porque, se a fonte não der conta, a saída cai por melhor que seja o módulo. A fórmula é Iin = (Vout × Iout) / (Vin × η). Para 2 A em 5 V a partir de 12 V com 85% de eficiência, Iin = 10 W / (12 V × 0,85) ≈ 0,98 A, então uma fonte de 12 V 2 A é suficiente. A mesma carga puxa cerca de 1,6 A de um pack de baterias 2S de 7,4 V. Colocar um capacitor eletrolítico de 470–1000 µF ao lado da linha dos servos faz com que as correntes de partida venham do capacitor, e não do módulo. Para todas as soluções contra reinicializações causadas por servos, veja Arduino reiniciando sozinho, e para ligar servos, veja o que é um servo motor e servo MG996R.

Limite de corrente, aquecimento e dissipadores

Um conversor buck é eficiente, mas não sem perdas. A potência perdida é aproximadamente Ploss = Pout × (1/η − 1) e se divide entre o chip, o diodo Schottky e o indutor. Com saída de 5 V 2 A (10 W) e 85% de eficiência, são gerados cerca de 1,8 W de calor. O LM2596S do módulo está em um encapsulamento TO-263 soldado em uma pequena área de cobre; segundo o datasheet, sua resistência térmica para o ar é de 30–50 °C/W, conforme a área de cobre. Por isso, em 2 A o chip fica quente demais para manter o dedo nele, e em 3 A um pequeno dissipador de alumínio adesivo e circulação de ar são obrigatórios. Dentro de uma caixa fechada, esses limites caem ainda mais.

Carga (12 V → 5 V)Potência de saídaPerda estimadaSituação
0,5 A2,5 W~0,4 WMorno, não precisa de dissipador
1 A5 W~0,8 WQuente, mas tranquilo
2 A10 W~1,8 WMuito quente, precisa de circulação de ar
3 A15 W~3,5 WDissipador e ventoinha obrigatórios

O limite de corrente do LM2596 não pode ser ajustado pelo usuário. Quando a corrente de pico na chave chega a cerca de 4,5 A (3,6–6,9 A, conforme a variação de fabricação), o chip encurta os pulsos, reduz a frequência em sobrecarga e se desliga se superaquecer. Essas proteções costumam salvar o módulo em um curto-circuito, mas não substituem um fusível. Para tarefas em que você precisa definir a corrente, como acionar um LED de potência ou montar uma fonte de teste com limite de corrente, existem módulos LM2596 CC/CV (corrente constante / tensão constante) com um segundo trimpot para a corrente. Se você quer uma linha resistente a curtos-circuitos, coloque também um fusível de valor adequado na entrada.

Alguns dos módulos baratos do mercado têm chips falsificados ou remarcados. Alguns deles trabalham em uma frequência bem menor que 150 kHz, geram mais ondulação e esquentam e perdem tensão bem antes de chegar a 3 A. Não confie nos 3 A da etiqueta: projete para 2 A contínuos e, se precisar de mais, divida a carga entre dois módulos ou passe para um módulo mais forte, como o XL4015.

Eficiência e comparação com o 7805

Comparando com o regulador de tensão 7805, que faz o mesmo trabalho, o tamanho da diferença fica claro. Para entregar 1 A em 5 V a partir de 12 V, o 7805 também puxa 1 A da entrada e transforma (12 − 5) × 1 = 7 W em calor; sua eficiência é de apenas 42% e ele precisa de um dissipador grande. O LM2596 puxa cerca de 0,49 A da entrada para a mesma carga e perde menos de 1 W. Em projetos a bateria, essa diferença vira autonomia: quando a eficiência dobra, a bateria dura aproximadamente o dobro.

O preço de um conversor buck é o ruído. Segundo o datasheet, a ondulação em dente de serra na saída é tipicamente de 0,5–3% da tensão de saída, ou seja, 25–150 mV em 5 V, mais o ruído de chaveamento de 150 kHz por cima. Isso não é problema para Arduino, servos, relés e LEDs, mas aparece quando você alimenta medições analógicas precisas, um microfone ou um amplificador de áudio. Nesses casos, combine os dois: primeiro abaixe para 7–8 V com o LM2596 e depois obtenha 5 V limpos com um 7805 ou um LDO, ganhando eficiência e silêncio ao mesmo tempo. Para pequenos experimentos de baixa corrente na protoboard, um módulo de alimentação MB102 para protoboard pronto é uma opção prática.

CaracterísticaLM2596 (buck)7805 (linear)AMS1117-3.3 (LDO)
Como funcionaChaveamento de 150 kHz, energia armazenada em um indutorTransforma o excesso de tensão em calorTransforma o excesso de tensão em calor
Eficiência a partir de 12 V80–90%~42% com saída de 5 V~27% com saída de 3,3 V (entrada máx. 15 V)
Corrente máxima3 A (2 A contínuos na prática)1–1,5 A0,8–1 A
Diferença mínima entre entrada e saída~1,5–2 V~2 V~1,1–1,3 V
Ruído na saídaDezenas de mV de ondulaçãoMuito baixoMuito baixo
Ajuste da saída1,25–35 V com o trimpotFixa em 5 VFixa em 3,3 V
Corrente quiescente5–10 mA3–8 mA~5 mA
Melhor paraGrande diferença de tensão, corrente alta, bateriasPequena diferença, corrente baixa, alimentação silenciosa3,3 V a partir de 5 V, algumas centenas de mA
LM2596 buck
LM2596 buck
LM7805
LM7805
AMS1117-3.3
AMS1117-3.3
MB102
MB102

Como medir a saída do LM2596 sob carga com Arduino

A melhor forma de ver quanto a tensão cai sob carga é medir a queda enquanto a carga está funcionando. O código abaixo move um servo sem parar entre 0 e 180 graus e mostra no Monitor Serial a menor e a maior tensão vistas na saída do LM2596. A ligação é esta: o fio vermelho do servo vai no OUT+, o marrom no OUT− e o fio de sinal no D9; entre o OUT+ e o GND você monta um divisor de tensão com 47 kΩ e 10 kΩ e liga o ponto do meio no A0. O Arduino é alimentado pelo USB, e o OUT− precisa estar ligado ao GND do Arduino.

C++ (Arduino IDE)
1// LM2596 yük testi: servo dönerken çıkış gerilimini izle / LM2596 load test: watch the output while a servo moves
2// Kart: Arduino Uno / Nano (ATmega328P) / Board: Arduino Uno / Nano (ATmega328P)
3#include <Servo.h>
4
5const int SENSE_PIN = A0;          // OUT+ -> 47k -> A0 -> 10k -> GND
6const int SERVO_PIN = 9;           // servo sinyal kablosu / servo signal wire
7const float R_TOP = 47000.0;       // bölücü üst direnç / divider top resistor
8const float R_BOTTOM = 10000.0;    // bölücü alt direnç / divider bottom resistor
9const float AREF_V = 1.1;          // dahili referans, multimetreyle düzelt / internal reference, calibrate with a multimeter
10const float LOW_LIMIT = 4.6;       // 5 V hat için uyarı sınırı / warning limit for a 5 V rail
11
12Servo servo;
13float vMin, vMax;
14
15float readOutput() {
16  long sum = 0;
17  for (int i = 0; i < 8; i++) {
18    sum += analogRead(SENSE_PIN);  // 8 örneğin toplamı / sum of 8 samples
19  }
20  float vPin = (sum / 8.0) * AREF_V / 1023.0;
21  return vPin * (R_TOP + R_BOTTOM) / R_BOTTOM;  // bölücüyü geri hesapla / undo the divider
22}
23
24void track() {
25  float v = readOutput();
26  if (v < vMin) vMin = v;          // en düşük değer / lowest value
27  if (v > vMax) vMax = v;          // en yüksek değer / highest value
28}
29
30void setup() {
31  Serial.begin(9600);
32  analogReference(INTERNAL);       // 1,1 V referans, beslemeden bağımsız / 1.1 V reference, independent of the supply
33  for (int i = 0; i < 10; i++) {   // referans otursun, ilk okumaları at / let the reference settle, drop first readings
34    analogRead(SENSE_PIN);
35    delay(5);
36  }
37  servo.attach(SERVO_PIN);
38}
39
40void loop() {
41  vMin = 99.0;
42  vMax = 0.0;
43  for (int a = 0; a <= 180; a += 2) {     // 0 -> 180 derece / 0 -> 180 degrees
44    servo.write(a);
45    for (int k = 0; k < 5; k++) { track(); delay(2); }
46  }
47  for (int a = 180; a >= 0; a -= 2) {     // 180 -> 0 derece / 180 -> 0 degrees
48    servo.write(a);
49    for (int k = 0; k < 5; k++) { track(); delay(2); }
50  }
51  Serial.print(F("Min: "));
52  Serial.print(vMin, 2);
53  Serial.print(F(" V  Max: "));
54  Serial.print(vMax, 2);
55  Serial.print(F(" V  Dusus / Drop: "));
56  Serial.print(vMax - vMin, 2);
57  Serial.println(F(" V"));
58  if (vMin < LOW_LIMIT) {
59    Serial.println(F("UYARI: gerilim cok dusuyor / WARNING: voltage sags too much"));
60  }
61  delay(1000);
62}

Em vez da própria tensão de alimentação do Arduino, o código usa a referência interna de 1,1 V do ATmega328P (analogReference(INTERNAL)), então a leitura não é afetada se o USB estiver em 4,7 V ou 5,1 V. A maior tensão que dá para medir com o divisor 47k/10k é de cerca de 6,2 V; em uma linha de servos de 6 V, considere a tolerância da referência usando 56 kΩ no resistor de cima e mudando a constante R_TOP. Como a referência interna pode variar cerca de ±10% de um chip para outro, meça a saída uma vez com o multímetro e ajuste AREF_V (por exemplo 1.08) até os dois resultados coincidirem. Se a queda passar de 0,3 V enquanto o servo se move, encurte os fios, use fios mais grossos e acrescente 470 µF na linha dos servos; abaixo de 0,1 V, sua alimentação está saudável.

ESP32: funcionando com uma bateria de 12 V e monitorando a bateria

Alimentar um ESP32 com uma bateria de 12 V é um cenário comum para uma estação de sensores no jardim ou um rastreador no carro. Ajuste o LM2596 para 5,0 V e ligue no pino 5V (VIN) da placa ESP32; o LDO da própria placa gera os 3,3 V. O LM2596 dá conta com folga dos picos curtos de corrente que o ESP32 puxa ao transmitir por Wi-Fi; os sintomas de uma alimentação fraca estão em detalhes no artigo erro de brownout no ESP32. O código abaixo lê a tensão da bateria no GPIO34 através de um divisor de 100 kΩ / 22 kΩ e coloca o ESP32 em deep sleep por 10 minutos quando a tensão chega ao limite inferior seguro de uma bateria de chumbo-ácido.

C++ (Arduino IDE)
1// ESP32: LM2596 ile 12 V aküden beslen, aküyü izle / ESP32: run from a 12 V battery via an LM2596, monitor the battery
2#include <Arduino.h>
3#include "esp_sleep.h"
4
5const int BAT_PIN = 34;                           // GPIO34: yalnız giriş, ADC1 / input-only, ADC1
6const float RATIO = (100.0 + 22.0) / 22.0;        // 100k / 22k bölücü (~5,55) / divider (~5.55)
7const float LOW_V = 11.8;                         // kurşun asit akü alt sınırı / lead-acid low limit
8const uint64_t SLEEP_US = 10ULL * 60 * 1000000;   // 10 dakika (mikrosaniye) / 10 minutes (microseconds)
9
10float batteryVolts() {
11  uint32_t mv = 0;
12  for (int i = 0; i < 16; i++) {
13    mv += analogReadMilliVolts(BAT_PIN);          // kalibre edilmiş mV / calibrated mV
14  }
15  return mv / 16.0 / 1000.0 * RATIO;              // bölücüyü geri hesapla / undo the divider
16}
17
18void setup() {
19  Serial.begin(115200);
20  delay(200);
21}
22
23void loop() {
24  float v = batteryVolts();
25  Serial.printf("Aku / Battery: %.2f V\n", v);
26  if (v < LOW_V) {
27    Serial.println("Aku zayif, 10 dk uyku / Battery low, sleeping 10 min");
28    Serial.flush();
29    esp_sleep_enable_timer_wakeup(SLEEP_US);      // zamanlayıcıyla uyan / wake up by timer
30    esp_deep_sleep_start();                       // derin uyku / deep sleep
31  }
32  delay(5000);
33}

O divisor reduz até a tensão de carga de 14,4 V para cerca de 2,6 V, então você fica dentro da faixa de medição do ADC do ESP32. Uma bateria de chumbo-ácido em repouso está cheia em torno de 12,6–12,8 V; ir abaixo de 11,8 V a aproxima da descarga profunda e encurta sua vida útil. Há um detalhe: o próprio LM2596 consome 5–10 mA mesmo sem carga. Enquanto o ESP32 gasta só microampères em deep sleep, o módulo consome 120–240 mAh por dia, e uma bateria de 7 Ah se esgota em 1–2 meses só por isso. Você pode fazer as contas com os seus valores na ferramenta Autonomia da bateria. Para projetos que vão dormir por meses, você precisa de um módulo com o pino EN (ON/OFF) acessível, para cortar a alimentação por completo, ou de um conversor step-down com corrente quiescente muito baixa; as técnicas de sono estão em detalhes no artigo deep sleep no ESP32.

Auxiliar de ajuste com Raspberry Pi Pico (MicroPython)

Se você quiser acompanhar o ajuste na tela do computador, pode usar o Pico como um voltímetro simples. Como o ADC do Pico lê no máximo 3,3 V, ligue a saída do LM2596 no GP26 através de um divisor de 100 kΩ e 10 kΩ; com essa relação, dá para medir com segurança até 36 V, então, mesmo que o módulo ainda não ajustado entregue algo perto da tensão de entrada, o Pico não sofre danos. O Pico é alimentado pelo USB e os GNDs são interligados. Conforme o valor desejado, o código mostra “high” (alto) ou “low” (baixo) e acende o LED integrado quando a saída fica dentro de ±1%. Se você está começando com o Pico, comece por O que é o Raspberry Pi Pico?.

MicroPython
1# Pico: LM2596 ayar yardımcısı / Pico: LM2596 adjustment helper
2from machine import ADC, Pin
3import time
4
5adc = ADC(26)                  # GP26 (ADC0): OUT+ -> 100k -> GP26 -> 10k -> GND
6led = Pin("LED", Pin.OUT)      # dahili LED (Pico ve Pico W) / onboard LED (Pico and Pico W)
7RATIO = (100 + 10) / 10        # bölücü oranı 11, en fazla ~36 V / divider ratio 11, up to ~36 V
8VREF = 3.3                     # ADC referansı (V) / ADC reference (V)
9CAL = 1.000                    # multimetreyle düzeltme katsayısı / multimeter correction factor
10TARGET = 5.00                  # hedef: 5.00 ya da 3.30 / target: 5.00 or 3.30
11
12def read_volts(n=64):
13    total = 0
14    for _ in range(n):
15        total += adc.read_u16()                    # 0-65535 ham değer / raw value
16    return total / n / 65535 * VREF * RATIO * CAL
17
18while True:
19    v = read_volts()
20    err = (v - TARGET) / TARGET * 100              # hedeften sapma (%) / deviation from target (%)
21    led.value(abs(err) <= 1.0)                     # ±%1 içinde LED yanar / LED on within ±1%
22    if err > 1.0:
23        hint = "yuksek, dusur / high, lower it"
24    elif err < -1.0:
25        hint = "dusuk, artir / low, raise it"
26    else:
27        hint = "tamam / OK"
28    print("{:.2f} V  {:+.1f} %  {}".format(v, err, hint))
29    time.sleep(0.3)

Como o ADC do Pico pode errar em cerca de 1–2%, corrija o fator CAL uma vez comparando com o multímetro; ainda assim, o melhor é confirmar o ajuste final com o multímetro. Se mais tarde você quiser alimentar o Pico também pelo LM2596, ligue a saída de 5,0 V no pino VSYS através de um diodo Schottky 1N5819; o diodo impede que as duas fontes briguem entre si quando o USB estiver conectado. Nunca ligue a saída do módulo no pino 3V3 do Pico.

Ideias de projetos com o LM2596

  • Carrinho robô: um pack 2S de 18650 (7,4 V) alimenta os motores direto pelo L298N, e um LM2596 ajustado para 5 V alimenta o Arduino e os sensores. O passo a passo está no artigo como fazer um carrinho robô com Arduino.
  • Braço robótico: com um LM2596 ajustado para 6 V, monte uma linha forte para os servos MG996R, independente do Arduino; detalhes no guia braço robótico com Arduino.
  • Estufa inteligente de 12 V: uma única fonte de 12 V alimenta a ventoinha e a bomba, e o LM2596 gera 5 V da mesma linha para o Arduino, os relés e o LCD; veja o projeto de estufa inteligente.
  • Fonte de bancada ajustável: monte uma pequena fonte de laboratório com um LM2596, um carregador antigo de notebook e um voltímetro digital feito com Arduino que mostra a saída em um display.
  • Fita de LED WS2812B: 60 LEDs em branco total podem puxar até 3,6 A; limite o brilho e fique abaixo de 2 A com um LM2596 de 5 V. O cálculo da corrente está no artigo WS2812B NeoPixel.
  • Dispositivo ESP32 para carro: abaixe a tensão de 12–14,4 V da bateria para 5 V; coloque um fusível na entrada e um diodo TVS contra os picos de tensão do veículo.

Erros comuns e como resolver

SintomaCausa provávelSolução
Saída quase igual à entrada (por exemplo 11 V a partir de 12 V)Trimpot no ajuste máximo, ou valor desejado maior que a entradaSem carga, meça enquanto gira 10–20 voltas no sentido de abaixar
O valor não muda ao girar o trimpotO trimpot multivoltas está patinando no fim do cursoGire 5–10 voltas para o outro lado; se nada mudar, o módulo pode estar com defeito
5 V caem para 4,3 V quando a carga é ligadaA fonte não fornece a corrente, diferença entre entrada e saída pequena demais ou fios finos demaisMeça a entrada sob carga, mantenha pelo menos 2 V de margem, use fios curtos e grossos
O Arduino reinicia quando o servo se moveServo e Arduino dividem a mesma alimentação fracaMódulo separado para os servos, um capacitor de 470–1000 µF e GND comum
O módulo desliga e religa depois de alguns minutosO desligamento térmico está atuandoReduza a carga, coloque um dissipador e circulação de ar, ou passe para um módulo de 5 A
Depois de uma polaridade invertida, a saída fica em 0 V ou igual à entradaO chip e o diodo queimaramTroque o módulo e coloque um diodo Schottky em série na entrada
Ruído nas leituras analógicas ou no áudioOndulação do chaveamento de 150 kHzColoque um filtro LC na saída ou use buck + LDO, mantenha curto o caminho do GND
O ajuste muda com o tempoA vibração girou o trimpotTrave o trimpot com esmalte de unha ou silicone, ou use resistores fixos
Na hora de investigar o problema, faça três medições: a entrada sob carga, a saída sob carga e a diferença entre elas. Se a diferença for menor que 2 V, o problema está na fonte; se a entrada estiver boa e a saída baixa, a culpa é do módulo ou da fiação. Uma resistência total de 0,1–0,2 Ω nos fios e nos contatos da protoboard causa uma queda de 0,2–0,4 V em 2 A; você pode ver isso com a ferramenta Lei de Ohm. Não passe mais de 1 A pelos trilhos da protoboard. Se você suspeita que a placa foi danificada, siga as verificações de Meu Arduino queimou?.

Bem ajustado, com margem suficiente entre entrada e saída e dentro do limite de 2 A, o LM2596 é uma das peças mais práticas para fazer um projeto funcionar com uma única fonte ou bateria. Lembre-se da ordem: primeiro ajuste sem carga, depois meça sob carga e ligue a placa por último. No app BlueGrays você encontra projetos que precisam de uma alimentação separada, como o Carrinho controlado por Bluetooth com L298N, o Robô que desvia de obstáculos, projetos com servos, a coreografia com 32 servos, o controle de fita WS2812B, o Voltímetro digital com display LCD e a Estação de irrigação inteligente, com esquemas do circuito e códigos passo a passo.

Perguntas frequentes

Como ajustar um LM2596?

Ligue a fonte na entrada e, sem nada ligado na saída, encoste as pontas de prova do multímetro no OUT+ e no OUT−. Gire o parafuso do trimpot azul com uma chave de fenda pequena e pare quando aparecer o valor desejado (por exemplo 5,00 V). Por fim, ligue a carga e repita a medição sob carga.

Quantos ampères um LM2596 fornece?

O chip LM2596 foi projetado para 3 A, e seu limite interno de corrente atua em um pico de cerca de 4,5 A. Os módulos prontos funcionam com folga com cerca de 2 A contínuos sem dissipador; 3 A exigem dissipador e circulação de ar. Como os chips falsificados dos módulos baratos podem entregar menos, o mais seguro é projetar para 2 A.

Para que lado girar o trimpot do LM2596 para aumentar a tensão?

O sentido pode variar de um módulo para outro, conforme a ligação do trimpot na placa, então não confie na memória. Gire o parafuso 2–3 voltas para um lado e olhe o multímetro; se a tensão cair, esse sentido abaixa a tensão. O trimpot tem cerca de 25 voltas e não tem batente, então no fim do curso ele simplesmente patina com um clique.

Por que a tensão de saída do meu LM2596 não abaixa?

O motivo mais comum é o trimpot estar no ajuste máximo; em um trimpot multivoltas, podem ser necessárias 10–20 voltas até a tensão começar a mudar. Se o valor ajustado for maior que a entrada, a saída fica presa 1–2 V abaixo da entrada. Se nenhuma quantidade de voltas fizer diferença e a saída for igual à entrada, o chip entrou em curto internamente; troque o módulo.

Como alimentar um Arduino com um LM2596?

Você pode ajustar o módulo para 5,0 V e ligar a saída no pino 5V do Arduino; é o método mais frio, mas não deixa nada para proteger a placa. A opção mais segura é ajustar o módulo para 7,5–9 V e ligá-lo no conector DC ou no pino Vin. Nos dois casos, o OUT− do módulo precisa estar ligado ao GND do Arduino.

LM2596 ou 7805: qual é melhor?

Quando a diferença entre entrada e saída é grande e a corrente é alta, o LM2596 é muito melhor: de 12 V para 5 V com 1 A, o 7805 gera 7 W de calor, enquanto o LM2596 perde menos de 1 W. Se a diferença for pequena, a corrente for baixa e você precisar de uma alimentação silenciosa, o 7805 é mais simples. Em circuitos analógicos sensíveis, os dois podem ser usados um depois do outro.

Ver todos os projetos
Voltímetro digital com display LCD
#56Intermediário
Premium

Voltímetro digital com display LCD

Descubra a tensão de uma pilha ou de um adaptador de alimentação com um medidor feito por você. Um divisor formado por dois resistores reduz a tensão alta a um nível que a placa consegue ler, e o Ardu

4.5(27)
36
Uso de servo motor
#35Iniciante
Premium

Uso de servo motor

O braço de um pequeno servo motor gira para três posições em sequência: o início, o meio e o fim do percurso, esperando dois segundos em cada parada. O Arduino informa ao motor em qual ângulo ficar, e

4.7(48)
67
Carrinho controlado por Bluetooth com L298N
#80Avançado
Premium

Carrinho controlado por Bluetooth com L298N

Transforme seu celular em um controle remoto e dirija seu próprio carrinho robô. O Arduino recebe os comandos de um aplicativo de controle remoto no celular por meio de um módulo Bluetooth e aciona as

5.0(38)
65
Robô que desvia de obstáculos
#81Avançado
Premium

Robô que desvia de obstáculos

Que tal construir um veículo inteligente que encontra seu próprio caminho? O robô que desvia de obstáculos monitora o ambiente constantemente com o sensor ultrassônico na parte da frente. Ao encontrar

5.0(38)
49
Coreografia em círculo: animações com 32 servos
#102Avançado
Premium

Coreografia em círculo: animações com 32 servos

Um projeto de animação visual com 32 servo motores dispostos em círculo e controlados por um Arduino Mega. Os servos são gerenciados em um único array e conectados aos pinos 22–53 do Mega. Eles executam quatro sequências de movimento: uma vibração caótica em que todos vão para ângulos aleatórios, uma varredura sincronizada em que todos se movem ao mesmo tempo, uma onda que gira suavemente pelo círculo e, por fim, uma agulha de bússola que oscila de um lado para o outro.

4.5(40)
62
Controle de fita WS2812B NeoPixel com ESP32
#126Intermediário
Premium

Controle de fita WS2812B NeoPixel com ESP32

Os LEDs endereçáveis WS2812B (NeoPixel) são LEDs RGB inteligentes que podem ser controlados em cadeia por um único pino de dados. Neste projeto, vamos controlar uma fita WS2812B de 8 LEDs com a biblioteca Adafruit_NeoPixel para criar uma animação suave de arco-íris. Embora o nível lógico de 3,3V do ESP32 funcione sem problemas na maioria dos lotes de WS2812B, vamos mostrar uma solução com um resistor de 470Ω em série e um capacitor de 1.000µF para casos de instabilidade.

4.9(19)
30
Estação de irrigação inteligente
#83Avançado
Premium

Estação de irrigação inteligente

Um jardineiro que rega suas plantas sozinho para que elas não sequem enquanto você está de férias. Um sensor de umidade do solo mede o quanto a terra está úmida; quando ela seca, o Arduino aciona a bo

5.0(42)
57