mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 16:51:12 -07:00
Prove the corner rolloff; document the one-press recorder
The stream harness gains rule 20: under M4 with the curve in force, the accelerate-in head of a line renders less density at the default gamma of 2 than at gamma 1 (0.317 against 0.537 on the host grid) while the cruise middle renders identically - the exponent shapes only the velocity-scaled rolloff, never the programmed level. The panel-serves covers widen to the whole recorder (src/curverec.*). BRINGUP describes the rolloff and the one-press recorder; the MOTION table gains laser_corner_gamma; the panel help explains the knob.
This commit is contained in:
+12
-5
@@ -250,11 +250,18 @@ pairs, ships with the bench-measured default compiled in, accepts
|
||||
`off` for the identity, falls back loudly on a bad value, and is
|
||||
reloaded at every precompute with the arm naming it (`laser armed
|
||||
(density, floor 10 %, curve bench-default)`). `$35`/`$36` still floor
|
||||
and ceil the result. An owner measures their own curve from the panel:
|
||||
the dose-curve recorder hands them a ladder G-code to run from their
|
||||
sender - every arm gate stands, forgectrl records the tube current and
|
||||
the head thermopile passively, fits the rungs, and Apply writes the
|
||||
result (`forgectrl/docs/SERVICES.md`). Rasters hold their tonality down
|
||||
and ceil the result. Under M4 the curve makes delivered light exactly
|
||||
proportional to velocity - and heat still accumulates where the head
|
||||
slows, so corners over-burned on the bench; `laser_corner_gamma`
|
||||
(default 2, range 0.25 to 4) bends the rolloff to light proportional to
|
||||
(v/v_programmed)^gamma, starving the slow spots the way the raw convex
|
||||
mapping used to by accident, while the programmed level at speed stays
|
||||
exactly the curve's. An owner measures their own curve from the panel:
|
||||
the dose-curve recorder streams the ladder job itself from one Record
|
||||
press (absolute from X0 Y0, refused while a sender is connected; the
|
||||
operator's button press starts the fire with every arm gate standing),
|
||||
records the tube current and the head thermopile, fits the rungs, and
|
||||
Apply writes the result (`forgectrl/docs/SERVICES.md`). Rasters hold their tonality down
|
||||
to ~14 pulse slots per pixel (508 DPI at 6000 mm/min): the dither
|
||||
accumulator's cross-pixel averaging recovers the levels, with no
|
||||
visible dither pattern.
|
||||
|
||||
@@ -428,6 +428,7 @@ only be changed while the machine is idle.
|
||||
| `laser_disarm_s` | 60 | Spindle-off grace before the armed window closes. |
|
||||
| `laser_floor_density` | 10 | The S-range floor, percent of full: the lowest pulse density that still marks. Loaded into `$35` at every spindle precompute; `$35` is derived, never typed. |
|
||||
| `laser_dose_curve` | (bench default) | The measured dose curve as density:light percent pairs; S commands a light fraction and the driver maps it onto the density that delivers it. `off` = identity; a bad value falls back to the default. The panel's recorder measures and applies a machine's own. |
|
||||
| `laser_corner_gamma` | 2 | The corner rolloff under M4: delivered light follows (v/v_programmed)^gamma, so 1 is plain proportionality and higher values starve the slow spots where heat accumulates. Rides the curve. |
|
||||
| `laser_pulse_ticks` | 20 | Density base period in machine ticks (35.5 us each). |
|
||||
| `laser_pulse_min_ticks` | 3 | Shortest density pulse in ticks; below it a period is skipped and its debt carried. |
|
||||
| `rail_settle_s` | 2.5 | Motor-rail off period when a controller takes the device standalone. |
|
||||
|
||||
Reference in New Issue
Block a user