abse/smart-ring-flex

A tscircuit package created by abse.

Version
0.0.24
License
unset
Stars
0

src/coil-study.tsx

import {schematicFor} from './schematic-layout'
// LOCAL ROUTING STUDY ONLY: DC-continuous two-terminal PCB winding.
// No receiver, matching values, charging connection or power-transfer claim.
const points=[
 [22.7,2.8],[16.8,2.8],[16.8,-2.8],[22.7,-2.8],
 [22.7,2.4],[17.2,2.4],[17.2,-2.4],[22.3,-2.4],
 [22.3,2.0],[17.6,2.0],[17.6,-2.0],[21.9,-2.0],[21.9,1.6],
]
const chamfer=(p:number[][])=>{
 const out=[p[0]]
 for(let i=1;i<p.length-1;i++){
  const a=p[i-1],b=p[i],c=p[i+1],d=.14
  const l1=Math.hypot(b[0]-a[0],b[1]-a[1]),l2=Math.hypot(c[0]-b[0],c[1]-b[1])
  out.push([b[0]-(b[0]-a[0])/l1*d,b[1]-(b[1]-a[1])/l1*d],[b[0]+(c[0]-b[0])/l2*d,b[1]+(c[1]-b[1])/l2*d])
 }
 out.push(p[p.length-1]);return out
}
export const coilPoints=chamfer(points)
export default ({externalCopper=false}:{externalCopper?:boolean}={})=> <>
 {!externalCopper&&[['RXA',22.7,2.8],['RXB',21.9,1.6]].map(([name,x,y])=><via key={name} name={String(name)} pcbX={Number(x)} pcbY={Number(y)} fromLayer="top" toLayer="bottom" holeDiameter={.1} outerDiameter={.3} tented connectsTo="net.RX_COIL"/>)}
 {[['TP_RXA',23.18,2.8,-2],['TP_RXB',22.7,1.6,2]].map(([name,x,y,sx])=><testpoint key={name} name={String(name)} layer="top" pcbX={Number(x)} pcbY={Number(y)} schSheetName="CoilStudy" schX={Number(sx)} schY={0} doNotPlace padShape="circle" padDiameter={.3} footprintVariant="pad" {...schematicFor(String(name))} connections={{pin1:'net.RX_COIL'}}/>)}
 {!externalCopper&&<><trace name="PRINTED_RX_WINDING" schDisplayLabel="RX_COIL_DC_CONTINUITY" path={['.RXA > .bottom','.RXB > .bottom','net.RX_COIL']} pcbPathRelativeTo=".RXA > .bottom" thickness={.2} pcbPaths={[coilPoints.map(([x,y])=>({x:x-22.7,y:y-2.8}))]}/>
 <trace name="RX_A_PROBE" from=".TP_RXA > .pin1" to=".RXA > .top" thickness={.1} pcbPaths={[[{x:0,y:0},{x:-.48,y:0}]]}/>
 <trace name="RX_B_PROBE" from=".TP_RXB > .pin1" to=".RXB > .top" thickness={.1} pcbPaths={[[{x:0,y:0},{x:-.8,y:0}]]}/>
 </>}
 <silkscreentext text="RX TEST" pcbX={22.25} pcbY={-.4} fontSize={.4} layer="top"/>
</>