O robô está aberto porque o trilho de 5 V do Raspberry ficava em 4,4 V. A causa medida é fio de kit Arduino em ramo de potência — mas há uma segunda hipótese aberta no conversor, e ela precisa ser separada antes de fechar o chassi.
6trilhos na placa de distribuição
5peças cortadas da perfboard 6x28
1ponto comum entre os dois terras
0,03 Vqueda em 2× 20 AWG a 3 A — era 0,38 V
5alertas antes de energizar
17pendências de medição abertas
P0 · Segunda causa raiz possívelSe o XL4015E1 do Pi for a versão CC/CV com limite de corrente baixo, ele afunda sob carga independentemente da bitola do fio.
P1 · XL6019 é boost, não buck-boostCom o pack 3S2P cheio em 12,6 V a saída passa direto. O alvo de 11,8 a 12,2 V não é alcançável em carga cheia.
P0 · Jack P1 antes do fusívelOs dois packs saem para o P1 da borda externa antes da chave. Um curto no jack, ou no fio até a borda, não é protegido por nada.
P1 · Hall esquerdo sem trimpotSem ajuste eletrônico, resta o entreferro e a polaridade do ímã. A razão L/R variável aponta detecção intermitente.
Grafo 01
Dos packs até os consumidores
Clique em um nó para destacar suas dependências. Tracejado amarelo é ramo previsto mas desligado; linha teal cruza os dois domínios.
Mesma topologia em texto
O caminho real na base
Cada pack sai para o P1 fêmea da borda externa e de lá vai para o botão on/off. Os conversores ficam na base; a placa do topo recebe só tensão já convertida.
DOMÍNIO SISTEMA — pack 3S2P + BMS · 9,9 a 12,6 V conforme a carga
══════════════════════════════════════════════════════════════════════════════
┌── rabicho 20 AWG ──► [ P1 fêmea SIS ] ◄ borda externa
│ só corrente de carga
│
pack 3S2P ──────────●──────► SW_SYS ──► ┌──── PEÇA G · 6x4 ────┐
+ BMS emenda (+) │ L6 ═ VBAT_SYS+ ├──► LM2596 ──► 5V_LOGIC
(sem fusível) perto do pack │ L1 ═ GND_SYS ├──► XL4015E1 ⚠ ──► 5V_PI
│ └──────────────────────┴──► XL6019E1 ⚠ ──► 12V_KIN
└── GND ──[2× 20 AWG]──────► L1 da peça G
(o GND não passa pela chave)
DOMÍNIO MOTOR — pack 3S original · 9,9 a 12,6 V
══════════════════════════════════════════════════════════════════════════════
┌── rabicho 20 AWG ──► [ P1 fêmea MOT ] ◄ borda externa
│
pack 3S ──[FUSE 10A]──●──► SW_MOT ──┬──► XL4015E1 ──► 8V_MOT
original emenda (+) │
│ └──► LM2596 ──► 5V_MOT ✂ ENTRADA DESLIGADA
└── GND ──[2× 20 AWG]────────────────────► GND_MOT
│ │ │ │ │ │
5V_LOGIC+ 5V_PI+ 12V_KIN+ GND_SYS 8V_MOT+ GND_MOT
│ │ │ │ │ │
└───────────┴───────────┴──────────┴──► sobe pro TOPO ◄────┴────────────┘
O que a bateria entrega não é 12 V fixo: um pack 3S vai de 9,9 V descarregado a 12,6 V cheio, com 11,1 V nominal. Essa faixa é exatamente o motivo de o XL6019 não segurar 12,0 V com o pack cheio.
Correção
O P1 vira derivação, não passagem
Do jeito antigo os dois fios pousavam no mesmo terminal de latão do jack, e toda a corrente de uso do robô atravessava as abas do P1.
COMO ESTAVA — corrente de uso passa pelo terminal do jack
pack + ─────────────────► [ P1 terminal ] ─────────────────► chave ──► módulos
aba de latão fino, contato que degrada
COMO FICA — o P1 vira derivação
pack + ──┬──[ emenda ocidental + termorretrátil ]──[2× 20 AWG]──► chave ──► módulos
│
└──[ rabicho 20 AWG ]──► [ P1 terminal ] só corrente de carga
POSIÇÃO DO FUSÍVEL DE 10 A
hoje pack ──┬──────────────► P1 ◄ sem proteção
└── FUSE 10A ──► chave ──► módulos
melhor pack ── FUSE 10A ──┬──► P1 ◄ protegido
└──► chave ──► módulos
Fazer a emenda perto do pack, não na borda: assim o tronco de uso não faz o desvio até a borda externa. Economiza cerca de 0,7 m de cobre de ida e volta — a 3 A vale ~0,04 V em 2× 20 AWG, e valeria 0,44 V se ainda fosse jumper de 28 AWG. Reposicionar o fusível não custa componente novo, é o mesmo fusível em outra posição.
segurança
O P1 está sempre energizado
Como o jack fica antes da chave, ele permanece na tensão do pack mesmo com o robô desligado.
Reforça a regra: soldar sempre com os dois packs desconectados no conector.
No ramo de sistema não há fusível, então o P1 do 3S2P depende só do BMS.
operação
Carregar com a chave desligada
A chave é o interlock de carga. Com ela ligada, o carregador alimenta o pack e os módulos ao mesmo tempo.
O carregador enxerga corrente permanente e pode nunca terminar o ciclo em CV.
Conferir a polaridade das duas P1: centro positivo, malha no GND.
Etiqueta no chassi ao lado de cada P1: DESLIGAR ANTES DE CARREGAR.
inalterado
A placa A não muda
Ela fica no topo e recebe só tensão convertida.
Continua com 11 colunas e o mesmo mapa de furos.
O que encolheu foi D, E e F, de onde saiu espaço para a peça G.
Dúvida de bancada, respondida
O carregador alimenta o resto do circuito?
Sim, mas só com a chave ligada — e isso não é efeito da derivação. Nas duas topologias o P1 fica antes da chave, no mesmo nó elétrico.
ANTES (P1 em série) DEPOIS (P1 em derivação)
pack ── P1 ── chave ── carga pack ──●── chave ── carga
│
└── P1
Paralelo ou em série pelo terminal dá o MESMO nó. A derivação muda apenas
por onde passa a corrente de uso: abas de latão do jack, ou emenda de cobre.
CARREGANDO COM A CHAVE DESLIGADA ◄ correto
carregador ──► P1 ──●── pack ✔ só a bateria recebe
│
└──[ CHAVE ABERTA ]──X conversores ✔ circuito morto
CARREGANDO COM A CHAVE LIGADA ◄ o cenário temido
carregador ──► P1 ──●── pack ✘ carregador alimenta os dois
│
└──[ CHAVE FECHADA ]──► conversores ✘ robô ligado na tomada
INTERLOCK MECÂNICO — jack P1 de 3 terminais · DESCARTADO
pino 1 (centro) ──► pack +
pino 2 (malha) ──► pack −
pino 3 (contato) ──► tronco da carga ──► chave ──► módulos
sem plugue → pinos 1 e 3 fechados → robô alimentado normalmente
com plugue → pinos 1 e 3 ABERTOS → carga desconectada automaticamente
Descartado: o contato de comutação é rated para 0,5 a 2 A, contra os 5 a 6 A
do tronco. Esquentaria e oxidaria — a mesma armadilha da solda no terminal
do jack, só que pior.
Com a chave aberta o positivo está interrompido, e o GND sozinho não fecha circuito nenhum. A chave isola de verdade.
o estrago
Se carregar com a chave ligada
Não é fogo imediato, é degradação.
O carregador nunca termina. Li-ion encerra quando a corrente cai abaixo de ~C/10 na fase CV; com carga constante o critério nunca é atingido e o pack fica preso em 12,6 V, ou 4,2 V por célula.
O pack pode nem carregar. Se o robô puxa 3 A e o carregador entrega 2 A, o pack vira a fonte da diferença.
O BMS vê carga e descarga juntas. A maioria aguenta, mas é operação fora do previsto.
verificação
Teste que comprova o isolamento
Com os packs fora, medir continuidade do centro do P1 até a entrada de cada conversor.
Chave desligada → tem que dar OL
Chave ligada → tem que bipar
Continuidade com a chave desligada significa caminho paralelo desconhecido
Bônus: puxar o jumper cap de C3 separa os dois negativos para carregar os packs em paralelo sem dúvida
pergunta aberta
O pack 3S do motor tem BMS?
O talus-power.yml descreve o pack de sistema como Li-ion pack 3S2P with BMS, mas o de motor apenas como Li-ion pack 3S original, sem menção a BMS.
Sem BMS não há proteção de célula, balanceamento nem corte por sobretensão.
Aí carregar com a chave ligada deixa de ser desgaste e vira risco real.
Confirmar olhando o pack.
O emaranhado de GND era um bug, não bagunça
Com vários GND num nó torcido, o retorno do motor — 2 a 3 A chaveados em PWM — atravessa o mesmo cobre que serve de referência para Halls e IMU. O zero da lógica balança dezenas a centenas de mV no ritmo do PWM. Isso se chama impedância compartilhada, e é candidato à inconsistência histórica do canal esquerdo.
Por que centralizar sai de graça
10 cm a mais de 20 AWG, ida e volta, a 3 A custam 2 × 0,10 × 0,033 × 3 = 0,020 V. São 20 mV contra um orçamento de 100 mV. O ganho é ponto estrela único, medição sob carga com o robô fechado e um lugar só para procurar quando algo cair.
Vale só com trilho de 20 AWG ou mais grosso. Em 26 AWG o mesmo desvio custa 80 mV e a placa vira o novo gargalo.
Peça A · 6 x 11 furos
A placa de distribuição
Cada linha é um trilho: um fio sólido soldado por cima, ao longo da fileira inteira. Os furos são âncora mecânica — dá para soldar em qualquer ponto do cobre.
C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11
┌─────────────────────────────────────────────────────────────────────────┐
L1 │ ●══════●══════●══════●══════●══════●══════●══════●══════●══════●══════● │ GND_SYS preto
L2 │ ●══════●══════●══════●══════●══════●══════●══════●══════●══════●══════● │ GND_MOT preto
L3 │ ●══════●══════●══════●══════●══════●══════●══════●══════●══════●══════● │ 5V_LOGIC vermelho
L4 │ ●══════●══════●══════●══════●══════●══════●══════●══════●══════●══════● │ 5V_PI vermelho
L5 │ ●══════●══════●══════●══════●══════●══════●══════●══════●══════●══════● │ 12V_KIN amarelo
L6 │ ●══════●══════●══════●══════●══════●══════●══════●══════●══════●══════● │ 8V_MOT verm.+etiqueta
└─────────────────────────────────────────────────────────────────────────┘
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
ENT ENT PONTE TB6612 Pi KINECT NANO HALL HALL PEÇA TESTE
SIS MOT L1↔L2 ESQ DIR E
LEGENDA DAS COLUNAS
C1 ENTRADA SISTEMA vem da base: L1 GND_SYS · L3 5V_LOGIC · L4 5V_PI · L5 12V_KIN
C2 ENTRADA MOTOR vem da base: L2 GND_MOT · L6 8V_MOT
C3 PONTE DE TERRA L1 ↔ L2 · barra de 2 pinos + jumper cap · ponto estrela único
C4 TB6612FNG L2 GND · L6 VM · L3 VCC
C5 RASPBERRY PI 4 L4 5V (pino físico 4) · L1 GND (pino físico 6)
C6 KINECT v1 L5 12V (P1 centro +) · L1 GND (P1 malha)
C7 ARDUINO NANO L3 5V · L1 GND
C8 HALL ESQUERDO L3 VCC · L1 GND o sinal DO vai direto ao D2
C9 HALL DIREITO L3 VCC · L1 GND o sinal DO vai direto ao D3
C10 PEÇA E · UART L1 GND referência do divisor de nível
C11 PONTOS DE TESTE 1 pino macho em cada linha, L1 a L6
ORDEM OBRIGATÓRIA: C1 · C2 · C3 · C4
O retorno dos motores vai de C4 até C2 pela L2 — 5 mm de trilho — e sai para o
pack sem entrar no GND_SYS. De C5 em diante a ordem é livre.
LINHA = trilho = uma rede elétrica. COLUNA = uma posição de ligação.
Só a C11 é de medição.
A ordem das colunas não é arbitrária: o retorno dos motores percorre C4 → C3 → C2 na L2, cerca de 5 mm de trilho, 0,2 mV a 3 A. Nunca entra no GND_SYS.
Col
Linha
Liga em
Fio
C1
L1 / L3 / L4 / L5
da base: GND_SYS / 5V_LOGIC / 5V_PI / 12V_KIN
20 · L1 e L4 dobrados
C2
L2 / L6
da base: GND_MOT / 8V_MOT
20 · L2 dobrado
C3
L1 + L2
PONTE — barra de 2 pinos mais jumper cap
—
C4
L2 / L6 / L3
TB6612 rodas: GND / VM / VCC
20 / 20 / 22
C5
L4 / L1
Raspberry Pi — pino 4 e pino 6
2× 20 AWG
C6
L5 / L1
Kinect — P1, centro positivo
20
C7
L3 / L1
Arduino Nano — pino 5V e GND
22
C8
L3 / L1
módulo Hall ESQ
24
C9
L3 / L1
módulo Hall DIR
24
C10
L1
GND da peça E (divisor UART)
24
C11
L1..L6
pontos de teste — 1 pino macho por linha
—
diagnóstico
A ponte de GND vira ferramenta
Com barra de 2 pinos e jumper cap em C3, o ponto comum fica removível.
Cap fora e TB6612 desconectada — GND_MOT ↔ GND_SYS tem que dar OL. Se bipar, existe um segundo ponto comum não intencional.
Cap dentro — bipa. É o ponto estrela.
A ressalva importa: os pinos GND da TB6612 são um nó só dentro do módulo. Sem tirar o módulo, o teste dá falso positivo.
O jumper cap aguenta porque a corrente dos motores não passa por ele — volta ao pack pela L2. A ponte carrega alguns mA de referência.
montagem
Ordem que evita retrabalho
Quebrar as 4 peças da perfboard.
Soldar os 6 trilhos na peça A.
Testar os 6 trilhos entre si — todos OL, exceto GND_SYS ↔ GND_MOT com o cap dentro.
Só então soldar os fios dos consumidores.
Achar um curto entre trilhos com 25 fios já soldados é bem pior do que achar agora.
Antes de soldar qualquer coisa
Plano de corte da perfboard 6 x 28
Cortar placa já soldada é sofrimento. Quebra primeiro.
C1 C11 │C13 C15│C17 C19│C21 C23│C25 C28
┌──────────────────────────┬─┬───────┬─┬───────┬─┬───────┬─┬──────────┐
│ A — DISTRIBUIÇÃO (6x11) │✂│D (6x3)│✂│E (6x3)│✂│F (6x3)│✂│ G (6x4) │
│ topo · os 6 trilhos │ │cap VM │ │divisor│ │cap do │ │ base · │
│ INALTERADA │ │TB6612 │ │ UART │ │ Pi │ │ sistema │
└──────────────────────────┴─┴───────┴─┴───────┴─┴───────┴─┴──────────┘
C12 C16 C20 C24
11 + 3 + 3 + 3 + 4 = 24 furos úteis; 4 colunas viram serragem. A peça A não muda — o que encolheu foi D, E e F, de onde saiu espaço para a peça G da base. Riscar com estilete e régua de metal em cima da fileira de furos, 10 a 15 passadas de cada lado, e quebrar na quina da mesa. Placa marrom de baquelite quebra assim; placa verde de FR4 exige serra fina ou Dremel — e máscara, porque o pó de fibra de vidro irrita pulmão e pele.
Grafo 02
O que não passa pela placa
Sinal vai direto, pelo caminho mais curto. A regra é: potência centraliza, sinal vai pelo caminho mais curto.
Mesma camada em texto
Pinagem completa
Fonte de verdade é hardware/WIRING.md mais o firmware. O Wokwi modela nano:12, nano:13 e nano:A3 para aspirador e vassourinhas, que o firmware real não usa.
RASPBERRY PI 4 ARDUINO NANO
┌──────────────────┐ ┌──────────────────┐
│ pino 4 (5V) ◄──┼── C5-L4 (5V_PI) │ 5V ◄───────────┼── C7-L3 (5V_LOGIC)
│ pino 6 (GND) ───┼──► C5-L1 (GND_SYS) │ GND ────────────┼──► C7-L1 (GND_SYS)
│ │ │ │
│ pino 8 (TXD) ───┼──────────────────────────────── ┼──► D0 (RX) │ direto, 3,3 V
│ pino 10 (RXD) ◄──┼──── [PEÇA E: divisor] ◄──────── ┼─── D1 (TX) │ ⚠ 5 V → 3,2 V
│ │ │ │
│ USB ◄════════════┼══ Kinect (dados) │ D4 STBY ─────┼──┐
└──────────────────┘ │ D5 PWMA ─────┼─┐│
│ D7 AIN1 ─────┼┐││
KINECT v1 │ D8 AIN2 ────┐│││
┌──────────────────┐ │ D6 PWMB ───┐││││
│ P1 centro (+) ◄──┼── C6-L5 (12V_KIN) │ D9 BIN1 ──┐│││││
│ P1 malha (GND)───┼──► C6-L1 (GND_SYS) │ D10 BIN2 ─┐││││││
│ USB ═════════════┼══► Pi │ ││││││││
└──────────────────┘ │ D2 HALL_L ◄──┼┼┼┼┼┼┼┼── módulo Hall ESQ (DO)
│ D3 HALL_R ◄──┼┼┼┼┼┼┼┼── módulo Hall DIR (DO)
│ D11 BUZZER ──┼┼┼┼┼┼┼┼──► buzzer ATIVO ──► C7-L1
│ A4 SDA ───┼┼┼┼┼┼┼┼──► MPU6050
│ A5 SCL ───┼┼┼┼┼┼┼┼──► MPU6050
└──────────────┼┼┼┼┼┼┼┘
│││││││
┌──────────────────────────────────────────────────────────────┘││││││
│ ┌──────────────────────────────────────────────────────────── ┘│││││
│ │ ┌───────────────────────────────────────────────────────────┘││││
│ │ │ ┌─────────────────────────────────────────────────────────┘│││
│ │ │ │ ┌───────────────────────────────────────────────────────┘││
│ │ │ │ │ ┌──────────────────────────────────────────────────────┘│
│ │ │ │ │ │ ┌────────────────────────────────────────────────────┘
▼ ▼ ▼ ▼ ▼ ▼ ▼
┌────────────────────────────────────┐
│ B B A A P P S TB6612FNG │
│ I I I I W W T (rodas) │ ╔═══════════╗
│ N N N N M M B AO1 ──┼───────────►║ MOTOR ║
│ 2 1 2 1 B A Y AO2 ──┼───────────►║ ESQ ║ 3× 100 nF
│ │ ╚═══════════╝
│ VM ◄── C4-L6 (8V_MOT) ──┐ │ ╔═══════════╗
│ VCC ◄── C4-L3 (5V_LOGIC) │ PEÇA D │ BO1 ──┼──────────►║ MOTOR ║
│ GND ──► C4-L2 (GND_MOT) ─┘ │ BO2 ──┼──────────►║ DIR ║ 3× 100 nF
└────────────────────────────────────┘ ╚═══════════╝
Par de cada motor torcido. Cabo de cada Hall — VCC, GND, DO — torcido, com o DO torcido junto do GND.
O quê
Vai direto
Por quê
PWM, AIN/BIN, STBY
Nano → TB6612
alongar sinal e encostar em trilho de potência é convite a ruído
Sinal dos Halls
módulo → Nano
idem; o par vai torcido com o próprio GND
SDA/SCL da IMU
Nano → MPU6050
I2C curto, abaixo de 20 cm
AO1 / AO2 / BO1 / BO2
TB6612 → motores
corrente alta ponto a ponto, não tem o que distribuir
Buzzer D11
Nano → buzzer
ponto a ponto
UART TX/RX
Pi ↔ peça E ↔ Nano
sem fio de GND no cabo: os dois terras já se encontram na L1, a 5 mm um do outro
Peças D, E e F
O que sai da mesma perfboard
Capacitor de desacoplamento só funciona perto do que ele desacopla. Nenhuma dessas peças fica na placa central.
peça D · 6 x 3
Bulk no VM da TB6612
Colada no módulo. Longe do driver, o fio entre os dois anula o efeito.
470 µF / 25 V eletrolítico
100 nF cerâmico
Faixa preta do eletrolítico na L6
25 V basta: o 8 V vem de buck, não de pack direto
peça E · 6 x 3
Divisor de nível do UART
Já instalado nesta sessão. É o que impede 5 V de entrar no GPIO do Pi.
R1 = 1 kΩ em série no TX do Nano
R2 = 1,8 kΩ do nó para o GND
Nó em L1-C3, com ponte vertical até L3-C1
Alternativas: 1k8 + 3k3, ou 1k + 2k
peça F · 6 x 3
Bulk na entrada do Pi
O Pi 4 tem transiente rápido que fio nenhum acompanha. Quem responde nesse tempo é capacitor local.
470 µF / 16 V eletrolítico
100 nF cerâmico
470 e não 1000 µF: inrush maior pode disparar a proteção do XL4015 ou arcar a chave
peça G · 6 x 4 · NOVA
Distribuição da base
Substitui o nó torcido na saída da chave. A SW_SYS alimenta três conversores; sem essa placa os três fios voltam a se amontoar no terminal da chave — que era o problema original.
L6 = VBAT_SYS+, da saída da chave
L1 = GND_SYS, direto do negativo do pack, sem passar pela chave
Uma coluna por conversor: XL4015E1, XL6019E1, LM2596
L2 a L5 livres — cabe o transistor do buzzer ou o VBAT_MOT futuro
sem peça G
O domínio motor não precisa
Com o 5V_MOT desligado, a SW_MOT alimenta um conversor só.
Um par direto resolve; não há nó para distribuir.
Quando o aspirador entrar, o segundo par sai das linhas livres da peça G.
por que 18 e não 16
Queda na entrada pesa menos
Um buck regula a própria saída, então queda no fio de entrada não aparece na saída — ela só reduz margem.
20 AWG simples basta nas entradas dos conversores.
O tronco antes da chave carrega tudo do domínio: esse vai dobrado.
PEÇA D — bulk no VM da TB6612 PEÇA F — bulk na entrada do Pi
C1 C2 C3 C1 C2 C3
┌──────────────────────────┐ ┌──────────────────────────┐
L1 │ ●═════════●═════════● │ ═ VM │ ●═════════●═════════● │ ═ 5V_PI
│ │ │ │ │ │ │ │
L3 │ ┌┴┐ ┌┴┐ │ │ ┌┴┐ ┌┴┐ │
│ │E│ │C│ │ │ │E│ │C│ │
L4 │ └┬┘ └┬┘ │ │ └┬┘ └┬┘ │
│ │ │ │ │ │ │ │
L6 │ ●═════════●═════════● │ ═ GND_MOT │ ●═════════●═════════● │ ═ GND_SYS
└──────────────────────────┘ └──────────────────────────┘
entra 470 µF 100 nF entra 470 µF 100 nF
(C4-L6/L2) 25 V (C5-L4/L1) 16 V
PEÇA G — distribuição da base, domínio sistema (6x4) ◄ NOVA
C1 C2 C3 C4
┌────────────────────────────────────┐
L1 │ ●═════════●═════════●═════════● │ ═ GND_SYS direto do negativo do pack
L2 │ ● ● ● ● │
L3 │ ● ● ● ● │ linhas L2..L5 livres:
L4 │ ● ● ● ● │ transistor do buzzer ou VBAT_MOT
L5 │ ● ● ● ● │
L6 │ ●═════════●═════════●═════════● │ ═ VBAT_SYS+ da saída da SW_SYS
└────────────────────────────────────┘
▲ ▲ ▲ ▲
entra XL4015E1 XL6019E1 LM2596
(chave + → 5V_PI → 12V_KIN → 5V_LOGIC
pack −) 20 AWG 20 AWG 22 AWG
PEÇA E — divisor de nível do UART (6x3)
Nano D1 (TX, 5 V) ───[ R1 = 1 kΩ ]───┬─── Pi pino 10 / GPIO15 (RXD) ≈ 3,2 V
│
[ R2 = 1,8 kΩ ]
│
GND ──── C10-L1 (GND_SYS)
Pi pino 8 / GPIO14 (TXD) ──────────────────── Nano D0 (RX) direto
Na peça E: R1 deitado entre L1-C1 e L1-C3; R2 entre L3-C1 e L3-C3. O nó da junção é L1-C3 com ponte vertical até L3-C1. A L6 vira trilho curto de GND. A linha D0 ↔ pino 8 passa reta pela L5, só apoiada mecanicamente.
Sem perfboard
Módulos Hall
A plaquinha já traz pull-up, LED e comparador. Um salto de placa a mais só adicionaria duas juntas e um ponto de falha.
MÓDULO HALL (azul, LM393, 4 pinos, SEM trimpot)
┌───────────────────────────┐
│ ┌─────┐ │
│ │A3144│ [LM393] │
│ └─────┘ [LED pwr] [LED sinal]
│ │
│ VCC GND DO AO │
└────┬────┬────┬─────╳──────┘
│ │ │ └── sem uso
│ │ └──────── D2 (esq.) / D3 (dir.)
│ └───────────── C8-L1 / C9-L1 (GND_SYS)
└────────────────── C8-L3 / C9-L3 (5V_LOGIC)
+
100 nF entre VCC e GND, soldado nos próprios pinos do módulo
Soldar o cabo de 3 vias direto nos pinos pré-soldados e afogar em termorretrátil com cola. Dupont na roda, com vibração, é a receita do contato intermitente já vivido. Conferir a marcação do TO-92 com lupa: 49E ou SS49E indica sensor linear, e aí o LM393 é quem gera o digital; A3144 ou 3144 indica sensor já digital, com o comparador redundante. Nos dois casos usa-se DO.
Antes de energizar
Cinco coisas que precisam de medição
Ordenadas por consequência. As três primeiras podem mudar o que é soldado ou queimar componente.
resolvido nesta sessão
1 · UART de 5 V no GPIO do Pi
O Nano tem lógica de 5 V; o GPIO do Pi é 3,3 V e não tolera 5 V. Divisor já instalado.
Só o sentido Nano → Pi precisa de divisor.
Pi → Nano dispensa: o V_IH do ATmega328P é 0,6 × Vcc = 3,0 V e o Pi entrega 3,3 V.
Sem fio de GND no cabo UART — criaria laço.
Pendência de software: enable_uart=1, console serial desabilitado, e /dev/ttyUSB0 vira /dev/serial0.
segunda causa raiz possível
2 · O XL4015E1 do Pi pode ser CC/CV
O sintoma registrado é entrega 5 V vazio, afunda sob carga. Módulo CC/CV com o limite de corrente baixo faz exatamente isso.
Um potenciômetro = step-down simples, só ajustar tensão.
Dois potenciômetros mais shunt grosso na saída = CC/CV. Girar o pot de corrente ao máximo antes de ajustar a tensão.
Teste: 5,1 V sem carga, aplicar cerca de 2 A e medir de novo. Se cair, é limite de corrente, não é fio.
Conferir dissipador: a 3 A ele dissipa cerca de 2 W e entra em proteção térmica sem refrigeração.
limitação de topologia
3 · O XL6019E1 é boost, não buck-boost
Conversor elevador não regula abaixo da entrada. Com o pack 3S2P cheio em 12,6 V, a saída passa direto, cerca de 12,3 a 12,6 V.
O alvo de 11,8 a 12,2 V não é alcançável em carga cheia. Isso não é defeito.
O Kinect v1 tem reguladores internos; mais 5 % provavelmente passa.
Teste: alimentar com 12,6 V, ajustar saída para 12,0 V e medir. Saída em 12,0 V é buck-boost real; saída acompanhando a entrada é boost puro.
Medir a temperatura do módulo após 5 min com o Kinect streaming.
suspeito nº 1 restante
4 · Halls sem trimpot — o ajuste é mecânico
Sem potenciômetro, o pull-up já embarcado neutraliza o pinMode(HALL_L, INPUT) do firmware. Mas o único parâmetro ajustável passa a ser o ímã.
O A3144 é unipolar e com histerese: liga em 200 a 350 G, solta em 150 a 250 G.
Entreferro marginal — ímã 1 a 2 mm mais longe fica no fio da navalha. Explica a razão L/R variando de 0,75 a 0,98.
Polaridade — sensor unipolar responde a um polo só, na face marcada do TO-92. Ímã invertido nunca é lido.
Caracterizar: 5 V no módulo, multímetro entre DO e GND, aproximar o ímã e anotar em quantos mm comuta. As duas distâncias devem bater dentro de ~1 mm.
medir
5 · Buzzer ativo em D11
Duas consequências, nenhuma bloqueante.
Sem tom diferente: o firmware chama tone() em 2400 e 1800 Hz; buzzer ativo ignora frequência. Os padrões continuam funcionando, mas HORN e BEEP soam iguais.
Corrente do pino: buzzer ativo puxa 15 a 25 mA; D11 aguenta 20 mA contínuos.
Acima de 20 mA, NPN BC337 ou 2N2222 com 1 kΩ na base, na sobra da peça F.
risco aceito
Sem fusível de 5 A no sistema
O talus-power.yml declara FUTURE_FUSE_SYS_5A, mas ele não é referenciado em nenhuma conexão — o próprio WireViz avisa.
O ramo de motor tem os 10 A instalados.
O ramo de sistema segue com o BMS como única proteção.
Decisão desta rodada; registrado, não bloqueia.
decidido
Não trocar o LM2596 para o Pi
Seria downgrade justamente no trilho que já deu subtensão.
LM2596: 3 A nominais, cerca de 2 A realistas no módulo barato.
XL4015E1: 5 A nominais, cerca de 4 A com dissipador.
O Pi 4 puxa 1,5 a 2 A com ROS 2 e Kinect.
Também não ligar em paralelo: bucks sem compartilhamento de corrente brigam entre si.
Ferro de solda
Temperatura — estanho com chumbo
Ponto de fusão do 63/37 é 183 °C; do 60/40, 183 a 190 °C. O ferro fica mais quente porque a ponta perde calor para a junta.
Tarefa
Temperatura
Tempo na junta
Fio fino de sinal (24–28 AWG)
300–320 °C
1–2 s
Fio grosso ATX (18–20 AWG)
330–350 °C
3–5 s
Ilha de módulo (Hall, TB6612, MPU6050)
320–340 °C
máx. 3–4 s
Pino de barra, dupont, JST
320–340 °C
2–3 s
Terminal de motor, plano de massa
350–370 °C
4–6 s
Dessoldagem
350–370 °C
—
Acima de 400 °C degrada a ponta e queima o fluxo antes dele agir. Mais de 4 s na ilha de módulo barato descola a trilha. Na dessoldagem, adicionar solda nova à junta velha antes de sugar — o fluxo fresco baixa o ponto de fusão do conjunto.
Cobre a 20 °C
Bitola e queda de tensão
Cabo flexível estanhado e quente: somar cerca de 5 %.
Bitola
Ω/m
Corrente prática (feixe curto)
28 AWG (jumper de kit)
0,213
~0,5 A
26 AWG
0,134
~0,8 A
24 AWG
0,084
~1,2 A
22 AWG
0,053
~2 A
20 AWG
0,033
~3 A
18 AWG (ATX)
0,021
~5 A
16 AWG
0,013
~8 A
Positivo + GND
Queda total num trecho de 30 cm
queda = 2 × distância × Ω/m × corrente. Ida e volta: 30 cm de distância são 60 cm de cobre.
Bitola
1 A
2 A
3 A
5 A
28 AWG
0,13 V
0,26 V
0,38 V
0,64 V
26 AWG
0,08 V
0,16 V
0,24 V
0,40 V
24 AWG
0,05 V
0,10 V
0,15 V
0,25 V
22 AWG
0,03 V
0,06 V
0,10 V
0,16 V
20 AWG
0,02 V
0,04 V
0,06 V
0,10 V
18 AWG
0,01 V
0,03 V
0,04 V
0,06 V
Escala linear: dobrou a distância ou a corrente, dobrou a queda. A linha do 28 AWG a 3 A é exatamente o bug original — 0,38 V mais a resistência de contato dos dupont dão os 4,4 V medidos no Pi. Orçamento: no trilho de 5 V, no máximo 0,10 V de fiação.
O que usar onde
Bitola por ramo
Plano com 20 AWG de fonte ATX, que é o que há em quantidade. Nos três ramos de ~3 A o que aperta deixa de ser a queda e passa a ser o aquecimento — por isso eles vão com o fio dobrado.
Ramo
Corrente
Queda com 1× 20 AWG (30 cm)
Usar
Tronco sistema pack → emenda → chave → peça G
~3,1 A
0,061 V
2× 20 AWG
Tronco motor pack → emenda → chave → XL4015
~2,5 A
0,050 V
2× 20 AWG
Rabicho da emenda até a P1 na borda
~2 A (só carga)
—
20 AWG
Peça G → entrada do XL4015E1 e do XL6019E1
~1,5 A
0,030 V
20 AWG
Peça G → entrada do LM2596 da lógica
< 0,1 A
—
22 AWG
5V_PI (buck → Pi)
3 A
0,060 V
2× 20 AWG
8V_MOT (→ VM da TB6612)
2–3 A
0,060 V
20 AWG
12V_KIN (buck → Kinect)
1,1 A
0,022 V
20 AWG
5V_LOGIC (Nano, IMU, Halls)
< 0,3 A
0,006 V
22 AWG
Sinais: PWM, AIN/BIN, STBY, Halls, I2C
mA
—
jumper serve
Engrossar positivo e GND sempre juntos — engrossar só o positivo corta metade da queda. Cores da ATX: amarelo = 12 V, vermelho = 5 V, preto = GND. Não existe cor de 8 V; usar vermelho com etiqueta.
Inventário
Componentes
Confirmados no repositório ou no runtime, mais o que falta providenciar.
Saíram da lista por decisão: os resistores de pull-up de 10 kΩ (o módulo Hall já tem), os breakouts de Hall em perfboard, e o fusível de 5 A do ramo de sistema.
Protocolo
Como validar cada junta
regra de segurança
Ciclo de 3 medidas por junta
Soldar sempre com os dois packs desconectados no conector. Chave desligada ainda deixa o lado de entrada energizado.
Continuidade entre os extremos do fio novo: bom = menos de 1 Ω. 2 a 5 Ω é solda fria.
Curto com o vizinho: junta nova contra cada terminal adjacente, deve dar OL.
Tração leve com a mão: se sair, era solda fria que passou na continuidade.
Zerar o multímetro antes. Encostar as duas pontas e anotar o valor — normalmente 0,2 a 0,5 Ω. Esse número está dentro de toda medida de continuidade; sem subtrair, você aprova solda fria de 0,7 Ω achando que deu 1,2 Ω legítimo.
técnica
Sequência por junta
Enfiar o termorretrátil no fio primeiro. Erro clássico.
Estanhar as duas pontas separadamente antes de juntar.
Junta mecânica antes da solda: emenda ocidental, 5 a 6 voltas de cada lado. Puxando com a mão tem que segurar antes de soldar.
Aquecer a junta, não o ferro. Alimentar a solda do lado oposto ao ferro.
Junta boa é côncava e brilhante, com o desenho do fio aparecendo. Bolha opaca e convexa é solda fria.
Máximo 2 a 3 fios por junta. Precisando de 5, aquele nó deveria ser um trilho.
Tudo desligado
Testes que validam a arquitetura
Medida
Entre
Correto
Continuidade
GND_MOT ↔ GND_SYS — cap dentro
bipa — único ponto comum
Continuidade
GND_MOT ↔ GND_SYS — cap fora, TB6612 fora
OL
Continuidade
8V_MOT+ ↔ 5V_LOGIC+ ↔ 5V_PI+ ↔ 12V_KIN+
aberto entre todos os pares
Continuidade
qualquer + ↔ seu próprio GND
aberto (ou subindo, se for capacitor carregando)
Polaridade
as duas P1
centro positivo, malha no GND
Sob carga
Alvos de tensão
Ramo
Onde medir
Alvo
Teste de software
5V_PI
pino físico 2 ou 4 contra GND 6/14
5,0–5,2 V
vcgencmd get_throttled = 0x0
12V_KIN
saída do buck-boost e entrada do Kinect
11,8–12,2 V (ver alerta 3)
tópicos RGB-D publicam
5V_LOGIC
pino 5V do Nano, VCC da TB6612 e dos Halls
4,9–5,1 V
PONG e IMU_OK=1
TB6612
VM e VCC contra GND
VM ≈ 8 V, VCC ≈ 5 V, STBY alto quando ativo
pulso DRV curto, suspenso
ordem de energização
Um ramo por vez
Ajustar buck-boost em 12,0 V sem carga.
Kinect.
Raspberry Pi.
Arduino, Halls e IMU.
Validar os Halls à mão, com o ímã.
Medir a TB6612.
Só então religar os motores.
Por último o joystick, com o robô suspenso.
O watchdog de comando é de 250 ms (CMD_TIMEOUT_MS). Um DRV isolado para sozinho — em bancada é preciso repetir o comando a mais de 4 Hz.
Pendências abertas
Confirmar se o pack 3S do motor tem BMS
Verificar o interlock: P1 → entrada dos conversores deve dar OL com a chave desligada
Colar etiqueta DESLIGAR ANTES DE CARREGAR ao lado de cada P1
Refazer a junta do P1 como derivação: emenda perto do pack, rabicho até a borda
Mover o fusível de 10 A para antes da derivação do P1 do pack 3S
Montar a peça G e refazer o leque da chave em 18/22 AWG
Medir a resistência de contato de cada P1 com o plugue inserido (esperado < 50 mΩ)
Medir corrente do buzzer em D11 (limite 20 mA)
Contar os pots do XL4015 do Pi e testar sob carga de ~2 A
Testar se o XL6019 regula 12,0 V com entrada de 12,6 V
Caracterizar os dois módulos Hall (distância de comutação, polaridade)
Igualar o entreferro dos ímãs das duas rodas
Medir temperatura do XL6019 após 5 min com Kinect streaming
Habilitar UART no Pi e trocar /dev/ttyUSB0 por /dev/serial0
Medir corrente de stall dos motores
Atualizar hardware/WIRING.md e talus-power.yml após a ressolda
Corrigir a linha 96 do talus-power.yml — -> quebra o render do WireViz