Guias · 24 min de leitura

Como alimentar o Arduino com bateria: 9V, AA, 18650 e pino Vin

Como alimentar o Arduino com bateria: USB ou conector DC (7–12 V), pinos Vin e 5V, opções com bateria 9V, pilhas AA e 18650, alimentação separada para servos e cálculo de autonomia.

Alimentar um Arduino com bateria é o primeiro passo para livrar o seu projeto do cabo USB do computador e transformá-lo em um carrinho robô, um sensor no jardim ou um aparelho que cabe no bolso. A resposta curta: a forma mais segura de rodar um Arduino Uno com bateria é ligar um pack de 7–12 V (6×AA ou duas células 18650 em série) ao conector DC ou ao pino Vin, ou então conectar um power bank à porta USB. O pino 5V só deve ser usado com uma fonte de 5 V limpa, que você mediu e ajustou, porque esse pino ignora completamente o regulador e as proteções da placa.

Uma alimentação ruim está por trás de muitos dos problemas misteriosos que os iniciantes enfrentam: a placa que reinicia sempre que o servo se move, a bateria 9V que acaba em poucas horas, o power bank que desliga depois de alguns segundos ou o regulador quente demais para tocar. Neste guia você vai conhecer todas as entradas que podem alimentar um Arduino, qual bateria vai em qual entrada, por que os motores precisam de uma fonte própria e como calcular o consumo de corrente e a autonomia. No final, também vamos ver o que muda ao alimentar um ESP32 e um Raspberry Pi Pico com bateria.

Entradas de alimentação do Arduino Uno R3: USB, conector DC e pinos de alimentação
Arduino Uno R3: a porta USB-B e o conector DC preto à esquerda e, na borda inferior, a barra POWER com os pinos IOREF, RESET, 3.3V, 5V, GND, GND e Vin.

5 formas de alimentar um Arduino

Dentro de um Arduino Uno há dois caminhos de alimentação separados. Os 5 V que chegam pela USB passam por um fusível rearmável de 500 mA (polyfuse) e por uma pequena chave MOSFET e vão direto para o barramento de 5 V da placa. Já a tensão do conector DC passa primeiro por um diodo de proteção contra polaridade invertida, aparece nesse ponto no pino Vin e depois é reduzida a 5 V por um regulador LDO da família 1117. Os 3,3 V são gerados a partir desse barramento de 5 V por um segundo regulador, menor. Um comparador na placa monitora o Vin: quando o Vin passa de cerca de 6,6 V, ele desconecta automaticamente a alimentação USB, de modo que as fontes não brigam entre si mesmo com o adaptador e a USB ligados ao mesmo tempo.

EntradaTensãoProteçãoQuando usar
USB (tipo B)5 VPolyfuse de 500 mADesenvolvimento na bancada, carregador de celular, power bank
Conector DC (5,5×2,1 mm, positivo no centro)7–12 V recomendado (limite 6–20 V)Diodo contra polaridade invertida + regulador de 5 VFonte de tomada, 6×AA, pack Li-ion 2S
Pino Vin7–12 VCom regulador, sem proteção contra polaridade invertidaFios de suporte de pilhas, shields
Pino 5V4,8–5,2 V medidosNenhuma proteçãoSaída de buck/boost ajustada, fonte regulada de 5 V
Pino 3.3VSomente saídaNenhumaSensores de 3,3 V até 50 mA
Na dúvida, siga esta regra: USB na bancada, um pack de baterias de 7–12 V no conector DC em campo. Use o pino 5V só com uma fonte regulada de 5 V que você conferiu com o multímetro. Para ver onde fica cada pino na placa, confira a pinagem do Arduino Uno.

Alimentação pela USB: o limite de 500 mA

A USB é a forma mais fácil e mais protegida de alimentar um Arduino. Uma porta USB 2.0 de computador fornece no máximo 500 mA; o polyfuse do Uno esquenta e corta o circuito quando a corrente total passa disso e religa sozinho depois que esfria. A própria placa consome cerca de 45–50 mA, o que deixa uns 400 mA para seus sensores, LEDs e módulos dividirem. Um carregador de celular ou um power bank pode usar a mesma porta USB; a única diferença é que, com cabos finos e longos, a tensão pode cair até 4,6 V. Enquanto a placa roda pela USB, cada miliampere que você puxa do pino 5V sai desse orçamento de 500 mA. Por isso, pendurar um servo ou uma fita de LED na alimentação USB faz o fusível desarmar, e a porta do computador também pode cortar a conexão para se proteger.

Conector DC e pino Vin: por que 7–12 V?

O regulador de 5 V da placa é um LDO linear e, para funcionar direito, precisa de cerca de 1–1,2 V a mais na entrada do que na saída. Some a isso a queda de 0,7–1 V do diodo de proteção do conector e você vai precisar de pelo menos 7 V no conector para ter 5 V firmes. Com uma fonte de 6 V, o barramento de 5 V cai para 4,2–4,5 V; a placa pode parecer funcionar, mas as leituras analógicas variam e os módulos se comportam de forma estranha. No limite superior, o problema é o calor: um regulador linear transforma a tensão excedente em calor. A potência dissipada é P = (Vin − 5 V) × I. Como regra, não faça o regulador dissipar mais de 1 W; nesse ponto o pequeno encapsulamento SOT-223 fica quente demais para tocar e acaba se desligando sozinho.

Tensão no VinCalor com 100 mACalor com 300 mAAvaliação
7 V0,2 W0,6 WFaixa mais eficiente
9 V0,4 W1,2 WNo limite com 300 mA
12 V0,7 W2,1 WSó cargas leves
20 V1,5 W4,5 WNão recomendado, o regulador superaquece

O pino Vin é ao mesmo tempo entrada e saída. Quando você alimenta a placa pelo conector, o Vin fica com a tensão do conector menos cerca de 0,7–1 V, então dá para alimentar por ele uma pequena carga de 9–12 V. Mas, como há um diodo de proteção de 1 A no caminho da corrente, cargas grandes como motores devem ser alimentadas direto da fonte, não pelo Vin. Quando você liga um suporte de pilhas ao pino Vin, esse diodo de proteção fica de fora: o regulador continua funcionando, mas, se você inverter o positivo e o negativo, nada protege a placa. Nos novos Uno R4 Minima e R4 WiFi, o conector e o Vin aceitam 6–24 V e usam um conversor chaveado (buck) no lugar do regulador linear, então não esquentam nem com 12 V. Para mais detalhes, veja Arduino Uno R4.

A polaridade invertida é o jeito mais rápido de matar um Arduino. Os plugues do conector DC precisam ser positivo no centro (+); alguns adaptadores antigos são ao contrário. Antes de ligar um suporte de pilhas aos pinos Vin e GND, não confie nas cores dos fios: confira a polaridade com um multímetro. Se você suspeita que a placa foi danificada, faça os testes de Meu Arduino queimou?.

Pino 5V: quando é seguro pular o regulador?

O pino 5V está ligado direto à linha de alimentação do ATmega328P e dos outros chips da placa. Alimentar por esse pino pula o regulador, o diodo contra polaridade invertida e o fusível da USB. É por isso que a própria documentação do Arduino não recomenda alimentar pelos pinos 5V e 3.3V. Feito do jeito certo, porém, há vantagens: sem a queda de tensão e a perda de calor do regulador, a bateria dura mais e você pode fornecer mais corrente aos módulos. Só há uma condição: a fonte precisa ser regulada e medida. O ATmega328P foi projetado para trabalhar com até 5,5 V, e 6 V é o seu máximo absoluto; mesmo um instante acima disso pode danificar o chip de vez.

  • Meça antes: confira a saída da fonte com um multímetro antes de ligá-la ao Arduino; ela deve ficar entre 4,8 e 5,2 V.
  • Nada de pilhas direto: 4×AA alcalinas novas chegam a 6,4 V e passam do limite. Ligue ao pino 5V somente a saída de um regulador ou de um módulo buck ou boost.
  • Cuidado com a USB ao mesmo tempo: se você conectar a USB enquanto alimenta pelo pino 5V, duas fontes de 5 V ficam interligadas pela placa; desligar a fonte externa enquanto carrega o código é a opção mais segura.
  • Coloque um capacitor: um capacitor eletrolítico de 100–470 µF na linha externa de 5 V, perto da placa, suaviza as quedas durante picos repentinos de corrente (o que é um capacitor?).
  • Opções prontas: módulos reguladores com 7805 (regulador de tensão 7805), um LM2596 ajustado em 5,0 V ou o módulo de alimentação MB102 para protoboard fornecem 5 V limpos.
Os módulos buck e boost ajustáveis muitas vezes vêm de fábrica ajustados não em 5 V, mas em uma tensão qualquer (às vezes acima de 12 V). Ligue primeiro a bateria à entrada do módulo, gire o trimpot azul até o multímetro mostrar 5,0 V na saída e só então ligue ao pino 5V do Arduino.

Pino 3.3V: quanta corrente dá para puxar?

O pino 3.3V do Uno não é uma entrada de alimentação; é a saída de um pequeno regulador, e o limite oficial é de 50 mA. Isso basta para módulos que ficam em poucas dezenas de miliamperes, como um BME280, um MPU6050 ou um leitor RFID RC522. Módulos com picos de corrente altos, porém, passam do ponto: o nRF24L01+PA+LNA com antena ultrapassa 100 mA ao transmitir, o módulo Wi-Fi ESP-01 tem picos de várias centenas de miliamperes e o SIM800L pede rajadas de até 2 A. Para o nRF24L01+PA+LNA e o ESP-01, use um módulo regulador AMS1117 de 3,3 V separado, alimentado pelo barramento de 5 V. Já o SIM800L funciona com 3,4–4,4 V, e não com 3,3 V, e passa do limite de 1 A do AMS1117; alimente-o com uma única célula Li-ion ou com um módulo buck ajustado em 4,0 V que forneça pelo menos 2 A. No Arduino Nano e nos seus clones, o pino 3.3V muitas vezes é alimentado de dentro do chip USB-serial e é ainda mais fraco que no Uno, então um regulador separado também é a escolha mais segura. Você encontra mais sobre a alimentação de módulos sem fio no guia do nRF24L01.

Módulo regulador de tensão AMS1117 de 3,3 V
Módulo regulador AMS1117 de 3,3 V: você liga 5 V no VIN e tira 3,3 V do VOUT; ele alimenta módulos que pedem bastante corrente, como o ESP-01 e o nRF24L01, sem sobrecarregar o pino 3.3V do Arduino.

Opções de bateria: 9V, AA, 18650 e power bank

BateriaTensãoCapacidadeOnde ligarAutonomia com um Uno (~50 mA)
Bateria 9V alcalina9 V (cai rápido para 7 V sob carga)400–600 mAhConector DC / Vin6–8 horas
6×AA alcalinas9 V2000–2500 mAhConector DC / Vin~30 horas
4×AA alcalinas6 V (6,4 V novas)2000–2500 mAhNão recomendadoBaixa demais para o conector, alta demais para o pino 5V
3×AA alcalinas4,5 V2000–2500 mAhPino 5V~1 dia (instável perto do fim)
1×18650 + boost de 5 V3,0–4,2 V → 5 V2000–3500 mAhUSB ou pino 5V~30 horas (3000 mAh)
2×18650 em série (2S)7,4 V (6,0–8,4 V)2000–3500 mAhConector DC / Vin~2 dias (3000 mAh)
Power bank de 10000 mAh5 V (USB)~6000 mAh (em 5 V)USB~5 dias (se não desligar)

A clássica bateria 9V é a opção mais recomendada, graças ao clipe com plugue que encaixa direto no conector, mas também é a menos eficiente. Ela tem seis células pequenas por dentro, então sua capacidade fica em torno de apenas 400–600 mAh e sua resistência interna é alta; some um servo ou alguns LEDs aos 50 mA do Uno e a tensão logo cai abaixo de 7 V e a placa começa a reiniciar. Em uma placa com regulador linear, a capacidade em mAh da bateria define diretamente a autonomia, e os volts a mais só viram calor. Por isso, um suporte de 6×AA, que dá os mesmos 9 V, dura cerca de quatro vezes mais que uma bateria 9V. Explicamos as unidades de capacidade em detalhes em O que significa mAh?.

As pilhas AA são baratas e encontradas em qualquer lugar, mas é preciso escolher o número certo de células. O erro mais comum é usar 4×AA: 6 V não bastam para o conector, porque depois das quedas do diodo e do regulador só cerca de 4,2 V chegam ao barramento de 5 V, enquanto ligar o mesmo pack ao pino 5V significa 6,4 V com pilhas novas, o que passa do limite. As combinações certas são um pack de 6×AA (9 V) no conector DC e um pack de 3×AA (4,5 V) direto no pino 5V. Um Uno rodando a 16 MHz com 3×AA começa a ficar instável quando cada pilha cai abaixo de 1,25 V, então você não aproveita a capacidade inteira. As pilhas recarregáveis NiMH dão 1,2 V cada, por isso 4×NiMH (4,8 V) também é uma escolha popular para o pino 5V, mas células recém-carregadas podem passar de 5,5 V nos primeiros minutos.

Suporte de pilhas AA com fios
Os suportes de pilhas AA são vendidos em versões para 1, 2, 3, 4 e 6 pilhas; o de 6 é a escolha certa para o conector DC do Arduino Uno e o de 3, para o pino 5V. O fio vermelho é o positivo e o preto, o negativo.

Células Li-ion 18650 e conversores boost

A 18650 é uma célula recarregável de íons de lítio com 18 mm de diâmetro e 65 mm de comprimento, usada em baterias de notebook e em power banks. Sua tensão nominal é de 3,7 V; ela mede 4,2 V quando cheia e cerca de 3,0 V quando vazia. A capacidade real fica entre 2000 e 3500 mAh; células com 6800 ou 9900 mAh no rótulo são quase sempre falsificadas. Uma única 18650 pode ser usada com um Arduino de duas formas: elevando 3,7 V para 5 V com um conversor boost (por exemplo, um módulo MT3608 ou uma placa de power bank para 18650 pronta) e alimentando a USB ou o pino 5V, ou ligando duas células em série e conectando o pack 2S (7,4 V) ao conector DC. A segunda é a opção mais equilibrada para o Uno: começando em 8,4 V, a tensão fica na faixa confortável do regulador até cair para 3,5 V por célula (7 V no total). Ao usar um conversor boost, lembre-se de que a corrente puxada da bateria é maior que a da saída: um circuito que precisa de 200 mA em 5 V puxa cerca de 307 mA de uma célula de 3,7 V com 88% de eficiência.

Bateria recarregável Li-ion 18650
Células Li-ion 18650: 3,7 V nominais, 4,2 V quando cheias. Em projetos com Arduino, usa-se uma célula com conversor boost ou duas em série (2S, 7,4 V) pelo conector DC.
  • Proteção é obrigatória: descarregar uma célula Li-ion abaixo de 3,0 V encurta sua vida útil e pode ser perigoso. Use células protegidas ou uma placa de proteção (BMS).
  • O TP4056 é para uma célula: o módulo TP4056 carrega apenas uma célula (1S) até 4,2 V. Nunca carregue um pack 2S em série com um TP4056; use um circuito de carga com BMS 2S ou um carregador com balanceamento. Os detalhes de ligação estão em módulo carregador TP4056.
  • Cuidado com curto-circuito: uma 18650 pode fornecer dezenas de amperes em curto; não deixe fios desencapados e coloque um fusível e uma chave na linha da bateria.
  • Ajuste do boost: não ligue módulos ajustáveis como o MT3608 ao Arduino antes de ajustar a saída em 5,0 V.
  • Não misture células: em um pack em série, use células da mesma marca, com a mesma capacidade e o mesmo nível de carga.
Módulo carregador Li-ion TP4056 com proteção (USB-C)
Módulo TP4056 com proteção: a célula 18650 vai em B+ e B−, e o conversor boost ou a carga em OUT+ e OUT−. Ele carrega a célula até 4,2 V pela entrada USB-C.

Por que o meu power bank desliga sozinho?

Um power bank é um pack pronto com células de lítio, circuito de carga, proteção e boost de 5 V por dentro, então é o jeito mais fácil de rodar um Arduino com bateria: basta conectar o cabo USB. Só que a maioria dos power banks monitora a corrente de saída para poder desligar quando o celular termina de carregar, e corta a saída em 10–60 segundos quando a corrente cai abaixo de 50–100 mA. Um Nano puxando 20 mA ou um Uno puxando 50 mA fica abaixo desse limite, então a placa funciona por um tempo e depois desliga em silêncio. Há duas saídas: escolher um power bank com modo de baixa corrente (em alguns modelos ele é ativado apertando o botão duas vezes) ou fazer o Arduino puxar uma carga curta em intervalos regulares. Para o segundo método, ligue um resistor de 47 Ω, 1 W do barramento de 5 V ao coletor de um transistor NPN (BC337 ou 2N2222), o emissor ao GND e a base ao pino D7 por um resistor de 1 kΩ. Quando o transistor conduz, o resistor puxa cerca de 5 V / 47 Ω ≈ 106 mA e o power bank enxerga uma carga. Você mesmo pode conferir os valores com a calculadora da lei de Ohm.

C++ (Arduino IDE)
1// Powerbank uyanık tutma / powerbank keep-alive
2// D7 -> 1 kΩ -> NPN beyzi, kolektör -> 47 Ω -> 5V / D7 -> 1 kΩ -> NPN base, collector -> 47 Ω -> 5V
3const int LOAD_PIN = 7;
4const unsigned long PERIOD_MS = 8000;  // her 8 saniyede bir / every 8 seconds
5const unsigned long PULSE_MS = 300;    // 300 ms yük / 300 ms of load
6
7unsigned long pulseStart = 0;
8bool loadOn = false;
9
10void setup() {
11  pinMode(LOAD_PIN, OUTPUT);
12  digitalWrite(LOAD_PIN, LOW);
13}
14
15void loop() {
16  unsigned long now = millis();
17  if (!loadOn && now - pulseStart >= PERIOD_MS) {
18    digitalWrite(LOAD_PIN, HIGH);   // ~106 mA çek / draw ~106 mA
19    loadOn = true;
20    pulseStart = now;
21  }
22  if (loadOn && now - pulseStart >= PULSE_MS) {
23    digitalWrite(LOAD_PIN, LOW);    // yükü kapat / switch the load off
24    loadOn = false;
25  }
26  // projenin kodu burada, delay() kullanmadan / your project code here, without delay()
27}

Como o código usa millis() em vez de delay(), ele não trava o resto do projeto; explicamos essa abordagem em detalhes em millis() vs delay(). Puxar 106 mA durante 300 ms a cada 8 segundos acrescenta só cerca de 4 mA na média. Se o seu power bank ainda desligar, reduza o período para 5 segundos ou aumente o pulso para 500 ms; cada modelo usa um limite e um tempo de espera diferentes.

Alimentação separada para motores e servos, GND comum

Motores e servos são as cargas que mais dão problema quando você alimenta um Arduino com bateria. Um servo puxa um pico de corrente de várias centenas de miliamperes no instante em que começa a se mover, e motores CC puxam várias vezes a corrente normal na partida ou quando travam. Esse pico pode derrubar o barramento de 5 V por um instante; se a tensão cair o bastante, a detecção de subtensão (brown-out) do ATmega328P entra em ação e a placa reinicia sozinha. Além disso, o ruído das escovas dos motores atrapalha as leituras dos sensores. A regra é simples: alimente no máximo um servo pequeno pelo pino 5V do Arduino e rode todos os outros motores com uma fonte separada. Para entender como funcionam servos e motores CC, veja servo motor e controle de motor CC com L298N.

CargaCorrente normalCorrente de picoFonte recomendada
Micro servo SG90100–250 mA0,5 A ou mais (travado)Um: 5V do Arduino; mais: 5 V separados
Servo MG996R0,5–0,9 AAté 2,5 A5–6 V separados, pelo menos 2–3 A por servo
Motor CC com redução TT70–250 mA~1 A (partida, travamento)L298N ou L9110S + pack separado de 6–9 V
Motor de passo 28BYJ-48~240 mA~240 mA5 V separados para a placa ULN2003
LED WS2812B (cada)~20 mA (brilho médio)60 mA (branco total)5 V separados acima de 30 LEDs
Minibomba d'água submersível100–200 mAVárias vezes mais na partidaRelé ou MOSFET + fonte separada
  1. Escolha uma fonte separada para os motores: 5–6 V para servos (4×AA NiMH ou um LM2596 ajustado em 5–6 V) e, para motores CC, um pack compatível com a tensão do motor (por exemplo, 2S 18650).
  2. Ligue o positivo da fonte só aos fios vermelhos dos servos ou à entrada de alimentação do driver de motor; não ligue ao pino 5V do Arduino.
  3. Alimente o Arduino pela entrada dele: você também pode ligar o mesmo pack 2S ao conector DC, desde que a corrente dos motores não passe pelo regulador do Arduino.
  4. Ligue o negativo (GND) da fonte ao pino GND do Arduino. Sem um GND comum, o sinal de controle não funciona.
  5. Ligue o fio de sinal laranja ou amarelo do servo a um dos pinos digitais do Arduino (por exemplo, D9); a biblioteca Servo também funciona em pinos sem a marca PWM.
  6. Coloque um capacitor eletrolítico de 470–1000 µF na alimentação dos servos, perto deles; atenção à polaridade.
  7. Se estiver usando um L298N, ligue a alimentação dos motores ao borne de 12V; se a fonte passar de 12 V, tire o jumper 5V-EN e alimente o Arduino com uma fonte própria.
Módulo regulador de tensão abaixador (buck) LM2596 step-down
Módulo step-down LM2596: ele reduz com eficiência e sem esquentar uma tensão mais alta, como a de um pack Li-ion 2S ou de uma fonte de 12 V, para 5–6 V ajustados no trimpot; é o jeito mais prático de montar uma linha de alimentação separada para servos e fitas de LED.
A lógica do GND comum é esta: a tensão é sempre medida entre dois pontos. Quando o pino de sinal do Arduino fornece 5 V, são 5 V em relação ao GND do Arduino, enquanto o servo mede em relação ao GND da própria fonte. Se os dois terras não estiverem ligados, o servo enxerga o sinal como uma tensão sem sentido e treme ou nem se mexe. Para mais detalhes, veja O que é GND? e, para montar uma linha separada de 5–6 V, o guia de ajuste do LM2596.

Como calcular a corrente e a autonomia?

A pergunta de verdade em um projeto a bateria é “quanto tempo vai durar?”. A fórmula básica é simples: Autonomia (horas) = Capacidade da bateria (mAh) × 0,85 / Corrente média (mA). O fator 0,85 leva em conta que uma bateria nunca entrega toda a capacidade nominal: a capacidade cai com correntes altas e no frio, o circuito para antes de a bateria esgotar por completo e os conversores acrescentam perdas. Para baterias cuja tensão cai cedo, como a 9V, usar 0,7 é mais realista. Se o seu projeto passa a maior parte do tempo dormindo, calcule primeiro a corrente média: Corrente média = (Corrente ativa × tempo ativo + Corrente em sono × tempo em sono) / tempo total. Em vez de fazer a conta à mão, você pode usar a calculadora de duração da bateria; informe a capacidade, as correntes acordado e em sono e o intervalo entre despertares, e ela mostra a autonomia em horas, dias ou meses.

CenárioCorrente médiaBateriaAutonomia aprox.
Uno + LCD I2C, sempre ligado~75 mA2S 18650 (3000 mAh)~34 horas
Nano + sensor + pulso para manter o power bank ligado~29 mA (25 + 4)Power bank de 10000 mAh (~6000 mAh, 5 V)~7 dias
Módulo ESP32: acordado 5 s a cada 10 minutos (120 mA), 150 µA em sono~1,15 mA18650 (3000 mAh)~3 meses
Mesmo código, placa de desenvolvimento com 5 mA em sono~6 mA18650 (3000 mAh)~18 dias
Pico + MicroPython, sempre ligado~25 mA3×AA NiMH (2000 mAh)~68 horas

Medir sempre é melhor que chutar. Coloque o multímetro na escala de corrente (mA) e ligue-o em série entre a bateria e o circuito para ver o consumo real; mostramos como em como usar um multímetro. Se a leitura for maior do que você esperava, olhe primeiro o consumo da própria placa: no Uno, o chip USB-serial (ATmega16U2), o LED de alimentação e o regulador puxam mais de 30 mA mesmo com o ATmega328P dormindo. Por isso, projetos que precisam de muita autonomia preferem placas sem chip USB, como o Arduino Pro Mini; um Pro Mini sem o LED de alimentação e sem o regulador chega a microamperes no modo sleep.

Passo a passo: coloque o seu projeto para rodar com bateria

  1. Com o projeto rodando pela USB, meça a corrente média e a de pico com um multímetro; meça também enquanto o servo ou o motor está se movendo.
  2. Separe as cargas de corrente alta, como motores, servos e fitas de LED, e planeje uma fonte separada para elas.
  3. Escolha a entrada da placa: no Uno, um pack de 7–12 V no conector DC ou 5 V regulados na USB ou no pino 5V; no Pico, 1,8–5,5 V no VSYS.
  4. Calcule a capacidade necessária para a autonomia que você quer ou use a calculadora de duração da bateria.
  5. Coloque uma chave liga/desliga na linha positiva da bateria; confira se os packs Li-ion têm placa de proteção (BMS).
  6. Carregue o código pela USB, depois desconecte a USB e teste com a bateria; confira com o multímetro a tensão no pino 5V enquanto o servo se move.
  7. Monitore a tensão da bateria pelo código e dê um aviso quando ela cair abaixo de um valor definido (código abaixo).

Medindo a tensão da bateria com o Arduino

Em vez de adivinhar quando a bateria vai acabar, você pode medir a tensão dela. As entradas analógicas do Arduino leem no máximo 5 V, então não dá para ligar um pack 2S, que chega a 8,4 V, direto no A0; você precisa de um divisor de tensão. Dois resistores de 100 kΩ e 10 kΩ dividem a tensão por 11: 8,4 V viram cerca de 0,76 V no A0. Como o barramento de 5 V da placa pode variar à medida que a bateria enfraquece, é mais preciso medir em relação à referência interna de 1,1 V, que não depende da tensão de alimentação. Você pode escolher os valores dos resistores para o seu pack com a calculadora de divisor de tensão e ler mais em divisor de tensão.

C++ (Arduino IDE)
1// 2S Li-ion paket gerilimini ölçme / measuring a 2S Li-ion pack voltage
2// Pil+ -> 100k -> A0 -> 10k -> GND / pack+ -> 100k -> A0 -> 10k -> GND
3const int BAT_PIN = A0;
4const int LED_PIN = 13;      // pil zayıf uyarısı / low-battery warning
5const float R1 = 100000.0;   // üst direnç / top resistor
6const float R2 = 10000.0;    // alt direnç / bottom resistor
7const float VREF = 1.1;      // dahili referans, multimetreyle düzelt / internal reference, calibrate with a multimeter
8const float LOW_V = 6.6;     // 2S için alt sınır (3,3 V/hücre) / low limit for 2S (3.3 V per cell)
9
10void setup() {
11  Serial.begin(9600);
12  pinMode(LED_PIN, OUTPUT);
13  analogReference(INTERNAL);   // 1,1 V referans (Uno/Nano) / 1.1 V reference (Uno/Nano)
14  analogRead(BAT_PIN);         // ilk ölçümü at / discard the first reading
15  delay(10);
16}
17
18void loop() {
19  long sum = 0;
20  for (int i = 0; i < 16; i++) {   // 16 ölçümün ortalaması / average of 16 readings
21    sum += analogRead(BAT_PIN);
22    delay(2);
23  }
24  float pinV = (sum / 16.0) * VREF / 1024.0;
25  float batV = pinV * (R1 + R2) / R2;
26
27  Serial.print("Pil / Battery: ");
28  Serial.print(batV, 2);
29  Serial.println(" V");
30
31  digitalWrite(LED_PIN, batV < LOW_V ? HIGH : LOW);   // zayıfsa LED yanar / LED on when low
32  delay(2000);
33}

Ligue a ponta de cima do divisor ao positivo da bateria depois da chave liga/desliga, para que o divisor não descarregue a bateria com o aparelho desligado. A referência interna de 1,1 V pode variar cerca de ±10% de um chip para outro: compare a tensão da bateria medida com o multímetro com a do Monitor Serial e corrija o VREF (por exemplo, para 1.08). O divisor puxa cerca de 76 µA o tempo todo, o que praticamente não afeta a autonomia. O código é para o Uno e o Nano; no Mega, a referência se chama INTERNAL1V1. O limite de 6,6 V corresponde a 3,3 V por célula; nesse ponto as células estão quase vazias, e descer abaixo de 3,0 V por célula as danifica. Se o pack alimenta o conector DC, o barramento de 5 V começa a cair por volta de 7 V, então definir LOW_V como 7.0 também faz sentido.

Alimentando um ESP32 com bateria

As placas de desenvolvimento ESP32 trabalham com 3,3 V e podem ser alimentadas de três formas: pela porta USB, pelo pino 5V (VIN em algumas placas) ou direto pelo pino 3V3. A Espressif deixa claro que essas opções não devem ser usadas ao mesmo tempo e que só uma deve ser escolhida. A tensão aplicada ao pino 5V passa pelo regulador LDO de 3,3 V da placa (um AMS1117 na maioria dos clones), enquanto o pino 3V3 só aceita 3,0–3,6 V regulados. Ao transmitir por Wi-Fi, o ESP32 tem picos de até 240 mA, então precisa de uma fonte que forneça pelo menos 500 mA; caso contrário, reinicia com o erro “Brownout detector was triggered” (detalhes em brownout no ESP32). Não ligue uma 18650 sozinha direto no pino 3V3: com 4,2 V quando cheia, ela passa do limite. O pino 5V também não é uma boa opção, porque o AMS1117 precisa de uma queda de cerca de 1,1 V, então, conforme a tensão da célula cai, a saída fica abaixo de 3,3 V. As opções certas são uma 18650 com boost de 5 V no pino 5V, um regulador de 3,3 V de baixa queda (LDO) que forneça pelo menos 500 mA ou uma placa ESP32 com carregador Li-ion embutido. O que realmente define a autonomia, porém, é o ESP32 passar a maior parte do tempo em deep sleep (sono profundo); o chip consome cerca de 10 µA nesse modo, mas o chip USB-serial, o LED e o regulador das placas de desenvolvimento podem levar esse valor à casa dos miliamperes. É daí que vem a diferença entre 3 meses e 18 dias na tabela acima; para mais detalhes, veja deep sleep do ESP32.

C++ (Arduino IDE)
1// ESP32: 18650 gerilimini ölç, sonra derin uykuya geç / measure the 18650, then deep sleep
2// Pil+ -> 100k -> GPIO34 -> 100k -> GND / cell+ -> 100k -> GPIO34 -> 100k -> GND
3const int BAT_PIN = 34;                         // yalnız giriş, ADC1 / input-only, ADC1
4const uint64_t SLEEP_US = 60ULL * 1000000ULL;   // 60 saniye / 60 seconds
5
6void setup() {
7  Serial.begin(115200);
8  uint32_t mv = 0;
9  for (int i = 0; i < 16; i++) {
10    mv += analogReadMilliVolts(BAT_PIN);        // kalibre milivolt / calibrated millivolts
11  }
12  float batV = (mv / 16.0) * 2.0 / 1000.0;      // bölücü yarıya indirir / the divider halves it
13  Serial.printf("Pil / Battery: %.2f V\n", batV);
14
15  if (batV < 3.3) {
16    Serial.println("Pil zayif / Battery low");  // işi atla, pili koru / skip the work, protect the cell
17  } else {
18    // sensörü oku, Wi-Fi ile gönder / read the sensor, send over Wi-Fi
19  }
20
21  esp_sleep_enable_timer_wakeup(SLEEP_US);      // 60 sn sonra uyan / wake up after 60 s
22  Serial.flush();
23  esp_deep_sleep_start();                       // loop() hiç çalışmaz / loop() never runs
24}
25
26void loop() {
27}

A cada despertar, o código mede a tensão da bateria, faz o seu trabalho e volta a dormir com um timer de 60 segundos; como o ESP32 reinicia o programa do começo ao acordar do deep sleep, o loop() nunca é executado. O GPIO 34 é um pino ADC1 somente de entrada e funciona com o Wi-Fi ligado, enquanto os pinos ADC2 não podem ser usados junto com o Wi-Fi. A analogReadMilliVolts() usa a calibração de fábrica do chip para devolver milivolts diretamente. O divisor de 100 kΩ + 100 kΩ reduz 4,2 V para 2,1 V e puxa apenas 21 µA; se a leitura estiver ruidosa, coloque um capacitor de 100 nF entre o GPIO 34 e o GND. Para os seus primeiros passos com o ESP32, O que é o ESP32? é um bom ponto de partida.

Alimentando um Raspberry Pi Pico com bateria

O Raspberry Pi Pico é uma das placas mais fáceis de rodar com bateria, porque, em vez de um regulador linear, ele tem um regulador chaveado buck-boost. Aplique ao pino VSYS qualquer tensão entre 1,8 e 5,5 V e a placa a converte com eficiência para 3,3 V; ela continua funcionando mesmo quando a entrada cai abaixo de 3,3 V. Isso significa que 2 ou 3 pilhas AA, uma única 18650 ou uma LiPo de uma célula podem ser ligadas direto entre VSYS e GND, sem nenhum módulo extra. O único cuidado é o uso junto com a USB: os 5 V da USB (VBUS) chegam ao VSYS por um diodo Schottky, então, se a bateria estiver ligada direto ao VSYS e você conectar a USB, a USB tenta empurrar corrente para dentro da bateria. A solução recomendada pela Raspberry Pi é ligar a bateria ao VSYS por um diodo Schottky próprio (por exemplo, um 1N5817). O pino 3V3 fornece no máximo cerca de 300 mA para circuitos externos, e levar o pino 3V3_EN ao GND desliga o regulador e, portanto, a placa inteira. Para uma visão geral da placa, veja O que é o Raspberry Pi Pico?.

MicroPython
1from machine import ADC, Pin
2import time
3
4vsys = ADC(29)            # VSYS/3 ölçer (Pico) / measures VSYS/3 (Pico)
5usb = Pin(24, Pin.IN)     # USB takılıysa 1 / 1 when USB is connected
6CONV = 3.3 / 65535        # ham değeri volta çevir / raw value to volts
7
8while True:
9    total = 0
10    for _ in range(16):   # 16 ölçümün ortalaması / average of 16 readings
11        total += vsys.read_u16()
12    volts = total / 16 * CONV * 3   # kart içindeki bölücü 3'e böler / on-board divider divides by 3
13    source = "USB" if usb.value() else "Pil / Battery"
14    print("{}: VSYS = {:.2f} V".format(source, volts))
15    if not usb.value() and volts < 3.3:   # 3xAA ya da 18650 için alt sınır / low limit for 3xAA or a 18650
16        print("Pil zayif! / Battery low!")
17    time.sleep(5)

No Pico, o GP29 mede um terço do VSYS por um divisor na própria placa, enquanto o GP24 lê 1 quando a USB está conectada. Assim, sem nenhuma peça extra, você descobre tanto a tensão da bateria quanto se a placa está rodando pela USB ou pela bateria. Se você ligou a bateria por um diodo Schottky, como recomendado, o VSYS mostra cerca de 0,2–0,3 V a menos que a tensão da bateria. A leitura supõe que a referência do ADC é de 3,3 V; graças ao regulador buck-boost, essa referência fica estável mesmo quando a bateria enfraquece. No Pico W, o GP29 e o GP24 são compartilhados com o chip sem fio, então este código não funciona como está; lá, o estado da USB é lido com Pin("WL_GPIO2"). Para aumentar a autonomia, use machine.lightsleep() em vez de time.sleep() entre as leituras.

Ideias de projetos com bateria

  • Carrinho robô controlado por Bluetooth: alimente os motores e o Arduino com um pack 2S de 18650; detalhes em como fazer um carrinho robô.
  • Robô que desvia de obstáculos: evite reinicializações alimentando os motores pelo L298N em uma linha separada e o Arduino pelo conector DC (robô que desvia de obstáculos).
  • Voltímetro com indicador de bateria: mostre em um LCD o valor medido com um divisor de tensão (como fazer um voltímetro com Arduino).
  • Estação de umidade para o jardim: mantenha um ESP32 em deep sleep, meça a umidade do solo uma vez por hora e faça-o funcionar por meses com uma única 18650.
  • Registrador GPS portátil: grave o percurso da sua trilha com um GPS NEO-6M e um power bank.
  • Luz noturna com Pico a pilha: um Pico alimentado por 3×AA pelo VSYS acende LEDs quando o ambiente escurece.

Erros comuns e como resolvê-los

SintomaCausa provávelSolução
A placa reinicia quando o servo se moveA corrente do servo derruba o barramento de 5 VAlimente o servo separadamente, use GND comum e um capacitor de 470–1000 µF
A bateria 9V acaba em poucas horasUma bateria 9V tem só 400–600 mAhUse um pack 6×AA ou 2S 18650
O power bank desliga em 10–60 segundosA corrente está abaixo do limite de desligamento automáticoModo de baixa corrente ou um pulso para mantê-lo ligado
O regulador esquenta muitoTensão de entrada alta e corrente altaBaixe a entrada para 7–9 V ou gere os 5 V com um módulo buck
As leituras analógicas variam com bateriaEntrada abaixo de 7 V, o barramento de 5 V caiAumente a tensão do pack ou use a referência interna de 1,1 V
A placa esquenta ou não ligaPolaridade invertida ou mais de 5,5 V no pino 5VDesligue a fonte, confira a polaridade e a tensão com um multímetro
O ESP32 reinicia ao conectar ao Wi-FiA fonte não fornece a corrente de pico (brownout)Fios curtos e grossos, um capacitor de 470 µF, uma fonte mais forte
No Pico, a bateria esquenta com a USB conectadaA USB empurra corrente para a bateria pelo VSYSColoque um diodo Schottky na linha da bateria
Se você está montando um projeto permanente com baterias de lítio, coloque um fusível (por exemplo, de 2 A) e uma chave na linha da bateria, acomode as células em uma caixa fechada, mas ventilada, e nunca deixe o projeto sem supervisão enquanto carrega. Retire de uso imediatamente qualquer célula estufada, amassada ou quente.

Uma boa alimentação é metade do que faz um projeto funcionar com estabilidade: escolha a entrada certa, alimente os motores separadamente, una os terras e calcule a autonomia desde o início. Quando estiver pronto para montar um projeto a bateria, confira no app BlueGrays o carrinho controlado por Bluetooth com L298N, o robô que desvia de obstáculos, a estação de irrigação inteligente, o voltímetro digital com LCD e os projetos de economia de bateria com deep sleep do ESP32; cada um mostra o esquema do circuito, as ligações e o código passo a passo.

Perguntas frequentes

O Arduino funciona com bateria 9V?

Sim, uma bateria 9V pode ser ligada ao conector DC ou ao pino Vin do Arduino Uno, e a placa funciona tranquilamente na faixa de 7–12 V. Porém, uma bateria 9V alcalina tem só 400–600 mAh, então sozinha ela mantém um Uno ligado por cerca de 6–8 horas, e bem menos quando você acrescenta um servo ou um motor. Para projetos que precisam funcionar por muito tempo, 6×AA ou duas células 18650 em série são uma escolha melhor.

Posso alimentar o Arduino com um power bank?

Pode; basta conectar o power bank à porta USB do Arduino com um cabo USB, e a placa fica protegida pelo fusível da USB. O problema é que muitos power banks não detectam cargas abaixo de 50–100 mA e desligam a saída depois de pouco tempo. Você pode escolher um modelo com modo de baixa corrente ou acrescentar um circuito que faz o Arduino puxar uma carga curta a cada poucos segundos para manter o power bank ligado.

Posso alimentar o Arduino com uma fonte de 12V?

Sim, 12 V é o topo da faixa recomendada de 7–12 V do Uno e é seguro pelo conector DC. Mas, como o regulador linear da placa transforma os 6–7 V a mais em calor, ele vai superaquecer se você puxar mais de cerca de 150 mA do barramento de 5 V. Se precisar de mais corrente, use uma fonte de 9 V ou gere os 5 V com um módulo buck separado; já o Uno R4 funciona sem problemas com até 24 V.

Posso alimentar o Arduino pelo pino 5V?

Pode, mas o pino 5V pula o regulador, o diodo contra polaridade invertida e o fusível da USB da placa, então não há proteção nenhuma. Ligue só uma fonte regulada que você mediu com o multímetro e que fique entre 4,8 e 5,2 V (por exemplo, um LM2596 ou um módulo boost ajustado em 5,0 V). Uma fonte acima de 5,5 V, ou ligada ao contrário, pode destruir o ATmega328P na hora.

O Arduino funciona com uma bateria Li-ion de 3,7 V?

Um Uno não funciona de forma confiável direto com 3,7 V: é pouco demais para o conector DC e não basta para o pino 5V. Você precisa elevar uma única célula para 5 V com um conversor boost e alimentar a USB ou o pino 5V, ou então ligar duas células em série e conectar o pack de 7,4 V ao conector DC. Já um Pro Mini de 3,3 V (no pino RAW) e um Raspberry Pi Pico (no VSYS) funcionam tranquilamente direto com uma única célula, e um ESP32 também, com um regulador de 3,3 V de baixa queda.

Quanto tempo um Arduino funciona com bateria?

A autonomia é obtida dividindo a capacidade pela corrente média: capacidade (mAh) × 0,85 / corrente média (mA). Por exemplo, um Uno que puxa 50 mA funciona por cerca de 50 horas com um pack 2S de 18650 de 3000 mAh. Um ESP32 com deep sleep pode durar meses com a mesma capacidade; a calculadora de duração da bateria do BlueGrays também leva em conta a corrente em sono.

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
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
ESP32 em sono profundo — Economia de bateria (OLED + contador na RAM RTC)
#135Avançado
Premium

ESP32 em sono profundo — Economia de bateria (OLED + contador na RAM RTC)

O modo de sono profundo do ESP32 reduz o consumo de corrente para ~10 µA ao desligar a CPU e a maioria dos periféricos, sendo essencial para dispositivos IoT alimentados por bateria. Neste projeto, usamos três fontes de despertar: um temporizador (15 segundos), um pino externo (EXT0 — botão no GPIO 33) e toque (T0/GPIO 4). As variáveis marcadas com RTC_DATA_ATTR são preservadas durante o sono profundo, mantendo os contadores de inicializações e de despertares por temporizador e botão.

4.3(10)
16
Servo motor com ESP32 (controle por potenciômetro)
#118Intermediário
Premium

Servo motor com ESP32 (controle por potenciômetro)

Neste projeto, controlamos um servo motor SG90 com um potenciômetro. Ajustamos o ângulo do servo mapeando o valor analógico lido do potenciômetro para a faixa de 0 a 180 graus. A biblioteca ESP32Servo gera sinais para o servo nos GPIOs do ESP32 adequados e capazes de operar como saída; este projeto usa o GPIO 18. Esse é um método básico de controle para braços robóticos, estabilizadores de câmera e mecanismos de portas automáticas.

4.3(29)
42