Skip to content

bug(thermocycler): Make lid movement non-blocking to avoid errors right after lid movement #104

@sanni-t

Description

@sanni-t

current behavior/ steps to reproduce

When a plate temp is set and we either open/close the thermocycler lid, sometimes, the thermocycler goes into the 'plate temperature not uniform' error mode.

reason for error

  1. The plate thermistors are read in pairs every loop to minimize loop blocking time. If a lid movement is initiated after a read of partial thermistors then the thermocycler will read the remaining thermistors once the movement is finished. Now because the lid opened/ closed, there will be an expected change of temperature of the plate which will be reflected in the new thermistor readings. Sometimes this change in temp is more than the safe threshold. So, even though the change was actually uniform throughout the plate, it seems like it's not uniform because of the gap between read times of some of the thermistors and rest of the thermistors.
  2. Another reason is that the plate temp actually changes while lid is in motion. This is because the power to the peltiers doesn't get updated because lid movement blocks the peltier update from PID. So if the peltier was set to an x % power to, say, heat a particular peltier by a certain fraction, it'll continue to stay the same until lid movement is completed. This behavior, when coupled with the fact that each peltier could be set at a different level when lid movement starts, makes the plate temperature non-uniform. When the lid is opened & closed continuously multiple times then this non-uniformity keeps on increasing and ultimately leads to the uniformity error

possible solutions

  1. Have the thermocycler update all its thermistors before doing temp_safety_check
  2. Right before executing lid.open() or lid.close(), set peltier PID to manual and scale down peltier power. This will hopefully keep the peltier temps from straying too much. Once lid movement is completed, power will be set to auto PID value. The side effect will be a lower temp ramp rate when lid movement is initiated while in the middle of a temp ramp
  3. Make the lid movements non-blocking. This is a much bigger change and would require us to redo quite a few QC tests

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions