tscircuit/boosters
This code defines PCB schematics, footprints, and 3D CAD models for various integrated circuits, connectors, sensors, and electronic components used in TI booster packs and modules.
- Version
- 0.1.19
- License
- unset
- Stars
- 0
boostxl-drv8305evm/imports/PhaseBridge.tsx
import { CSD18540Q5B } from "./CSD18540Q5B";
import { HoLLR2512_3W_7mR_1_ } from "./HoLLR2512_3W_7mR_1_";
type PhaseName = "A" | "B" | "C";
const PHASE_SPACING_X = 5;
const TOP_POWER_SPACING_Y = 8;
const PowerMosfet = (props: {
name: string;
pcbX: number;
pcbY: number;
pcbRotation?: number;
schX: number;
schY: number;
gateNet: string;
sourceNet?: string;
drainNet?: string;
schSheetName: string;
schSectionName: string;
}) => (
<CSD18540Q5B
name={props.name}
schPinArrangement={{ leftSide: ["GATE", "SOURCE"], rightSide: ["DRAIN"] }}
schWidth="2.8mm"
pcbX={props.pcbX}
pcbY={props.pcbY}
pcbRotation={props.pcbRotation ?? 0}
schX={props.schX}
schY={props.schY}
schSheetName={props.schSheetName}
schSectionName={props.schSectionName}
connections={{
GATE: props.gateNet,
...(props.sourceNet ? { SOURCE: props.sourceNet } : {}),
...(props.drainNet ? { DRAIN: props.drainNet } : {}),
}}
/>
);
export const PhaseBridge = (props: {
phase: PhaseName;
highSideName: string;
lowSideName: string;
shuntName: string;
senseHighName: string;
senseLowName: string;
senseCapName: string;
localCapName: string;
pcbX: number;
schX: number;
}) => {
const schSectionName = `phase-${props.phase.toLowerCase()}`;
const phaseNet = `net.MOT_${props.phase}`;
const highGateNet = `net.GH_${props.phase}`;
const lowGateNet = `net.GL_${props.phase}`;
const shuntHighNet = `net.SL_${props.phase}`;
const voltageSenseNet = `net.VSEN_${props.phase}`;
const senseLayout = {
A: { highX: -24, highY: 6, lowX: -20.8, lowY: 7, capX: -20.8, capY: 4.2 },
B: { highX: -5, highY: 10, lowX: -2, lowY: 10, capX: 1, capY: 10 },
C: { highX: 22.5, highY: 5, lowX: 25.7, lowY: 7, capX: 24.2, capY: 1 },
}[props.phase];
return (
<>
<PowerMosfet
name={props.highSideName}
pcbX={props.pcbX - 3.4}
pcbY={12.8 + TOP_POWER_SPACING_Y}
pcbRotation={90}
schX={props.schX}
schY={5}
schSheetName="power-stage"
schSectionName={schSectionName}
gateNet={highGateNet}
sourceNet={phaseNet}
drainNet="net.PVDD"
/>
<PowerMosfet
name={props.lowSideName}
pcbX={props.pcbX + 3.4}
pcbY={12.8 + TOP_POWER_SPACING_Y}
pcbRotation={90}
schX={props.schX}
schY={1}
schSheetName="power-stage"
schSectionName={schSectionName}
gateNet={lowGateNet}
sourceNet={shuntHighNet}
drainNet={phaseNet}
/>
<HoLLR2512_3W_7mR_1_
name={props.shuntName}
pcbX={
{ A: -10.8 - PHASE_SPACING_X, B: 9.7, C: 15.7 + PHASE_SPACING_X }[
props.phase
]
}
pcbY={4.6 + TOP_POWER_SPACING_Y}
pcbRotation={90}
schX={props.schX}
schY={-2.5}
schRotation="90deg"
schSheetName="power-stage"
schSectionName={schSectionName}
connections={{ pin1: shuntHighNet }}
/>
<capacitor
name={props.localCapName}
capacitance="1uF"
maxDecouplingTraceLength="10mm"
maxVoltageRating="63V"
footprint="1206"
pcbX={props.pcbX - 3.4}
pcbY={7.8 + TOP_POWER_SPACING_Y}
schX={props.schX - 2.2}
schY={5}
schSheetName="power-stage"
schSectionName={schSectionName}
connections={{ pin1: "net.PVDD" }}
schRotation="90deg"
/>
<resistor
name={props.senseHighName}
resistance="62k"
tolerance="1%"
footprint="1206"
pcbX={senseLayout.highX}
pcbY={senseLayout.highY}
pcbRotation={90}
schX={props.schX + 1.6}
schY={-5}
schSheetName="power-stage"
schSectionName={schSectionName}
connections={{ pin1: phaseNet, pin2: voltageSenseNet }}
/>
<resistor
name={props.senseLowName}
resistance="4.99k"
tolerance="1%"
footprint="0603"
pcbX={senseLayout.lowX}
pcbY={senseLayout.lowY}
pcbRotation={90}
schX={props.schX + 4.2}
schY={-5}
schSheetName="power-stage"
schSectionName={schSectionName}
connections={{ pin1: voltageSenseNet }}
/>
<capacitor
name={props.senseCapName}
capacitance="100nF"
maxDecouplingTraceLength="50mm"
footprint="0603"
pcbX={senseLayout.capX}
pcbY={senseLayout.capY}
schX={props.schX + 4.2}
schY={-7}
schRotation="90deg"
schSheetName="power-stage"
schSectionName={schSectionName}
connections={{ pin1: voltageSenseNet }}
/>
</>
);
};