Skip to content

v1 STAR.head96: the dispensing drive defaults are checked attributes, no longer queried from the device - #1477

Open
BioCam wants to merge 1 commit into
PyLabRobot:mainfrom
BioCam:head96-dispensing-drive-default-speed
Open

BioCam wants to merge 1 commit into
PyLabRobot:mainfrom
BioCam:head96-dispensing-drive-default-speed

Conversation

@BioCam

@BioCam BioCam commented Oct 8, 2026 •

Copy link
Copy Markdown
Collaborator

The Problem

The 96-head's default dispensing drive speed and acceleration were wrong in three ways:

  • Wrong source. At setup they were taken directly from a firmware query of the device
    (H0RAradv, H0RAradr). That query does not return a default: it returns what the last command
    set. A run that ended on a 10 uL/s dispense left every later session with 10 uL/s as its
    "default", and the piston move before each tip pick-up took 21 s.
  • Wrong place. They lived in Head96Configuration. A configuration holds facts about the
    device; a default is what the driver chooses to send, and belongs on the feature (P18).
  • Not settable. They were read-only properties, changeable only by overwriting a
    _firmware_reported field.

PR Content/Solution

  • Head96.default_dispensing_drive_speed (250 uL/s) and
    Head96.default_dispensing_drive_acceleration (17000 uL/s2; 2900 uL/s2 on a head with firmware
    from before 2010, set at setup from the firmware year).
  • The piston move and the head's own aspirate and dispense (H0) take these when given no speed
    or flow rate, so a value is checked against the drive's range when it is assigned:
    star.head96.default_dispensing_drive_speed = 5000.0 raises
    default_dispensing_drive_speed must be between 0.1 and 1063.75, is 5000.0.
  • Setup no longer queries the device for dv and dr.
  • Head96Configuration loses the two dispensing _firmware_reported fields and _default
    properties, and their keys are dropped from the three recordings.
  • The defaults move from 261.1 to 250 uL/s and from 17406.84 to 17000 uL/s2, so the piston move
    sends dv12926 and dr878965 instead of dv13500 and dr900000.

Only the dispensing drive changes; the squeezer, Y and Z drive defaults are as before.

🤖 Generated with Claude Code

@BioCam
BioCam force-pushed the head96-dispensing-drive-default-speed branch from 1f1a279 to 5e04eb5 Compare October 8, 2026 13:48
@BioCam BioCam changed the title v1 STAR.head96: the default dispensing drive speed is one attribute, no longer queried from the device v1 STAR.head96: the dispensing drive defaults are checked attributes, no longer queried from the device Oct 8, 2026
@BioCam
BioCam marked this pull request as ready for review October 8, 2026 13:49
…s, no longer queried from the device

The firmware query (`H0RAradv`, `H0RAradr`) returns what the last command set, not a default,
so a slow last dispense became the next session default. `Head96.default_dispensing_drive_speed`
(250 uL/s) and `.default_dispensing_drive_acceleration` (17000 uL/s2, 2900 on firmware from
before 2010) replace the configuration fields and are checked against their range when assigned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@BioCam
BioCam force-pushed the head96-dispensing-drive-default-speed branch from 5e04eb5 to 1954211 Compare October 8, 2026 13:55

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant