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.42
- License
- unset
- Stars
- 3
schematic/ChipDescriptions.tsx
import { Fragment } from "react";
/** Text content is retained; the section layout places these notes with their owner. */
export 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
{...{ name: `description_${ref}_${line}`, schSheetName: sheet }}
schX={x}
schY={y - line * 0.38}
text={text}
anchor="top_left"
fontSize={0.26}
color="#31576b"
/>
</Fragment>
)),
)}
</>
);
