AI Foundry camera mount

P3 adjustable camera mount

AI Foundry · 2026-10-19 (Mon, week 43) · Prototype for aifoundry2, pending measurements and a physical fit test.

Build a removable camera carriage on a stock steel expansion-slot cover. The steel cover engages the case's rear rail; the printed structure supports the P3 by its housing and lets you set its distance from the card, position along the card, and height. Start with the lens front about 60 mm from the Esperanto card's back. The electrical PCIe connector stays empty.

Download: Complete print and CAD package (this extracted folder). Includes nine STL files (six installed parts, one fit coupon, two optional shims), individual and assembled STEP models, editable Python/JSON, drawings, checks and an offline copy of this guide. No printer-specific G-code is included.

Print the fit coupon first. The exported model uses unmeasured lens offsets and a provisional 2 mm lens projection. It is a fabrication prototype, not a confirmed fit to your camera and chassis. Calipers and the worksheet below turn it into a fitted design.

CAD assembly: rear steel expansion cover, overhead boom, Y carriage, Z shelf and drop-in camera cradle
Actual CAD assembly. Dark blue: fixed boom; teal: Y carriage; orange: Z shelf; blue-violet: cradle; purple: keepers. Grey camera and bracket are simplified reference shapes; the camera reference uses unmeasured lens offsets.

How the mount works

The fixed support bolts to a steel full-height expansion-slot cover. Its lower tongue and the case screw locate it on the rear rail. An overhead printed boom carries a slide along the card, a vertical carriage, and an open camera cradle with a short slide toward/away from the card. Two spaced bolts lock each stage. They allow hand positioning and resist rotation; they are not precision linear bearings.

The camera drops into the cradle from above. Two removable keepers retain its housing on thin pads, leaving the middle of the top edge available for the USB extension. The front stays open because the lens is off-centre and needs finger access. The housing, cradle and frame carry the load; the USB connector carries no structural load.

Adjustment Direction Starting point Operation
X Normal to the PCB, toward/away from it True lens front about 60 mm from PCB Loosen both cradle slide fasteners, support and move it, then relock
Y Along the card, inward from the rear bracket Lens axis about 86 mm from the rear datum Loosen the pair on the long horizontal slots, slide and relock
Z Height above the motherboard Lens axis about 42 mm high Support the camera before loosening the vertical-stage pair; set height and relock
Focus Rotation of the gold lens ring Set after warm-up Adjust in the live image; the cradle does not squeeze the ring

The CAD's nominal camera dimensions are placeholders for a first fit print. The actual lens centre is offset from the body centre, and the lens front projects beyond the housing. Enter those measured offsets before relying on the target coordinates. The available travel is only usable where the complete assembly clears the actual machine.

Changes from the original sketch

The original 61 × 29 mm opening allowed little more than the nominal 59 × 27 mm housing. It could not also contain the cradle and ±10 mm travel in both directions. This design therefore uses an open overhead support, approximately 150 mm long with its highest fixed member 90 mm above the motherboard. It is deliberately taller than the earlier 69 mm plate concept. Check that envelope in the open rig before printing the full support.

The support and slide plates sit toward the card side of the camera, leaving the top USB connection accessible. Clearance to the CPU cooler must include the cradle floor, nuts, screw heads and connected cable. A successful CAD collision check only verifies the model's chosen dimensions; it does not establish the actual camera or motherboard geometry.

If the overhead envelope does not fit, do not scale the STL or remove a structural member in the slicer. Change the editable parameters and regenerate, or use a bracket rail mount outside that obstruction. Scaling also changes all the fastener holes and fit allowances.

Travel and clearance in this prototype

Parameter Exported value Condition
X lens target 54–62 mm; start at 60 Requires measured lens projection and body depth
Y lens target 76–96 mm; start at 86 Body centre is calculated from your measured lens offset
Z lens target 37–48 mm; start at 42 Use only the part of this range that clears the actual board
Fixed printed boom 150 mm long; top at Z90 Check overhead space; the full-height steel cover is taller
Lowest moving plastic Z16.5 at the lowest setting A 5 mm gap requires everything underneath to be below Z11.5; reduce travel if it is higher
Cooler-side limit X84 Leaves 5 mm to the assumed cooler plane at X89; verify hardware and cable too
Provisional USB volume 16 mm Y × 14 mm X × 30 mm upward Measure the connected extension and cable bend; this is not a vendor drawing

The rear screw alone must not be allowed to pivot: the stock cover's lower locating tongue must engage its intended case feature. If that feature is absent or loose on the open frame, add a second attachment to the case rail before using the mount. Do not brace against the motherboard.

The STL files are already oriented and placed on the print bed; STEP files retain their assembly coordinates. Print one of each part 01–06. Use part 07 before the main print and 08–09 only as needed for fit trials. The hard shims are not substitutes for soft camera-contact pads.

File in the ZIP Role Orientation
01_rear_boom.stl Fixed support, rear flange and horizontal Y slots Broad cardward face down
02_y_carriage.stl Slides along the boom; carries the vertical slots Broad flat face down
03_z_shelf.stl Height adjustment and short X slide Shelf floor down; check recessed head bridges
04_drop_in_cradle.stl Housing support with front/rear corner stops Floor down
05_keeper_rear.stl, 06_keeper_front.stl Removable body retainers and cable-tie ears Flat face down
07_fit_coupon.stl Checks housing clearance and M3-hole fit Floor down
08_shim_0p5.stl, 09_shim_1p0.stl Optional 12 × 20 mm shims Flat
Exploded view of the six printable mount components
The six installed printed parts. The stock metal cover and fasteners are purchased/reused separately.

Hardware to bring

Item Quantity Purpose
Full-height steel expansion-slot blank with lower locating tongue 1 Rear anchor; reuse the case's matching screw
M3 × 16 machine screws 2 Steel cover to printed flange
M3 × 20 machine screws 2 Y slide
M3 × 12 machine screws 2 Z slide; use standard nuts about 2.4 mm thick
M3 × 12 low button-head screws 2 X slide; head at most 6.2 mm diameter and 2.1 mm high
M3 × 10 machine screws 4 Two keepers
Standard M3 hex nuts, 5.5 mm across flats, about 2.4 mm thick 12 All joints, including four side-loaded keeper nuts
M3 flat washers, about 7 mm OD and 0.5 mm thick 16 Two per bracket/Y/Z joint, one above each X joint, two spare
Thin silicone padding, small tape pieces, cable ties Small sheet; 4 tape pieces; 3–4 ties Nonmarring camera contact, nut retention and strain relief

Do not replace the Z-stage screws with longer ones casually: 16 mm screws can hit a cradle end wall at the closest X position. The 12 mm choice depends on the stated washer/nut stack. Likewise, a tall socket head does not fit the X-stage recess. Check the purchased hardware against these dimensions before assembly. Ordinary nuts are modeled; thicker locking nuts are not interchangeable here.

Use ordinary M3 socket-cap heads for the machine screws (about 5.5 mm diameter × 3 mm high), except for the specified low button heads. Bulky thumb knobs have not been checked. Bring the camera, its actual female USB-C extension, a caliper, a square, M3 drivers, a suitable metal drill and deburring tool. No adhesive goes on the camera. Retain the keeper nuts by covering the outside insertion openings with small pieces of tape; they can otherwise slide out while a keeper is removed.

Assemble on the bench

  1. Fit the camera. Print part 07 and test the housing. Measure and enter the lens offsets, total depth and projection, then regenerate if needed. Dry-fit part 04 and both keepers. Trim thin pads until they hold the housing gently when the keepers reach their rigid stops. The provisional total vertical allowance is 0.8 mm; padding must compress within it. Keep the focus ring and connector free.
  2. Prepare the rear anchor. Mark two holes on the installed steel cover at the measured locations corresponding to Z32 and Z64, on the assumed slot centreline. These heights are from the motherboard, not from the cover's bottom. Remove, drill to 3.4 mm, deburr and clean the cover away from the computer. The drilling template supplies a 32 mm pitch and a scale check, not a guarantee of chassis position. Print it at actual size and verify the scale with a ruler. Bolt part 01 to it with the two M3 × 16 screws and washers.
  3. Fit the Y slide. Part 02 goes on the card-facing side of part 01. The two M3 × 20 screws pass horizontally along X through the carriage holes and the boom's horizontal slots. Use washers at the head and nut. Start at the middle of the slots.
  4. Fit the Z slide. Part 03 goes on the card-facing side of part 02. Use the two M3 × 12 screws through the shelf's upright holes and the carriage's vertical slots, with heads facing the card. Support the shelf while loosening these fasteners.
  5. Fit the X slide. Part 04 sits on part 03. Insert the two low button-head M3 × 12 screws from below, with their heads fully within the slotted recesses. Put washers and nuts above the cradle's outer wings. Leave the joint movable until the distance is set.
  6. Capture the camera. Insert and externally retain the four keeper nuts. Drop the camera onto the padded seating surfaces, then attach parts 05 and 06 using four M3 × 10 screws. The end walls, corner stops and keepers constrain the housing; pads remove play. Hand-tighten to the keeper stops without squeezing or distorting the shell.
  7. Route the cable. Connect the extension, secure its jacket to a keeper ear near the plug, and route a slack loop to the boom's tie windows. Test full motion on the bench. Tighten both fasteners of each stage after positioning and mark the settings.

Edit the design

The ZIP contains make_mount.py and parameters.json. Dimensions are in millimetres. Use lens_offset_y and lens_offset_z relative to the housing centre, with the camera in its intended orientation. Body centre equals target lens coordinate minus that offset. overall_camera_depth is lens-front-to-housing-rear; lens_projection is the distance the lens front projects beyond the housing front. Their difference sets the body depth.

Edit a copy of the parameters, then run the generator with Python 3.12 and the supplied requirements. For example:

uv run --python 3.12 --with-requirements requirements.txt make_mount.py --params parameters.json
uv run --python 3.12 --with-requirements requirements.txt hardware_validation.py

The generator rebuilds the STL/STEP files, drawings and validation report; the second command separately checks the fasteners. Recheck validation.json, hardware_validation.json and the clearance drawings after every change. A file being exported is not proof that its parameter set passed. If changing lens offsets triggers a reach assertion or a collision, the supporting dimensions must change too; do not bypass the check or scale the STL. Update the drilling template if the bracket-hole parameters change.

Side and top bounding envelopes for the adjustable mount relative to card, motherboard and assumed cooler plane
Bounding envelopes of the nominal model. Board components, exact cooler fins and the actual USB cable still need measurement.

Measure before the full print

Use the camera and its actual USB extension cable, digital calipers, a ruler and a square. Measure with the host shut down and disconnected; do the camera measurements on a bench. These measurements determine fit, not just print accuracy.

Measurement What to record Why it matters
Housing Length along the 59 mm side, height, and body-only depth, excluding the lens Official sources disagree on 57 versus 59 mm length; 17.2 mm is not a detailed mechanical drawing
Lens Axis relative to the housing centre, front projection at the intended focus, outer ring diameter The lens is offset toward one end. Centre the lens on the target, not the housing
USB Position of the top male plug; envelope with the actual female extension attached; cable bend The moving carriage and retainers must clear the connected cable through all travel
Card target Lens target position along the card from the rear bracket datum, and height above the motherboard Earlier 86 mm and 42 mm values are estimates
Rear bracket Existing top screw type, lower tongue engagement, usable drilling area, installed position Reuse the case screw; do not assume M3 and 6-32 are interchangeable
Obstructions Electrical connector top, M.2 adapter, any planned risers, cooler fins, fan cables, overhead space Check the complete swept envelope, including nuts, washers, cable and keeper removal

Measure the minimum distance to a fin anywhere the carriage can reach. The earlier 89 mm card-to-cooler gap came from a photograph; it is a starting estimate. At a true 60 mm lens distance, a 17.2 mm camera envelope would leave 11.8 mm before any cradle, lens-projection correction, or hardware is added. Do not treat that as final clearance.

At the makerspace

First print the fit coupon, then the cradle and its keepers. Confirm the bare camera drops in without force, the pads hold its housing, the gold focus ring turns freely, and the connected USB cable clears the keepers. Update the editable parameters before printing the structural parts.

Use unfilled ASA for the installed prototype, on an enclosed printer with the makerspace's approved ventilation and calibrated filament profile. Start with a 0.4 mm nozzle, 0.2 mm layers, five perimeters, six top and bottom layers, and 40–50% infill; inspect the slicer preview around every bolt hole and slot. Use the supplied print orientations, and ask the operator about brim and local supports. These are starting settings, not a validated machine profile. Prusa's ASA guidance explains enclosure, warping and ventilation requirements.

If the available machine prints only PLA, use it for an unpowered fit mock-up and have the installed parts made in ASA elsewhere. PETG is not automatically equivalent: creep depends on temperature, filament and sustained load. Avoid carbon-filled, metal-filled and conductive filament near electronics. Do not generate or run generic G-code for an unknown printer; slice the STL files on the actual machine's profile at 100% scale in millimetres.

Install and set the view

  1. Arrange use of the vacant expansion position and a shutdown window with the lab owner. The design uses the position next to the empty PCIEX16 connector and may prevent installing another card there.
  2. Assemble and adjust the complete mount on a bench. Capture the fasteners, remove print debris, and deburr the steel bracket away from the computer. Check that the bracket's lower tongue engages the case and its upper screw holds it without rocking.
  3. With the host off and power disconnected, install the mount on the rear expansion rail. Keep every printed part and fastener clear of the electrical connector and exposed board components across the full motion; use at least 5 mm clearance as this prototype's design target. No feet rest on the motherboard or M.2 adapter.
  4. Drop in the P3, seat its housing on the pads, and fit the keepers. Tighten only enough to retain it: no visible shell distortion and no pressure on the gold ring or USB connector.
  5. Strain-relieve the cable to the moving cradle near the plug, then to the stationary frame, leaving a loose service loop for the complete travel. The connector must not carry the camera or resist an adjustment. Keep the cable out of fans.
  6. Set the true lens front to PCB distance near 60 mm. Set Y and Z until the capacitor field behind the die is centred. Lock one axis at a time while supporting the carriage. Recheck clearance at the chosen pose; collision limits override available slot travel.
  7. Boot, leave the view undisturbed while the camera warms, then turn the mechanical focus ring using the live image or P3 focus meter. About 20 minutes is an initial settling period, not a guarantee of stability. Photograph the ring against a body datum, or align removable witness marks on the ring and housing, keeping adhesive away from the lens. Do not glue the ring.
  8. Save a reference frame and the X/Y/Z settings. Lightly disturb the accessible frame and cable, away from live circuitry, then verify that fixed PCB edges return to the same pixel positions. Do the removal/reseating test on the bench; if repeating it in the rig, shut down and disconnect power before handling keepers or fasteners, then rewarm before comparing frames. Check again after an idle-to-load thermal cycle and after the first long run.

“Exposure” is interpreted here as distance and framing. The mount provides translations; focus is mechanical, and temperature range, palette and image processing remain software settings. Keep the camera square to the PCB. This prototype does not provide a calibrated angular stage or micrometer feed.

Check temperature and measurement quality

The P3 manual's upper service temperature is 55 °C. Measure the local air near the camera and watch its telemetry as a separate drift indicator; a telemetry value is not automatically an ambient-temperature measurement. For initial commissioning, use 50 °C local air as a conservative stop point to leave margin to the manual's limit. If the camera or mount gets too warm, improve placement and airflow before continuing. ASA's heat resistance does not raise the camera's operating limit.

Leave the card's heatsink and fans in their existing configuration. An added baffle can reduce radiant heating but can also obstruct airflow, so no untested baffle is assumed in the clearance calculation. Compare normal card temperatures before and after fitting the mount at the same workload.

This arrangement records temperature at the PCB's rear surface, including emissivity and reflection effects. It does not directly read junction temperature. A repeatable view helps comparison, but does not calibrate the camera. Follow the existing calibration guide for a reference patch and contact thermometer; obtain the lab owner's agreement before applying anything to the card. Shiny capacitor ends can look cold because of reflection. Use radiometric frames or temperature CSV for analysis, and keep processing settings fixed across comparisons.

The earlier focus simulator predicts roughly 40 × 30 mm of board at 60 mm stand-off. Verify framing and focus on the actual unit; those model values are not mechanical tolerances or proof of focus depth.

What has been checked

The nine exported parts are valid single CAD solids, and their STL meshes are closed, consistently oriented and connected. The six installed parts were checked at 27 combinations of the minimum, middle and maximum X/Y/Z positions against one another and the simplified camera and USB clearance volume. A separate check includes the twelve fastener assemblies with the specified heads, washers, nuts and screw lengths.

These are geometric checks on the supplied parameters. The camera mesh, lens dimensions, cable envelope, cooler plane and bracket are provisional. No part has yet been physically printed, installed, load-tested or tested for thermal creep. The next acceptance step is the camera fit coupon, followed by the measured chassis clearance and bench assembly checks above. Check the validation files again after changing any parameter or hardware.

Design basis

For total life satisfaction, this print is useful if it removes repeated camera setup and makes the measurements reproducible; it adds work if the current helping-hands arrangement already answers the experiment.