3 Commits
Author SHA1 Message Date
grabowski ba1f5fc3a9 Optical QC: EtherCAT control
User, 18 Oct 2026: use an EtherCAT based system.

- Spindle and conveyor on the StepperOnline A6-EC100L2A1-M17 kit
  (100 W, A6-200EC drive, USD 123.29), spindle through a 1:6 belt in
  cyclic synchronous position, conveyor in cyclic synchronous velocity.
- The A6-EC drive has no divided encoder output, so an RS-422
  incremental encoder on the spindle shaft clocks both line-scans; its
  index goes to the drive touch probe for one angle reference.
- Station controller: fanless N100 mini PC with 2x Intel i226, NixOS
  PREEMPT_RT, EtherCAT master EtherCrab (Rust, MIT/Apache) first, IgH
  (nixpkgs, igc native driver on 6.12 LTS) as fallback; no PLC.
- EtherCAT I/O: EK1100, EL1809, EL2809, EL3102 (warp lasers sampled with
  the spindle position, ~1,000 points a turn at 1 ms).
- Safety stays hardwired (safety relay, contactor; no STO at 100 W).
- Edge PC with the GPU stays off the real-time loop.
- BOM: drives, encoder, controller and I/O lines with sources; total
  USD 16,112 to 32,938 (THB 0.53M to 1.09M). Next step: EtherCAT bench.
- Investor render: cabinet and outfeed labels.
2026-10-19 10:15:54 +07:00
grabowski 8c2143630c Optical QC: one station for both presses, after the cooling racks
Deploy test site / deploy (push) Successful in 55s
User, 18 Oct 2026: for now one QC station for both machines; let the
records cool in a queue before testing them.

- inline-optical-qc.md "Where it sits": launch setup. Spindle stacks
  from the Duplex system and the Classic, labelled at the press (press,
  stamper set, first and last cycle), cool in FIFO racks (24 h accepted
  practice, 8 h at the shortest, Stamper Discs; about one day of output,
  2,800 to 3,100 records); the finishing operator feeds the station from
  the cooled stacks. Gains: warp and centring measured on settled records
  (the release value), one station instead of two, no Classic unloader
  change, no warm-record sag or thermal camera. Cost: defects found hours
  later, covered by the Duplex operator, per-cycle telemetry and an early
  lane for the first records of each run and after stamper changes.
  Record key from the stack label and stack position, checked against the
  run-out stamper number. Capacity 10 to 12 a minute against 5 to 6:
  one station to about two Duplex systems and two Classics. A station at
  each press stays the later option. Cost table, open points, infeed row,
  thermal camera note and the Newbilt question follow.
- Fleet calculator: the per-press stations and the release station are
  gone; the finishing block shows the cooling racks with record stacks
  and the one optical station by the corridor glass; tooltips, corridor
  and conveyor texts; machine park back to its legend, finishing box
  "cooling, QC, packing".
- quality-automation.md layer 1, digital-factory.md QC row,
  process-flow.md stage 6, site-candidates.md block ground floor,
  crane-workshop-tours.md tour stop 6.
- Investor render: infeed label "the operator sets each cooled record
  down".

Checks: node --check; pw_bp_calc.py 0 fails; pw_iso_view_check.py OK;
info for every data-id at all presets, levels and rotations; GF nodes
2,414 at the full preset; zoomed shots in two rotations.
2026-10-18 15:18:00 +07:00
grabowski e8674795f5 Inline QC station: real 40x40 profiles, labelled investor render
User, 18 Oct 2026: use real 40x40 profiles, make a render with text
pointing out the parts to show the investor; the ring lights looked
like they were floating.

- build_station.py: frame drawn from the real 8-slot 40 series section
  (profile_shape: slots, centre bore, corner cavities; 40x80 with centre
  cavity) and 24 cast angle brackets; top beams now butt between the
  uprights; label-camera posts moved beside the cameras so both ring
  lights clamp straight to them; top line-scan on a side post with
  visible camera plate and light hangers; slide strips on carrier angles,
  pulley axles, end-stop posts, presence-sensor brackets, backlight post,
  cabinet on base crosses, chute on two supports and clear of the rail,
  pneumatics rail, stack light on the back upright, touch screen on the
  front end upright. A connectivity check at the end lists any part that
  does not reach the floor through touching parts: none.
- render_annotated.py (FreeCAD): front three-quarter view, camera backed
  off so nothing is clipped, no navigation cube or preselection, label
  positions projected from the camera and checked with marker renders.
- annotate_render.py (Pillow): title, 16 labels in two columns, leaders
  assigned so none cross -> inline-qc-station-annotated.png.
- render_station.py: same camera and preselection fixes; all six views
  re-rendered.
- BOM: 32 m of 40x40 in 45 pieces; total still USD 16k to 33k.
- inline-optical-qc.md and README updated; .gitignore for the render
  intermediates.
2026-10-18 14:07:41 +07:00