Issue
102 January 1999
In
the Face of Medusa
Part
1:Developing Reliable Control
FLYING
THE 4Q
Now,
lets apply the 4Q to the Medusa experiment. Medusas
only function is to nourish the life in the petri dishes.
The actual laboratory experiment has Medusa feeding
three sets of eight petri dishes.
The
inner workings of Medusa consist of a series of syringes
containing liquefied nutrients that are delivered to
the petri dishes by pressure applied from the shaft
of a linear stepper motor. A cross section of the Medusa
is shown in Figure 2.
|

(Click
here to enlarge)
|
Figure
2Looks
pretty simple, but the machining is very precise
with those funny register names. |
Medusa
is the first module of our experiment in which we will
embed a 4Q. The linear stepper motor is driven using
an Allegro UNC5804B. The UNC5804B is a BiMos II Unipolar
stepper-motor translator/driver. The logical depiction
of the UNC5804B is shown in Figure 3.
|

(Click
here to enlarge)
|
Figure
3A
few years back, I wrote an application and hacked
some hardware to do what this little IC does.
|
This
IC provides complete control and drive for a four-phase
unipolar stepper motor. The PicStic-4Q need only supply
STEP, DIRECTION, and ENABLE signals to the UNC5804B
to move the linear stepper, which in turn puts the squeeze
on the syringe plungers.
Each
step of the HSI linear stepper is one half-thousandth
of an inch, so a small amount of nutrients are supplied
at each plunger move. The object is to feed the experiment
without drowning it. Seems like a waste to only use
three I/O lines on the module, but I havent finished
telling you about the other things the 4Q attached to
Medusa needs to perform.
Again,
NASA is synonymous with redundancy. Redundancy implies
safety, and safety improves the possibility of success.
I pointed out that a single point of failure exists
when using a single processor complex to do the entire
job. I also suggested that peripheral processing was
one way to eliminate a single point of failure situation.
The
4Q comes equipped with a battery-backed real-time clock,
and theres also a built-in serial communications
function. The embedded x86 system is also
capable of keeping experiment time and communicating
with peripherals serially. We can use these attributes
to build a did-I-get-fed safety factor.
The
x86 is ultimately the boss here. Although
the 4Qs have their own intelligence, the x86
controls and monitors their programmatical movements.
Its safe to say that the x86 embedded
board is able to reset any of the 4Qs as well as command
them to perform preprogrammed functions at the predetermined
times.
What
if the x86 experienced an I/O component
failure? What if the firmware running on the x86
hung?
My
first thought is that the x86 onboard watchdog
timer would reset the hung embedded complex and things
would resume as normal. Watchdog timers are great for
software hangs, but I havent seen one yet that
can fix hardware.
So,
lets assume the x86 hardware is down.
What are the 4Qs to do? After all, they cant work
without the direction of the big daddy x86,
right? Wrong. The solution is to use the hardware incorporated
into the 4Q to enable each one to continue to function
until the x86 problem is repaired.
Its
a given that catastrophic failure of the x86
hardware would result in the loss of critical data and,
ultimately, experiment failure. But if the 4Qs are programmed
to continue their assigned tasks according to mission
time, and buffer any gathered data during the x86
downtime, depending on how long the x86
hardware was inoperative versus how much data the 4Q
could store, data loss wouldnt be total.
The
4Qs can also be programmed to poll each other to see
if an unsuccessful data transfer to the x86
occurred for other modules in the experiment. This is
akin to how the mission computers on the Orbiter vote
each other out if a computational discrepancy occurs.
If
all the 4Qs involved with Medusa can speak to each other
and not speak to the x86, its logical
to assume that the x86 is offline. I fight
with this concept in my mind, but the 4Qs can also be
programmed to attempt to reset the x86
embedded system if a consensus of them decided to do
so.
I
see a never-ending loop in that idea, but it can be
implemented as long as the proper controls are put into
place. The key to success here is to synchronize the
modules clocks with the clock of the x86
at experiment startup. If the x86 system
doesnt issue a feed command within the specified
time limits, then the module responsible for driving
the linear stepper motor assumes command and executes
the process.
Any
resulting feed operation status that should have been
transmitted to the host x86 is stored in
the 4Q, just in case the x86 was busy at
feeding time or was unable to recover from a crashed
condition. The inverse of this scenario is that the
module performing the feed function fails.
The
bad news is that the experiment would fail because there
would be no backup for the 4Q. The good news is that
the probability of this module failing is minimal. All
of its parts have proved reliable in a variety of real-world
applications.
Besides
applying pressure to Medusas plungers, the same
4Q could be configured to measure temperature and humidity
as well. The 4Q is also equipped with a pair of ADCs.
Depending on the accuracy and number of inputs required,
you can choose from a 4-channel 8-bit or a 2-channel
12-bit ADC.
Each
ADC is based on a 5-V full-scale value, so sensors and
interfaces must be chosen accordingly. A good choice
here is the HyCal monolithic IC humidity sensor model
IH-3602. This sensor measures relative humidity as well
as temperature and is packaged in a six-pin TO-5 package.
Temperature
is measured using a thin film platinum 1000-W RTD. The
temperature sensor can be used to provide temperature
compensation or to measure temperature independently.
The
real plus is that this sensor interfaces directly with
the 4Q. A nominal 0.84-V linear output for 0100%
relative humidity is provided when the sensor is powered
by 5 VDC.
Temperature
is measured by detecting a change in the RTD resistance.
This is done by supplying a small constant current to
the RTD and reading the voltage across the platinum
resistance.