imrishabh18/rp2040-motor-controller
An RP2040-based NEMA17 stepper-motor controller with USB-C programming and PD motor-power negotiation, DRV8825 dual H-bridge drive, current/temperature telemetry, protected power filtering, status RGB LED, buzzer alarm, and optional magnetic encoder.
- Version
- 1.0.41
- License
- unset
- Stars
- 3
schematic/ChipDescriptions.tsx
import { Fragment } from "react";
/** Schematic-only notes, kept outside auto-layout sections so they do not move parts. */
const descriptions = [
{ ref: "U1", sheet: "controller", x: 3.5, y: 9,
lines: ["Main application controller.", "Generates STEP/DIR control,", "reads current and temperature,", "and drives status outputs.", "No firmware is included."] },
{ ref: "U2", sheet: "controller_programming", x: 11.3, y: 0.2,
lines: ["External QSPI flash.", "Stores RP2040", "application code."] },
{ ref: "U3", sheet: "controller_programming", x: -3.8, y: 1.7,
lines: ["3.3 V regulator.", "Powers the MCU", "and board logic."] },
{ ref: "DRIVER", sheet: "motor_driver", x: -1.7, y: -1.2,
lines: ["Dual H-bridge stepper driver.", "STEP/DIR controls both windings.", "Regulates winding current.", "1/16 microsteps; ~1 A peak."] },
{ ref: "U_PD", sheet: "motor_power", x: -2.5, y: -1.4,
lines: ["USB-PD voltage controller.", "GPIO selects 5/9/12/15/20 V.", "Power-good gates motor enable."] },
{ ref: "U_TEMP", sheet: "thermal_protection", x: 2.2, y: 1.7,
lines: ["TMP102 measures temperature", "near the motor driver.", "RP2040 reads temperature over I2C.", "Software decides alerts/shutdown."] },
{ ref: "U_CURRENT_A", sheet: "current_telemetry", x: -6.5, y: 3.3,
lines: ["Measures winding A current", "across its 0.05 ohm shunt.", "Filtered output feeds ADC2.", "1.65 V at zero; 1 V per amp."] },
{ ref: "U_CURRENT_B", sheet: "current_telemetry", x: 7.5, y: 3.3,
lines: ["Measures winding B current", "across its 0.05 ohm shunt.", "Filtered output feeds ADC3.", "1.65 V at zero; 1 V per amp."] },
{ ref: "U_ENCODER", sheet: "position_alarm", x: -8, y: -1.7,
lines: ["Optional magnetic angle sensor.", "Reads shaft position over I2C.", "Requires an aligned shaft magnet.", "Not fitted in factory assembly."] },
] as const;
export const ChipDescriptions = () => <>
{descriptions.flatMap(({ref, sheet, x, y, lines}) => lines.map((text, line) =>
<Fragment key={`${ref}-${line}`}><schematictext
{...{schSheetName: sheet}} schX={x} schY={y - line * 0.38}
text={text} anchor="top_left" fontSize={0.26} color="#31576b" /></Fragment>,
))}
</>;
