Componentes, placa montada, bancada e case

Complemento visual do projeto TORQ — o que faltou na primeira entrega.

Antes de tudo: três dúvidas suas

“O app você fez ou é o simulador?”

Os dois — e são coisas diferentes.

1. O aplicativo de verdade está no pacote, em app/: 28 arquivos Dart, projeto Flutter que compila para Android e iOS. É esse que vai para a loja. Para rodar precisa do Flutter instalado (flutter run) e, para conectar de verdade, precisa do módulo.

2. O protótipo navegável (simulator/torq-app.html) é o mesmo aplicativo desenhado tela por tela em HTML, rodando contra um modelo de motor. Existe para você ver, tocar e aprovar a experiência hoje, sem Flutter e sem hardware.

As duas implementações falam o mesmo protocolo, descrito em docs/PROTOCOL.md.

“Não achei o simulador de teste da ECU”

Ele não tem tela — é de linha de comando, e fica em firmware/. Duas linhas:

cd firmware
make test

Isso compila o firmware real da ECU para o seu computador, liga nele um modelo de motor e roda 104 verificações. Não precisa de placa, de Arduino nem de moto.

Na seção Banco de testes, mais abaixo, está a saída completa da última execução, com a explicação do que cada bloco prova.

Precisa de um compilador C. No Windows, o mais fácil é instalar o WSL (Ubuntu) e rodar sudo apt install build-essential. No Mac, xcode-select --install.
Resumindo: são três simuladores diferentes, cada um com um papel. (a) a moto virtual dentro do protótipo do app — para acertar mapa e sentir o efeito; (b) o banco de testes do firmware — para provar que a lógica está correta a cada alteração; (c) o gerador de roda fônica em Arduino — para enganar a ECU real na bancada, com sinal elétrico de verdade.

1. Componentes — cada peça desenhada em escala

Todas as peças abaixo estão na mesma escala, sobre uma grade de 2 mm. É por isso que vale mais que foto de catálogo: dá para comparar tamanho de verdade e enxergar quanto de placa cada uma ocupa.

Sobre as fotos: não incluo as imagens dos fabricantes porque são material com direitos do distribuidor e, hotlinkadas, quebram quando o anúncio sai do ar. Cada cartão tem o link direto para a página do fornecedor, onde estão a foto real, o datasheet e o estoque do dia.

2. Placa montada com os componentes

Vista de topo da placa com todas as peças posicionadas nas dimensões reais. É o desenho de montagem: o que a montadora recebe junto do arquivo de fabricação.

Placa B — FullBox (ECU standalone), 90 × 60 mm, 6 camadas

Zoneamento visível no desenho. Potência à esquerda (conector, IGBTs, drivers), alimentação e microcontrolador no centro, sinal analógico à direita e rádio no canto oposto ao da potência. Corrente de dezenas de ampères não pode dividir plano com um sinal que começa em 200 mV.
Retângulo vermelho tracejado. É o keep-out da antena: proibido cobre em todas as camadas, inclusive nos planos de terra. Também é a região que fica sem resina no encapsulamento.

Placa A — PowerBox (piggyback), 50 × 40 mm, 4 camadas

FullBox
33 peças
90 × 60 mm · 6 camadas · ocupação ≈ 46%
PowerBox
19 peças
50 × 40 mm · 4 camadas · ocupação ≈ 38%

3. Bancada Arduino — desenho de ligação

O desenho para montar com a peça na mão. Três placas, uma protoboard e as cargas reais da moto. Custo total: R$ 810 na versão mínima.

Tabela de ligação

DePinoParaPinoFioObservação
Arduino NanoD9Black PillPA0 roxoSinal da roda fônica. Nível 5 V → use divisor 10 k/20 k, o STM32 não é 5 V tolerante nesse pino
Arduino NanoGNDBlack PillGND pretoTerra comum é obrigatório. Sem ele o sinal flutua e a decodificação enlouquece
Black PillPA9 (TX)ESP32GPIO16 (RX) cianoUART 921600 — é por aqui que o app conversa
Black PillPA10 (RX)ESP32GPIO17 (TX) verdeCruzado: TX de um no RX do outro
Black PillPB0Gate do IGBTvia 100 Ω laranjaPull-down de 10 kΩ no gate: garante IGBT desligado no reset
Black PillPB1Gate do MOSFETvia 47 Ω roxoInjetor. Zener de 68 V entre dreno e fonte
Black PillPA1Potenciômetro TPScursor cianoPontas do potenciômetro em 3,3 V e GND
Black PillPA2 / PA3 / PA4MAP / ECT / IATcursor cianoComece com potenciômetros e só depois use sensor real
Fonte 12 V+Fusível 10 A vermelhoO fusível é o único item não negociável da bancada
FusívelBobina (+) e injetor (+) vermelhoTrilho vermelho da protoboard
Coletor do IGBTBobina (−) laranjaFio curto e grosso. Este laço é o maior emissor de interferência da bancada
Bobina — secundárioVela brancoDentro de caixa metálica aterrada. Dezenas de kV
Segurança — leia antes de energizar. A bobina gera dezenas de milhares de volts. Nunca segure o cabo de vela com o circuito ligado; a descarga não mata pela tensão, mas o susto e o reflexo derrubam ferramenta e queimam placa. Comece com um LED no lugar da bobina e só depois ligue a bobina real, com a vela dentro de uma caixa metálica aterrada. O injetor deve ser acionado seco ou com fluido de teste — nunca gasolina em bancada aberta a 30 cm de uma fonte de centelha.
Sobre o nível de 5 V do Arduino Nano. O Nano trabalha em 5 V e o STM32 em 3,3 V. O pino do sensor de rotação não é tolerante a 5 V: use um divisor resistivo simples de 10 kΩ / 20 kΩ, ou troque o Nano por um Raspberry Pi Pico, que já é 3,3 V e ainda gera o padrão de dentes por hardware (PIO), sem jitter.

4. Case — desenho cotado

Quatro vistas com as medidas. É o desenho que vai para a ferramentaria ou para a usinagem do protótipo.

Especificação de fabricação

ItemEspecificaçãoMotivo
MaterialPA66 com 30% de fibra de vidro Estabilidade dimensional em ciclagem térmica e resistência a etanol e óleo
CorPreto com pigmento resistente a UVMoto vive exposta ao sol
VedaçãoO-ring Ø2,0 mm em EPDM ou FKM, canal de 2,4 × 1,6 mm NBR comum incha e endurece com E100
Fixação4 parafusos M3 × 12 em aço inox, torque 0,8 N·m Inox porque a caixa fica exposta a sal e água
RespiroMembrana de PTFE Ø6 mm, IP67, montada por pressão Sem respiro, a ciclagem térmica cria vácuo e a caixa suga água pela vedação. É a causa mais comum de infiltração em módulo que passou no ensaio
EncapsulamentoPoliuretano bicomponente Shore A 40–60, 13 mm de altura Absorve vibração. Epóxi rígido quebra solda por diferença de expansão térmica
Cavidade da antena18 × 11 mm sem resina, sobre o módulo de rádio A resina atenua a antena e altera a característica de RF — o que invalida o reaproveitamento da homologação ANATEL
Fixação na motoSuporte em chapa no quadro, com coxim de borracha Montar no quadro em vez do motor reduz o perfil de vibração em uma ordem de grandeza, e é de graça
MarcaçãoNúmero de série e lote gravados a laser na tampa Rastreabilidade para recall e para defesa em caso de sinistro
Volume interno
108 cm³
92 × 62 × 19 mm úteis
Massa estimada
118 g
caixa + placa + resina

5. Banco de testes da ECU

Este é o “simulador de teste” que você procurou. Ele compila o firmware real para o computador, acopla um modelo de motor e verifica o comportamento — sem hardware nenhum.

Como rodar

cd firmware
make test

O modelo de motor vive em firmware/hal/hal_sim.c: ele gera o sinal da roda fônica dente a dente em tempo virtual, recebe os comandos de ignição e injeção que o firmware emite e mede o ângulo real em que a centelha saiu. É assim que o teste consegue afirmar que o avanço entregue bate com o comandado.

O que cada bloco prova

ProtocoloCRC contra vetor conhecido, ida e volta de frame, tolerância a lixo no barramento, rejeição de frame corrompido
TabelasInterpolação, saturação nas bordas (extrapolar mapa de ignição é pedir detonação)
Roda fônicaSincronismo em 12-1, 24-1, 24-2 e 36-1; de 800 a 10.000 rpm; rampa e desaceleração brusca
IgniçãoÂngulo entregue × comandado; proteção de dwell com a bobina de 0,49 Ω
InjeçãoPulso por carga e correção de tempo morto por tensão de bateria
SegurançaSem sincronismo nada dispara; bomba corta sem rotação; tombamento exige persistência
RegressãoOs sete defeitos encontrados na varredura, cada um com o teste que os pegaria de novo

Saída da última execução



Por que isso importa mais do que parece. Sem esse banco, cada alteração de firmware só seria testada na moto — e erro de ignição na moto não aparece como “anda mal”, aparece como pistão furado. Aqui, uma alteração que quebre o sincronismo em 800 rpm é reprovada em quatro segundos, no computador.