diff options
Diffstat (limited to 'doc/system-operation.inc')
| -rw-r--r-- | doc/system-operation.inc | 307 | 
1 files changed, 307 insertions, 0 deletions
diff --git a/doc/system-operation.inc b/doc/system-operation.inc new file mode 100644 index 00000000..e68b2acb --- /dev/null +++ b/doc/system-operation.inc @@ -0,0 +1,307 @@ +[appendix] +== System Operation + +	=== Firmware Modes + +		The AltOS firmware build for the altimeters has two +		fundamental modes, “idle” and “flight”.  Which of these modes +		the firmware operates in is determined at start up +		time. +		ifdef::telemetrum,telemega,easymega[] +		For +		TeleMetrum, TeleMega and EasyMega, which have accelerometers, the mode is +		controlled by the orientation of the +		rocket (well, actually the board, of course...) at the time +		power is switched on.  If the rocket is “nose up”, then +		the flight computer assumes it's on a rail or rod being prepared for +		launch, so the firmware chooses flight mode.  However, if the +		rocket is more or less horizontal, the firmware instead enters +		idle mode. +		endif::telemetrum,telemega,easymega[] +		Since +		EasyMini doesn't +		have an +		accelerometer we can use to determine orientation, “idle” mode +		is selected if the board is connected via USB to a computer, +		otherwise the board enters “flight” mode. +		ifdef::telemini[] +		TeleMini v1.0 +		selects “idle” mode if it receives a command packet within the +		first five seconds of operation. +		endif::telemini[] + +		At power on, the altimeter will beep out the battery voltage +		to the nearest tenth of a volt.  Each digit is represented by +		a sequence of short “dit” beeps, with a pause between +		digits. A zero digit is represented with one long “dah” +		beep. Then there will be a short pause while the altimeter +		completes initialization and self test, and decides which mode +		to enter next. + +		In flight or “pad” mode, the altimeter engages the flight +		state machine, goes into transmit-only mode to send telemetry, +		and waits for launch to be detected.  Flight mode is indicated +		by an “di-dah-dah-dit” (“P” for pad) on the beeper or lights, +		followed by beeps or flashes indicating the state of the +		pyrotechnic igniter continuity.  One beep/flash indicates +		apogee continuity, two beeps/flashes indicate main continuity, +		three beeps/flashes indicate both apogee and main continuity, +		and one longer “brap” sound which is made by rapidly +		alternating between two tones indicates no continuity.  For a +		dual deploy flight, make sure you're getting three beeps or +		flashes before launching!  For apogee-only or motor eject +		flights, do what makes sense. + +		If idle mode is entered, you will hear an audible “di-dit” or +		see two short flashes (“I” for idle), and the flight state +		machine is disengaged, thus no ejection charges will fire. +		ifdef::radio[] +		The altimeters also listen for the radio link when in idle +		mode for requests sent via TeleDongle.  Commands can be issued +		in idle mode over either USB or the radio link +		equivalently. +		ifdef::telemini[TeleMini v1.0 only has the radio link.] +		endif::radio[] +		Idle mode is useful for configuring the altimeter, for +		extracting data from the on-board storage chip after +		flight, and for ground testing pyro charges. + +		In “Idle” and “Pad” modes, once the mode indication +		beeps/flashes and continuity indication has been sent, if +		there is no space available to log the flight in on-board +		memory, the flight computer will emit a warbling tone (much +		slower than the “no continuity tone”) + +		See <<_understanding_beeps>> for a summary of all of +		the audio signals used. + +		Once landed, the flight computer will signal that by emitting +		the “Landed” sound described above, after which it will beep +		out the apogee height (in meters). Each digit is represented +		by a sequence of short “dit” beeps, with a pause between +		digits. A zero digit is represented with one long “dah” +		beep. The flight computer will continue to report landed mode +		and beep out the maximum height until turned off. + +		ifdef::telemetrum,telemega,easymega[] +		One “neat trick” of particular value when TeleMetrum, TeleMega +		or EasyMega are used with +		very large air-frames, is that you can power the board up while the +		rocket is horizontal, such that it comes up in idle mode.  Then you can +		raise the air-frame to launch position, and issue a 'reset' command +		via TeleDongle over the radio link to cause the altimeter to reboot and +		come up in flight mode.  This is much safer than standing on the top +		step of a rickety step-ladder or hanging off the side of a launch +		tower with a screw-driver trying to turn on your avionics before +		installing igniters! +		endif::telemetrum,telemega,easymega[] + +		ifdef::telemini[] +		TeleMini v1.0 is configured solely via the radio link. Of course, that +		means you need to know the TeleMini radio configuration values +		or you won't be able to communicate with it. For situations +		when you don't have the radio configuration values, TeleMini v1.0 +		offers an 'emergency recovery' mode. In this mode, TeleMini is +		configured as follows: + + +		 * Sets the radio frequency to 434.550MHz +		 * Sets the radio calibration back to the factory value. +		 * Sets the callsign to N0CALL +		 * Does not go to 'pad' mode after five seconds. + +		To get into 'emergency recovery' mode, first find the row of +		four small holes opposite the switch wiring. Using a short +		piece of small gauge wire, connect the outer two holes +		together, then power TeleMini up. Once the red LED is lit, +		disconnect the wire and the board should signal that it's in +		'idle' mode after the initial five second startup +		period. +		endif::telemini[] + +	ifdef::gps[] +    	=== GPS + +		TeleMetrum and TeleMega include a complete GPS receiver.  A +		complete explanation of how GPS works is beyond the scope of +		this manual, but the bottom line is that the GPS receiver +		needs to lock onto at least four satellites to obtain a solid +		3 dimensional position fix and know what time it is. + +		The flight computers provide backup power to the GPS chip any time a +		battery is connected.  This allows the receiver to “warm start” on +		the launch rail much faster than if every power-on were a GPS +		“cold start”.  In typical operations, powering up +		on the flight line in idle mode while performing final air-frame +		preparation will be sufficient to allow the GPS receiver to cold +		start and acquire lock.  Then the board can be powered down during +		RSO review and installation on a launch rod or rail.  When the board +		is turned back on, the GPS system should lock very quickly, typically +		long before igniter installation and return to the flight line are +		complete. +	endif::gps[] + +	ifdef::radio[] +    	=== Controlling An Altimeter Over The Radio Link + +		One of the unique features of the Altus Metrum system is the +		ability to create a two way command link between TeleDongle +		and an altimeter using the digital radio transceivers +		built into each device. This allows you to interact with the +		altimeter from afar, as if it were directly connected to the +		computer. + +		Any operation which can be performed with a flight computer can +		either be done with the device directly connected to the +		computer via the USB cable, or through the radio +		link. TeleMini v1.0 doesn't provide a USB connector and so it is +		always communicated with over radio.  Select the appropriate +		TeleDongle device when the list of devices is presented and +		AltosUI will interact with an altimeter over the radio link. + +		One oddity in the current interface is how AltosUI selects the +		frequency for radio communications. Instead of providing +		an interface to specifically configure the frequency, it uses +		whatever frequency was most recently selected for the target +		TeleDongle device in Monitor Flight mode. If you haven't ever +		used that mode with the TeleDongle in question, select the +		Monitor Flight button from the top level UI, and pick the +		appropriate TeleDongle device.  Once the flight monitoring +		window is open, select the desired frequency and then close it +		down again. All radio communications will now use that frequency. + +		 * Save Flight Data—Recover flight data from the +	           rocket without opening it up. + +		 * Configure altimeter apogee delays, main deploy +		   heights and additional pyro event conditions to +		   respond to changing launch conditions. You can also +		   'reboot' the altimeter. Use this to remotely enable +		   the flight computer by turning TeleMetrum or +		   TeleMega on in “idle” mode, then once the air-frame +		   is oriented for launch, you can reboot the +		   altimeter and have it restart in pad mode without +		   having to climb the scary ladder. + +		 * Fire Igniters—Test your deployment charges without snaking +		   wires out through holes in the air-frame. Simply assemble the +		   rocket as if for flight with the apogee and main charges +		   loaded, then remotely command the altimeter to fire the +		   igniters. + +		Operation over the radio link for configuring an +		altimeter, ground testing igniters, and so forth uses +		the same RF frequencies as flight telemetry.  To +		configure the desired TeleDongle frequency, select the +		monitor flight tab, then use the frequency selector +		and close the window before performing other desired +		radio operations. + +		The flight computers only enable radio commanding in +		'idle' mode.  TeleMetrum and TeleMega use the +		accelerometer to detect which orientation they start +		up in, so make sure you have the flight computer lying +		horizontally when you turn it on. Otherwise, it will +		start in 'pad' mode ready for flight, and will not be +		listening for command packets from TeleDongle. + +		TeleMini listens for a command packet for five seconds +		after first being turned on, if it doesn't hear +		anything, it enters 'pad' mode, ready for flight and +		will no longer listen for command packets. The easiest +		way to connect to TeleMini is to initiate the command +		and select the TeleDongle device. At this point, the +		TeleDongle will be attempting to communicate with the +		TeleMini. Now turn TeleMini on, and it should +		immediately start communicating with the TeleDongle +		and the desired operation can be performed. + +		You can monitor the operation of the radio link by watching the +		lights on the devices. The red LED will flash each time a packet +		is transmitted, while the green LED will light up on TeleDongle when +		it is waiting to receive a packet from the altimeter. +	endif::radio[] + +    	=== Ground Testing + +		An important aspect of preparing a rocket using electronic deployment +		for flight is ground testing the recovery system. +		ifdef::radio[] +		Thanks +		to the bi-directional radio link central to the Altus Metrum system, +		this can be accomplished in a TeleMega, TeleMetrum or TeleMini equipped rocket +		with less work than you may be accustomed to with other systems.  It +		can even be fun! +		endif::radio[] + +		Just prep the rocket for flight, then power up the altimeter +		in “idle” +		ifdef::telemetrum,telemega,telemini[] +			mode (placing air-frame horizontal for TeleMetrum or TeleMega, or +			selecting the Configure Altimeter tab for TeleMini). +			This will cause +			the firmware to go into “idle” mode, in which the normal flight +			state machine is disabled and charges will not fire without +			manual command. +		endif::telemetrum,telemega,telemini[] +		ifndef::telemetrum,telemega,telemini[] +			mode. +		endif::telemetrum,telemega,telemini[] +		You can now command the altimeter to fire the apogee +		or main charges from a safe distance using your +		computer and the Fire Igniter tab to complete ejection testing. + +	ifdef::radio[] +    	=== Radio Link + +		TeleMetrum, TeleMini and TeleMega all incorporate an +		RF transceiver, but it's not a full duplex system; +		each end can only be transmitting or receiving at any +		given moment. So we had to decide how to manage the +		link. + +		By design, the altimeter firmware listens for the +		radio link when it's in “idle mode”, which allows us +		to use the radio link to configure the rocket, do +		things like ejection tests, and extract data after a +		flight without having to crack open the air-frame. +		However, when the board is in “flight mode”, the +		altimeter only transmits and doesn't listen at all. +		That's because we want to put ultimate priority on +		event detection and getting telemetry out of the +		rocket through the radio in case the rocket crashes +		and we aren't able to extract data later. + +		We don't generally use a 'normal packet radio' mode +		like APRS because they're just too inefficient.  The +		GFSK modulation we use is FSK with the base-band +		pulses passed through a Gaussian filter before they go +		into the modulator to limit the transmitted bandwidth. +		When combined with forward error correction and +		interleaving, this allows us to have a very robust +		19.2 kilobit data link with only 10-40 milliwatts of +		transmit power, a whip antenna in the rocket, and a +		hand-held Yagi on the ground.  We've had flights to +		above 21k feet AGL with great reception, and +		calculations suggest we should be good to well over +		40k feet AGL with a 5-element yagi on the ground with +		our 10mW units and over 100k feet AGL with the 40mW +		devices.  We hope to fly boards to higher altitudes +		over time, and would of course appreciate customer +		feedback on performance in higher altitude flights! +	endif::radio[] + +	ifdef::gps+radio[] +	:aprsdevices: TeleMetrum v2.0 and TeleMega +	:configure_section: _configure_altimeter +	include::aprs-operation.raw[] +	endif::gps+radio[] + +    	=== Configurable Parameters + +		Configuring an Altus Metrum altimeter for flight is +		very simple.  Even on our baro-only TeleMini and +		EasyMini boards, the use of a Kalman filter means +		there is no need to set a “mach delay”.  All of the +		configurable parameters can be set using AltosUI. Read +		<<_configure_altimeter>> for more information.  | 
