MustafaMulla29/rp2040-bldc-motor-controller-new

73×72 mm 4-layer USB‑C PD (5/9/15/20 V) RP2040 controller PCB with protected power switching, MCT8329A sensorless BLDC three-phase MOSFET bridge, USB data/programming, onboard controls, and three motor outputs feeding a 2212 motor through rigid bullet adapters.

Version
0.3.100
License
unset
Stars
0

imports/DMT6009LFG_7.tsx

import type { ChipProps } from "@tscircuit/props"

// Copper lands verified identical to the exact C439728 supplier import.
// Retains the reviewed native schematic symbol, courtyard and paste windows.
const pinLabels = {
  pin1: ["S3"],
  pin2: ["S2"],
  pin3: ["S1"],
  pin4: ["G"],
  pin5: ["D"]
} as const

export const DMT6009LFG_7 = (props: ChipProps<typeof pinLabels>) => {
  const pcbAngle = parseFloat(String(props.pcbRotation ?? 0)) * Math.PI / 180
  const rotate = (points: Array<{x:number;y:number}>) => points.map(({x,y})=>({x:y*1.8,y:(x-.1)*1.8}))
  return (
    <chip
      pinAttributes={{pin1:{isPassive:true},pin2:{isPassive:true},pin3:{isPassive:true},pin4:{isInput:true,mustBeConnected:true},pin5:{isPassive:true}}}
      pinLabels={pinLabels}
      symbol={
        <symbol>
          <schematictext text="{NAME}" schX={0} schY={1.05} fontSize={0.22} anchor="center" />
          <schematictext text="DMT6009LFG-7" schX={0} schY={0.72} fontSize={0.18} anchor="center" />
          <schematicpath points={rotate([{"x":-0.1,"y":0},{"x":0.02,"y":-0.04},{"x":0.02,"y":0.04},{"x":-0.1,"y":0}])} strokeColor="#880000" isFilled fillColor="#880000" />
          <schematicpath points={rotate([{"x":0.3,"y":0.04},{"x":0.24,"y":-0.06},{"x":0.36,"y":-0.06},{"x":0.3,"y":0.04}])} strokeColor="#880000" isFilled fillColor="#880000" />
          <schematicpath points={rotate([{"x":-0.1,"y":0.14},{"x":0.1,"y":0.14},{"x":0.1,"y":0.2},{"x":0.3,"y":0.2},{"x":0.3,"y":0.04}])} strokeColor="#880000" />
          <schematicpath points={rotate([{"x":-0.1,"y":0},{"x":0.1,"y":0},{"x":0.1,"y":-0.2},{"x":0.3,"y":-0.2},{"x":0.3,"y":-0.06}])} strokeColor="#880000" />
          <schematicpath points={rotate([{"x":0.1,"y":-0.14},{"x":-0.1,"y":-0.14}])} strokeColor="#880000" />
          <schematicpath points={rotate([{"x":-0.14,"y":0.18},{"x":-0.14,"y":-0.18}])} strokeColor="#880000" />
          <schematicpath points={rotate([{"x":-0.1,"y":0.18},{"x":-0.1,"y":0.1}])} strokeColor="#880000" />
          <schematicpath points={rotate([{"x":-0.1,"y":-0.04},{"x":-0.1,"y":0.04}])} strokeColor="#880000" />
          <schematicpath points={rotate([{"x":-0.1,"y":-0.18},{"x":-0.1,"y":-0.1}])} strokeColor="#880000" />
          <schematicpath points={rotate([{"x":0.38,"y":0.04},{"x":0.34,"y":0.04},{"x":0.26,"y":0.04},{"x":0.22,"y":0.04}])} strokeColor="#880000" />
          <port name="D" pinNumber={5} aliases={["pin5"]} direction="right" schX={rotate([{x:0.1,y:0.4}])[0].x} schY={rotate([{x:0.1,y:0.4}])[0].y} schStemLength={0.36} />
          <port name="G" pinNumber={4} aliases={["pin4"]} direction="down" schX={rotate([{x:-0.3,y:0}])[0].x} schY={rotate([{x:-0.3,y:0}])[0].y} schStemLength={0.288} />
          <port name="S2" pinNumber={2} aliases={["pin2"]} direction="left" schX={rotate([{x:0.1,y:-0.4}])[0].x} schY={rotate([{x:0.1,y:-0.4}])[0].y} schStemLength={0.36} />
          <schematicpath points={rotate([{x:-0.1,y:-0.3},{x:0.3,y:-0.3}])} strokeColor="#880000" />
          <port name="S3" pinNumber={1} aliases={["pin1"]} direction="left" schX={rotate([{x:-0.1,y:-0.4}])[0].x} schY={rotate([{x:-0.1,y:-0.4}])[0].y} schStemLength={0.18} />
          <port name="S1" pinNumber={3} aliases={["pin3"]} direction="left" schX={rotate([{x:0.3,y:-0.4}])[0].x} schY={rotate([{x:0.3,y:-0.4}])[0].y} schStemLength={0.18} />
        </symbol>
      }
      supplierPartNumbers={{
  "jlcpcb": [
    "C439728"
  ]
}}
      manufacturerPartNumber="DMT6009LFG-7"
      footprint={<footprint>
        <smtpad portHints={["pin4"]} pcbX="0.974852mm" pcbY="-1.541526mm" width="0.419989mm" height="0.6999986mm" shape="rect" />
<smtpad portHints={["pin3"]} pcbX="0.324866mm" pcbY="-1.541526mm" width="0.419989mm" height="0.6999986mm" shape="rect" />
<smtpad portHints={["pin2"]} pcbX="-0.32512mm" pcbY="-1.541526mm" width="0.419989mm" height="0.6999986mm" shape="rect" />
<smtpad portHints={["pin1"]} pcbX="-0.975106mm" pcbY="-1.541526mm" width="0.419989mm" height="0.6999986mm" shape="rect" />
<smtpad portHints={["pin5"]} points={[{x: "-1.2001246mm", y: "-0.4315206mm"}, {x: "-1.2001246mm", y: "1.8184622mm"}, {x: "-0.7501128mm", y: "1.8184622mm"}, {x: "-0.7501128mm", y: "1.228471mm"}, {x: "-0.5501132mm", y: "1.228471mm"}, {x: "-0.5501132mm", y: "1.8184622mm"}, {x: "-0.1001268mm", y: "1.8184622mm"}, {x: "-0.1001268mm", y: "1.228471mm"}, {x: "0.0998728mm", y: "1.228471mm"}, {x: "0.0998728mm", y: "1.8184622mm"}, {x: "0.5498846mm", y: "1.8184622mm"}, {x: "0.5498846mm", y: "1.228471mm"}, {x: "0.7498842mm", y: "1.228471mm"}, {x: "0.7498842mm", y: "1.8184622mm"}, {x: "1.1998706mm", y: "1.8184622mm"}, {x: "1.1998706mm", y: "-0.4315206mm"}, {x: "-1.2001246mm", y: "-0.4315206mm"}]} shape="polygon" solderPasteMargin={-2} />
{/* Independent rectangular stencil windows over the unchanged drain land.
    Four exposed-pad windows plus four drain fingers; factory process review required. */}
{[-0.575127, 0.574873].flatMap(x => [-0.031525, 0.828475].map(y => (
  <solderpaste key={`drain-${x}-${y}`} shape="rect" layer="top" pcbX={x} pcbY={y} width={1.05} height={0.7} />
)))}
{[-0.975106, -0.32512, 0.324866, 0.974852].map(x => (
  <solderpaste key={`finger-${x}`} shape="rect" layer="top" pcbX={x} pcbY={1.523467} width={0.35} height={0.49} />
))}
<silkscreencircle pcbX="-1.010158mm" pcbY="-2.521458mm" radius="0.124968mm" />
<silkscreenrect pcbX="0mm" pcbY="0mm" width="3.556mm" height="4.191mm" strokeWidth="0.254mm" />
<silkscreentext text="{NAME}" pcbX="0mm" pcbY="3.085594mm" anchorAlignment="center" fontSize="1mm" />
<courtyardoutline outline={[{"x":-2.02800000000002,"y":2.3355940000001283},{"x":2.02800000000002,"y":2.3355940000001283},{"x":2.02800000000002,"y":-2.9142059999998082},{"x":-2.02800000000002,"y":-2.9142059999998082},{"x":-2.02800000000002,"y":2.3355940000001283}]} />
      </footprint>}
      cadModel={{
        objUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C439728.obj?uuid=7326ba298fbd406bbed597220d6d7da9",
        stepUrl: "https://modelcdn.tscircuit.com/easyeda_models/assets/C439728.step?uuid=7326ba298fbd406bbed597220d6d7da9",
        pcbRotationOffset: 0,
        // The current native bounds include stencil apertures. Register CAD to
        // the catalog/body datum, not the asymmetric pad/paste bounding box.
        positionOffset: { x: -0.06152915*Math.sin(pcbAngle), y: 0.06152915*Math.cos(pcbAngle), z: 0 },
        modelOriginPosition: { x: 0.00013969999997698324, y: 0.03150869999990391, z: -0.01 },
      }}
      {...props}
    />
  )
}