Seraphim is our sensor board for the quadcopter, it includes accelerometer, gyroscope, magnetometer, barometer, GPS and micro-SD card slot. With the exception of the GPS unit, all of these components are a complete pain in the backside to solder properly, and there are some consequences of not being careful with constructing prototypes, we'll explain all below
An update from the guys at Universal Air! Normally, the less we post, the busier we are making exciting new electronics and flying things, this time it's been no exception. As always, you can keep up with us by checking our website:
We have decided to present some helpful hints and tips that we have learnt along the way as a mini series of blog posts. We're calling this series "Engineering Insights: learning the hard way from concept to finished product"
I'll start them all with "Engineering Insights - Lesson...." so keep your eyes peeled for handy advice and some engineering explainations!
This first lesson is all about mistaking hardware faults in temperamental prototypes for coding errors, and the hair tearing that can result!
Lesson 1: Problems with Prototypes:
Starting out designing making your own PCBs isn't for the faint of heart. When you don't have an existing design to work from, there are a gazillion things to get right in one go - the circuit itself, the component's footprint, component values, various requirements for track layout, and then there's the assembly quality, and then the software aspect. Through our epic journey bringing the Seraphim board from concept to product, we've encountered problems with each and every one of those above points, and torn out a lot of our hair as a result.
One of the most frequent problems with that we encounter is poor assembly quality of our hand-built prototype boards. But we didn't know this at first; for a long time we though our code just plain didn't work, and we wasted a lot of time debugging, optimising, and rewriting bits of code, only to find out that the thing worked perfectly fine when one corner of the chip was pressed down! It turns out the number one problem with the software is actually the hardware.
We used to solder chips onto our prototype boards using either a gas hob and frying pan, or a butane hot-air pencil (QFN packages can't be soldered properly using a soldering iron, trust us, we've tried). While we've become very proficient at assembling PCBs (the top right photo is of two Seraphim prototypes, various components attached to each) in the kitchen, the chance of a single unmade solder connection is simply not worth the grief. We recommend to anybody making a circuit from scratch to either use components that can actually be soldered by a human, or invest in some reflow-soldering equipment.
We've made our own reflow soldering system out of a cheap toaster oven, controlled by Forebrain of course (making it possibly the first USB-controlled 32-bit toaster oven). We will cry if this doesn't solve our prototype assembly quality problems.
Our production-quality Seraphim units however don't have any of these problems, they've been manufactured in a factory using industrial PCB assembly machinery. And once we got our hands on the units, we managed to solve ALL of our existing problems in mere minutes (these were the problems that have been plaguing us for the last few months).
Here's an example to show you how easily problems can occur and how weird they can be:
Our Seraphim prototypes are sensor boards,they include a variety of difficult to solder chips such as accelerometer, gyroscope, magnetometer and barometer, none of which have leads to solder (the GPS thankfully wasn't too bad). During the testing of one of the first Seraphim prototypes, we hooked up the Seraphim and Forebrain to output the 3-axis gyro data over USB HID (Forebrain has built-in USB HID, so it's actually eaiser to just use that and plug the USB cable in rather than faff around with plugging a serial cable in). We found the ITG3200 gyro chip behaved extremely oddly, it would only output values when the board was rotated in one direction.
This was a strange problem, but it was consistant - rotate the board in any direction in the other two axes and nothing happens, but rotate the board in a certain way, and the values output fine! At first we though this must be something to do with the chip itself, otherwise how could there be a problem that persists so specifically to that one axis? Then we tried debugging the I2C code, since it was the I2C which was timing out, perhaps it was some strange quirk to the way I2C is implemented on either the gyro or the microcontroller. But no, it was neither of these things, it turned out that things started working again if we pressed the gyro down with a thumb: these very strange yet very consistent symptoms were caused by a single loose connection, which would only connect itself when the board was rotated in a certain direction.
Everything was sorted after repairing the loose connection.
Here is a retail Seraphim, sexy in its black livery, alongside an equally attractive Forebrain!
The same Seraphim busy at work in the heart/ head of our newly released ROFL quadcopter!