Esquema Nobreak DC-DC para modem/câmeras

Conectado na fonte:

Fonte desligada:

Bonus:
Fiação do BMS (Sim, minhas soldas são muito feias, hehe)





Aparentemente o bms está entrando em modo proteção, pq caso contrário vc sempre terá tensão onde vc esta conectando o multímetro.
Tenta desligar os fios da entrada do xl e vê se o comportamento é o mesmo

Mesma coisa. Só de plugar qualquer coisa no BMS ele buga. Acho que talvez eu tenha feito algum curto na hora de soldar. Conferi todas as tensões das baterias nos pontos corretos de 0, 4.2, 8.4, 12.6 e 16.8V. Outro teste que fiz foi tentar ligar a fonte e medir a corrente que está entrando no BMS. Dá zero. Se eu medir a corrente de curto circuito do BMS sozinho também dá zero. Acho que foi isso. Pedi outro e vamos ver quando chegar se faz diferença.
Eu tive que trocar as soldas do BMS, porquê inicialmente usei fios MUITO grandes, e ficou bem ruim. Então é bem provável que eu tenha danificado o módulo.
Mais uma vez obrigado pela ajuda Walber! Você me animou a fazer algo que sempre quis fazer e nunca tirei a bunda do sofá. Os videos gringos que eu assistia sempre eram de coisas mais complexas, ou usavam componentes não existentes no Brasil.

1 curtida

Acho que identifiquei. Trilha rompida. Com certeza por falta de cuidado ao soldar. Cometi o erro de conectar a bateria antes do BMS a primeira vez. Na segunda que tomei o cuidado de conectar os fios ao BMS, e apenas depois nos pontos da bateria. Tento novamente na terça, quando chega o outro BMS.

Vc pode testar o resto do circuito.
Liga a fonte no lugar do bms para simular a bateria.

BMS novo chegou. Funcionando, era meu erro de solda mesmo. Testei apenas a função de UPS por algumas vezes com um roteador, sem testar tempo de autonomia. Ao longo da semana testo o resto, e coloco o monitoramento via esp32. Regulei a fonte para 19V e a entrada do BMS para 17V. De acordo com o datasheet entre 16.8 e 18.1 é aceitável, então preferi regular uma tensão um pouco maior que a nominal. Fora isso, tudo igual. Já quero fazer mais dois para o restante da rede que não fica no mesmo lugar.
Quando eu conseguir testar com o RPI4 aviso aqui também.

Mas o que vc errou na solda?

Não adianta colocar 17v, o bms vai cortar com 16,8x

Errei não necessariamente a solda em si, mas o cuidado com os fios ao soldar. Deixei alguns entrarem em curto, e isso deve ter queimado a trilha que mostrei na foto anterior. Se reconstruir a trilha, é capaz de funcionar, mas preferi trocar o BMS, já que as baterias são mais sensíveis e caras. Vou voltar a entrada do bms para 16.8V então. Atualizo quando tiver números, ou quando fizer o segundo.

Seguem fotos do segundo, com duas baterias para o outro roteador.


Sobre o RPI4:
Peguei um cabo que tinha quebrado uma ponta USBC-USBC da Brexlink. Cabo ótimo, mas que sofreu um impacto e quebrou uma das pontas. Desmontei, estava de acordo com as especificações do consórcio USB, inclusive com as cores certas dos fios. Liguei ele no XL4015 regulado para 5.20V, e pluguei em um dispositivo barato que tinha, com entrada USBC. Dispositivo queimou imediatamente, a bateria expandiu e tudo mais. Obviamente discartei apropriadamente, mas me deu medo de usar qualquer coisa no RPI4 com cabo USBC. Muito obscuras as especificações. Quando criar coragem, vou fazer uma saída 5V± e ligar o RPI4 pelo GPIO mesmo, em vez da porta USBC.
Estou compartilhando minhas experiências caso alguém se encontre na mesma situação e/ou tenha dicas.
Não testei tempo de autonomia de nenhum dos dois UPS, além de 30min. Geralmente na minha região não passa de 30min sem energia, então já está ótimo!

O ESPhome, com o ina219 vou instalar no mesmo UPS que for prover energia para o RPI4, então por enquanto não tenho o que dizer a respeito.

@Walber meu código esta idêntico ao seu, com a exceção de que os valores de referencia são outros. in_max de 12.6 e in_min de 9. O meu problema é que, medindo a tensão das baterias tenho 12.6 mas o wemos me mostra 12.1. Existe algum tipo de calibração a ser feita?

Vc alterou essa parte?
Principalmente o offset

Fiz as seguinte alterações baseadas nas tensões do meu banco de baterias:

  • offset: 0.020
    shunt_voltage:
    name: “No-breack HA Shunt Voltage”
    max_voltage: 12.6V # tensão máxima do banco de baterias
    max_current: 3.0A # amperagem ajustada no boost
    update_interval: 20s

Ficou certo com essa alteração?

Não. Da forma que esta o sensor mede 12.04 e a bateria esta medindo , fisicamente, 12.6. Não consigo encontrar a fora de calibrar o ina219 para que a medição dele fique igual ao da medição física.

Segue o código completo:

esphome:
  name: no-breack-ha
  comment: Monitoramento da carga/estado das baterias e informação de falta de energia - Wemos D1 mini
  platform: ESP8266
  board: d1_mini

wifi:
  ssid: "Rede_Wifi"
  password: !secret senhapaulo
  domain: .iot.local
  fast_connect: on
  manual_ip:
    static_ip: 192.168.1.xxx
    gateway: 192.168.1.1
    subnet: 255.255.255.0
    dns1: 192.168.1.1

  ap:
    ssid: "no-breack-ha"
    password: !secret senhaap

logger:

api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

ota:
  password: !secret senhaota
  
captive_portal:

web_server:

globals:
  - id: in_min
    type: float
    restore_value: no
    initial_value: '9.00'

  - id: in_max
    type: float
    restore_value: no
    initial_value: '12.01'

  - id: out_min
    type: float
    restore_value: no
    initial_value: '0.0'

  - id: out_max
    type: float
    restore_value: no
    initial_value: '100.00'


i2c:
  sda: D2
  scl: D1
  scan: true
  id: bus_a

sensor:
  - platform: ina219
    address: 0x40
    shunt_resistance: 0.1 ohm
    current:
      name: "No-breack HA Corrente"
      id: no_breack_ha_currente
    power:
      name: "No-breack HA Consumo"
      on_value:
       then:
        - component.update: battery_status
        - component.update: battery_level
    bus_voltage:
      name: "No-breack HA Tensão"
      id: no_breack_ha_voltage
      filters:
      - offset: 0.020
    shunt_voltage:
      name: "No-breack HA Shunt Voltage"
    max_voltage: 12.6V
    max_current: 3.0A
    update_interval: 20s

  - platform: template
    name: "No-breack HA Nível da Bateria"
    id: battery_level
    device_class: BATTERY
    state_class: "measurement"
    unit_of_measurement: "%"
    accuracy_decimals: 2
    update_interval: 60s
    lambda: |-
      if (id(no_breack_ha_voltage).state > (id(in_max) - 0.100)) {
        return 100.0;
      } else if (id(no_breack_ha_voltage).state < id(in_min)) {
        return 0.0;
      } else {
        return ((id(no_breack_ha_voltage).state) - id(in_min)) * (id(out_max) - id(out_min)) / (id(in_max) - id(in_min)) + id(out_min);
      }

text_sensor:
  - platform: template
    name: "No-breack HA Status da bateria"
    id: battery_status
    icon: mdi:battery-high
    update_interval: never
    lambda: |-
      if (id(no_breack_ha_currente).state <= 0.01) { // carregando
        if (id(no_breack_ha_voltage).state >= 12.01) { // carregada
          return {"Carregada"};
        } else { // carregando
          return {"Descarregando"};
        }
      } else {
        return {"Carregando"};
      }

binary_sensor:
  - platform: gpio
    pin:
      number: D5
      mode:
        input: true
        pullup: false
    name: "No-breack HA AC"
    device_class: power
    filters:
      - delayed_on_off: 100ms

button:
  - platform: restart
    id: restart_button
    name: No-breack HA Reiniciar
    icon: mdi:restart

Tem que alterar o offset, vc deixou igual o meu.

Entendi, de onde tiro o valor do meu offset? Onde meço ou vejo este valor?

Será que vc não ligou o vcc e gnd invertido?
Aqui usei uma máquina de cartão para fazer o teste. Funcionou normal.
Para fazer a ligação usei um cabo da fonte que veio no kit do rpi. Era uma fonte ruim mas o cabo apesar de simples é bom.

Seu offset deve ficar em torno de 0.58.
É a diferença entre a leitura real e a leitura do ina219 sem offset.

Perfeito, obrigado pelo retorno. Vou ajustar. :pray: