Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
sanni-t opened this issue Jan 27, 2020 · 1 comment

Comments

@sanni-t
Copy link
Member

sanni-t commented Jan 27, 2020

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
@sanni-t sanni-t added the bug label Jan 27, 2020
@sanni-t sanni-t added this to the CPX Sprint 3 milestone Feb 18, 2020
@sanni-t
Copy link
Member Author

sanni-t commented Jun 10, 2020

It's been decided to use proper api checks to mitigate this issue for now (see #5602).
Making lid movement non-blocking would be the long-term fix for this but we don't have plans for this update yet.

@mcous mcous changed the title Thermocycler: gives a 'plate temp not uniform' error right after lid movement fix(thermocycler): Making lid movement non-blocking to avoid errors right after lid movement Nov 5, 2020
@mcous mcous changed the title fix(thermocycler): Making lid movement non-blocking to avoid errors right after lid movement bug(thermocycler): Making lid movement non-blocking to avoid errors right after lid movement Nov 5, 2020
@mcous mcous changed the title bug(thermocycler): Making lid movement non-blocking to avoid errors right after lid movement bug(thermocycler): Make lid movement non-blocking to avoid errors right after lid movement Nov 5, 2020
@mcous mcous removed this from the CPX Sprint 3 milestone Nov 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants