TeleStern/doc/pyro-examples.inc

211 lines
9.6 KiB
PHP

[appendix]
== Example Pyro Channel Configurations
Programming configurable pyro channels on Altus Metrum products that
include them isn't difficult, but in an attempt to aid understanding
of the configuration interface and help "keep simple things simple",
we offer the following examples of the simplest configurations for
common situations, along with some hints on avoiding unexpected
results.
The rich set of conditions provided can be used to configure almost
any pyro event you can imagine, for a wide variety of objectives.
But don't be fooled! Typical events need only one or a few simple
conditions to be configured for success. A key thing to remember is
that *all* configured conditions must be true to allow a pyro channel
to fire. Trying to include too many conditions often results in
conflicting rules that never allow a channel to fire. The most
important advice we can offer is, therefore, to try and find the
simplest set of conditions that will do what you need for a given
project.
=== Two-Stage Flights
Successful completion of a two-stage flight often involves
programming of two events. The first is firing a separation
charge, the second is igniting the sustainer's (primary)
motor.
Separation charges are best fired as soon as possible after
the previous stage has completed providing acceleration, to
minimize drag of the sustainer's coast phase before ignition.
Recovery, whether the remainder of the flight is nominal or
not, usually works best when the stages are separated. So,
the "best" way to configure a pyro channel for a separation
charge is to just set "after motor number". For a 2-stage
project, set this to "1". This will cause the pyro channel
to fire as soon as the firmware's flight state machine
determines the first motor has burned out.
Safe ignition of a sustainer (primary) motor requires that
it happen after the previous stage burns out, while the
airframe remains mostly vertical, and typically after the
sustainer has coasted away from the booster a bit. A good
starting point is thus "after motor number" set the same as
the separation charge, which is "1" for a 2-stage rocket.
Then "angle from vertical less than" set to some
reasonably vertical amount, perhaps 20 degrees. Then "delay
after other conditions" set for the desired duration of coast.
Use simulations to figure out what a reasonable value here is,
but for typical high power rocketry sport flights that aren't
trying to set records, something like 2 seconds is usually a
good place to start.
=== Triggered Clusters and Air Starts
When an airframe has a cluster of motors, one of which is
"primary" and centered, surrounding by a ring of "secondary"
motors, you may want to use the launch control system to fire the primary motor and use onboard electronics to light
the rest of the cluster as soon as launch is detected. This
is particularly true if the primary motor is significantly
different in geometry and may take longer to come up to
pressure than the secondary motors. In this case, a simple
configuration to light secondary motors is is "time since
boost greater than" enabled and set to "0". There's
really no point in setting an angle limit since no time has
transpired for the airframe to change orientation.
Air starts can use the same simple configuration, but with
the time set to a non-zero value. However, if air starts
are going to light after the airframe leaves the launch rail
or tower, add an "angle from vertical less than"
condition just you would for a 2-stage sustainer to stay safe.
=== Redundant Apogee
When flying a board like TeleMega or EasyMega, it's easy to
configure a programmable channel to fire a redundant apogee
charge. This is of course not *fully* redundant, since it's
always possible that the board itself or its battery could
the the failure source, but far more often, pyro events fail
due to broken wires, bad connectors, or bad e-matches... so
firing two charges from one board can add useful redundancy.
The simplest configuration for redundant apogee is "flight
state after" set to "drogue", and then "delay after other
conditions" set to a second or two.
=== Redundant Main
Similarly to apogee, configuring a redundant main charge can
provide useful redundancy. What we want is to configure an
altitude for deployment lower than the primary main deploy
altitude, and then ensure we only trigger on that condition
while descending.
The simplest configuration for redundant main is "flight
state after" set to "drogue", which will ensure we're in to
the descent phase, then "height less than" set to a number
lower than you've chosen for the primary main channel
deployment height.
=== Apogee Above Baro Sensor Limit
A question we've seen increasingly often is "How does the
Telemega/Easymega detect apogee for flights above 100,000
feet?" Flights above that height are a bit outside
our original design envelope, but can be made to work...
This is *not* a simple flight, and the configuration for it
is also not simple, but we think including this information
is important for anyone contemplating such a project with our
electronics!
Our flight computers use a Kalman sensor-fusing filter to
estimate the flight state, which consists of three values:
1. Height above ground
2. Vertical speed
3. Vertical acceleration
Apogee is assumed to be where vertical speed crosses zero.
Below 30km altitude (about 100k'), we use both the barometer
and the accelerometer to update the flight state, along with
a basic Newtonian model of motion. That works well, pegging
apogee within a few sensor samples essentially every time.
Above 30km, the barometric sensor doesn't provide useful data,
so we can't use it to update the flight state. Instead, the
Kalman filter falls back to a single sensor mode, using only
the accelerometer.
At all altitudes, we de-sense the barometric data when we
estimate the speed is near or above mach as the sensor is
often subjected to significant transients, which would
otherwise push the flight state estimates too fast and could
trigger a false apogee event.
That means the filter is no longer getting the benefit of two
sensors, and relies on just the accelerometer. The trouble
with accelerometers is they're measuring the derivative of
speed, so you have to integrate their values to compute speed.
Any offset error in acceleration measurement gets constantly
added to that speed.
In addition, we assume the axial acceleration is actually
vertical acceleration; our tilt measurements have enough
integration error during coast that we can't usefully use
that to get vertical acceleration. Because we don't live in
an inertial frame, that means we're mis-computing the total
acceleration acting on the airframe as we have to add gravity
into the mix, and simply adding that to the axial acceleration
value doesn't generate the right value.
The effect of this is to under-estimate apogee when you base
the computation purely on acceleration as the rocket flies a
parabolic path.
For flights *near* 100k', all of this works pretty well -
you've got the flight state estimates adjusted using the
barometric sensor up to 30km, then you're flying on inertial
data to apogee.
For flights well above 100k', it's not great; you're usually
going fast enough through 100k' that the baro sensor is still
de-sensed through the end of its useful range, so the flight
state estimates are not as close. After that, as you're flying
purely on accelerometer data, there's no way to re-correct the
state, so the apogee estimates can be off by quite a bit.
In the worst cases we have seen, the baro sensor data was
wildly incorrect above mach due to poor static port design,
leaving the state estimate of speed across the 30km boundary
way off and causing the apogee detection to happen far from
the correct time.
The good news is that correctly determining apogee is not
really all that important at high altitudes; there's so little
density that a drogue will have almost no drag anyways. Data
from customer flights shows a very parabolic path down to
about 50-60k feet, even with a recovery system deployed.
So, what we recommend is to set up two apogee plans:
1. Use the built-in apogee detection, but add a
significant delay (as much as 30 seconds). This
will probably fire near enough to apogee to not
have a significant impact on the maximum height
achieved.
2. Add a back-up apogee which fires after apogee
*when the height is below about 20-25km*. This
way, if the flight isn't nominal, and the sustainer
ends up reaching apogee in dense air, you aren't
hoping the chutes come out before it gets going
too fast. And, you get a second pyro channel firing
at that altitude even if it reached a higher
altitude before.
You can wire these two pyro channels to the same pyro device;
you just need to make sure they're wired + to + and - to -
(the manual shows which screw terminals are which).
The bottom line is that flights to altitudes modestly above
the range of the baro sensor with Altus Metrum products can
be accomplished safely, but flying "way high" (like 300k')
demands a deployment mechanism which doesn't solely rely on
altimeters (like ours) which are designed for modest altitude
rocketry. Flights to those altitudes also probably need
active stabilization to make sure they follow the prescribed
trajectory and stay inside their waiver.