component
TMC2262
Public Made by Adomby adom
Analog Devices TMC2262 65 V, 4 A RMS smart stepper driver with step/dir, SPI and encoder input, 30-pin FC2QFN 6x6. KiCad, Fusion and Altium libraries, datasheet-built 3D model, every pin cited to the data sheet.
← Commit history
Hero: heatsink vias as one switchable group (1/5)
6 files changed
+17−18
README.md+1−1@@ -133,7 +133,7 @@ Adom-authored files are licensed CC-BY-4.0; the manufacturer documents in `docs/ | `altium/Adom_tmc2262.SchLib`, `altium/Adom_tmc2262.PcbLib` | Native Altium Designer libraries with the 3D body embedded; `altium/TMC2262AFV-PLUS.adom-lbr.json` is the canonical adom-lbr hub record. | | `tmc2262-etched.step` / `.glb` | **Library model** (the one the footprint links): the datasheet-built body with a virtual laser-etched `TMC2262AFV+` on the top as the toggleable `Adom.LaserEtch` group. | | `tmc2262.step` / `.glb` | The same body, unmarked. |-| `tmc2262-hero.glb` | Page hero: the etched chip plus teal dashed copper-pad outlines (50 % opacity), silkscreen with pin 1 (30 %), pad signal labels (50 %) and the heatsink vias through a 1.6 mm board. Each is a layer in the viewer's Layers panel. Reference artwork only: never put it on a board. |+| `tmc2262-hero.glb` | Page hero: the etched chip plus teal dashed copper-pad outlines (50 % opacity), silkscreen with pin 1 (30 %), pad signal labels (50 %) and the heatsink vias through a 1.6 mm board. The chip, the laser etch and the vias switch on and off in the viewer's Layers panel. Reference artwork only: never put it on a board. | | `viewers/` | Self-contained interactive symbol and footprint viewers (adom-symbol embed, adom-footprint embed). | | `artwork/` | Chip-outline cache from adom-chip-thumbnailer (vector outlines with the part number, shaded iso, mark plan and legibility check); `TMC2262AFV-PLUS-thumbs.json` is the manifest. | | `provenance/` | How every file was made: model dimensions and source drawing, etch plan, hero build, the pad-by-pad footprint comparison, EDA-lane notes, file hashes and the build scripts. |
models.json+3−3@@ -70,9 +70,9 @@ "surface": "top", "colour": "light grey inlay" },- "sha256": "3ee7e84a01cd137fe11aa2f15f51e2b178fb21d6dcfa33d3fd61183333e3fb05",- "git_blob": "98bc029c0e61908d1f4722d3f75a0796a3ab75a3",- "bytes": 495552,+ "sha256": "7fc9bca42eee39d1eb75b6803601709265ba5d2dfb7f144a7843686ca1d61b40",+ "git_blob": "7dc7fa0f1f8925388f30dd7f7e64f007bf72364f",+ "bytes": 495444, "role": "derived", "colours": true, "derived_from": "tmc2262-etched.glb",
provenance/file-hashes.json+6−6@@ -3,7 +3,7 @@ "note": "sha256 of every file at publication", "files": { "LICENSE": "266935df734b3de7f783fed72cac0428e5eefb1df4957828668bcd0a6520317b",- "README.md": "184edcfd600e59ae90dbb909efd5efa51adf1c9d89e0aa05c8d25052f9a833c2",+ "README.md": "cd4f15f49554cfec739a10376be3d7def321e6e2c130b1aa950db6fa4c84893a", "altium/Adom_tmc2262.PcbLib": "548d3edbd02263c8a4f8e359b39815264ef2bba4209b8faa616db94b0bc3d23d", "altium/Adom_tmc2262.SchLib": "d4e0179d75bca5f6de7c223555a8dd0df8cf3d756817ed4c4b45c542d00b2933", "altium/TMC2262AFV-PLUS.adom-lbr.json": "b38e6ef40802405d734421517c22a880e93d264dff2defc35564f26d0be5af21",@@ -48,22 +48,22 @@ "docs/models/tmc2262.step.bottom.png": "f14adc53912f976391f640af76360c49b08b25307734233d5c936bfe498c637e", "docs/models/tmc2262.step.top.png": "12c501bc820b997559e9131125369b4690e1daf27e59d19d8e368ce7ac247c8f", "docs/tmc2262-datasheet.pdf": "b1a54923f542235e80baf4f65bc4f9682369af3107ac6f3a3b55785eaff6e292",- "models.json": "e17f894792459f89f2585c0f18da338ddd0946ab4b815951aa585df4867f0a16",+ "models.json": "448870984491a68ff41420c457853910587e710520d44ae54813e4a09ccc741c", "provenance/eda-lanes.json": "d282e9b756a1042b3d0323ae5f66ab7e9c457b9ba611c17baf938a3643e124f1", "provenance/footprint-vs-datasheet.json": "ac0c97a3d923feae1556947b1cf516491f31fe8c5409b3445b9e3962d4c3faeb", "provenance/tmc2262-etched.step.json": "03d6665b25c57e6501c0d98d963b16a3813789e88c71d4f9e599844cb7346465",- "provenance/tmc2262-hero.json": "60af16d203017278284d79111fd1105ccdd053b67d2288f6d16d2a5045e397ef",+ "provenance/tmc2262-hero.json": "48f0b872d3c7d36033473665c6b18a2985607459ac9c51a4484e98ac54a3ca01", "provenance/tmc2262.step.json": "b51f5425940bac6be241d4d09c2c68fe0a87bb4b7b67ea936e82c0e20b1a7a2b",- "provenance/tools/build.py": "a5a7047d1e18c96a72eda5efb29e28b693ffe662e6bacb81eb178efc995a24d1",+ "provenance/tools/build.py": "8d32b58d611ad694305778270bfa892ae5a4b759ce99ee2ee6673692133b060a", "provenance/tools/build_models.py": "4a90b8c04a3a448ea1efa1c7568ef656c30176b9f986e596ab16fbb146dc8d2a", "provenance/tools/footprints.py": "05541e4d994e33a568ed343a9796f63b32a3f2fad2c8121f71ef6fa749163de8", "provenance/tools/hero_card.py": "fc49eddf785e6df0356abfecdba4ccf654fb20cb6546e6bebd09ac9b2e58c466",- "provenance/tools/hero_post_vias.py": "711e75c07ddd55279e4914a59cc80431346221d9d6ad5ae0cf6047eee955a452",+ "provenance/tools/hero_post_vias.py": "ecac406344b06a309ae43cbe4a029988d052938d50d3e0d4403711ceb11246a3", "provenance/tools/pages_def.py": "f65b46d6b44bf58a7c59194e679ba671685ca5c4b49b34cc771dc87b11f3eae5", "provenance/tools/proof.py": "f19a0c34cf390b9b1d191553196a15ff8b8fc1853b9a2260abbc24a242fb9e71", "tmc2262-etched.glb": "bad0ebfbcd72a3aff9397c275b6581b1b0381806cf862c18045fb3a829b740ca", "tmc2262-etched.step": "13f68ecc3060977c10f3deab78279d4a9136bdc7f43af2f79e1d9a58a54b12c1",- "tmc2262-hero.glb": "3ee7e84a01cd137fe11aa2f15f51e2b178fb21d6dcfa33d3fd61183333e3fb05",+ "tmc2262-hero.glb": "7fc9bca42eee39d1eb75b6803601709265ba5d2dfb7f144a7843686ca1d61b40", "tmc2262-hero.overlay.json": "ebbae31faa5233852e71c582d784d4f5ed35f2ac54578762e0e44a966df1d781", "tmc2262.glb": "fbfcf8d0b483341e9025226febd8e72e7548cf8d57032a20ce6ede30c1754d4b", "tmc2262.kicad_mod": "7f2092d2d255f4d44836f1aee103dcc3c374aee713d89120d939d9ce41613380",
provenance/tmc2262-hero.json+2−2@@ -1,6 +1,6 @@ { "file": "tmc2262-hero.glb",- "sha256": "3ee7e84a01cd137fe11aa2f15f51e2b178fb21d6dcfa33d3fd61183333e3fb05",+ "sha256": "7fc9bca42eee39d1eb75b6803601709265ba5d2dfb7f144a7843686ca1d61b40", "derived_from": "tmc2262-etched.glb", "tool": "component-hero scripts/hero_glb.py (adom-hero standard) + tools/hero_post_vias.py", "align": {@@ -67,5 +67,5 @@ "fallback_to_pad_number": 0 } },- "heatsink_vias": "Adom.HeatsinkVias, layer \"vias\", 65 % transparent copper through a 1.6 mm board"+ "heatsink_vias": "Adom.HeatsinkVias (a switchable group in the viewer), 65 % transparent copper through a 1.6 mm board" }
provenance/tools/build.py+2−2@@ -356,7 +356,7 @@ def stage_prov(d): json.dump(dict(file=s + '-hero.glb', sha256=sha(pdir(d, s + '-hero.glb')), derived_from=s + '-etched.glb', tool='component-hero scripts/hero_glb.py (adom-hero standard) + tools/hero_post_vias.py', align=ov.get('align'), labels=len(ov.get('labels', [])), layers=ov.get('layers'),- heatsink_vias='Adom.HeatsinkVias, layer "vias", 65 % transparent copper through a 1.6 mm board'),+ heatsink_vias='Adom.HeatsinkVias (a switchable group in the viewer), 65 % transparent copper through a 1.6 mm board'), open(pdir(d, 'provenance', s + '-hero.json'), 'w'), indent=1) json.dump(dict(part=d['mpn'], tool='adom-lbr 2.47.5', kicad=s + '.kicad_mod: the exact manufacturer land pattern (custom L pads with the R0.150 corner, split paste windows)',@@ -480,7 +480,7 @@ def readme(d): '| `altium/Adom_%s.SchLib`, `altium/Adom_%s.PcbLib` | Native Altium Designer libraries with the 3D body embedded; `altium/%s.adom-lbr.json` is the canonical adom-lbr hub record. |' % (s, s, A), '| `%s-etched.step` / `.glb` | **Library model** (the one the footprint links): the datasheet-built body with a virtual laser-etched `%s` on the top as the toggleable `Adom.LaserEtch` group. |' % (s, d['mark']), '| `%s.step` / `.glb` | The same body, unmarked. |' % s,- '| `%s-hero.glb` | Page hero: the etched chip plus teal dashed copper-pad outlines (50 %% opacity), silkscreen with pin 1 (30 %%), pad signal labels (50 %%) and the heatsink vias through a 1.6 mm board. Each is a layer in the viewer\'s Layers panel. Reference artwork only: never put it on a board. |' % s,+ '| `%s-hero.glb` | Page hero: the etched chip plus teal dashed copper-pad outlines (50 %% opacity), silkscreen with pin 1 (30 %%), pad signal labels (50 %%) and the heatsink vias through a 1.6 mm board. The chip, the laser etch and the vias switch on and off in the viewer\'s Layers panel. Reference artwork only: never put it on a board. |' % s, '| `viewers/` | Self-contained interactive symbol and footprint viewers (adom-symbol embed, adom-footprint embed). |', '| `artwork/` | Chip-outline cache from adom-chip-thumbnailer (vector outlines with the part number, shaded iso, mark plan and legibility check); `%s-thumbs.json` is the manifest. |' % A, '| `provenance/` | How every file was made: model dimensions and source drawing, etch plan, hero build, the pad-by-pad footprint comparison, EDA-lane notes, file hashes and the build scripts. |', '']
provenance/tools/hero_post_vias.py+3−4@@ -1,6 +1,6 @@ """Add the footprint's heatsink vias to a component hero GLB as the Adom.HeatsinkVias layer (wiki-component standard): copper barrels, 65 % transparent, through a pretend 1.6 mm board below the seating plane, declared as the-toggleable layer "vias" ("Heatsink vias (1.6 mm board)").+switchable "Heatsink Vias" group (the viewer makes every Adom.* node one; a declared adomLayer as well would list it twice). python3 hero_post_vias.py <slug>-hero.glb <footprint.kicad_mod> @@ -71,14 +71,13 @@ def main(glb, mod): mat = len(g.materials) - 1 g.meshes.append(Mesh(name='Adom.HeatsinkVias', primitives=[Primitive(attributes=Attributes(POSITION=ap, NORMAL=an), indices=ai, material=mat)])) node = Node(name='Adom.HeatsinkVias', mesh=len(g.meshes) - 1,- extras={'adomLayer': {'key': 'vias', 'label': 'Heatsink vias (1.6 mm board)', 'group': 'Reference artwork', 'hidden': False},- 'tooltip': 'Heatsink vias from the footprint: %d plated holes, %.2f mm drill, through a 1.6 mm board (reference artwork, not part of the chip)' % (len(vs), vs[0][4])})+ extras={'tooltip': 'Heatsink vias from the footprint: %d plated holes, %.2f mm drill, through a 1.6 mm board (reference artwork, not part of the chip)' % (len(vs), vs[0][4])}) g.nodes.append(node) g.scenes[g.scene or 0].nodes.append(len(g.nodes) - 1) g.buffers[0].byteLength = len(blob) g.set_binary_blob(bytes(blob)) g.save(glb)- print('OK %s: %d heatsink vias added as Adom.HeatsinkVias (layer "vias")' % (glb, len(vs)))+ print('OK %s: %d heatsink vias added as Adom.HeatsinkVias' % (glb, len(vs))) if __name__ == '__main__':