16F88 Rocket timer

This is a compact, programmable 4-channel rocket timer, based on the Microchip PIC 16F88 microcontroller. It features accelerometer or reed switch lift-off detection and 4 pyro channels that can be independently timed, disabled or grouped together.


The 16F88 Rocket timer is a compact & lightweight rocket timer for firing pyrotechnic charges. It is controlled by a Finite State Machine program, implemented in a PIC microcontroller.

The timer has 4 pyrotechnic channels, which allow the independent or grouped firing of 4 pyrotechnic charges at user-programmed intervals.

Lift-off of the rocket is detected using either an accelerometer or a G-switch. A reed switch for magnetic triggering is also installed. This allows easy ground testing of deployment charges as well as magnetically triggering of the timer upon lift-off.

To aid rocket recovery after flight, the timer has a beacon function which continuously sounds a loud buzzer after firing the last pyro channel, so that the rocket can be tracked during decent and located after touchdown.

Functional overview


The timer is controlled by a Microchip PIC 16F88 microcontroller. This is a small and cheap microcontroller, which lends the timer its functional flexibility. The microcontroller comes in an SMD SOIC18 package.

The microcontroller continuously samples events such as a sudden increase in acceleration, triggering of the G-switch or reed switch, or key presses. A built-in timekeeping routine, which is based on the 8MHz internal oscillator, is used to fire the pyro charges at the appropriate times.

Input buttons

There are 3 input buttons on the board. These are micro switches which are inherently resilient to false key presses under heavy acceleration. When lift-off has been detected, the switches are disabled by the microcontroller.

The SELECT button selects the active slot. The SET button sets the delay for the active slot. The GROUP button groups one or several pyro channels in the active slot. This is further explained elsewhere in this text.

LED indicators

There are four LED indicators on the board, one for each pyro channel. These indicators show the grouping of the pyro channels.


The timer detects the rockets’ lift-off by continuously reading the accelerometer data. This accelerometer is a Freescale MMA2202 micro-machined accelerometer. Inside the accelerometer, a small mass is suspended between springs. Electrodes measure the capacitance between electrode and the mass. When subjected to acceleration, the mass is held back by inertia and the distance between electrode and mass increases or decreases, thus changing the measured capacitance. The accelerometer further conditions and amplifies this capacitance and transforms it into a voltage proportional to the acceleration.

The accelerometer is not available in version 1 and 2 of the board.


The G-switch is a simple mechanical switch, with a small lead weight glued to one of the contacts. Upon lift-off the G-switch will be subjected to sudden acceleration, and the inertial force of the lead weight causes the contacts to close. This is detected by the microcontroller as a lift-off condition.

The G-switch is not available in version 3 of the board.

Reed switch

A reed switch for magnetic triggering is also installed. This allows easy ground testing of deployment charges as well as magnetically triggering of the timer upon lift-off.

The reed switch is checked when the timer is started up. When the reed switch is closed (magnet present), the timer will be configured to detect the opening of the switch as a lift-off condition. When the reeds switch is open at timer start-up, closing the reed switch will cause a lift-off condition to be detected.

For ground testing the deployment system of the rocket, the timer is installed in the rocket and the ejection charges attached. The timer is then started up without a magnet present, and the rocket assembled. For triggering the lift-off condition, a magnet is held against the body tube, close to the location of the timer. The magnet will trigger the reed switch and this cause a lift-off condition to be detected.

Similarly, a magnet may be used for detecting lift-off when launching the rocket. A magnet, which is connected to the launch pad with a piece of string, is loosely taped to the body tube close to the rocket timer. The timer is then started and the rocket assembled. Upon ignition of the motor and subsequent lift-off, the magnet will be pulled away from the accelerating rocket causing the reed switch to open and a lift-off condition to be detected.


The buzzer is a small but loud piezzo buzzer with an integrated oscillator. It is used to audibly signal the set delay for a slot. After the last slot has fired, the buzzer continuously sounds so it can be used as a tracking and recovery beacon.

Pyro charges

The timer can fire up to 4 pyrotechnic charges. These charges can be commercial pyrotechnic recovery charges (e.g. Daveyfire) or homemade charges such as Christmas bulb charges.

Before using the timer in flight with a new type of pyrotechnic charges, always perform a ground test. Pyro charges that exceed the current rating of the timer or battery can cause a timer reset, jeopardizing successful recovery (see maximum current ratings under the Specifications chapter)

On/Off switch

The on/off switch allows switching the timer on or off. The timer has a start-up time of less than 1 second. The on/off switch is oriented such that the force of acceleration working on the switch will switch the timer on rather than off.

Power supply

The power supply of the timer is composed of an LF50 integrated regulator. It is powered by an external battery with a voltage between 6V and 16V.


All settings of the timer (delays & assigned pyro channels) are automatically saved to the microcontroller’s EEPROM memory when the SELECT or SET buttons are pressed, and when a lift-off condition is detected. Since the EEPROM memory is non-volatile, switching the timer off or removing the battery will not affect the saved settings.

Every time the timer is switched on it reads and restores the previously saved configuration.

Serial connection

The serial connection is not available in version 3 of the board.

Installing the timer in a rocket


The timer needs to be installed in the vertical orientation. For the correct functioning of the G-switch or accelerometer, it is important to mount the timer with the correct side up. For this purpose, text has been etched in the copper of both the bottom and top layer of the PCB (“This side up” and “UP”).

When correctly installed, the pin header will be oriented towards the nose of the rocket, and the buzzer side towards the bottom of the rocket.


For mounting, the timer has two holes on the bottom side. These holes have been pre-drilled with pilot holes, which can be further drilled out to accept screws of suitable size. The maximum size of screws allowed is M3.

The other side of the timer is fastened using the connector. The connector is glued to a square of PCB material which has been drilled with two screw holes, matching those on the timer. The connector is then permanently screwed down into the rockets’ avionics bay.

The timer can be removed by unscrewing the two screws in the timer. The connector and attached wiring harness stays permanently mounted in the rocket.


The recommended connector is a 10 pin female header (0.1” pitch) connector with fly leads. 8 of the fly leads are soldered to a provisioning for connecting pyro charges, 2 of the fly leads are soldered to a (polarized) battery connector.

Pyro output connection

There are 4 independent pyro output channels. Each of these channels has two pins in the connector. The channel number is etched on the top side of the PCB, directly under the respective pins under the pin header.

To connect a pyro charge, hook up both wires of the charge to the two pins in the pin header. Make sure the connection is solid so it will not come loose upon rocket acceleration. The pyro charge is not polarized, which means that any of the two wires can be hooked up to any of the two pins in the pin header.

Battery connection

The battery connection has two pins, one for the positive battery lead and one for the negative battery lead. It is recommended that these connections are soldered to a (polarized) battery connector so that the battery can easily be disconnected and replaced.

WARNING: do not reverse the positive and negative leads or the timer can be permanently damaged!

Operating the timer

Switching it on

To switch the timer on, put the on/off switch in the “on”-position (towards the buzzer). The timer will confirm correct operation with 5 short beeps.

Timer philosophy

To keep the timer as compact and lightweight as possible it has no display unit. The timer communicates its settings by LED lights and audible beeps. To be able to configure the timer it is important to understand its working philosophy.

The configuration of the timer works using “slots”. Each slot is assigned a particular delay, and pyro channels are grouped into each slot.

Upon lift-off detection the timer will compare each slots’ configured delay to the time since lift-off, and when the two match it will fire the pyro channels that were grouped into that slot.


The timer has 4 “slots”. A slot can be seen as a placeholder to which pyro channels can be assigned (“grouped”), and to which a delay can be assigned.

The SELECT button cycles through all 4 slots, one at a time. There is no visual or audible indication of which slot is currently selected, nor is the slot number important by itself. The slot is simply a placeholder of the more important properties, namely the delay and the pyro channels.


The delay is the number of seconds after lift-off the timer will wait until firing pyro channels.

The delay can be set using the SET button.


A channel directly corresponds to a pyro output, as can be found on the connector. The selected channels are indicated by the 4 LED lights.


“Grouping” can be seen as assigning one or multiple channels in a slot. The GROUP button cycles through all channels in a binary fashion.

Selecting a slot

When switching the timer on, by default the first slot is selected. The LEDs show the active channel grouping for this slot.

To select the next slot, push the SELECT button once. The next slot will be selected, and the LEDs will show the active channel grouping for this slot. After two seconds, the buzzer will beep out the configured delay for this slot (in Morse code).

When the last slot is selected and the SELECT button is pressed again, the timer will cycle again to the first slot.

Setting a delay

The user can set a delay for each slot, independent of the other slots or the channels grouped into the slot.

When the SET button is pressed, the current delay for the active slot is increased by one, and after two seconds the current delay is beeped out by the buzzer in Morse code. If the delay is set to 30 seconds and the SET button is pressed, the delay is reset to 0.

The delay settings for the active slot are automatically saved in each time a new slot is selected.

Grouping channels

The user can assign one or multiple pyro channels to each slot. Assigning these channels to the slot will cause the pyro charges connected to these channels to fire after the delay after lift-off that was assigned to the slot.

The GROUP button cycles through all 4 pyro channels, assigning none, one or multiple channels into the slot. The cycling is in a binary fashion, which means that the channels will be assigned as follows:

.	 .	 .	 .
1	 .	 .	 .
.	 1	 .	 .
1	 1	 .	 .
.	 .	 1	 .
1	 .	 1	 .
1	 1	 1	 .
.	 .	 .	 1
1	 .	 .	 1
1	 1	 .	 1
.	 1	 1	 1
1	 .	 1	 1
1	 1	 1	 1

It is also possible that no channel is assigned to a slot, obviously if this is the case then after the set delay no pyro channels will fire.

When a channel is grouped into a slot while it previously already had been assigned to another slot, it will automatically be removed from the slot it had been previously assigned to.

Saving the configuration

All settings of the timer (delays & grouping) is automatically saved to the microcontrollers’ EEPROM memory when the SELECT or SET button is pressed, and when a lift-off condition is detected.

Lift-off detection

lift-off is detected after 100ms of consecutive positive acceleration, or when the G-switch has been triggered. When lift-off has been detected, the buzzer will continuously sound.

Accidental triggering

When the timer is accidentally triggered and lift-off has been detected (e.g. by dropping the rocket), the timer can be disabled at any time by switching off the timer. The current configuration is automatically saved to memory and will be restored when the timer is switched back on.

Connector pin out

Pin	Connection
1	power supply positive
2	power supply ground
3	pyro 4 negative pin
4	pyro 4 positive pin
5	pyro 3 negative pin
6	pyro 3 positive pin
7	pyro 2 negative pin
8	pyro 2 positive pin
9	pyro 1 negative pin
10	pyro 1 positive pin

Beeping delay in Morse code

To indicate the delay configured for a slot, the timer beeps it out in Morse code. Below is a summary of Morse code for numerals.

If the delay set is smaller than 10, the timer only beeps out one digit. If it is 10 or larger, it beeps out two digits, one for the tens and one for the ones.

0	----
1	.----
2	..---
3	...--
4	....-
5	.....
6	-....
7	--...
8	---..
9	----.




  • Minimum delay: 1s
  • Maximum delay: 30s
  • Smallest increment: 1s


  • Width:
  • Length:
  • Height:
  • Weight:

Power supply

  • Min input voltage: 5,5V
  • Max input voltage: 16V


  • Max detectable acceleration: 50G
  • Max acceleration before damage: 1500G powered, 2000G unpowered

Pyrotechnic charges

  • Max amp rating: 17A MOSFET switching limit, further limited by the battery
  • Switching duration: 0,5s
  • Pyro firing voltage: same as battery voltage
  • Switching resistance: 0,038 Ohm