I've been asked to determine the possibility of adding some functionality to a laboratory liquid dispenser. This tool automatically dispenses liquid into a 96 well test plate by positioning a set of nozzles over each row of wells and metering the liquid with a stepper motor activated pump.
To boil it all down to a nutshell: they want to use the signal to the stepper motor that operates the pump to activate another external pump. The external pump is activated by simply closing a momentary switch, that seems like the easy part!
The stepper motor that operates the internal pump, is driven with an NJM3771 / NJU39610 IC pair. I've looked at the signals with a scope and found that the signal I want to trigger off of is a pulse burst that lasts about 750ms per dispense cycle and is about 1.2v in amplitude.
My problem is that besides the pulse for the dispense cycle, the pump is activated at various other times, I imagine for priming the nozzles, preventing drips etc. so it seems like I need some kind of program that can determine the correct pulse and use it - seems like something the Arduino should be able to do!! I have a Duemelinove and an Uno I can use to experiment with, but I think I need some help working through what the pitfalls might be and some ideas on how to proceed.
A microprocessor that can be programmed by a hand pendant, or bypassed by a connection to a PC with proprietary software. I don't think there are any pins or ports that can be accessed by programming - that would be too easy! These companies (Biodot in this case) do pretty well at protecting their programs. I'll look again though, next time I have a chance.
Bummer. I'm not going to be much help with the stepper motor side other than to say that detecting a 750 ms pulse is trivial. Hopefully someone else will step up regarding the hardware connection.
It's actually a burst of pulses that lasts 750ms. I think the pulses work out to about 55 Hz or so. I'm wondering now if I need to rectify them, or count them maybe? I can upload a picture of the pulse burst if anyone's interested.
I'm also trying to work out the logic of using the signal. When this thing runs a program, it fires this motor several times before actually sending the pulses I want to use. These pulses are about 350ms long - then, after each 750ms signal I need to use, it sends a second pulse that is also 750ms long. I guess this info would have been helpful in the first post...
I think I could do something like:
If signal is less than 750ms
do nothing
if signal equals 750ms
then increment long signal count
if long signal count > 1
do nothing, else
make an output momentarily go high
reset long signal count
start over
What does the external pump do? Rather than trying to decode what the stepper controller is doing, can you detect what you need in a different way? For example, can you use an LED and a phototransistor to detect when liquid is actually being dispensed into the wells?
What does the external pump do? Rather than trying to decode what the stepper controller is doing, can you detect what you need in a different way? For example, can you use an LED and a phototransistor to detect when liquid is actually being dispensed into the wells?
The internal pump dispenses one type of liquid into one row of wells at a time, then the dispense head is moved to the next row of wells and liquid is dispensed again - process is repeated until the entire 'plate' is done. They have the need to dispense multiple liquids at a time, which they can do with an existing external pump that is operated by a simple foot switch while the dispense nozzles are manually held over the wells. They have the need to do this MANY times a day - so they had the idea of mounting the multiple nozzles on the automated nozzle positioner and using the signal from the internal pump motor to trigger the switch (currently footswitch) on the external pump. This would give them exactly the functionality they need and save some aching backs.
It doesn't seem like it should be that difficult to do - but in my experience, NOTHING is ever as easy as it seems, so I wanted to put this out there and see what the guru's have to say.
What is the likelihood that you will be adding more features to the device?
This would be it.
How reliable does the device need to be?
Not highly, but enough to save me from constantly servicing the added functionality.
Are you confident that you have witnessed all the potential signal patterns?
Good question - no I'm not sure. I watched the scope while they ran the particular program they want to use several times through - so, I'm reasonably confident I got the pattern, but still...
One more (multi-part) question: What is the cost of a failure? What is the cost if your device fires the external pump when it should not? What is the cost if your device fails to fire the external pump when it should have?