MANUAL (PDF): https://drive.google.com/open?id=1h5cOi7Hek00TzRXW4BVA9tjYIdgAQyA7
Project firmware repository: https://bitbucket.org/i2barano/opensky_fw
Project hardware repository: https://bitbucket.org/i2barano/opensky_hw
Introduction
I began my skydiving adventures in Summer 2015. After buying a mechanical Altimaster altimeter as my first for more than $200, was slightly unimpressed with its' size and accuracy. After looking at available digital altimeters, decided that to roll my own, with features and cost that I wanted. After 2 years of work, countless prototypes (most of them worked, some didn't, one failed in-flight, whoops), I finalized the first airworthy version:
Assembled revision B altimeter
I've been using the above for about a year now (~100 jumps) in various conditions (incl. rain) with no problems. Now feeling confident the design generally works, decided to do a hardware update with some improvements, which is what revision C became. Here's a comparison between the above assembled revB and new revC:
Comparison of previous (green, revB) and new (black, revC) PCB versions
The most obvious difference is the battery. That, coupled with addition of an external oscillator which enables the MCU to sleep when nothing is being done, more than doubled the battery life, which is now ~300hrs. Some other differences include:
Second LED for charge indication.
Ditching of flat-flex debug connector for a Tag-Connect connector-less footprint for programming.
Different, older MCU (PIC24FJ32GB102 to PIC24FJ32GA002) with less silicon bugs.
Addition of external crystal oscillator for task timing which runs regardless of MCU state (sleep or run, etc). That oscillator also enables auto-shutoff after X hours, which was not possible due to crap 30% tolerance on internal LPRC oscillator.
Less used parts (2 FETs vs 4, no TVS on switches, software de-bounce vs hardware).
Most importantly: black solder mask.
RevC assembled with the wrist mount, the black solder mask really makes it:
Manufacturing/assembly
This is a quick rundown of how the PCBs are assembled, and what materials are used.
Step 1: start with bare PCB cleaned with IPA:
Bare 1.2mm PCB from SeedStudio Fusion
For some reason the PCBs came from the manufacturer a bit scratched up on the solder mask, which shows really well since it's black, but apart from that they seem to be high quality with no issues. Another issue I found was that my room was not, in fact, a cleanroom, and quite a few dust particles found their way on the boards, but ultimately that was not an issue either, this board is by design very low density.
Step 2: application of Kester EP256 paste with a 0.12mm stainless stencil:
Applied solder paste
Kester EP256 is a leaded easy-to-use solder paste that I find gives consistent, reliable results. Note the
funny mistake of including the Tag-Connect programming pads in the paste layer, I have to solder-wick it off after reflow until the stencil is fixed.
Step 3: Putting components on:
Everything placed on board
Currently everything is placed by hand with tweezers which is not very efficient, the next step would be to make/use a vacuum system for manual placement. Notice some components are quite crooked, but surface tension of solder should align everything nicely.
Step 4: Reflow. Currently I use a cheap hot-air reflow gun. Although not very controlled, the temperature margin between reflow and component damage is very high.
Reflowed components
The only issue I had during reflow was C17 tombstoning, which needs to be looked at in the next revision. The next step for this would be to acquire a reflow oven with controller for better temprerature profile consistency. Overall, the results were always very good due to surface tension puling the components in place.
Step 5: Sticking the battery on and conformal coating:
Fully assembled and coated board
For sticking the battery on, 3M 300LS tape is used. It has a very high bond strength and I find that it is not possible to take the battery out without damaging it. It may sound like a not very significant detail, but if the battery un-sticks and starts flapping about in the case, fatigue will eventually break the wires.
For the conformal coating MG Chem 422M Silicone is used. It doesn't put stress on the components (important for the altitude sensor), and is easy to apply. I found the coating, coupled with the fact that there are no low-impedance traces on the board at all, makes it very resistant to moisture.
Step 6: soldering on LCD and navigation switch:
Fully assembled and programmed unit
Note the foam tape on the bottom-front of the LCD, it covers the silicon LCD controller chip on the glass.
Funny story, the only serious malfunction that I experienced was on an earlier revision A prototype. During altitude climb, the contrast suddenly shifted so much that the whole screen became black, it was impossible to see the altitude on display. I decided to jump anyways, since the coach was informed that I didn't have a working altimeter, and would cue the break-off.
Here's a scren-grab of the failed altimeter, with the LCD all black:
epicfail.jpg
After much head-scratching and trying to reproduce the issue, it was possible to reproduce the issue at certain temperatures by having the sun shine at the altimeter at a high altitude at certain angles. From that it's easy to conclude that the silicon die is photo-sensitive, and a few photons knocked out the contrast adjustment circuit/compensation in the chip. It was also possible for the LCD to slightly change contrast even in lower-intensity sunlight on the ground. After adding some black foam strip (mcmaster P/N: 93375K11) on the area, all issues with the contrast ceased to exist.
TL/DR: The piece of black foam is very important and not for aesthetic reasons.
Step 7: mechanical assembly:
Fully assembled (minus hand-strap)
The case is made out of a few laser-cut sheets of acrylic PETG or delrin with the following stackup:
1.50mm Acrylic PETG window (acrylic would start cracking almost immediately, polycarbonate yield was too low)
3.18mm Delrin spacer between acrylic and PCB
1.20mm FR4 PCB
4.76mm Delrin Spacer between PCB and bottom plate
1.59mm Delrin bottom plate that holds the hand-strap tape and has holes for USB charge port and reset button.
Everything is held together by flush press-fit 4-40 nuts (mcmaster P/N: 94674A490) and 4-40 bolts (mcmaster P/N: 91249A112)
Here's a size comparison to a mechanical altimeter:
Front
Side
A more fair comparison would be against other digital altimeters, but I don't own any currently. Basically it's about the same size as any other commercial digital alti.
June 29 2017 update: after jumping at Hollister, realized that DZ altitude offset is actually useful, it is now implemented in FW :)
Hardware design
Very simple: a pic24fj MCU grabs data from the MPL3115A2 sensor, and spits it out on the LCD via SPI bus. A lot of time was spent reading datasheets and ensuring that everything operates within specified operating conditions.