Getting involved in PSAS Avionics
The entire goal of our avionics systems has been to achieve 'open source avionics' for the amateur community. We've approached this VERY slowly, and methodically, and this will hopefully give you a bit of an intro on how we got there. But first, make sure you're not interested in another team:
- If you're interested in the flight computer software or ground systems or networking (in C, Python, Java, Haskell, etc.), see the Software Team.
- If you're interested in RF communications, see the Communications Team.
- If you're interested in data fusion, filtering and navigation algorithms see the Uncertainty Team.
- If you're interested in building airframe stuff, of course go see the .
Let's give you a long background to PSAS avionics, so you can get a feeling for what we're doing and why.
Avionics System 0 (AV0) circa 1998
We started out very small, with a simple 8 bit RISC microcontroller (a Microchip PIC16F76), a single axis accelerometer, a B&W video camera broadcasting on a 400 MHz amateur TV system, and a 300 bps (yes, 300 bps) data downlink on the audio channel of the ATV broadcast. We had basic questions we needed answered: did chips fall off the board at 10g? Did crystal oscillators detune? We had no idea.
The answer was no, and as a proof of concept, LV0 worked beuatifully. So we did what any good engineer would do: we threw it out and started over.
AV1 circa 2000
We increased the complexity of the avionics system for the next generation rocket, but it was essentially the same architecture. We moved to a PIC17C66, a really crude IMU, 2400 bps downlink on the audio channel, a 2m uplink system, and a pyrotechnic recovery system. It was our first major system, and like all first major systems, looking back it was mostly terrible. But for it's time it was pretty good, we still haven't seen anything better for the time.
AV1 circa 2001
The "LV1b" system was a major upgrade to the AV1 system. We moved to a 19.2 kbps 900 MHz telemetry system, a faster and more capable 8 bit microcontroller (PIC17C766) that included raw data capture to SRAM, and our first real home-built IMU. We also added GPS.
This new AV1 was great, but it had some severe problems. The primary lithium battery lasted about 20 minutes, and took hours to swap out. And only one person could program the 17C766 using 8 bit assembly language in a pretty broken Microchip Windows-based IDE. We had an ICE, but software was so so painful it really slowed things down. Also, we suddenly looked at ourselves and wondered, "Can we really do navigation algorithms on an 8 bit micro?". The answer is, of course, mostly no.
AV2 circa 2005
After realizing that we really needed computational horsepower, and with the advent of Linux, we had an inkling that we needed to really expand the system. So we did an actual engineering analysis (or tried to, anyway) and wrote our requirements down in a whitepaper. Note that this whitepaper is horribly, horribly out of date and comes from a time before we moved to a true flight computer running Linux. But it's a good introduction to the project, and to why we've taken the route that we have. See http://psas.pdx.edu/ProjectLV2/lv2 avionics design.pdf
Instead of just implementing the white paper, we rounded up a bunch of CS folks, and had honest-to-gosh design meetings which included ME, CS, and EE folks. We designed a system that we thought would enable us to 1) do distributed development on 2) had a very sane hardware package.
LV2 had an PC104 x86 flight computer running Debian Linux 2.4.14. It talked over the Controller Area Network (CAN) to a serial of nodes, including the LV1b IMU, a COTS GPS board, an avionics power system board which was a smart interface to 4 power switches and a 14.4V 4 AHr battery pack, a pyrotechnic recovery system which included a battery backup and a 2m radio interface, and a WiFi (yes, WiFi!) telemetry system. It required a fairly sophisticated ground system, including an amazing helical ground receive antenna, a Linux server, and another x86/Linux/Wifi launch tower computer. Add in some java telemetry and launch control software, and you're doing alright.
- BlockDiagram of the LV2 Avionics System.
- Here are the block diagram posters to give you a flavor for the current system:
We launched the LV2 system on August 20th, 2005. It was a stunning technological success (first > Mach 1 WiFi link, we think)... but then it hit the ground at 500 mph after it's gunpowder pyrotechnic recovery system failed due to old age and lack of atmospheric thermal conductivity. 4 years of work and one very customized payload were reduced to little tiny grains of silicon and plastic in milliseconds.
AV3 circa 2005 - 2013
Losing 4 years worth of work we pretty depressing, and it took us a year or two do recover. We had lots of intense discussions: rebuilt LV2 exactly as it was? Or refactor? The refactorers won out, and we moved to a !PowerPC flight computer after a getting a grant from IBM, moved to ARMs for the avionics nodes, and crazily decided to try USB as an avionics bus instead of CAN. USB is a little insane for an avionics bus, but it's got advantages in software (or so the software team tells us!) and speed. We ramped up by having a 2006 PSU ECE Capstone project design our new "USB node": see the 2006 Capstone Project Final Report (CapstoneLV2bProjectReport).
In 2009 we did our first flight since 2005, and from 2009 - 2010 we worked on doing roll control in a microcontroller while we worked on rebuilding our avionics system. As we were rebuilding the system, we realized that what we had designed wasn't working well. The PowerPC architecture was great, but cross compilation tools are difficult, so we switched to x86. USB turned out to be fast, but the latencies were pretty bad and to make them better meant deep changes in the Linux USB drivers. Casting around for alternatives, we noticed it was 2013 and that newish microcontrollers had Ethernet peripherals on them. Ethernet was fast, widely used, low latency, and best of all, people really care about Ethernet latency, so we started switching over.
Finally, in the summer of 2013 we launch our new Atom-based flight computer with both USB and Ethernet nodes. It didn't go quite as planned -- the flight computer rebooted 4 ms into the motor boost phase -- but the telemetry and video systems worked, we got data from our ethernet nodes, and we got some great 360 degree video.
AV4 + CS0 circa 2013
Now that we've jumped on the Ethernet bandwagon, we're moving all of our critical system components over to it. Some parts will probably always be USB -- WiFi adapters, for example. 2013-2014 will see us moving to Ethernet, making new "node" boards, implementing new open source GPS receivers, and generally cleaning up and polishing the system.
2013-2014 will also see us shrinking the AV4 system down to a standard "2U" CubeSat form factor, which is a 20 x 10 x 10 cm. Then we'll reduce our battery pack and flight computer down to enable us to fit in a "1U' form factor, which is a 10 x 10 x 10 cm cube. Then our AV4 system because "CS0" - our first cubesat system. If everything goes as planned, we even hope to build a few of these, and attempt to get funding to throw one of these out of the ISS one day.
There's ALWAYS stuff to do. Really. And it can be as big or as little of a project as you'd like. See this list of possible projects on the main avionics page.
Most importantly, come to a meeting! It's absolutely the best way of getting involved. See our Schedule page for the latest schedule.
Second of all, if you're an active volunteer, you should join our mailing list. Note that we ask that only active volunteers join the mailing list... we ask that 'lurkers' use the archives instead. Thanks.