Plugin to run additional photodiode

I want to write a plugin job that will measure the optical density of the media using a second photodiode at a second scattering angle. I want to record its OD measurements to the database and have them displayed on a chart in the UI, ideally with the OD measurements from the first photodiode also displayed. I am interested in seeing how the 45 degree measurements correspond to the 90 degree measurements, and at what range of measurements they are linear/non-linear. I want something that looks like Figure 5. I don’t intend to use this value for calculating a second growth rate, and while it might be nice to have both OD’s normalized, that might be more trouble than it’s worth.

Can you provide some guidance on how I might do this? My Pioreactor has the IR LED in channel A, but channels B, C, and D are all open. Can I use one (or any) of these channels to take the measurements and would I need to update something in the config? Also, should my class inherit from BackgroundJob, or would inheriting from an OD reader class work better? Are there any particular methods I should import?

The Pioreactor only has two photodiode channels, so max number of signals is two. One signal is typically used for a LED reference signal, but we can sacrifice that. I’ll explain the drawbacks to losing a REF below.

Move the photodiode in REF to the 45deg pocket. In your config, edit photodiode_channel to something like:

[od_config.photodiode_channel]
1=90
2=45

That’s pretty much it. od_reading will record from both channels and display in the UI, etc.


Removing the reference PD will effect the signal:

  • more sensitive to temperature changes. You may see “waves” during periods of heating. I suggest keeping the Pioreactor away from AC vents, windows, etc.
  • the IR LED’s may dim over long periods of time (days), so a decreasing signal could be a dimming LED or a culture change.

Right, so the way things are set up now, growth_rate_calculating will use both signals (45 and 90) to compute nOD and a growth rate.

That’s cool, I’m interested to see how it looks.

Why can’t you use the other channels for the photodiodes? Are they not able to read sensor data? Or do they not have the ADC that the photodiode channels? In general, what can they be used for (what types of I/O do they support?)?

On the HAT, the two PD channels go through an op-amp circuit to amplify the signal, and then go to an ADC.

The four LED channels are outputs and aren’t wired up for amplifying signals. They can be used for adding more LEDs, ex: white light, red light, etc. for photosynthesis or optogenetics, etc.

In general, they produce controllable current between 0 to 100mA. We’ve only ever used them for more LEDs.