Skill Tracer
Skills › Scientific Agent Skills › lab-hardware-cad › optomechanics.md

optomechanics.md

148 lines · skills/lab-hardware-cad/references/optomechanics.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Optomechanical mounts and breadboard hardware
2
3Parts that bolt to an optical table, join a cage system, hold an optic or a sample in a beam path,
4or carry a camera or objective.
5
6Verified dimensions are in `assets/standards.json`:
7
8```bash
9python scripts/check.py standards --show optical-breadboard-metric
10python scripts/check.py standards --show cage-system-30mm
11python scripts/check.py standards --show sm1-lens-tube-thread
12```

Optomechanical mounts and breadboard hardware

Parts that bolt to an optical table, join a cage system, hold an optic or a sample in a beam path, or carry a camera or objective.

Verified dimensions are in assets/standards.json:

python scripts/check.py standards --show optical-breadboard-metric
python scripts/check.py standards --show cage-system-30mm
python scripts/check.py standards --show sm1-lens-tube-thread
Raw lines 1 to 13
Runs code python scripts/check.py :9
14## Ask which system before you model anything
16**Metric and imperial optical hardware are not interchangeable, and the difference is small enough
17to look like a rounding error and large enough to prevent assembly.**
19| | Metric | Imperial |
20| --- | --- | --- |
21| Grid pitch | 25.0 mm | 25.4 mm (1 inch) |
22| Tapped hole | M6 x 1.0 | 1/4-20 UNC |
23| Typical border | 12.5 mm | 12.7 mm |
25Over four pitches (five hole centres) the grids differ by **1.6 mm** — far more than any clearance hole absorbs.
26There is no way to infer which the user has from the request. Ask. If the answer is unavailable,
27model the mounting features as **slots along the bolt line** rather than round holes, which
28tolerates both, and say that is what you did and why.

Ask which system before you model anything

Metric and imperial optical hardware are not interchangeable, and the difference is small enough to look like a rounding error and large enough to prevent assembly.

MetricImperial
Grid pitch25.0 mm25.4 mm (1 inch)
Tapped holeM6 x 1.01/4-20 UNC
Typical border12.5 mm12.7 mm

Over four pitches (five hole centres) the grids differ by 1.6 mm — far more than any clearance hole absorbs. There is no way to infer which the user has from the request. Ask. If the answer is unavailable, model the mounting features as slots along the bolt line rather than round holes, which tolerates both, and say that is what you did and why.

Raw lines 14 to 29
30## Mounting to the table
32- Use **clearance holes, not tapped holes**, in the part. The table is tapped; the part is
33 clearanced. For M6 use 6.6 mm is a common normal-clearance planning value. Add the calibrated process
34 allowance and confirm the actual screw drawing; printed holes may come out undersize.
35- **Counterbore for the screw head** if the part surface must stay clear: roughly 11 mm diameter
36 for an M6 socket head cap screw, 11.2 mm for 1/4-20.
37- **Never rely on more than two holes to locate a part.** Grid tolerance plus print tolerance means
38 a rigid four-hole pattern will bind. Round hole + slot is the standard fix: one hole locates, the
39 slot takes up the error.
40- Printed parts are compliant. For anything where pointing stability matters, a printed mount is a
41 prototyping aid, not a final part — thermal drift and creep in polymer are large compared with
42 optical alignment tolerances. Say so when recommending one.

Mounting to the table

  • Use clearance holes, not tapped holes, in the part. The table is tapped; the part is clearanced. For M6 use 6.6 mm is a common normal-clearance planning value. Add the calibrated process allowance and confirm the actual screw drawing; printed holes may come out undersize.
  • Counterbore for the screw head if the part surface must stay clear: roughly 11 mm diameter for an M6 socket head cap screw, 11.2 mm for 1/4-20.
  • Never rely on more than two holes to locate a part. Grid tolerance plus print tolerance means a rigid four-hole pattern will bind. Round hole + slot is the standard fix: one hole locates, the slot takes up the error.
  • Printed parts are compliant. For anything where pointing stability matters, a printed mount is a prototyping aid, not a final part — thermal drift and creep in polymer are large compared with optical alignment tolerances. Say so when recommending one.
Raw lines 30 to 43
44## Posts and pedestals
46Common conventions, which vary by vendor — **confirm against the catalogue before use**:
48- Imperial posts are Ø1/2 inch (12.7 mm), typically tapped 8-32 at one end with a 1/4-20 stud or
49 clearance at the other.
50- Metric posts are Ø12 mm, typically tapped M4 with an M6 interface to the table.
51- A post-holder plus post is height-adjustable but adds a compliant joint; a pedestal or a
52 solid machined riser is stiffer.
54**Beam height** is a project-wide constant, not a per-part choice. Every mount on the table must
55put its optic at the same height. Common conventions are 3 inches (76.2 mm) or 100 mm, but this is
56a lab-by-lab choice. Ask for the number, define it once as `beam_height_mm`, and derive every
57mount's optic centre from it.

Posts and pedestals

Common conventions, which vary by vendor — confirm against the catalogue before use:

  • Imperial posts are Ø1/2 inch (12.7 mm), typically tapped 8-32 at one end with a 1/4-20 stud or clearance at the other.
  • Metric posts are Ø12 mm, typically tapped M4 with an M6 interface to the table.
  • A post-holder plus post is height-adjustable but adds a compliant joint; a pedestal or a solid machined riser is stiffer.

Beam height is a project-wide constant, not a per-part choice. Every mount on the table must put its optic at the same height. Common conventions are 3 inches (76.2 mm) or 100 mm, but this is a lab-by-lab choice. Ask for the number, define it once as beam_height_mm, and derive every mount's optic centre from it.

Raw lines 44 to 58
59## 30 mm cage system
61The dominant convention for small free-space assemblies:
63- **Rod spacing 30.0 mm** on a square, centred on the optical axis.
64- **Rods Ø6 mm** (ER series).
65- Standard cage plates are 0.35 inch (8.9 mm) thick.
67For a custom cage plate: place four bores on a 30 mm square, put the aperture at the **centroid**
68of those four bores, and bore them for a free-sliding fit **at your process's clearance**
69(fabrication-limits.md): about 6.2 mm CNC, 6.4 mm SLA, 6.8 mm FDM. A 6.1 mm bore may work after reaming, but is not
70a reliable uncalibrated printed fit; printed bores may come out undersize, and four bores on a common square over-constrain each
71other, so tighter is not better here. A cage plate that binds on the rods is worse than useless
72because it transmits stress into the whole assembly.
74Cage plates stack along the rods, so a custom plate's thickness directly consumes optical path
75length. Budget it.

30 mm cage system

The dominant convention for small free-space assemblies:

  • Rod spacing 30.0 mm on a square, centred on the optical axis.
  • Rods Ø6 mm (ER series).
  • Standard cage plates are 0.35 inch (8.9 mm) thick.

For a custom cage plate: place four bores on a 30 mm square, put the aperture at the centroid of those four bores, and bore them for a free-sliding fit at your process's clearance (fabrication-limits.md): about 6.2 mm CNC, 6.4 mm SLA, 6.8 mm FDM. A 6.1 mm bore may work after reaming, but is not a reliable uncalibrated printed fit; printed bores may come out undersize, and four bores on a common square over-constrain each other, so tighter is not better here. A cage plate that binds on the rods is worse than useless because it transmits stress into the whole assembly.

Cage plates stack along the rods, so a custom plate's thickness directly consumes optical path length. Budget it.

Raw lines 59 to 76
77## Lens tube threads (SM series)
79**SM1 is a 1.035 inch-40 thread**, which holds Ø1 inch (25.4 mm) optics. That is a **0.635 mm
80pitch**.
82**Do not print SM threads.** A 0.635 mm pitch is at or below the practical resolution of FDM and
83marginal on desktop SLA; a printed SM1 thread will either not engage or will gall and shed
84particles into the beam path. Instead:
86- bore a clearance hole and use a purchased SM1 adapter or retaining ring, or
87- design for a threaded metal insert, or
88- clamp the optic directly with a retaining flange and screws.
90If the design truly requires a printed thread, say explicitly that it needs test printing and is
91likely to fail.

Lens tube threads (SM series)

SM1 is a 1.035 inch-40 thread, which holds Ø1 inch (25.4 mm) optics. That is a 0.635 mm pitch.

Do not print SM threads. A 0.635 mm pitch is at or below the practical resolution of FDM and marginal on desktop SLA; a printed SM1 thread will either not engage or will gall and shed particles into the beam path. Instead:

  • bore a clearance hole and use a purchased SM1 adapter or retaining ring, or
  • design for a threaded metal insert, or
  • clamp the optic directly with a retaining flange and screws.

If the design truly requires a printed thread, say explicitly that it needs test printing and is likely to fail.

Raw lines 77 to 92
93## Holding an optic
95- **Never clamp an optic on its clear aperture.** Contact only the outer annulus of the face or the
96 edge. Define `clear_aperture_mm` as a named parameter and confirm in the snapshot that nothing
97 intrudes on it.
98- Three-point support can reduce constraint, but support geometry, preload and contact
99 stress still matter. Neither three points nor a continuous annular seat guarantees
100 freedom from deformation or stress birefringence; validate the mounting load.
101- Leave clearance for thermal expansion. A metal-in-polymer mount that is a press fit at 20 °C can
102 crack or bind across a temperature swing.
103- Retaining forces should be light and distributed. A single set screw pressing on glass is a way
104 to chip glass.

Holding an optic

  • Never clamp an optic on its clear aperture. Contact only the outer annulus of the face or the edge. Define clear_aperture_mm as a named parameter and confirm in the snapshot that nothing intrudes on it.
  • Three-point support can reduce constraint, but support geometry, preload and contact stress still matter. Neither three points nor a continuous annular seat guarantees freedom from deformation or stress birefringence; validate the mounting load.
  • Leave clearance for thermal expansion. A metal-in-polymer mount that is a press fit at 20 °C can crack or bind across a temperature swing.
  • Retaining forces should be light and distributed. A single set screw pressing on glass is a way to chip glass.
Raw lines 93 to 105
106## Stray light and scatter
108Geometry is not the whole design here, and a STEP file cannot show any of this:
110- Printed surfaces scatter strongly. Any surface that sees the beam should be baffled, angled away
111 from the optical axis, or treated.
112- **Black does not mean non-reflective.** Black resin and black filament are often quite specular.
113 Specify a genuinely absorbing surface treatment where it matters.
114- Thread and layer lines act as diffraction structures near a focus.
115- For fluorescence work, printed material near the sample can autofluoresce into the detection
116 path.
118Flag these to the user; do not silently assume a printed enclosure is light-tight.

Stray light and scatter

Geometry is not the whole design here, and a STEP file cannot show any of this:

  • Printed surfaces scatter strongly. Any surface that sees the beam should be baffled, angled away from the optical axis, or treated.
  • Black does not mean non-reflective. Black resin and black filament are often quite specular. Specify a genuinely absorbing surface treatment where it matters.
  • Thread and layer lines act as diffraction structures near a focus.
  • For fluorescence work, printed material near the sample can autofluoresce into the detection path.

Flag these to the user; do not silently assume a printed enclosure is light-tight.

Raw lines 106 to 119
120## Checks to run
122```bash
123python scripts/gen.py mount_model.py --outdir out/
124python scripts/check.py facts out/mount.step
125python scripts/check.py interfaces out/mount.manifest.json
126python scripts/snapshot.py out/mount.step --out out/mount.png
127```
129Declare the grid pitch, rod spacing, and bore diameters in the model's `interfaces()` against
130`optical-breadboard-metric`, `optical-breadboard-imperial`, or `cage-system-30mm`, so the check
131catches a 25.0-for-25.4 substitution rather than leaving it to a reader.
133The interface check compares declared dimensions, not hole positions. Use cylindrical
134`clear` gauges at requirement-derived coordinates to test the actual bolt pattern.
135Compute the model from `grid_pitch_mm`, then also confirm the visible layout:
1371. All mounting holes are present and pass fully through.
1382. The optic aperture is centred where you intended, and unobstructed.
1393. Counterbores are on the accessible face.
1404. Nothing intrudes into the clear aperture or the beam path.

Checks to run

python scripts/gen.py mount_model.py --outdir out/
python scripts/check.py facts out/mount.step
python scripts/check.py interfaces out/mount.manifest.json
python scripts/snapshot.py out/mount.step --out out/mount.png

Declare the grid pitch, rod spacing, and bore diameters in the model's interfaces() against optical-breadboard-metric, optical-breadboard-imperial, or cage-system-30mm, so the check catches a 25.0-for-25.4 substitution rather than leaving it to a reader.

The interface check compares declared dimensions, not hole positions. Use cylindrical clear gauges at requirement-derived coordinates to test the actual bolt pattern. Compute the model from grid_pitch_mm, then also confirm the visible layout:

  1. All mounting holes are present and pass fully through.
  2. The optic aperture is centred where you intended, and unobstructed.
  3. Counterbores are on the accessible face.
  4. Nothing intrudes into the clear aperture or the beam path.
Raw lines 120 to 141
Runs code python scripts/gen.py :123
Runs code python scripts/check.py :124
Runs code python scripts/snapshot.py :126
142## Sources
144- Thorlabs imperial and metric threading — <https://www.thorlabs.com/imperial-and-metric-threading>
145- Thorlabs standard 30 mm cage plates — <https://www.thorlabs.com/standard-30-mm-cage-plates>
146- Thorlabs SM1 lens tube compatible cage plates — <https://www.thorlabs.com/sm1-lens-tube-compatible-cage-plates>
147- Post dimensions, beam heights, and vendor-specific thread conventions in this file are common
148 conventions rather than published standards. Confirm against the catalogue.

Sources

  • Thorlabs imperial and metric threading — <https://www.thorlabs.com/imperial-and-metric-threading>
  • Thorlabs standard 30 mm cage plates — <https://www.thorlabs.com/standard-30-mm-cage-plates>
  • Thorlabs SM1 lens tube compatible cage plates — <https://www.thorlabs.com/sm1-lens-tube-compatible-cage-plates>
  • Post dimensions, beam heights, and vendor-specific thread conventions in this file are common conventions rather than published standards. Confirm against the catalogue.
Raw lines 142 to 148