krishnax12/tensa-zangetsu-keychain-nfc

Summary: Calculates target inductance and estimated resonance for a 14.5 MHz square antenna using chip, interturn, bridge, and connection capacitances.

Version
0.0.13
License
unset
Stars
1

nfc-circuit.tsx

import React from "react"
import { NT2H1311F0DTLH } from "./imports/NT2H1311F0DTLH/NT2H1311F0DTLH"
import {
  antennaRoute,
  coilInductance,
  coilOrigin,
  coilWidth,
  innerTerminal,
  outerTerminal,
} from "./square-antenna"

export function NfcCircuit() {
  return (
    <>
      <NT2H1311F0DTLH
        name="U1"
        pcbX={1}
        pcbY={45}
        layer="bottom"
        pinLabels={{
          pin1: "GND",
          pin2: "LB",
          pin3: "FD",
          pin4: "LA",
          pin5: "EP",
        }}
        noConnect={["GND", "FD", "EP"]}
      />
      <inductor
        name="L1"
        doNotPlace
        inductance={coilInductance}
        pcbX={coilOrigin[0]}
        pcbY={coilOrigin[1]}
        footprint={
          <footprint>
            <smtpad
              shape="circle"
              coveredWithSolderMask
              radius={0.275}
              pcbX={outerTerminal[0]}
              pcbY={outerTerminal[1]}
              layer="bottom"
              portHints={["pin1"]}
            />
            <platedhole
              shape="circle"
              coveredWithSolderMask
              holeDiameter={0.3}
              outerDiameter={0.6}
              pcbX={innerTerminal[0]}
              pcbY={innerTerminal[1]}
              portHints={["pin2"]}
            />
            <pcbtrace
              route={antennaRoute.map(([x, y]) => ({
                route_type: "wire" as const,
                x,
                y,
                width: coilWidth,
                layer: "bottom" as const,
              }))}
            />
          </footprint>
        }
      />
      <trace name="RF_A" from=".U1 > .LA" to=".L1 > .pin1" thickness={0.2} />
      <trace name="RF_B" from=".U1 > .LB" to=".L1 > .pin2" thickness={0.2} />
      {/* GND and unused FD are left open for this passive tag. */}
    </>
  )
}