Controller board: ESP32 + 2x StepStick carrier (v0.4), FluidNC config
- KiCad project generated by pcb/tools (design, route, schematic, fab outputs). - v0.4 fixes the v0.3 review findings: low-dropout 3.3 V regulator, OR'd 5 V supply, polyfuse, USB ESD protection, input clamps, ceramic decoupling at the drivers, A4988/DRV8825 jumper, ground stitching. DRC/ERC clean. - v0.3 (as ordered) kept in pcb/archive/v0.3. - FluidNC config.yaml for the board; rho hard limit on. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c498882bbb
commit
1400cc8afd
46 files changed
+226470
No files matched your search
@@ -0,0 +1,98 @@
|
||||
# SandTable Controller v0.3 (custom PCB)
|
||||
|
||||

|
||||
|
||||
A 2-layer, 80 × 63 mm board that replaces the Arduino Uno + CNC shield in the sand table. It uses the **same 4 mounting holes as an Uno**, so it fits the deck standoffs.
|
||||
|
||||
**Status: designed and checked in KiCad, with order files ready for PCBWay. It has not been built or tested yet.**
|
||||
|
||||
- **MCU:** ESP32-WROOM-32E (Wi-Fi), running FluidNC. USB-C programming through a CH340C with auto-reset, so no buttons need pressing.
|
||||
- **Motors:** 2× DRV8825 StepStick sockets, with 100 µF bulk capacitors. The board fixes the drivers at 1/32 microstepping and keeps them awake: M0–M2, RESET and SLEEP are all tied to 3.3 V. A4988 drivers also fit and run at 1/16.
|
||||
- **Power:** 12 V barrel jack with a reverse-polarity diode → RECOM R-78E 5 V switching regulator → AMS1117 3.3 V. USB 5 V and regulator 5 V are diode-ORed, so USB alone powers the logic for flashing. The motors need the 12 V supply.
|
||||
- **Connectors:** JST-XH to match the motor cable plugs:
|
||||
- 2× motor
|
||||
- home switch
|
||||
- hall sensor (5 V)
|
||||
- WS2812B LED data (buffered to 5 V)
|
||||
- 4-pin expansion header
|
||||
- **Copper:** ground pour on both layers. The ESP32 antenna sits over a copper-free area at the board edge.
|
||||
|
||||
## Changes in v0.3
|
||||
- **No holes in solder pads.** PCBWay's review of v0.2 found vias inside pads, which they would only build reliably by filling them with resin, for extra cost.
|
||||
- The router now keeps every via at least 0.2 mm from every pad. In v0.2, 26 vias sat in or overlapped pads of small parts.
|
||||
- The ESP32's 12 ground-pad holes are replaced by one solid copper pad, with the same 9 solder windows.
|
||||
- PCBWay can now build it as drawn, with no via filling.
|
||||
- **Parts list:** exact part numbers for the 4-pin header (Sullins PRPC004SAAN-RC), the driver sockets (Sullins PPTC081LFBN-RC) and the 100 µF capacitors (Panasonic EEE-FK1V101GP), as agreed with PCBWay.
|
||||
|
||||
## Changes in v0.2
|
||||
- **Drivers:** DRV8825 instead of TMC2209 in UART mode. The serial line and its resistor are removed, so IO16/IO17 are now free.
|
||||
- **Holes:** the smallest hole is now 0.3 mm. The ESP32 footprint's 0.2 mm ground-pad vias were enlarged, because PCBWay charges extra for holes under 0.3 mm.
|
||||
- **Order files:** a PCBWay order folder (Gerbers, parts list, placement file, assembly drawing, order sheet) replaces the JLCPCB files.
|
||||
- **Silkscreen:** VMOT / EN / DIR are printed beside each driver socket.
|
||||
|
||||
## Checks (KiCad 9.0.7, `kicad-cli`)
|
||||
|
||||
| Check | Result |
|
||||
|---|---|
|
||||
| ERC (schematic) | 0 violations |
|
||||
| DRC (board, all severities) against PCBWay's standard limits: 6/6 mil trace/space, 0.3 mm hole, 0.15 mm ring | 0 violations, 0 unconnected |
|
||||
| Schematic ↔ PCB parity | 0 differences |
|
||||
| Vias within 0.2 mm of a pad, holes inside a pad (checked from the board file) | 0 |
|
||||
|
||||
## Ordering from PCBWay
|
||||
Everything for the order is in [`pcbway-order/`](pcbway-order/). [`ORDER.md`](pcbway-order/ORDER.md) there lists the exact settings to enter, which file goes in which upload box, and a note to paste for PCBWay.
|
||||
|
||||
| File | What |
|
||||
|---|---|
|
||||
| `1-gerbers-…zip` | Board files: Gerbers plus separate plated and non-plated drill files |
|
||||
| `2-bom-…csv` | Parts list for turnkey assembly, with manufacturer part numbers |
|
||||
| `3-centroid-…csv` | Part positions in mm, origin at the board's bottom-left corner |
|
||||
| `assembly-top-…pdf`, `schematic-…pdf` | For PCBWay's engineers if they ask |
|
||||
|
||||
The DRV8825 modules are not on the order; you plug in your own. The back of the board has PCBWay's "WayWayWay" marker, so their order number prints there instead of on the front.
|
||||
|
||||
## Before first power-up
|
||||
1. **Driver direction.** Line up the module's VMOT, EN and DIR pins with the VMOT / EN / DIR labels on the board. A driver plugged in backwards is destroyed.
|
||||
2. **Driver current.** On a DRV8825, current limit = 2 × Vref (with the usual 0.1 Ω sense resistors).
|
||||
- Start at about 70 % of the motor's rated current. For example, a 1.0 A motor needs Vref ≈ 0.35 V.
|
||||
- Measure Vref between the trim pot and GND with the 12 V supply connected.
|
||||
- Never plug or unplug a motor while the power is on.
|
||||
3. **Home switch wiring.** Connect the switch's COM to HOME pin 3 (GND) and its NO contact to pin 2.
|
||||
4. **Firmware.**
|
||||
- Flash FluidNC over USB with the FluidNC web installer.
|
||||
- Upload `fluidnc/config.yaml` as `config.yaml`.
|
||||
- In the config, X is theta in degrees and Y is rho in mm. `$H` homes rho.
|
||||
- If an axis turns the wrong way, add `:low` to its direction pin.
|
||||
|
||||
## ESP32 pin map
|
||||
|
||||
| Function | GPIO |
|
||||
|---|---|
|
||||
| Theta (spin) STEP / DIR | IO18 / IO19 |
|
||||
| Rho (arm) STEP / DIR | IO27 / IO14 |
|
||||
| Driver enable (shared, low = on, pulled up so the drivers are off at boot) | IO13 |
|
||||
| Rho home switch | IO34 |
|
||||
| Theta hall sensor | IO35 |
|
||||
| LED strip data (through a 74AHCT1G125 buffer) | IO33 |
|
||||
| Status LED | IO2 |
|
||||
| Expansion header | IO32, IO25 |
|
||||
| Free, not connected | IO16, IO17 |
|
||||
|
||||
## Files
|
||||
|
||||
| Path | What |
|
||||
|---|---|
|
||||
| `kicad/` | KiCad 9 project: schematic, board, and project-local symbol and footprint tables |
|
||||
| `sandtable-controller-schematic.pdf` | Schematic |
|
||||
| `pcbway-order/` | Everything to upload to PCBWay, plus `ORDER.md` with the settings |
|
||||
| `renders/` | 3D renders |
|
||||
| `sandtable-controller.step` | 3D model. The copy placed in `sand-table-v2.solidcraft` is v0.1, which has the same outline and holes. |
|
||||
| `fluidnc/config.yaml` | FluidNC machine config (a starting point, not yet run on hardware) |
|
||||
| `tools/` | Python generator: `design.py` (parts, placement, nets, sourcing) → `route.py` (router, ground pour, board file), `sch.py` (schematic), `fab.py` (PCBWay order folder, renders, copy into this folder) |
|
||||
|
||||
To regenerate everything, run `python3 tools/route.py && python3 tools/sch.py && python3 tools/fab.py`. The KiCad files are built in `~/kicad/sandtable-controller` because the KiCad snap can't read inside `~/snap/`.
|
||||
|
||||
## Notes
|
||||
- **5 V budget:** the 5 V regulator supplies 0.5 A. That covers the ESP32 plus a short LED strip (about 10 LEDs at full white). Use a separate 5 V supply for longer strips.
|
||||
- **Noise:** DRV8825s are louder than TMC2209s; expect some motor whine. TMC2209 modules in standalone mode might work in these sockets, but their pin layouts vary by brand, so check before trying one.
|
||||
- **LED strip:** FluidNC doesn't drive the WS2812B header. It's there for other firmware or an add-on later.
|
||||
@@ -0,0 +1,183 @@
|
||||
"""SandTable Controller (version in VERSION): single source of truth for parts, placement and nets.
|
||||
|
||||
Board coordinates are mm, y down, origin at the board's top-left corner.
|
||||
x = 0 is the edge that faces the table wall (power + USB); x = 80 faces the
|
||||
table centre (motor/sensor connectors). The 4 mounting holes reuse the
|
||||
Arduino Uno hole pattern so the board drops onto the existing deck standoffs.
|
||||
"""
|
||||
|
||||
VERSION = '0.3'
|
||||
BOARD_W = 80.0
|
||||
BOARD_H = 63.34
|
||||
ORIGIN = (100.0, 100.0) # where board (0,0) lands in KiCad coordinates
|
||||
|
||||
# ---------------------------------------------------------------- parts
|
||||
# ref: (symbol lib_id, footprint lib_id, value, x, y, rot, lcsc, description)
|
||||
PARTS = {
|
||||
'U1': ('RF_Module:ESP32-WROOM-32E', 'RF_Module:ESP32-WROOM-32E', 'ESP32-WROOM-32E-N8', 43.0, 50.59, 180, '', 'Wi-Fi MCU module (FluidNC)'),
|
||||
'U2': ('Interface_USB:CH340C', 'Package_SO:SOIC-16_3.9x9.9mm_P1.27mm', 'CH340C', 22.0, 47.0, 0, 'C84681', 'USB-UART bridge'),
|
||||
'U3': ('Regulator_Linear:AMS1117-3.3', 'Package_TO_SOT_SMD:SOT-223-3_TabPin2', 'AMS1117-3.3', 66.0, 41.5, 0, 'C6186', '5V -> 3.3V LDO'),
|
||||
'U4': ('74xGxx:74AHCT1G125', 'Package_TO_SOT_SMD:SOT-23-5', '74AHCT1G125', 65.5, 30.0, 0, '', '3.3V -> 5V LED data buffer'),
|
||||
'PS1': ('Converter_DCDC:R-785.0-0.5', 'Converter_DCDC:Converter_DCDC_RECOM_R-78E-0.5_THT', 'R-78E5.0-0.5', 18.0, 35.0, 0, '', '12V -> 5V switching regulator'),
|
||||
'A1': ('Driver_Motor:Pololu_Breakout_A4988', 'Module:Pololu_Breakout-16_15.2x20.3mm', 'DRV8825 StepStick (theta/spin)', 38.1, 1.9, 270, '', 'Stepper driver socket (DRV8825, 1/32 step)'),
|
||||
'A2': ('Driver_Motor:Pololu_Breakout_A4988', 'Module:Pololu_Breakout-16_15.2x20.3mm', 'DRV8825 StepStick (rho/arm)', 59.1, 1.9, 270, '', 'Stepper driver socket (DRV8825, 1/32 step)'),
|
||||
'J1': ('Connector:Barrel_Jack', 'Connector_BarrelJack:BarrelJack_CUI_PJ-063AH_Horizontal', '12V DC 5.5x2.1', 12.3, 25.0, 270, '', 'Power input'),
|
||||
'J2': ('Connector:USB_C_Receptacle_USB2.0_16P', 'Connector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12', 'USB-C', 3.4, 44.0, 270, 'C165948', 'Programming / serial'),
|
||||
'J3': ('Connector_Generic:Conn_01x04', 'Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical', 'SPIN MOTOR', 4.5, 3.4, 270, 'C158012', 'Theta motor (XH-4, matches motor cable)'),
|
||||
'J4': ('Connector_Generic:Conn_01x04', 'Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical', 'ARM MOTOR', 76.5, 3.4, 270, 'C158012', 'Rho motor via slip ring'),
|
||||
'J5': ('Connector_Generic:Conn_01x03', 'Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical', 'HOME SW', 76.5, 18.5, 270, 'C144394', 'Rho home switch (via slip ring)'),
|
||||
'J6': ('Connector_Generic:Conn_01x03', 'Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical', 'HALL', 76.5, 29.6, 270, 'C144394', 'Optional theta hall sensor (5V)'),
|
||||
'J7': ('Connector_Generic:Conn_01x03', 'Connector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical', 'LED STRIP', 76.5, 40.7, 270, 'C144394', 'WS2812B strip (5V, small strips only)'),
|
||||
'J8': ('Connector_Generic:Conn_01x04', 'Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical', 'EXPANSION', 77.5, 52.0, 0, '', '3V3 / IO32 / IO25 / GND'),
|
||||
'D1': ('Device:D_Schottky', 'Diode_SMD:D_SMA', 'SS34', 16.0, 22.0, 270, 'C8678', 'Reverse-polarity protection'),
|
||||
'D2': ('Device:D_Schottky', 'Diode_SMD:D_SOD-123', 'B5819W', 29.0, 35.0, 0, 'C8598', '5V OR-ing (regulator)'),
|
||||
'D3': ('Device:D_Schottky', 'Diode_SMD:D_SOD-123', 'B5819W', 13.0, 39.8, 0, 'C8598', '5V OR-ing (USB)'),
|
||||
'D4': ('Device:LED', 'LED_SMD:LED_0603_1608Metric', 'GREEN', 34.0, 30.0, 0, 'C72043', 'Power LED'),
|
||||
'D5': ('Device:LED', 'LED_SMD:LED_0603_1608Metric', 'BLUE', 38.0, 30.0, 0, 'C72041', 'Status LED (IO2)'),
|
||||
'Q1': ('Transistor_BJT:MMBT3904', 'Package_TO_SOT_SMD:SOT-23', 'MMBT3904', 28.0, 47.2, 0, 'C20526', 'Auto-reset (EN)'),
|
||||
'Q2': ('Transistor_BJT:MMBT3904', 'Package_TO_SOT_SMD:SOT-23', 'MMBT3904', 28.0, 51.2, 0, 'C20526', 'Auto-reset (IO0)'),
|
||||
'SW1': ('Switch:SW_Push', 'Button_Switch_SMD:SW_SPST_B3U-1000P', 'RESET', 27.5, 55.0, 0, 'C231329', 'EN / reset button'),
|
||||
'SW2': ('Switch:SW_Push', 'Button_Switch_SMD:SW_SPST_B3U-1000P', 'BOOT', 22.0, 55.0, 0, 'C231329', 'IO0 / boot button'),
|
||||
'C1': ('Device:C_Polarized', 'Capacitor_SMD:CP_Elec_8x10', '100uF 25V', 24.0, 21.0, 0, '', 'Theta driver VMOT bulk'),
|
||||
'C2': ('Device:C_Polarized', 'Capacitor_SMD:CP_Elec_8x10', '100uF 25V', 45.5, 21.0, 0, '', 'Rho driver VMOT bulk'),
|
||||
'C3': ('Device:C', 'Capacitor_SMD:C_1206_3216Metric', '10uF 25V', 20.5, 39.6, 0, 'C13585', '12V input decoupling'),
|
||||
'C4': ('Device:C', 'Capacitor_SMD:C_1206_3216Metric', '10uF 16V', 26.0, 39.6, 0, 'C13585', 'Regulator output'),
|
||||
'C5': ('Device:C', 'Capacitor_SMD:C_0805_2012Metric', '10uF', 59.6, 44.0, 90, 'C15850', 'LDO input'),
|
||||
'C6': ('Device:C', 'Capacitor_SMD:C_0805_2012Metric', '22uF', 59.6, 39.5, 90, 'C45783', 'LDO output'),
|
||||
'C7': ('Device:C', 'Capacitor_SMD:C_0603_1608Metric', '100nF', 27.0, 43.0, 90, 'C14663', 'CH340C decoupling'),
|
||||
'C8': ('Device:C', 'Capacitor_SMD:C_0603_1608Metric', '1uF', 54.6, 52.7, 0, 'C15849', 'EN reset delay'),
|
||||
'C9': ('Device:C', 'Capacitor_SMD:C_0805_2012Metric', '10uF', 57.5, 54.6, 90, 'C15850', 'ESP32 bulk decoupling'),
|
||||
'C10': ('Device:C', 'Capacitor_SMD:C_0603_1608Metric', '100nF', 55.0, 55.0, 90, 'C14663', 'ESP32 decoupling'),
|
||||
'C13': ('Device:C', 'Capacitor_SMD:C_0603_1608Metric', '100nF', 61.0, 18.5, 0, 'C14663', 'Home switch filter'),
|
||||
'C14': ('Device:C', 'Capacitor_SMD:C_0603_1608Metric', '100nF', 61.0, 20.7, 0, 'C14663', 'Hall filter'),
|
||||
'C15': ('Device:C', 'Capacitor_SMD:C_0603_1608Metric', '100nF', 61.0, 30.0, 90, 'C14663', 'Buffer decoupling'),
|
||||
'R1': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '5.1k', 11.5, 42.75, 0, 'C23186', 'USB-C CC1 pull-down'),
|
||||
'R2': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '5.1k', 11.5, 45.75, 0, 'C23186', 'USB-C CC2 pull-down'),
|
||||
'R3': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '10k', 31.0, 45.0, 90, 'C25804', 'Q1 base'),
|
||||
'R4': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '10k', 31.0, 49.5, 90, 'C25804', 'Q2 base'),
|
||||
'R5': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '10k', 54.6, 51.0, 0, 'C25804', 'EN pull-up'),
|
||||
'R6': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '10k', 31.0, 37.5, 0, 'C25804', 'IO0 pull-up'),
|
||||
'R8': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '10k', 47.0, 31.0, 0, 'C25804', 'Driver enable pull-up (off at boot)'),
|
||||
'R9': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '10k', 54.0, 18.5, 0, 'C25804', 'Home switch pull-up'),
|
||||
'R10': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '1k', 57.5, 18.5, 0, 'C21190', 'Home switch series'),
|
||||
'R11': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '10k', 54.0, 20.7, 0, 'C25804', 'Hall pull-up'),
|
||||
'R12': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '1k', 57.5, 20.7, 0, 'C21190', 'Hall series'),
|
||||
'R13': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '330', 70.0, 30.0, 90, 'C23138', 'LED data series'),
|
||||
'R14': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '1k', 34.0, 32.5, 0, 'C21190', 'Power LED'),
|
||||
'R15': ('Device:R', 'Resistor_SMD:R_0603_1608Metric', '1k', 38.0, 32.5, 0, 'C21190', 'Status LED'),
|
||||
'H1': ('Mechanical:MountingHole', 'MountingHole:MountingHole_3.2mm_M3', 'M3', 15.24, 7.54, 0, '', 'Uno hole'),
|
||||
'H2': ('Mechanical:MountingHole', 'MountingHole:MountingHole_3.2mm_M3', 'M3', 13.97, 55.8, 0, '', 'Uno hole'),
|
||||
'H3': ('Mechanical:MountingHole', 'MountingHole:MountingHole_3.2mm_M3', 'M3', 66.04, 22.78, 0, '', 'Uno hole'),
|
||||
'H4': ('Mechanical:MountingHole', 'MountingHole:MountingHole_3.2mm_M3', 'M3', 66.04, 50.72, 0, '', 'Uno hole'),
|
||||
}
|
||||
|
||||
# ---------------------------------------------------------------- nets
|
||||
NETS = {
|
||||
'GND': ['J1.2', 'J2.A1', 'J2.A12', 'J2.B1', 'J2.B12', 'J2.S1', 'C1.2', 'C2.2', 'C3.2', 'C4.2', 'C5.2',
|
||||
'C6.2', 'C7.2', 'C8.2', 'C9.2', 'C10.2', 'C13.2', 'C14.2', 'C15.2', 'PS1.2', 'U3.1', 'U2.1',
|
||||
'U1.1', 'U1.15', 'U1.38', 'U1.39', 'A1.1', 'A1.7', 'A2.1', 'A2.7',
|
||||
'J5.3', 'J6.3', 'J7.3', 'J8.4', 'SW1.2', 'SW2.2', 'R1.2', 'R2.2', 'D4.1', 'D5.1', 'U4.1', 'U4.3'],
|
||||
'VIN_RAW': ['J1.1', 'D1.2'],
|
||||
'+12V': ['D1.1', 'C1.1', 'C2.1', 'C3.1', 'PS1.1', 'A1.8', 'A2.8'],
|
||||
'+5V_REG': ['PS1.3', 'C4.1', 'D2.2'],
|
||||
'VBUS': ['J2.A4', 'J2.A9', 'J2.B4', 'J2.B9', 'D3.2'],
|
||||
'+5V': ['D2.1', 'D3.1', 'U3.3', 'C5.1', 'U4.5', 'C15.1', 'J6.1', 'J7.1'],
|
||||
'+3V3': ['U3.2', 'C6.1', 'U1.2', 'C9.1', 'C10.1', 'U2.16', 'U2.4', 'C7.1', 'R5.1', 'R6.1', 'R8.1',
|
||||
'R9.1', 'R11.1', 'R14.1', 'J5.1', 'J8.1',
|
||||
# DRV8825 sockets: VDD/FAULT, M0-M2 high (1/32 step), RESET + SLEEP high (awake)
|
||||
'A1.2', 'A1.10', 'A1.11', 'A1.12', 'A1.13', 'A1.14',
|
||||
'A2.2', 'A2.10', 'A2.11', 'A2.12', 'A2.13', 'A2.14'],
|
||||
'USB_DP': ['J2.A6', 'J2.B6', 'U2.5'],
|
||||
'USB_DM': ['J2.A7', 'J2.B7', 'U2.6'],
|
||||
'CC1': ['J2.A5', 'R1.1'],
|
||||
'CC2': ['J2.B5', 'R2.1'],
|
||||
'U0TXD': ['U1.35', 'U2.3'],
|
||||
'U0RXD': ['U1.34', 'U2.2'],
|
||||
'DTR': ['U2.13', 'R3.1', 'Q2.2'],
|
||||
'RTS': ['U2.14', 'R4.1', 'Q1.2'],
|
||||
'Q1B': ['R3.2', 'Q1.1'],
|
||||
'Q2B': ['R4.2', 'Q2.1'],
|
||||
'EN': ['Q1.3', 'U1.3', 'R5.2', 'C8.1', 'SW1.1'],
|
||||
'IO0': ['Q2.3', 'U1.25', 'R6.2', 'SW2.1'],
|
||||
'DRV_EN': ['U1.16', 'R8.2', 'A1.9', 'A2.9'],
|
||||
'X_STEP': ['U1.30', 'A1.15'],
|
||||
'X_DIR': ['U1.31', 'A1.16'],
|
||||
'Y_STEP': ['U1.12', 'A2.15'],
|
||||
'Y_DIR': ['U1.13', 'A2.16'],
|
||||
'X_1A': ['A1.4', 'J3.1'], 'X_1B': ['A1.3', 'J3.2'], 'X_2A': ['A1.5', 'J3.3'], 'X_2B': ['A1.6', 'J3.4'],
|
||||
'Y_1A': ['A2.4', 'J4.1'], 'Y_1B': ['A2.3', 'J4.2'], 'Y_2A': ['A2.5', 'J4.3'], 'Y_2B': ['A2.6', 'J4.4'],
|
||||
'HOME_RAW': ['J5.2', 'R9.2', 'R10.1'],
|
||||
'HOME': ['R10.2', 'C13.1', 'U1.6'],
|
||||
'HALL_RAW': ['J6.2', 'R11.2', 'R12.1'],
|
||||
'HALL': ['R12.2', 'C14.1', 'U1.7'],
|
||||
'LED_DATA': ['U1.9', 'U4.2'],
|
||||
'LED_BUF': ['U4.4', 'R13.1'],
|
||||
'LED_DOUT': ['R13.2', 'J7.2'],
|
||||
'EXP_IO32': ['U1.8', 'J8.2'],
|
||||
'EXP_IO25': ['U1.10', 'J8.3'],
|
||||
'STAT': ['U1.24', 'R15.1'],
|
||||
'STAT_A': ['R15.2', 'D5.2'],
|
||||
'PWR_A': ['R14.2', 'D4.2'],
|
||||
}
|
||||
|
||||
# Pins intentionally left unconnected (get no-connect flags in the schematic)
|
||||
NO_CONNECT = ['U1.4', 'U1.5', 'U1.14', 'U1.17', 'U1.18', 'U1.19', 'U1.20', 'U1.21', 'U1.22', 'U1.23',
|
||||
'U1.11', 'U1.26', 'U1.29', 'U1.32', 'U1.33', 'U1.36', 'U1.37',
|
||||
'U2.7', 'U2.8', 'U2.9', 'U2.10', 'U2.11', 'U2.12', 'U2.15',
|
||||
'U1.27', 'U1.28', 'J2.A8', 'J2.B8']
|
||||
|
||||
# ---------------------------------------------------------------- rules
|
||||
# net class -> (track width, clearance)
|
||||
NETCLASS = {
|
||||
'Default': (0.2, 0.16),
|
||||
'Power': (0.8, 0.2),
|
||||
'Motor': (0.6, 0.2),
|
||||
'Rail': (0.5, 0.2),
|
||||
}
|
||||
NET_TO_CLASS = {}
|
||||
for n in ('GND', 'VIN_RAW', '+12V'):
|
||||
NET_TO_CLASS[n] = 'Power'
|
||||
for n in ('X_1A', 'X_1B', 'X_2A', 'X_2B', 'Y_1A', 'Y_1B', 'Y_2A', 'Y_2B'):
|
||||
NET_TO_CLASS[n] = 'Motor'
|
||||
for n in ('+5V', '+5V_REG', 'VBUS', '+3V3'):
|
||||
NET_TO_CLASS[n] = 'Rail'
|
||||
|
||||
VIA = (0.6, 0.3) # diameter, drill
|
||||
|
||||
# PCBWay standard process: 6/6 mil track/space, 0.3 mm min hole, 0.15 mm annular ring.
|
||||
# Library footprints with smaller holes (the ESP32's thermal vias are 0.2 mm) are enlarged to fit.
|
||||
MIN_DRILL = 0.3
|
||||
MIN_RING = 0.2
|
||||
|
||||
# ---------------------------------------------------------------- sourcing (PCBWay BOM)
|
||||
# (refs, manufacturer, manufacturer part number, description, notes). Blank MPN = any brand to the description.
|
||||
SOURCING = [
|
||||
(['U1'], 'Espressif', 'ESP32-WROOM-32E-N8', 'Wi-Fi + Bluetooth module, 8 MB flash, PCB antenna', ''),
|
||||
(['U2'], 'WCH', 'CH340C', 'USB to UART bridge, SOIC-16', ''),
|
||||
(['U3'], 'Advanced Monolithic Systems', 'AMS1117-3.3', 'LDO regulator 3.3 V 1 A, SOT-223', 'Any AMS1117-3.3 equivalent ok'),
|
||||
(['U4'], 'Texas Instruments', 'SN74AHCT1G125DBVR', 'Single buffer, TTL-level input, SOT-23-5', ''),
|
||||
(['PS1'], 'RECOM', 'R-78E5.0-0.5', 'Switching regulator 5 V 0.5 A, SIP-3', ''),
|
||||
(['J1'], 'Same Sky (CUI Devices)', 'PJ-063AH', 'DC barrel jack, 2.0 mm pin, fits 5.5 x 2.1 mm plugs', ''),
|
||||
(['J2'], 'Korean Hroparts Elec', 'TYPE-C-31-M-12', 'USB-C receptacle, USB 2.0, 16 pin', ''),
|
||||
(['J3', 'J4'], 'JST', 'B4B-XH-A(LF)(SN)', 'XH header, 4 pin, 2.5 mm pitch, vertical', ''),
|
||||
(['J5', 'J6', 'J7'], 'JST', 'B3B-XH-A(LF)(SN)', 'XH header, 3 pin, 2.5 mm pitch, vertical', ''),
|
||||
(['J8'], 'Sullins', 'PRPC004SAAN-RC', 'Male pin header 1 x 4, 2.54 mm pitch, vertical', ''),
|
||||
(['A1', 'A2'], 'Sullins', 'PPTC081LFBN-RC', 'Female pin header 1 x 8, 2.54 mm pitch, 8.5 mm tall', '2 headers per driver (4 total). Sockets only: the DRV8825 modules are supplied by me'),
|
||||
(['D1'], '', 'SS34', 'Schottky diode 40 V 3 A, SMA', 'Any brand'),
|
||||
(['D2', 'D3'], '', 'B5819W', 'Schottky diode 40 V 1 A, SOD-123', 'Any brand'),
|
||||
(['D4'], '', '', 'LED green, 0603', 'Any brand'),
|
||||
(['D5'], '', '', 'LED blue, 0603', 'Any brand'),
|
||||
(['Q1', 'Q2'], 'onsemi', 'MMBT3904LT1G', 'NPN transistor 40 V 200 mA, SOT-23', 'Any MMBT3904 ok'),
|
||||
(['SW1', 'SW2'], 'Omron', 'B3U-1000P', 'Tactile switch, SMD, 3 x 2.5 mm', ''),
|
||||
(['C1', 'C2'], 'Panasonic', 'EEE-FK1V101GP', 'Aluminium electrolytic capacitor 100 uF 35 V, SMD 8 x 10.2 mm', ''),
|
||||
(['C3', 'C4'], '', '', 'Ceramic capacitor 10 uF 25 V X5R, 1206', 'Any brand'),
|
||||
(['C5', 'C9'], '', '', 'Ceramic capacitor 10 uF 16 V X5R, 0805', 'Any brand'),
|
||||
(['C6'], '', '', 'Ceramic capacitor 22 uF 10 V X5R, 0805', 'Any brand'),
|
||||
(['C7', 'C10', 'C13', 'C14', 'C15'], '', '', 'Ceramic capacitor 100 nF 50 V X7R, 0603', 'Any brand'),
|
||||
(['C8'], '', '', 'Ceramic capacitor 1 uF 16 V X7R, 0603', 'Any brand'),
|
||||
(['R1', 'R2'], '', '', 'Resistor 5.1 k 1%, 0603', 'Any brand'),
|
||||
(['R3', 'R4', 'R5', 'R6', 'R8', 'R9', 'R11'], '', '', 'Resistor 10 k 1%, 0603', 'Any brand'),
|
||||
(['R10', 'R12', 'R14', 'R15'], '', '', 'Resistor 1 k 1%, 0603', 'Any brand'),
|
||||
(['R13'], '', '', 'Resistor 330 1%, 0603', 'Any brand'),
|
||||
]
|
||||
SOURCING_QTY = {('A1', 'A2'): 4} # BOM lines whose piece count differs from the designator count
|
||||
@@ -0,0 +1,18 @@
|
||||
(fp_lib_table
|
||||
(version 7)
|
||||
(lib (name "Button_Switch_SMD")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Button_Switch_SMD.pretty")(options "")(descr ""))
|
||||
(lib (name "Capacitor_SMD")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Capacitor_SMD.pretty")(options "")(descr ""))
|
||||
(lib (name "Connector_BarrelJack")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Connector_BarrelJack.pretty")(options "")(descr ""))
|
||||
(lib (name "Connector_JST")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Connector_JST.pretty")(options "")(descr ""))
|
||||
(lib (name "Connector_PinHeader_2.54mm")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Connector_PinHeader_2.54mm.pretty")(options "")(descr ""))
|
||||
(lib (name "Connector_USB")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Connector_USB.pretty")(options "")(descr ""))
|
||||
(lib (name "Converter_DCDC")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Converter_DCDC.pretty")(options "")(descr ""))
|
||||
(lib (name "Diode_SMD")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Diode_SMD.pretty")(options "")(descr ""))
|
||||
(lib (name "LED_SMD")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/LED_SMD.pretty")(options "")(descr ""))
|
||||
(lib (name "Module")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Module.pretty")(options "")(descr ""))
|
||||
(lib (name "MountingHole")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/MountingHole.pretty")(options "")(descr ""))
|
||||
(lib (name "Package_SO")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Package_SO.pretty")(options "")(descr ""))
|
||||
(lib (name "Package_TO_SOT_SMD")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Package_TO_SOT_SMD.pretty")(options "")(descr ""))
|
||||
(lib (name "RF_Module")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/RF_Module.pretty")(options "")(descr ""))
|
||||
(lib (name "Resistor_SMD")(type "KiCad")(uri "${KICAD9_FOOTPRINT_DIR}/Resistor_SMD.pretty")(options "")(descr ""))
|
||||
)
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,722 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.0,
|
||||
"height": 8.0,
|
||||
"width": 2.54
|
||||
},
|
||||
"silk_line_width": 0.12,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.15,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.508
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"filename": "board_design_settings.json",
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"creepage": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"hole_to_hole": "error",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "ignore",
|
||||
"lib_footprint_mismatch": "ignore",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"mirrored_text_on_front_layer": "warning",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"nonmirrored_text_on_back_layer": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "ignore",
|
||||
"silk_over_copper": "ignore",
|
||||
"silk_overlap": "ignore",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "ignore",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_angle": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_segment_length": "error",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.16,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.3,
|
||||
"min_groove_width": 0.0,
|
||||
"min_hole_clearance": 0.2,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.16,
|
||||
"min_via_annular_width": 0.15,
|
||||
"min_via_diameter": 0.6,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpthpad": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_onsmdpad": true,
|
||||
"td_ontrackend": false,
|
||||
"td_onvia": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"conflicting_netclasses": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"footprint_filter": "ignore",
|
||||
"footprint_link_issues": "warning",
|
||||
"four_way_junction": "ignore",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"label_multiple_wires": "warning",
|
||||
"lib_symbol_issues": "warning",
|
||||
"lib_symbol_mismatch": "warning",
|
||||
"missing_bidi_pin": "warning",
|
||||
"missing_input_pin": "warning",
|
||||
"missing_power_pin": "error",
|
||||
"missing_unit": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"same_local_global_label": "warning",
|
||||
"similar_label_and_power": "warning",
|
||||
"similar_labels": "warning",
|
||||
"similar_power": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"single_global_label": "ignore",
|
||||
"unannotated": "error",
|
||||
"unconnected_wire_endpoint": "warning",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "sandtable-controller.kicad_pro",
|
||||
"version": 3
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.16,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 2147483647,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
},
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Power",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 0,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.8,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
},
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Motor",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 0,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.6,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
},
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Rail",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 0,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.5,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": [
|
||||
{
|
||||
"netclass": "Power",
|
||||
"pattern": "/GND"
|
||||
},
|
||||
{
|
||||
"netclass": "Power",
|
||||
"pattern": "/VIN_RAW"
|
||||
},
|
||||
{
|
||||
"netclass": "Power",
|
||||
"pattern": "/+12V"
|
||||
},
|
||||
{
|
||||
"netclass": "Motor",
|
||||
"pattern": "/X_1A"
|
||||
},
|
||||
{
|
||||
"netclass": "Motor",
|
||||
"pattern": "/X_1B"
|
||||
},
|
||||
{
|
||||
"netclass": "Motor",
|
||||
"pattern": "/X_2A"
|
||||
},
|
||||
{
|
||||
"netclass": "Motor",
|
||||
"pattern": "/X_2B"
|
||||
},
|
||||
{
|
||||
"netclass": "Motor",
|
||||
"pattern": "/Y_1A"
|
||||
},
|
||||
{
|
||||
"netclass": "Motor",
|
||||
"pattern": "/Y_1B"
|
||||
},
|
||||
{
|
||||
"netclass": "Motor",
|
||||
"pattern": "/Y_2A"
|
||||
},
|
||||
{
|
||||
"netclass": "Motor",
|
||||
"pattern": "/Y_2B"
|
||||
},
|
||||
{
|
||||
"netclass": "Rail",
|
||||
"pattern": "/+5V"
|
||||
},
|
||||
{
|
||||
"netclass": "Rail",
|
||||
"pattern": "/+5V_REG"
|
||||
},
|
||||
{
|
||||
"netclass": "Rail",
|
||||
"pattern": "/VBUS"
|
||||
},
|
||||
{
|
||||
"netclass": "Rail",
|
||||
"pattern": "/+3V3"
|
||||
}
|
||||
]
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "${PROJECTNAME}.csv",
|
||||
"bom_fmt_presets": [],
|
||||
"bom_fmt_settings": {
|
||||
"field_delimiter": ",",
|
||||
"keep_line_breaks": false,
|
||||
"keep_tabs": false,
|
||||
"name": "CSV",
|
||||
"ref_delimiter": ",",
|
||||
"ref_range_delimiter": "",
|
||||
"string_delimiter": "\""
|
||||
},
|
||||
"bom_presets": [],
|
||||
"bom_settings": {
|
||||
"exclude_dnp": false,
|
||||
"fields_ordered": [
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Reference",
|
||||
"name": "Reference",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"include_excluded_from_bom": false,
|
||||
"name": "Grouped By Value",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Reference"
|
||||
},
|
||||
"connection_grid_size": 50.0,
|
||||
"drawing": {
|
||||
"dashed_lines_dash_length_ratio": 12.0,
|
||||
"dashed_lines_gap_length_ratio": 3.0,
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.25,
|
||||
"operating_point_overlay_i_precision": 3,
|
||||
"operating_point_overlay_i_range": "~A",
|
||||
"operating_point_overlay_v_precision": 3,
|
||||
"operating_point_overlay_v_range": "~V",
|
||||
"overbar_offset_ratio": 1.23,
|
||||
"pin_symbol_size": 0.0,
|
||||
"text_offset_ratio": 0.08
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"space_save_all_events": true,
|
||||
"spice_current_sheet_as_root": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"spice_model_current_sheet_as_root": true,
|
||||
"spice_save_all_currents": false,
|
||||
"spice_save_all_dissipations": false,
|
||||
"spice_save_all_voltages": false,
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"d585c3d2-c803-5c74-8a05-da481956c6b2",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,753 @@
|
||||
(kicad_symbol_lib
|
||||
(version 20241209)
|
||||
(generator "sandtable-gen")
|
||||
(generator_version "9.0")
|
||||
(symbol "CH340C_3V3"
|
||||
(exclude_from_sim no)
|
||||
(in_bom yes)
|
||||
(on_board yes)
|
||||
(property "Reference" "U"
|
||||
(at -5.08 13.97 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(justify right)
|
||||
)
|
||||
)
|
||||
(property "Value" "CH340C"
|
||||
(at 1.27 13.97 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(justify left)
|
||||
)
|
||||
)
|
||||
(property "Footprint" "Package_SO:SOIC-16_3.9x9.9mm_P1.27mm"
|
||||
(at -18.542 30.226 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(justify left)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Datasheet" "https://datasheet.lcsc.com/szlcsc/Jiangsu-Qin-Heng-CH340C_C84681.pdf"
|
||||
(at -6.604 33.274 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Description" "USB serial converter, crystal-less, UART, SOIC-16"
|
||||
(at -1.524 36.068 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "ki_keywords" "USB UART Serial Converter Interface"
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "ki_fp_filters" "SOIC*3.9x9.9mm*P1.27mm*"
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(symbol "CH340C_3V3_0_1"
|
||||
(rectangle
|
||||
(start -7.62 12.7)
|
||||
(end 7.62 -12.7)
|
||||
(stroke
|
||||
(width 0.254)
|
||||
(type default)
|
||||
)
|
||||
(fill
|
||||
(type background)
|
||||
)
|
||||
)
|
||||
)
|
||||
(symbol "CH340C_3V3_1_1"
|
||||
(pin input line
|
||||
(at -10.16 7.62 0)
|
||||
(length 2.54)
|
||||
(name "R232"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "15"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin bidirectional line
|
||||
(at -10.16 2.54 0)
|
||||
(length 2.54)
|
||||
(name "UD+"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "5"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin bidirectional line
|
||||
(at -10.16 0 0)
|
||||
(length 2.54)
|
||||
(name "UD-"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "6"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin no_connect line
|
||||
(at -7.62 -5.08 0)
|
||||
(length 2.54)
|
||||
(hide yes)
|
||||
(name "NC"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "7"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin no_connect line
|
||||
(at -7.62 -7.62 0)
|
||||
(length 2.54)
|
||||
(hide yes)
|
||||
(name "NC"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "8"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin power_in line
|
||||
(at -2.54 15.24 270)
|
||||
(length 2.54)
|
||||
(name "VCC"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "16"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin passive line
|
||||
(at 0 15.24 270)
|
||||
(length 2.54)
|
||||
(name "V3"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "4"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin power_in line
|
||||
(at 0 -15.24 90)
|
||||
(length 2.54)
|
||||
(name "GND"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin output line
|
||||
(at 10.16 10.16 180)
|
||||
(length 2.54)
|
||||
(name "TXD"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at 10.16 7.62 180)
|
||||
(length 2.54)
|
||||
(name "RXD"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "3"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at 10.16 2.54 180)
|
||||
(length 2.54)
|
||||
(name "~{CTS}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "9"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at 10.16 0 180)
|
||||
(length 2.54)
|
||||
(name "~{DSR}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "10"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at 10.16 -2.54 180)
|
||||
(length 2.54)
|
||||
(name "~{RI}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "11"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at 10.16 -5.08 180)
|
||||
(length 2.54)
|
||||
(name "~{DCD}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "12"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin output line
|
||||
(at 10.16 -7.62 180)
|
||||
(length 2.54)
|
||||
(name "~{DTR}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "13"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin output line
|
||||
(at 10.16 -10.16 180)
|
||||
(length 2.54)
|
||||
(name "~{RTS}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "14"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(embedded_fonts no)
|
||||
)
|
||||
(symbol "DRV8825_StepStick"
|
||||
(exclude_from_sim no)
|
||||
(in_bom yes)
|
||||
(on_board yes)
|
||||
(property "Reference" "A"
|
||||
(at -2.54 19.05 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(justify right)
|
||||
)
|
||||
)
|
||||
(property "Value" "Pololu_Breakout_A4988"
|
||||
(at -2.54 16.51 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(justify right)
|
||||
)
|
||||
)
|
||||
(property "Footprint" "Module:Pololu_Breakout-16_15.2x20.3mm"
|
||||
(at 6.985 -19.05 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(justify left)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Datasheet" "https://www.pololu.com/product/2980/pictures"
|
||||
(at 2.54 -7.62 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Description" "Pololu Breakout Board, Stepper Driver A4988"
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "ki_keywords" "Pololu Breakout Board Stepper Driver A4988"
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "ki_fp_filters" "Pololu*Breakout*15.2x20.3mm*"
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(symbol "DRV8825_StepStick_0_1"
|
||||
(rectangle
|
||||
(start 10.16 -17.78)
|
||||
(end -7.62 15.24)
|
||||
(stroke
|
||||
(width 0.254)
|
||||
(type default)
|
||||
)
|
||||
(fill
|
||||
(type background)
|
||||
)
|
||||
)
|
||||
)
|
||||
(symbol "DRV8825_StepStick_1_1"
|
||||
(pin input line
|
||||
(at -10.16 10.16 0)
|
||||
(length 2.54)
|
||||
(name "~{RST}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "13"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at -10.16 7.62 0)
|
||||
(length 2.54)
|
||||
(name "~{SLP}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "14"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at -10.16 2.54 0)
|
||||
(length 2.54)
|
||||
(name "~{EN}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "9"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at -10.16 0 0)
|
||||
(length 2.54)
|
||||
(name "STEP"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "15"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at -10.16 -2.54 0)
|
||||
(length 2.54)
|
||||
(name "DIR"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "16"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at -10.16 -7.62 0)
|
||||
(length 2.54)
|
||||
(name "M0"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "10"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at -10.16 -10.16 0)
|
||||
(length 2.54)
|
||||
(name "M1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "11"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin input line
|
||||
(at -10.16 -12.7 0)
|
||||
(length 2.54)
|
||||
(name "M2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "12"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin passive line
|
||||
(at 0 17.78 270)
|
||||
(length 2.54)
|
||||
(name "VDD/~{FAULT}"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin power_in line
|
||||
(at 0 -20.32 90)
|
||||
(length 2.54)
|
||||
(name "GND"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin power_in line
|
||||
(at 5.08 17.78 270)
|
||||
(length 2.54)
|
||||
(name "VMOT"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "8"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin power_in line
|
||||
(at 5.08 -20.32 90)
|
||||
(length 2.54)
|
||||
(name "GND"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "7"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin output line
|
||||
(at 12.7 2.54 180)
|
||||
(length 2.54)
|
||||
(name "A2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "3"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin output line
|
||||
(at 12.7 0 180)
|
||||
(length 2.54)
|
||||
(name "A1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "4"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin output line
|
||||
(at 12.7 -2.54 180)
|
||||
(length 2.54)
|
||||
(name "B1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "5"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin output line
|
||||
(at 12.7 -5.08 180)
|
||||
(length 2.54)
|
||||
(name "B2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "6"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(embedded_fonts no)
|
||||
)
|
||||
)
|
||||
@@ -0,0 +1,17 @@
|
||||
(sym_lib_table
|
||||
(version 7)
|
||||
(lib (name "SandTable")(type "KiCad")(uri "${KIPRJMOD}/sandtable.kicad_sym")(options "")(descr "SandTable custom symbols"))
|
||||
(lib (name "74xGxx")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/74xGxx.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Connector")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Connector.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Connector_Generic")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Connector_Generic.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Converter_DCDC")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Converter_DCDC.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Device")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Device.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Driver_Motor")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Driver_Motor.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Interface_USB")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Interface_USB.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Mechanical")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Mechanical.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "RF_Module")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/RF_Module.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Regulator_Linear")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Regulator_Linear.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Switch")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Switch.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "Transistor_BJT")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/Transistor_BJT.kicad_sym")(options "")(descr ""))
|
||||
(lib (name "power")(type "KiCad")(uri "${KICAD9_SYMBOL_DIR}/power.kicad_sym")(options "")(descr ""))
|
||||
)
|
||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
Item #,Designator,Qty,Manufacturer,Mfg Part #,Description / Value,Package / Footprint,Type,Notes
|
||||
1,U1,1,Espressif,ESP32-WROOM-32E-N8,"Wi-Fi + Bluetooth module, 8 MB flash, PCB antenna",ESP32-WROOM-32E,SMD,
|
||||
2,U2,1,WCH,CH340C,"USB to UART bridge, SOIC-16",SOIC-16_3.9x9.9mm_P1.27mm,SMD,
|
||||
3,U3,1,Advanced Monolithic Systems,AMS1117-3.3,"LDO regulator 3.3 V 1 A, SOT-223",SOT-223-3_TabPin2,SMD,Any AMS1117-3.3 equivalent ok
|
||||
4,U4,1,Texas Instruments,SN74AHCT1G125DBVR,"Single buffer, TTL-level input, SOT-23-5",SOT-23-5,SMD,
|
||||
5,PS1,1,RECOM,R-78E5.0-0.5,"Switching regulator 5 V 0.5 A, SIP-3",Converter_DCDC_RECOM_R-78E-0.5_THT,Thru-Hole,
|
||||
6,J1,1,Same Sky (CUI Devices),PJ-063AH,"DC barrel jack, 2.0 mm pin, fits 5.5 x 2.1 mm plugs",BarrelJack_CUI_PJ-063AH_Horizontal,Thru-Hole,
|
||||
7,J2,1,Korean Hroparts Elec,TYPE-C-31-M-12,"USB-C receptacle, USB 2.0, 16 pin",USB_C_Receptacle_HRO_TYPE-C-31-M-12,SMD,
|
||||
8,"J3,J4",2,JST,B4B-XH-A(LF)(SN),"XH header, 4 pin, 2.5 mm pitch, vertical",JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical,Thru-Hole,
|
||||
9,"J5,J6,J7",3,JST,B3B-XH-A(LF)(SN),"XH header, 3 pin, 2.5 mm pitch, vertical",JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical,Thru-Hole,
|
||||
10,J8,1,Sullins,PRPC004SAAN-RC,"Male pin header 1 x 4, 2.54 mm pitch, vertical",PinHeader_1x04_P2.54mm_Vertical,Thru-Hole,
|
||||
11,"A1,A2",4,Sullins,PPTC081LFBN-RC,"Female pin header 1 x 8, 2.54 mm pitch, 8.5 mm tall",Pololu_Breakout-16_15.2x20.3mm,Thru-Hole,2 headers per driver (4 total). Sockets only: the DRV8825 modules are supplied by me
|
||||
12,D1,1,,SS34,"Schottky diode 40 V 3 A, SMA",D_SMA,SMD,Any brand
|
||||
13,"D2,D3",2,,B5819W,"Schottky diode 40 V 1 A, SOD-123",D_SOD-123,SMD,Any brand
|
||||
14,D4,1,,,"LED green, 0603",LED_0603_1608Metric,SMD,Any brand
|
||||
15,D5,1,,,"LED blue, 0603",LED_0603_1608Metric,SMD,Any brand
|
||||
16,"Q1,Q2",2,onsemi,MMBT3904LT1G,"NPN transistor 40 V 200 mA, SOT-23",SOT-23,SMD,Any MMBT3904 ok
|
||||
17,"SW1,SW2",2,Omron,B3U-1000P,"Tactile switch, SMD, 3 x 2.5 mm",SW_SPST_B3U-1000P,SMD,
|
||||
18,"C1,C2",2,Panasonic,EEE-FK1V101GP,"Aluminium electrolytic capacitor 100 uF 35 V, SMD 8 x 10.2 mm",CP_Elec_8x10,SMD,
|
||||
19,"C3,C4",2,,,"Ceramic capacitor 10 uF 25 V X5R, 1206",C_1206_3216Metric,SMD,Any brand
|
||||
20,"C5,C9",2,,,"Ceramic capacitor 10 uF 16 V X5R, 0805",C_0805_2012Metric,SMD,Any brand
|
||||
21,C6,1,,,"Ceramic capacitor 22 uF 10 V X5R, 0805",C_0805_2012Metric,SMD,Any brand
|
||||
22,"C7,C10,C13,C14,C15",5,,,"Ceramic capacitor 100 nF 50 V X7R, 0603",C_0603_1608Metric,SMD,Any brand
|
||||
23,C8,1,,,"Ceramic capacitor 1 uF 16 V X7R, 0603",C_0603_1608Metric,SMD,Any brand
|
||||
24,"R1,R2",2,,,"Resistor 5.1 k 1%, 0603",R_0603_1608Metric,SMD,Any brand
|
||||
25,"R3,R4,R5,R6,R8,R9,R11",7,,,"Resistor 10 k 1%, 0603",R_0603_1608Metric,SMD,Any brand
|
||||
26,"R10,R12,R14,R15",4,,,"Resistor 1 k 1%, 0603",R_0603_1608Metric,SMD,Any brand
|
||||
27,R13,1,,,"Resistor 330 1%, 0603",R_0603_1608Metric,SMD,Any brand
|
||||
|
@@ -0,0 +1,52 @@
|
||||
Designator,Mid X (mm),Mid Y (mm),Layer,Rotation,Value,Footprint
|
||||
A1,38.100,61.440,Top,270,DRV8825 StepStick (theta/spin),Pololu_Breakout-16_15.2x20.3mm
|
||||
A2,59.100,61.440,Top,270,DRV8825 StepStick (rho/arm),Pololu_Breakout-16_15.2x20.3mm
|
||||
C1,24.000,42.340,Top,0,100uF 25V,CP_Elec_8x10
|
||||
C2,45.500,42.340,Top,0,100uF 25V,CP_Elec_8x10
|
||||
C3,20.500,23.740,Top,0,10uF 25V,C_1206_3216Metric
|
||||
C4,26.000,23.740,Top,0,10uF 16V,C_1206_3216Metric
|
||||
C5,59.600,19.340,Top,90,10uF,C_0805_2012Metric
|
||||
C6,59.600,23.840,Top,90,22uF,C_0805_2012Metric
|
||||
C7,27.000,20.340,Top,90,100nF,C_0603_1608Metric
|
||||
C8,54.600,10.640,Top,0,1uF,C_0603_1608Metric
|
||||
C9,57.500,8.740,Top,90,10uF,C_0805_2012Metric
|
||||
C10,55.000,8.340,Top,90,100nF,C_0603_1608Metric
|
||||
C13,61.000,44.840,Top,0,100nF,C_0603_1608Metric
|
||||
C14,61.000,42.640,Top,0,100nF,C_0603_1608Metric
|
||||
C15,61.000,33.340,Top,90,100nF,C_0603_1608Metric
|
||||
D1,16.000,41.340,Top,270,SS34,D_SMA
|
||||
D2,29.000,28.340,Top,0,B5819W,D_SOD-123
|
||||
D3,13.000,23.540,Top,0,B5819W,D_SOD-123
|
||||
D4,34.000,33.340,Top,0,GREEN,LED_0603_1608Metric
|
||||
D5,38.000,33.340,Top,0,BLUE,LED_0603_1608Metric
|
||||
J1,12.300,38.340,Top,270,12V DC 5.5x2.1,BarrelJack_CUI_PJ-063AH_Horizontal
|
||||
J2,3.400,19.340,Top,270,USB-C,USB_C_Receptacle_HRO_TYPE-C-31-M-12
|
||||
J3,4.500,59.940,Top,270,SPIN MOTOR,JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical
|
||||
J4,76.500,59.940,Top,270,ARM MOTOR,JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical
|
||||
J5,76.500,44.840,Top,270,HOME SW,JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical
|
||||
J6,76.500,33.740,Top,270,HALL,JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical
|
||||
J7,76.500,22.640,Top,270,LED STRIP,JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical
|
||||
J8,77.500,11.340,Top,0,EXPANSION,PinHeader_1x04_P2.54mm_Vertical
|
||||
PS1,18.000,28.340,Top,0,R-78E5.0-0.5,Converter_DCDC_RECOM_R-78E-0.5_THT
|
||||
Q1,28.000,16.140,Top,0,MMBT3904,SOT-23
|
||||
Q2,28.000,12.140,Top,0,MMBT3904,SOT-23
|
||||
R1,11.500,20.590,Top,0,5.1k,R_0603_1608Metric
|
||||
R2,11.500,17.590,Top,0,5.1k,R_0603_1608Metric
|
||||
R3,31.000,18.340,Top,90,10k,R_0603_1608Metric
|
||||
R4,31.000,13.840,Top,90,10k,R_0603_1608Metric
|
||||
R5,54.600,12.340,Top,0,10k,R_0603_1608Metric
|
||||
R6,31.000,25.840,Top,0,10k,R_0603_1608Metric
|
||||
R8,47.000,32.340,Top,0,10k,R_0603_1608Metric
|
||||
R9,54.000,44.840,Top,0,10k,R_0603_1608Metric
|
||||
R10,57.500,44.840,Top,0,1k,R_0603_1608Metric
|
||||
R11,54.000,42.640,Top,0,10k,R_0603_1608Metric
|
||||
R12,57.500,42.640,Top,0,1k,R_0603_1608Metric
|
||||
R13,70.000,33.340,Top,90,330,R_0603_1608Metric
|
||||
R14,34.000,30.840,Top,0,1k,R_0603_1608Metric
|
||||
R15,38.000,30.840,Top,0,1k,R_0603_1608Metric
|
||||
SW1,27.500,8.340,Top,0,RESET,SW_SPST_B3U-1000P
|
||||
SW2,22.000,8.340,Top,0,BOOT,SW_SPST_B3U-1000P
|
||||
U1,43.000,12.750,Top,180,ESP32-WROOM-32E-N8,ESP32-WROOM-32E
|
||||
U2,22.000,16.340,Top,0,CH340C,SOIC-16_3.9x9.9mm_P1.27mm
|
||||
U3,66.000,21.840,Top,0,AMS1117-3.3,SOT-223-3_TabPin2
|
||||
U4,65.500,33.340,Top,0,74AHCT1G125,SOT-23-5
|
||||
|
@@ -0,0 +1,51 @@
|
||||
# PCBWay order: SandTable Controller v0.3
|
||||
|
||||
## Files
|
||||
|
||||
| File | Where it goes |
|
||||
|---|---|
|
||||
| `1-gerbers-sandtable-controller-v0.3.zip` | PCB order: **Upload Gerber file** |
|
||||
| `2-bom-sandtable-controller-v0.3.csv` | Assembly order: **BOM file** |
|
||||
| `3-centroid-sandtable-controller-v0.3.csv` | Assembly order: **Centroid / pick-and-place file** |
|
||||
| `assembly-top-v0.3.pdf` | Attach if PCBWay asks for an assembly drawing |
|
||||
| `schematic-v0.3.pdf` | Attach if PCBWay asks for a schematic |
|
||||
|
||||
## PCB settings
|
||||
|
||||
| Setting | Value |
|
||||
|---|---|
|
||||
| Board type | Single pieces |
|
||||
| Size | 80 x 63.34 mm |
|
||||
| Quantity | 5 (the minimum) |
|
||||
| Layers | 2 |
|
||||
| Material | FR-4, TG130-140 |
|
||||
| Thickness | 1.6 mm |
|
||||
| Min track / spacing | 6/6 mil |
|
||||
| Min hole size | 0.3 mm |
|
||||
| Solder mask / silkscreen | any colour / white |
|
||||
| Surface finish | HASL lead-free (or ENIG) |
|
||||
| Via process | Tenting vias |
|
||||
| Finished copper | 1 oz |
|
||||
| Product No. | Specify a location (the back of the board has a "WayWayWay" marker for it) |
|
||||
|
||||
## Assembly settings (PCB Assembly quote)
|
||||
|
||||
| Setting | Value |
|
||||
|---|---|
|
||||
| Service | Turnkey (PCBWay buys the parts) |
|
||||
| Assembly side | Top side only |
|
||||
| Quantity | 1 or 2 (fewer than the 5 bare boards is fine) |
|
||||
| Unique parts | 27 |
|
||||
| SMD parts | 41 |
|
||||
| BGA / QFP parts | 0 |
|
||||
| Through-hole parts | 12 (10 designators; each driver socket is 2 headers) |
|
||||
| Accept alternatives | Yes, for lines marked "Any brand" |
|
||||
|
||||
**Note for PCBWay** (paste into the comments box):
|
||||
|
||||
> Please fit the female header sockets for A1 and A2 only. Do not supply the stepper driver modules; I will plug in my own. BOM lines marked "Any brand" may use any equivalent part to the description. Centroid coordinates are in mm, with the origin at the board's bottom-left corner.
|
||||
|
||||
## When PCBWay sends their review
|
||||
- Check the polarity of C1, C2 (electrolytic), D1-D3 (diodes) and D4, D5 (LEDs) against the + and bar marks in `assembly-top-v0.3.pdf`.
|
||||
- Check that the ESP32 (U1) antenna end sits at the board edge, over the copper-free area.
|
||||
- Check that pin 1 of U2, U3 and U4 is at the dot or triangle on the silkscreen.
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user