Skip to the content
2 layers92 × 59 mmTreadle, the printed circuit board in 3D

Drive-by-Wire throttle and brake interface board for autonomous electric golf cart

Size
92 × 59 mm
Copper layers
2
Thickness
1.6 mm
Parts
48
Nets
67
Pads
192
Tracks, vias
301, 39
Pours
1
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
31 Aug 2026
Updated
31 Aug 2026

Overview

Treadle is an open-source printed circuit board by Robsic, from the Robsic/throttle-brake-interface-board repository on GitHub. It is a 2-layer board of 92 × 59 mm with 48 parts on 67 nets, routed with 301 tracks and 39 vias.

It is built around the LMV358, SN65HVD230D and SS14, with the SZNUP2105L among its other parts. Its parts include 23 resistors, 8 connectors, 6 ICs, 6 diodes and 5 capacitors. It belongs with the interfaces and adapters boards and the STM32 boards of this library.

Main components

4

README

treadle/README.md

Drive-by-Wire Throttle & Brake Interface Module (EZ-GO RXV Autonomous Conversion)

Interface eletrônica microcontrolada para emulação e interceptação de sinais de acelerador e freio (Drive-by-Wire) em carrinhos de golfe elétricos equipados com inversor de tração Curtis AC. O módulo traduz comandos recebidos via barramento CAN em níveis analógicos de tensão contínua exigidos pela ECU do veículo (canais Throttle e Brake), além de monitorar os pedais físicos para transferências suaves de controle (bumpless transfer) e segurança.

Projeto eletrônico: treadle.kicad_sch / treadle.kicad_pcb · BOM: treadle.csv · Datasheets: ../datasheet/


1. Visão Geral do Sistema

O módulo atua como ponte intermediária entre o computador de controle central (TI C2000 / PC Autônomo) e o controlador de motor original (Inversor Curtis AC), emulando os dois canais analógicos de comando do veículo:

text
                     [ Barramento CAN Veicular ]
                                 │  CAN_H / CAN_L
                                 ▼
 [ Pedal Acelerador ]──►J3─┐  ┌────────────────────────┐   ┌──────────────────┐
 (Hall 0,60–4,66 V)        ├──►│  Placa Drive-by-Wire   │◄─►│ TI C2000 /       │
 [ Pedal de Freio   ]──►J6─┘  │  Raspberry Pi Pico     │J2 │ PC Autônomo      │
 (Hall 0,60–4,66 V)           │  · CAN (GP4/GP5)       │   └──────────────────┘
                              │  · 2× MCP4725 (I2C0/1) │
                              │  · 2× AmpOp LMV358     │
                              └───────┬──────────┬─────┘
                                      │          │
                               THROTTLE_OUT   BREAK_OUT
                                  (J4)         (J5)
                                    ▼            ▼
                        [ Inversor Curtis AC — Entradas Throttle / Brake ]

Cadeia de sinal interna (por canal)

text
 CAN ◄──SN65HVD230◄──RP2040──I2C0──►MCP4725 #1 (0x60)──►LMV358A (Av=1,39)──R 100Ω──►THROTTLE_OUT (J4)
                        │
                        └────I2C1──►MCP4725 #2 (0x60)──►LMV358B (Av=1,39)──R 100Ω──►BREAK_OUT   (J5)

 Pedal Acelerador ──divisor 10k/18k + filtro 100nF──►ADC0 (GP26)
 Pedal de Freio   ──divisor 10k/18k + filtro 100nF──►ADC1 (GP27)

2. Especificações Técnicas

ParâmetroValor
Microcontrolador CentralRaspberry Pi Pico (RP2040 Dual-Core ARM Cortex-M0+, 133 MHz)
Interface de ComunicaçãoBarramento CAN 2.0B via transceptor SN65HVD230 (3,3 V)
Conversão Digital-Analógica2× MCP4725 (12 bits, I²C, endereço 0x60 — um em cada barramento)
Estágio de Ganho e BufferLMV358 (Amplificador Operacional duplo, configuração não-inversora)
Faixa de Tensão Emulada (por canal)$0{,}60\text{ V}$ (repouso) a $\approx 4{,}59\text{ V}$ (fundo de escala; alvo nominal $4{,}66\text{ V}$)
Entradas de Pedal2 canais analógicos, divisor resistivo ($10\text{ k}\Omega$ série / $18\text{ k}\Omega$ shunt) e filtro passa-baixa ($100\text{ nF}$)
Conversores ADADC0 (GP26) — acelerador · ADC1 (GP27) — freio (12 bits, faixa 0–3,3 V)
Tensão de Alimentação$+5\text{ V}$ DC na barra de potência (VSYS do Pico)
ProteçõesDiodos Schottky SS14 nas saídas de 5V dos conectores · TVS NUP2105L no barramento CAN · Terminação de $120\ \Omega$ integrada

3. Mapeamento de Conectores (Bornes KRE 5,08 mm)

J1 — Alimentação / Auxiliar 5V (2 vias)

PinoIdentificaçãoDescrição Elétrica
1+5VBarra de 5V acessada através do diodo Schottky D1
2GNDReferência comum de alimentação e sinal

ATENÇÃO: conforme desenhado no esquemático, D1 tem anodo na barra $+5\text{ V}$ e catodo em J1-1, conduzindo da placa para fora — ou seja, J1 funciona como saída auxiliar protegida de 5 V, e não como entrada de alimentação. A alimentação da placa deve ser feita pelo conector USB do Pico ou por injeção direta de $+5\text{ V}$ na barra (VSYS). Caso a intenção seja usar J1 como entrada principal com proteção reversa, invertar a orientação de D1 antes da montagem.

J2 — Barramento CAN (3 vias)

PinoIdentificaçãoDescrição Elétrica
1CAN_HLinha diferencial CAN High (terminação de $120\ \Omega$ integrada via R1)
2CAN_LLinha diferencial CAN Low
3GNDTerra de referência da rede CAN

J3 — Pedal Físico do Acelerador (3 vias)

PinoIdentificaçãoDescrição Elétrica
1+5V_PEDALAlimentação protegida (via D2) para o sensor Hall do pedal
2HALL_IN_PEDALSinal analógico do pedal ($0{,}60\text{ V}$ a $4{,}66\text{ V}$) → ADC0
3GNDTerra de referência do pedal

J4 — Saída de Acelerador (2 vias)

PinoIdentificaçãoDescrição Elétrica
1THROTTLE_OUTSaída analógica condicionada injetada na entrada Throttle In da ECU Curtis
2GNDTerra de retorno da ECU

J5 — Saída de Freio (2 vias)

PinoIdentificaçãoDescrição Elétrica
1BREAK_OUTSaída analógica condicionada injetada na entrada de frenagem da ECU Curtis
2GNDTerra de retorno da ECU

J6 — Pedal Físico do Freio (3 vias)

PinoIdentificaçãoDescrição Elétrica
1+5V_BREAKAlimentação protegida (via D6) para o sensor Hall do pedal de freio
2HALL_IN_BREAKSinal analógico do pedal ($0{,}60\text{ V}$ a $4{,}66\text{ V}$) → ADC1
3GNDTerra de referência do pedal

4. Mapa de Pinos do Raspberry Pi Pico

Validado contra o netlist exportado do esquemático (kicad-cli sch export netlist):

Pino FísicoGPIOPeriférico RP2040Sinal / RedeFunção
6GP4UART1 RX (default)/CRXRecepção CAN (R do transceptor)
7GP5UART1 TX (default)/CTXTransmissão CAN (D do transceptor)
9GP6I2C1 SDA/GPIO_6SDA — MCP4725 do canal de freio
10GP7I2C1 SCL/GPIO_7SCL — MCP4725 do canal de freio
11GP8I2C0 SDA/GPIO_8SDA — MCP4725 do canal de acelerador (pull-up R10, 4,7 kΩ)
12GP9I2C0 SCL/GPIO_9SCL — MCP4725 do canal de acelerador (pull-up R9, 4,7 kΩ)
21GP16GPIO / PWMNet-(D4-A)LED de status D4 (via R5, 1 kΩ)
31GP26ADC0/HALL_IN_PEDAL_SLeitura do pedal do acelerador
32GP27ADC1/HALL_IN_BREAK_SLeitura do pedal do freio
36—3V3(OUT)+3.3VRegulador interno alimenta CAN, DACs, pull-ups e LED D5
39—VSYS+5VBarra de potência de 5 V

Observações de projeto:

  • Os dois MCP4725 têm o pino A0 aterrado (endereço I²C 0x60). Para evitarem colisão, cada um foi alocado em um barramento I²C distinto: canal de acelerador em I2C0 e canal de freio em I2C1.
  • O barramento I2C1 (GP6/GP7) não possui resistores de pull-up externos — o firmware deve habilitar os pull-ups internos do RP2040 (~50 kΩ, suficiente para até 100 kHz) ou prever a adição de pull-ups de 4,7 kΩ em revisões futuras.
  • O RP2040 não possui controlador CAN nativo: a pilha CAN deve ser implementada em software/PIO nos pinos GP4/GP5.
  • O pino VBUS permanece desconectado, isolando a tensão USB do resto da placa.

5. Lista de Componentes (BOM — fiel ao treadle.csv)

DesignadorQtdComponenteEncapsulamentoDescrição
A11Raspberry Pi PicoMódulo TH/SMDMicrocontrolador RP2040
U11SN65HVD230SOIC-8Transceptor CAN 3,3 V (modo high-speed, RS=GND)
U2, U42MCP4725SOT-23-6DAC I²C de 12 bits com EEPROM (addr 0x60)
U31LMV358SOIC-8AmpOp duplo rail-to-rail (unidade A = throttle, B = brake)
D1, D2, D63SS14SMA (DO-214AC)Diodos Schottky de proteção (1 A / 40 V)
D31SZNUP2105LSOT-23TVS dual de proteção do barramento CAN
D4, D52LED0805 SMDD4 = status (verde) · D5 = alimentação (vermelho)
C1 – C55100 nF0805 SMDDesacoplamento (C1, C2, C4) e filtragem dos ADCs (C3, C5)
R11$120\ \Omega$0805 SMDTerminação da linha CAN
R2, R8, R11, R154$10\text{ k}\Omega$0805 SMDResistores de ganho dos AmpOps (R2, R11) e divisores dos pedais (R8, R15)
R3, R122$3{,}9\text{ k}\Omega$0805 SMDResistores de realimentação dos AmpOps ($R_f$)
R4, R132$100\ \Omega$0805 SMDProteção em série das saídas analógicas
R5, R72$1\text{ k}\Omega$0805 SMDLimitação de corrente dos LEDs D4 / D5
R6, R142$18\text{ k}\Omega$0805 SMDPernas de shunt dos divisores de tensão dos pedais
R9, R102$4{,}7\text{ k}\Omega$0805 SMDPull-ups das linhas I²C do canal de acelerador (SDA/SCL)
J1, J4, J53Borne 2 viasPasso 5,08 mmAlimentação / Throttle Out / Break Out
J2, J3, J63Borne 3 viasPasso 5,08 mmCAN / Pedal Acelerador / Pedal de Freio

6. Princípio de Operação e Equações

6.1 Estágio de ganho (LMV358, configuração não-inversora)

O MCP4725 opera com $V_{ref} = V_{DD} = 3{,}3\text{ V}$. Para atingir a excursão exigida pelo inversor Curtis (até $4{,}66\text{ V}$), cada canal usa um amplificador não-inversor com ganho definido pelos valores $R_f = 3{,}9\text{ k}\Omega$ (realimentação) e $R_g = 10\text{ k}\Omega$ (para GND):

$$A_v = 1 + \frac{R_f}{R_g} = 1 + \frac{3{,}9\text{ k}\Omega}{10\text{ k}\Omega} = 1{,}39$$

O LMV358 é alimentado diretamente na barra de $+5\text{ V}$ (e não em 3,3 V) justamente para garantir headroom de saída acima de 3,3 V.

  • Repouso (0% throttle): $$V_{DAC} = 0{,}43\text{ V} \implies V_{OUT} = 0{,}43 \times 1{,}39 \approx 0{,}60\text{ V}$$
  • Fundo de escala (100% throttle): $$V_{DAC} = 3{,}30\text{ V} \implies V_{OUT} = 3{,}30 \times 1{,}39 \approx 4{,}59\text{ V}$$

Nota de dimensionamento: o fundo de escala prático fica $\approx 1{,}6%$ abaixo do alvo nominal de $4{,}66\text{ V}$. Para atingi-lo exatamente, $R_f$ poderia ser ajustado para $\approx 4{,}12\text{ k}\Omega$ (série E96). Na prática, a curva de calibração do Curtis tolera essa margem.

Resolução do DAC: $LSB_{DAC} = \dfrac{3{,}3\text{ V}}{4096} = 0{,}81\text{ mV}$, resultando em passos de $\approx 1{,}12\text{ mV}$ na saída do módulo.

6.2 Condicionamento dos pedais (entrada ADC)

Cada pedal Hall ($0{,}60\text{ V}$ a $4{,}66\text{ V}$) passa por um divisor redutor seguido de filtro passa-baixa de primeira ordem:

$$k = \frac{18\text{ k}\Omega}{10\text{ k}\Omega + 18\text{ k}\Omega} = 0{,}643 \qquad f_c = \frac{1}{2\pi \cdot (10\text{k} | 18\text{k}) \cdot 100\text{nF}} \approx 248\text{ Hz}$$

Condição do pedalTensão no conectorTensão no ADC
Repouso (0%)$0{,}60\text{ V}$$\approx 0{,}39\text{ V}$
Fundo de escala (100%)$4{,}66\text{ V}$$\approx 3{,}00\text{ V}$

O divisor garante que o sinal fique sempre dentro da faixa do ADC (0–3,3 V), com resolução equivalente a $\approx 1{,}25\text{ mV}$ por LSB referido ao conector do pedal.


7. Arquitetura de Alimentação

text
 USB do Pico ──► VSYS ──► [ Barra +5V ] ──┬──► U3 (V+ do AmpOp)
                                          └──► D2 ──► J3-1 (+5V_PEDAL)
                                              D6 ──► J6-1 (+5V_BREAK)
                                              D1 ──► J1-1 (+5V auxiliar)
 [ Barra +5V ] ──► VSYS ──► regulador interno ──► [ Barra +3,3V ]
                                                   ├── U1 SN65HVD230
                                                   ├── U2/U4 MCP4725 (Vref = 3,3 V)
                                                   ├── Pull-ups I2C0 (R9, R10)
                                                   ├── R7 ──► D5 (LED alimentação)
                                                   └── R5 ◄── D4 (LED status, GP16)
  • Os três diodos SS14 estão orientados com anodo na barra $+5\text{ V}$, funcionando como saídas protegidas para os conectores (evitam retroalimentação da rede externa para a placa). Ver ATENÇÃO na seção 3 quanto ao papel de J1.
  • A barra de 3,3 V é gerada pelo regulador do próprio Raspberry Pi Pico — nenhum regulador externo é necessário.

8. Interface CAN

ItemImplementação
TransceptorSN65HVD230 (3,3 V), pinos D←CTX (GP5) e R→CRX (GP4)
ModoHigh-speed (pino RS/8 aterrado), até 1 Mbps
TerminaçãoR1 = $120\ \Omega$ entre CAN_H e CAN_L, integrada à placa
ProteçãoTVS dual NUP2105L (catodos em CAN_H/CAN_L, anodo comum em GND)

Notas:

  1. Como a terminação é fixa, ao integrar a placa a uma rede com outros nós terminados, medir a impedância entre CAN_H e CAN_L ($\approx 60\ \Omega$ com duas terminações) e remover R1 se necessário.
  2. O RP2040 não possui periférico CAN nativo — utilizar pilha CAN baseada em PIO/software nos pinos GP4/GP5.

9. Contrato de Firmware (comportamento esperado)

ItemEspecificação
Leitura dos pedaisADC0 e ADC1 amostrados a $100\text{ Hz}$ por canal
Comando DACEscrita rápida I²C (2 bytes) no endereço 0x60: I2C0 → throttle · I2C1 → brake
Tensão de repousoCódigo DAC $\approx 534$ ($0{\times}216$) → $0{,}43\text{ V} \rightarrow 0{,}60\text{ V}$ na saída
Driver OverrideSe algum pedal físico subir $\Delta V \ge 0{,}30\text{ V}$ acima do repouso, detecta intervenção humana e desarma o modo autônomo
Slew Rate / RampasTransições interpoladas em rampas de $150$ a $250\text{ ms}$ para mitigar solavancos (inclusive frenagem regenerativa)
Fail-safe de comunicaçãoAusência de heartbeat CAN → rampa progressiva até a tensão de repouso
Estado de partida seguroGravar a EEPROM do MCP4725 com o código de repouso: em caso de reset, o DAC religa já em $0{,}60\text{ V}$
Falha total de potênciaCom o DAC sem alimentação a saída vai a $0\text{ V}$ — fora da janela válida da Curtis, que interpreta como falha de sensor e corta torque (estado intrinsecamente seguro)

10. Checklist de Montagem e Bring-up

  1. Inspeção visual: orientação dos diodos SS14 (catodo = banda), polaridade dos LEDs, sentido do Pico e dos bornes.
  2. Teste de potência: aplicar/alimentar 5 V e verificar a barra +3,3 V (pino 36 do Pico) e o LED D5 aceso.
  3. Varredura I²C: confirmar dispositivo 0x60 em ambos os barramentos (I2C0 e I2C1).
  4. Teste dos DACs: escrever meia-escala (código 2048) e conferir $\approx 1{,}65\text{ V} \times 1{,}39 \approx 2{,}29\text{ V}$ em THROTTLE_OUT e BREAK_OUT.
  5. Teste dos pedais: varrer os pedais fisicamente e validar a leitura dos ADCs dentro da faixa $\approx 0{,}39$–$3{,}00\text{ V}$.
  6. Rede CAN: conectar ao barramento do veículo, verificar terminação e monitorar tráfego.
  7. Integração com a Curtis: com o veículo suspenso (rodas livres), validar tensões de repouso ($0{,}60\text{ V}$) antes de liberar qualquer comando de aceleração.

11. Bibliotecas Locais e Setup para Git

Este projeto não depende mais de bibliotecas instaladas globalmente (~/.config/kicad/...). Todas as libs não-padrão foram copiadas para dentro do repositório, permitindo git clone reprodutível em qualquer máquina com KiCad 7/8/9/10.

11.1 O que foi copiado e por quê

Diretório em treadle/libs/OrigemConteúdoPor que é local?
STM32F103C8T6//home/ryan/.../libraries/STM32F103C8T6/STM32F103C8T6.kicad_sym + STM32F103C8T6.pretty/ (11 footprints) + 3dmodels/ (STEP/WRL) + README.mdSímbolo/footprint do STM32F103C8T6 / Blue Pill não existe no KiCad padrão
Connector_Molex//home/ryan/.../libraries/Connector_Molex/Connector_Molex.pretty/ (9 footprints Molex Micro-Fit 3.0 P3.00mm 1×02/03/04)Footprints dos bornes J1–J6 (apelidados "Bourns/bornes" no pedido) — são Molex genéricos para os terminais de 2/3/4 vias usados como bornes KRE/Molex

Nota "Bourns / borners": não foi localizada lib Bourns separada no sistema. O termo "bornes" refere-se aos conectores J1–J6 (seção 3). A pasta Connector_Molex atende exatamente esse papel; se no futuro houver trimpots/pots Bourns, crie libs/Bourns/ seguindo o mesmo padrão.

Tamanho: STM32F103C8T6/3dmodels/ tem ~850 MB (STEP de alta resolução). Está versionado, mas se seu remoto tiver limite (GitHub 100 MB/arquivo), use Git LFS ou limpe variantes não usadas — veja §11.4.

11.2 Estrutura após a cópia

text
treadle/
├── sym-lib-table          # → ${KIPRJMOD}/libs/STM32F103C8T6/STM32F103C8T6.kicad_sym
├── fp-lib-table           # → ${KIPRJMOD}/libs/STM32F103C8T6/... e ${KIPRJMOD}/libs/Connector_Molex/...
├── libs/
│   ├── STM32F103C8T6/
│   │   ├── STM32F103C8T6.kicad_sym
│   │   ├── STM32F103C8T6.pretty/
│   │   └── 3dmodels/
│   └── Connector_Molex/
│       └── Connector_Molex.pretty/
├── treadle.kicad_sch
└── treadle.kicad_pcb      # (conexões elétricas preservadas — não alterado neste setup)

Tabelas usam ${KIPRJMOD} (variável do KiCad que aponta para a pasta do .kicad_pro). Isso torna o caminho relativo ao projeto, funcionando em Windows/Linux/macOS sem edição.

Antes (quebrado fora da sua máquina):

lisp
(uri "/home/ryan/Documentos/Robsic Carrinho/libraries/STM32F103C8T6/STM32F103C8T6.kicad_sym")

Depois (portável):

lisp
(uri "${KIPRJMOD}/libs/STM32F103C8T6/STM32F103C8T6.kicad_sym")

11.3 Como usar após git clone — zero configuração

  1. Requisitos: KiCad 7+ (recomendado 10.0, que gerou o projeto treadle.kicad_pro:4 versão 3).
  2. bash
    git clone <URL_DO_SEU_REPO>.git
    cd treadle
    kicad treadle.kicad_pro   # ou abra pelo KiCad → File → Open Project
  3. O KiCad carrega automaticamente sym-lib-table e fp-lib-table locais — não precisa instalar nada globalmente. Verifique em Preferences → Manage Symbol/Footprint Libraries → Project Specific.
  4. treadle.kicad_pcb e treadle.kicad_sch abrem sem "missing library".
  5. PCB não foi alterado eletricamente nesta migração, apenas as tabelas. Se vir aviso de 3D model com D:/Users/admin/... ou /home/ryan/..., é resíduo legado do footprint Blue Pill que pode ser re-atribuído depois para ${KIPRJMOD}/libs/.../3dmodels/ — não afeta fabricação.

11.4 Adicionar nova biblioteca no futuro

bash
# Exemplo: adicionar lib Bourns de trimpots
cp -a "/caminho/para/Bourns" "libs/Bourns"
# edite sym-lib-table (símbolos) ou fp-lib-table (footprints):
# (lib (name "Bourns") (type "KiCad") (uri "${KIPRJMOD}/libs/Bourns/Bourns.kicad_sym") ...)

Dê git add libs/Bourns sym-lib-table fp-lib-table e commit.

Dica Git LFS para 3D pesado (opcional):

bash
git lfs install
echo "libs/STM32F103C8T6/3dmodels/*.step filter=lfs diff=lfs merge=lfs -text" >> .gitattributes
echo "libs/STM32F103C8T6/3dmodels/*.wrl  filter=lfs diff=lfs merge=lfs -text" >> .gitattributes
git add .gitattributes libs/

Para repo leve sem LFS, mantenha apenas os 2 modelos usados (LQFP-48_*.step + YAAJ_BluePill_PinHeaders_No_SWD_cp.*) e apague variantes *_H_SWD, *_V_SWD, *PinSockets* (~750 MB).

11.5 Primeiro git push (se ainda não é repo)

bash
cd treadle
git init
git add sym-lib-table fp-lib-table libs/ treadle.kicad_sch treadle.kicad_pcb treadle.kicad_pro README.md treadle.csv
git status   # confirme que não há caminhos absolutos: grep -r "/home/ryan" -- . deve retornar vazio
git commit -m "feat: torna libs STM32 e Molex (bornes) locais e portáveis via \${KIPRJMOD}"
git branch -M main
git remote add origin <URL>
git push -u origin main

.gitignore já ignora *.lck, *~, treadle-backups/ e *.bak* — pastas de backup do KiCad não vão para o remoto.

11.6 Checklist de portabilidade

  • grep -r "D:/" treadle/ só retorna resíduos opcionais de 3D (não crítico)
  • grep -r "/home/ryan" treadle/ vazio para sym-lib-table/fp-lib-table
  • Abrir esquemático → ERC 0 erros de lib
  • Abrir PCB → DRC sem "missing footprint"

Parts

48
QtyValueFootprintReferences
810kResistor_SMD:R_0805_2012MetricR2, R8, R11, R15, R20, R21, R22, R23
61kResistor_SMD:R_0805_2012MetricR5, R7, R16, R17, R18, R19
5100nFCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C5
3SS14Diode_SMD:D_SMAD1, D2, D6
3Screw_Terminal_01x02Connector_Molex:Molex_Micro-Fit_3.0_Molex_Micro-Fit_3.0_Header_Vertical_1x02_P3.00mmJ1, J4, J5
3Screw_Terminal_01x03Connector_Molex:Molex_Micro-Fit_3.0_Molex_Micro-Fit_3.0_Header_Vertical_1x03_P3.00mmJ2, J3, J6
2100Resistor_SMD:R_0805_2012MetricR4, R13
218kResistor_SMD:R_0805_2012MetricR6, R14
23,9kResistor_SMD:R_0805_2012MetricR3, R12
24,7kResistor_SMD:R_0805_2012MetricR9, R10
2LEDLED_SMD:LED_0805_2012MetricD4, D5
2MCP4725xxx-xCHPackage_TO_SOT_SMD:SOT-23-6U2, U4
2Screw_Terminal_01x04Connector_Molex:Molex_Micro-Fit_3.0_Molex_Micro-Fit_3.0_Header_Vertical_1x04_P3.00mmJ7, J8
1120Resistor_SMD:R_0805_2012MetricR1
1LMV358Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU3
1PC847Package_DIP:DIP-16_W7.62mmU7
1SN65HVD230Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1STM32F103C8T6_BluePill_Part_LikeSTM32F103C8T6:STM32_BluePill_PinHeadersU5
1SZNUP2105LPackage_TO_SOT_SMD:SOT-23D3

Similar boards

  • 2 layers47.5 × 71.5 mmESP32 Wifi2CAN Rev0.1, the printed circuit board in 3D

    ESP32 Wifi2CAN Rev0.1

    ampnics/CAN-to-WiFi-Converter-Dongle-

    CAN to WiFi Converter PCB using ESP32! This step-by-step tutorial covers schematic creation, PCB layout, and best practices for signal integrity. Perfect for automotive and IoT applications!

    72 parts9
  • 2 layers30.5 × 10.2 mmCan breakout, the printed circuit board in 3D

    Can breakout

    jumper385/can-breakout

    A basic breakout of the SN65HVD240 IC from TI. Nothing more

    10 parts
  • 2 layers63.8 × 62.1 mmRTD System Secondary, the printed circuit board in 3D

    RTD System Secondary

    TlseRacing-electronics/TlseRacing_electronics

    every schematics and PCB

    69 parts
  • 4 layers140 × 70 mmRcm, the printed circuit board in 3D

    Rcm

    Twistiee/rcm

    A CAN-controlled relay driver for a car. 21 universal channels, each of which is simultaneously a low-side output and an input — so the same board builds as a relay controller or as a switch panel, decided in firmware…

    159 parts
  • 2 layers100 × 72.5 mmSETT Telemetri, the printed circuit board in 3D

    SETT Telemetri

    kaanfurkankaya/SETT-Telemetri-Karti

    SETT Formula telemetry PCB hardware design

    62 parts
  • 4 layers86.9 × 91.9 mmHUB RevA, the printed circuit board in 3D

    HUB RevA

    SJSURoboticsTeam/urc-electrical-2026

    The 2024 - 2026 rover electrical monorepo

    113 parts1
  • 4 layers100 × 100 mmAFE, the printed circuit board in 3D

    AFE

    Blaze-Pascal/Masters-Multi-Channel_DAQ

    Custom 2-channel digital oscilloscope DAQ with 20MHz bandwidth. Built with a custom KiCad analog front-end (AFE) PCB, Gowin FPGA (Tang Nano 9K) for high-speed signal buffering (VHDL), and an RPi Pico MCU for SCPI-like…

    216 parts2GPL-3.0
  • 4 layers83.2 × 78.1 mmShield offset, the printed circuit board in 3D

    Shield offset

    apmarshall3/general-purpose-robotics-shield

    125 parts

Questions

How big is the Treadle PCB?

It measures 92 × 59 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Treadle use?

48 parts, built around the LMV358, SN65HVD230D, SS14 and SZNUP2105L. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Treadle KiCad files?

From the Robsic/throttle-brake-interface-board repository on GitHub, at the commit this page was made from: the board is treadle/treadle.kicad_pcb and its schematic treadle/Chave_de_Ignição.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Treadle design in my own project?

Its repository states no licence, so its author keeps all rights: ask Robsic before reusing the design.