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:
ckochandClaude Opus 5.5 committed 2026-11-01 13:40:23 -05:00
1 parent c498882bbb
commit 1400cc8afd
46 files changed
+226470

No files matched your search

+98
View File
@@ -0,0 +1,98 @@
# SandTable Controller v0.3 (custom PCB)
![render](renders/render-iso.png)
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.
+183
View File
@@ -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
+18
View File
@@ -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
+753
View File
@@ -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)
)
)
+17
View File
@@ -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 ""))
)
@@ -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
1 Item # Designator Qty Manufacturer Mfg Part # Description / Value Package / Footprint Type Notes
2 1 U1 1 Espressif ESP32-WROOM-32E-N8 Wi-Fi + Bluetooth module, 8 MB flash, PCB antenna ESP32-WROOM-32E SMD
3 2 U2 1 WCH CH340C USB to UART bridge, SOIC-16 SOIC-16_3.9x9.9mm_P1.27mm SMD
4 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
5 4 U4 1 Texas Instruments SN74AHCT1G125DBVR Single buffer, TTL-level input, SOT-23-5 SOT-23-5 SMD
6 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
7 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
8 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
9 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
10 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
11 10 J8 1 Sullins PRPC004SAAN-RC Male pin header 1 x 4, 2.54 mm pitch, vertical PinHeader_1x04_P2.54mm_Vertical Thru-Hole
12 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
13 12 D1 1 SS34 Schottky diode 40 V 3 A, SMA D_SMA SMD Any brand
14 13 D2,D3 2 B5819W Schottky diode 40 V 1 A, SOD-123 D_SOD-123 SMD Any brand
15 14 D4 1 LED green, 0603 LED_0603_1608Metric SMD Any brand
16 15 D5 1 LED blue, 0603 LED_0603_1608Metric SMD Any brand
17 16 Q1,Q2 2 onsemi MMBT3904LT1G NPN transistor 40 V 200 mA, SOT-23 SOT-23 SMD Any MMBT3904 ok
18 17 SW1,SW2 2 Omron B3U-1000P Tactile switch, SMD, 3 x 2.5 mm SW_SPST_B3U-1000P SMD
19 18 C1,C2 2 Panasonic EEE-FK1V101GP Aluminium electrolytic capacitor 100 uF 35 V, SMD 8 x 10.2 mm CP_Elec_8x10 SMD
20 19 C3,C4 2 Ceramic capacitor 10 uF 25 V X5R, 1206 C_1206_3216Metric SMD Any brand
21 20 C5,C9 2 Ceramic capacitor 10 uF 16 V X5R, 0805 C_0805_2012Metric SMD Any brand
22 21 C6 1 Ceramic capacitor 22 uF 10 V X5R, 0805 C_0805_2012Metric SMD Any brand
23 22 C7,C10,C13,C14,C15 5 Ceramic capacitor 100 nF 50 V X7R, 0603 C_0603_1608Metric SMD Any brand
24 23 C8 1 Ceramic capacitor 1 uF 16 V X7R, 0603 C_0603_1608Metric SMD Any brand
25 24 R1,R2 2 Resistor 5.1 k 1%, 0603 R_0603_1608Metric SMD Any brand
26 25 R3,R4,R5,R6,R8,R9,R11 7 Resistor 10 k 1%, 0603 R_0603_1608Metric SMD Any brand
27 26 R10,R12,R14,R15 4 Resistor 1 k 1%, 0603 R_0603_1608Metric SMD Any brand
28 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
1 Designator Mid X (mm) Mid Y (mm) Layer Rotation Value Footprint
2 A1 38.100 61.440 Top 270 DRV8825 StepStick (theta/spin) Pololu_Breakout-16_15.2x20.3mm
3 A2 59.100 61.440 Top 270 DRV8825 StepStick (rho/arm) Pololu_Breakout-16_15.2x20.3mm
4 C1 24.000 42.340 Top 0 100uF 25V CP_Elec_8x10
5 C2 45.500 42.340 Top 0 100uF 25V CP_Elec_8x10
6 C3 20.500 23.740 Top 0 10uF 25V C_1206_3216Metric
7 C4 26.000 23.740 Top 0 10uF 16V C_1206_3216Metric
8 C5 59.600 19.340 Top 90 10uF C_0805_2012Metric
9 C6 59.600 23.840 Top 90 22uF C_0805_2012Metric
10 C7 27.000 20.340 Top 90 100nF C_0603_1608Metric
11 C8 54.600 10.640 Top 0 1uF C_0603_1608Metric
12 C9 57.500 8.740 Top 90 10uF C_0805_2012Metric
13 C10 55.000 8.340 Top 90 100nF C_0603_1608Metric
14 C13 61.000 44.840 Top 0 100nF C_0603_1608Metric
15 C14 61.000 42.640 Top 0 100nF C_0603_1608Metric
16 C15 61.000 33.340 Top 90 100nF C_0603_1608Metric
17 D1 16.000 41.340 Top 270 SS34 D_SMA
18 D2 29.000 28.340 Top 0 B5819W D_SOD-123
19 D3 13.000 23.540 Top 0 B5819W D_SOD-123
20 D4 34.000 33.340 Top 0 GREEN LED_0603_1608Metric
21 D5 38.000 33.340 Top 0 BLUE LED_0603_1608Metric
22 J1 12.300 38.340 Top 270 12V DC 5.5x2.1 BarrelJack_CUI_PJ-063AH_Horizontal
23 J2 3.400 19.340 Top 270 USB-C USB_C_Receptacle_HRO_TYPE-C-31-M-12
24 J3 4.500 59.940 Top 270 SPIN MOTOR JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical
25 J4 76.500 59.940 Top 270 ARM MOTOR JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical
26 J5 76.500 44.840 Top 270 HOME SW JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical
27 J6 76.500 33.740 Top 270 HALL JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical
28 J7 76.500 22.640 Top 270 LED STRIP JST_XH_B3B-XH-A_1x03_P2.50mm_Vertical
29 J8 77.500 11.340 Top 0 EXPANSION PinHeader_1x04_P2.54mm_Vertical
30 PS1 18.000 28.340 Top 0 R-78E5.0-0.5 Converter_DCDC_RECOM_R-78E-0.5_THT
31 Q1 28.000 16.140 Top 0 MMBT3904 SOT-23
32 Q2 28.000 12.140 Top 0 MMBT3904 SOT-23
33 R1 11.500 20.590 Top 0 5.1k R_0603_1608Metric
34 R2 11.500 17.590 Top 0 5.1k R_0603_1608Metric
35 R3 31.000 18.340 Top 90 10k R_0603_1608Metric
36 R4 31.000 13.840 Top 90 10k R_0603_1608Metric
37 R5 54.600 12.340 Top 0 10k R_0603_1608Metric
38 R6 31.000 25.840 Top 0 10k R_0603_1608Metric
39 R8 47.000 32.340 Top 0 10k R_0603_1608Metric
40 R9 54.000 44.840 Top 0 10k R_0603_1608Metric
41 R10 57.500 44.840 Top 0 1k R_0603_1608Metric
42 R11 54.000 42.640 Top 0 10k R_0603_1608Metric
43 R12 57.500 42.640 Top 0 1k R_0603_1608Metric
44 R13 70.000 33.340 Top 90 330 R_0603_1608Metric
45 R14 34.000 30.840 Top 0 1k R_0603_1608Metric
46 R15 38.000 30.840 Top 0 1k R_0603_1608Metric
47 SW1 27.500 8.340 Top 0 RESET SW_SPST_B3U-1000P
48 SW2 22.000 8.340 Top 0 BOOT SW_SPST_B3U-1000P
49 U1 43.000 12.750 Top 180 ESP32-WROOM-32E-N8 ESP32-WROOM-32E
50 U2 22.000 16.340 Top 0 CH340C SOIC-16_3.9x9.9mm_P1.27mm
51 U3 66.000 21.840 Top 0 AMS1117-3.3 SOT-223-3_TabPin2
52 U4 65.500 33.340 Top 0 74AHCT1G125 SOT-23-5
+51
View File
@@ -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