First Prototype
It took a bit of coaxing to get the unit up and running... first attempt at display looked something like this...
Hm. Not great. It turned out that a couple of ground traces hadn't made their destination on the PCB due to a borderline failed ground plane fill. A couple of additional wires sorted that out.
Ah... much better...
Now getting somewhere... nice to see some text from a real board. But those faults need to be fixed before the production run...
Designing Revision 0.2
The first revision of the PCB had no user buttons at all (only a reset),
so the only means of interacting with the unit was via. BTLE... given
not everyone attending the wedding could be assured to have a BTLE
capable Android/Apple device, it seemed like a good idea to add buttons
so some functionality was possible. After some research, I found some
ultra-miniature tactile buttons at Mouser and was even able to cram two
in. In hindsight (as with the engagement ring - you'd think I should
have learnt my lesson) more isn't necessarily better... the buttons are
quite hard to press and have a very short travel. The footprint was
also quite marginal so the soldering was a bit hit and miss. There was a
reason to try and cram on two buttons... you need at least two to have
any adjust/set functionality without getting into short/long press
territory... a particularly bad idea with fiddly buttons!
Another
slight mechanical problem with the original revision was that the micro
USB connector was slightly too high up and would foul on the Bluetooth
module.
With a bit of rejigging I was able to move
the micro USB connector it lower down and also move more components to
the front of the board... this is good as only the top side was reflowed
- the bottom side is all soldered by hand!
|
v0.2 Schematic |
If you look closely you may see something else that was added...
I eliminated a few passives to make the layout slightly simpler and make it less tedious to build... this is the back panel - new buttons aren't visible here as they are on the front of the PCB...
|
Back PCB layout |
The new
revision didn't introduce any new design problems, but the footprint of
some components still was an issue... particularly the 0402 capacitors.
Many
experienced PCB designers (far more experienced than I) will tell you
this, but it bears repeating as I haven't eliminated making the same
mistake... *always* check your footprints. While I didn't make any
howlers in this regard on this particular occasion, I had relied on my
PCB package (Target 3001) to provide some of them. Most are fine, but
even these standard profiles have a variety of tolerances, ranging from
"tight" to "loose"... the 0402 profile was very tight... this meant the
footprint was almost identical in size to the component pads
themselves. While this isn't a fundamental problem when performing
reflow when your process is optimised and all factors are understood,
when you are using an unknown solder paste, it becomes more of a
problem. When the flux is inadequately aggressive, the components
dirty, or other stuff is just "not right", the component will not adhere
to the paste and as a result will not be soldered correctly. These
parts might look okay on a first inspection, but as the footprint is so
tight, you cannot look for solder fillets as proof.
What
I found was that some 0402 caps would simply fall off the PCB when
introduced to the slightest shock... or some PCBs would appear to
function... you'd put them down, test them again, and then they wouldn't
work any more... very frustrating! Pretty much all the problems I had
with board failures is down to these 0402 caps on this footprint that is
a bit too small. As there are so many, it is quite time consuming to
fix!
Building 0.2
This time I had a proper template to hold the PCBs in place...
And back to the pasting...
And the component adding...
After reflow of the first v0.2 set...
It took a lot of troubleshooting, but eventually one board was kicked into life... even, with the Bluetooth module as well...
As it got closer to the wedding day, it became
apparent that doing one for every guest was not going to be feasible...
not because there weren't enough components and PCBs - there are plenty,
but the problem is troubleshooting faulty boards.
The production
boards were from this point onwards built up in stages to help with this. First stage was
connectors and capacitors. This proves power would get to the MCU and
there is no misalignment (which could potentially cause the MCU to
fail).
Next, the CPU was added. The reason why the CPU
was not reflowed is because with the initial prototypes, a lot of
solder bridges were encountered... it was actually more time consuming
to sort this out than it was to just drag solder the QFP in the first
place, so that was the strategy employed from then on. Also, it was
suspected that reflow might cause some MCU failures due to the package
epoxy being susceptible to moisture. This problem is not as significant
as it would otherwise be due to the lower melting point of the bismuth
based solder paste, but it still could possibly be enough to make the
package crack due to the water vapour escaping.
The
normal solution is to bake the parts for 24 hours at a medium
temperature prior to reflow. Unfortunately I did not have 24 hours
spare! In hindsight, I should have ordered a small number of components
for prototyping, and then placed a second order for the production run,
thereby avoiding opening the package of MCUs and exposing them to
humidity
When drag soldering, while there isn't the
same even temperature gradient that reflow will cause, the heat is only
being applied to the pins, which act as a form of heatsink. The drag
soldering can be accomplished on each side in a few seconds, so is very
quick and exposes the parts to minimal stress, particularly at the low
temperatures of the bismuth paste. I found I typically soldered the
parts at around 200-220C... if I was doing normal lead-free work, the
iron would normally be set between 320-350C! I hate this for PCB work
as it is plenty hot enough to break down the adhesive between the copper
and FR substrate, which causes the traces to lift. While I've had many
problems with this before (particularly with 1oz/25um copper boards),
operating at the lower temperature meant not one trace on all 42 PCBs
ever lifted.
I should briefly talk about the
disadvantages of bismuth solder... it does have a faster rate of
expansion/contraction than regular lead free (can be particularly a
problem with smaller SMDs, putting them under more stress) and also can
have issues with mechanical fatigue. The fatigue problem as I
understand it can be addressed through the addition of silver to the
bismuth paste compound, but this paste is considerably more expensive...
the BOM for the favours was already fairly high, so it seemed sensible
to work with the chinese-sourced paste if it worked.
While
the flux used was not specified, I ended up using a lot of Roisin-based
flux from Chip Quik to retouch the boards. This flux is slighty tacky
so is quite good for rework, if a bit messy. It is sold as a "no clean"
flux but cosmetically it doesn't look great. It can be effectively
removed with some isopropyl alcohol. I ended up dipping all the boards
in IPA to remove residue - as there were no "wet" components on the
boards (like electrolytic capacitors) this was considered safe to do.
So...
the second stage was with the MCU on... the vast majority of boards
showed life here... as I'd stuck with the Leopard Gecko, it has both USB
capability and an on-board 3.3V regulator. While it was already an
obvious choice to have a MicroUSB on board as they are such a ubiquitous
connector, having the USB capability meant the device could be flashed
over USB using the provided bootloader. This is really handy as it
proves most of the MCU is working without any need to write a full self
test. If I had 3.3V out from the regulator, I would then connect the
output of that to the VMCU... it can provide 50mA which is enough for
the whole board.
With the CPU working, the next stage
was adding the EPD (electrophoretic display)... this is the trickiest
stage of all thanks to the troublesome 0402 capacitors. The failure
rate of boards at this stage was very high, and was a big contributor to
not being able to give everyone a board... as it turns out, that
probably was better for further stages, but it was a source of great
annoyance at the time!
The ZIF connector for the EPD was a little
fiddly and could lose its extended tabs after too many insertions... I
found that sliding a fingernail along the length of it was one of the
safest ways of removing the flat flex of the EPD.
Assuming that the EPD worked, the next stage was the Bluetooth.
As had been hoped, the BTLE modules were trouble
free, which was well worth the extra cost given the problems I had with the EPD caps!
On the day before the wedding, I had some great help from Anna and her friend Kate to complete the assembly of the units, which was mainly adding the battery holder, and putting in batteries.
Before the wedding day (and I mean, literally just before) I had written a basic test to prove the EPD and BT, and packed up all the boards before we got a taxi to the hotel... the software didn't really exist yet, though!