Project Updates

A few small updates on the state of various projects..

NTP Server: Version 1.5 board looks mostly final now. The 3.3V switchmode regulator design has been checked on a breadboard and seems to run 1.4 just fine, so we’ll be going with that on the 1.5 board. This will reduce the heat significantly, as the reverse-polarity diode (which itself loses about half a watt) is being replaced with a P-channel MOSFET and the switchmode supply loses far less heat compared to the linear regulators (almost 1.6W are sourced from them alone). Software side I’ve removed all the (hugely problematic) single precision floating point code and use the time reported in integer milliseconds instead. Much nicer!

AVR Programmer: First build has been completed, and it largely works with the LUFA code compiled and uploaded into it. Various issues have come up, such as the bootloader switch not working quite as expected (The bootloader will only enter DFU mode if the switch is closed and we’re coming out of external reset which isn’t just a power-on-reset. Ick.) External flashing of the MCU doesn’t work right (unsure why) and it seems to hold !RESET low on targets. There is a 1.1 which is in progress.

New Breadboard PSU: Following on from the tests on the new switchmode supply for the NTP server, I’ve sketched out a new breadboard PSU which uses the same design. This would be an alternative to the linear one I already make and sell. At the moment it’s a single output design, I’m thinking about ways to make it dual-output or at least easily switchable between 5V and 3.3V.

XMEGA Arduino: Most of this design is completed. I need to just do a build to see how it plays out. The new XMEGA C3 line looked interesting but imposes some annoying routing problems. While using the C3 would provide a USB XMEGA which isn’t encumbered by crypto modules (and, therefore, export regs) and the C3 has USB pins where they are on the AxU chips, it has the same selection of peripherals as the D3 and USB is camped on top of one of the SPI ports. Which makes routing hard. May stick to the D3+MEGA16U2 bridge approach for now.

 

Posted in Projects | Tagged , , , , | Leave a comment

Hakko FX-888 Soldering Station

I finally decided that the ageing cheap soldering iron I bought many years ago was probably not the best tool around for the job. My requirements haven’t really gotten that much more complex, but I had noticed while helping people out on their first soldering experience the iron I have is heavy and slow.

But could a soldering iron that costs about ten times as much as a cheapie really be that much better? It turns out, absolutely it is.

I’m not going to do a full review, but here’s a few thoughts on the Hakko FX-888 I ended up buying..

  • The iron itself is very light and the cable is flexible. This makes it much easier to handle as a tool and position it without fighting both the mass of the iron itself and it being dragged out of place by a heavy cable.
  • The power/control base feels solid and well built. The teardowns I’ve seen floating around the net suggest the internal build quality is pretty good, and the base won’t move easily at all (which again helps with the whole cable thing).
  • It’s really fast. The ceramic heater in the iron seems to hit the dialed temperature (since this is a temp controlled iron) in around 10 or 15 seconds, way quicker than a cheapie iron. I’m far too used to having to plug in the old iron several minutes before I can do anything with it.

I really wasn’t that sure a soldering iron many times more expensive than my cheapie would make such a difference, but it really has. I find it much easier to clean up solder bridges on 0.65mm pitch TSSOP parts with the new iron than I’ve ever had luck with using the old one.

Posted in Tools | Leave a comment

LCA and yet more new projects

A few weeks ago I attended linux.conf.au 2012 in Ballarat, Australia. I’ve attended it for many years now (every year since 2006!) and the conference has always been a great place to see what other people are doing with open source, discover new things I want to play with when I get back, and generally feel it’s okay to be a huge open source nerd.

This year was also the first time I’d presented at the conference, although just in one of the miniconfs. The Arduino miniconf is usually quite popular as the first half of the day is spent assembling a project – this year a full Arduino clone with a bunch of extra peripherals - and then more conventional presentations on things related.

I’ve embedded my talk below, you can probably guess the subject given how often I’ve posted about it. (The clip is a bit of a wonky encode, the AV team didn’t quite trim it properly so it doesn’t start until 57m into the video. It’s not really an hour an a half long!)

In other news, I’ve started to embark on designing an Arduino clone based off the XMEGA MCU line, probably a D3 to begin with as it’s what I’m most familar with. The rough bought layout has been done, although it’s missing switching power sources between the DC jack and USB. It’s also deliberately not using the USB capabilities of some of the XMEGAs since there’s a lack of good code around to support it and it complicates the board layout a fair bit.

The rest of the projects are slowly making their way towards further progress!

Posted in Presentations, Projects | Leave a comment

Heat

All electronics exists to convert electricity into (mostly) heat. It just happens to do something useful along the way. The progression on the design so far has been to consider digital issues first (make the circuit work at all), then mechanical (fit to the case), and now is down to thermal – what to do with the heat.

Now that I’ve started to run the prototypes in the target case I have some idea of the temp of the board, components, and how the case feels. And it’s warmer than I want.

This is somewhat of an issue since the stability of the clock is related to the temperature. If a crystal has a stability of, say, 20ppm, it is always stated with a temperature range at which that holds true. For (most) cheap crystals that’s 25 degrees. As it gets colder or warmer it gets worse.

During the design some of this was taken into consideration. Firstly, since we are aligning ourselves to GPS sources, the stability is less critical: we have a stable external reference less influenced by our local temperature. It does mean we’re limiting how long we can run without GPS sources (it’s currently in the “minutes” range, which is not far off what a $4k device does and this costs nothing like that). This is currently implemented in a coarse-grain way, we just adjust our internal clock being fed by the DS3234 output.

Secondly, the decision to use the DS3234 RTC instead of a watch crystal was driven by the fact it’s a Temperature Compensated Crystal Oscillator, that is it has a temp sensor and can tune the crystal inside it to compensate for the local temperature. Over the range 0 to 40 degrees it claims 2ppm out of the box, and 3.5ppm between -40 and +85. So even with a lot of heat it’s still significantly more stable than a cheap watch crystal.

There are some things I haven’t implemented yet which I’ll now need to consider.

The DS3234 exposes it’s tuning interface, and the datasheet mentions that with an external trusted reference (oh hai GPS) you can feed it extra offset information to further compensate for both aging and to obtain finer precision (you get about +/- 0.1ppm of control). I’ll need to add an extra step after GPS lock to tune the DS3234 against the GPS pulses, and retune it from time to time.

Once the case is closed up properly (it’s not fully closed right now), it may need some holes cut in specific places to improve natural convection. Likely places will be right under the (not very efficient, therefore a source of a lot of heat) LDO regulator. It also will likely need holes in both endplates to ensure any air that is around can get into the case.

We’re also running the main MCU at full clock rate without any regard for clocking down based on demand. While it’s a lot of work to implement, I could look at power management for the MCU by implementing dynamic clocking.

Those things can be done without changing any aspect of the board design.  But there’s board design changes I’m looking at as well.

The 1.5 board now has space for a 16x16x4mm fan in one endplate, with PWM control so we can run it as slow as possible. Like many things, it’s there if I finally decide it needs a fan, but it’s something I’m going to try to avoid. The fan is 3.3V so doesn’t need it’s own LDO (since a lot of fans are 12V, fewer 5V), but should probably have a transistor between the MCU and it to source as little current from the MCU as possible.

The LDO has also been re-arranged to make it easier to attach a small heatsink to. Ideally this will move heat away from going into the board so much, as I suspect that’s what is really causing the reported temps to be as high as they are. It might only work best with real airflow over it, but we’ll see how that goes.

There’s also some evidence the Ethernet section is drawing more power than it should do, as a result of not quite getting the front-end right. There’s fixes for that in 1.5 as well.

All in all, it feels like I’m getting into the real tail end of the project now to be considering these sorts of issues. There’s less making-it-work-at-all, and more making-it-awesome.

Posted in Design, Projects | Tagged | Leave a comment

NTP 1.4 SVN Merge

Just a wee note for anyone (as unlikely as that is!) following the Hardware NTP Server SVN tree that I’ve merged the XMEGA branch into trunk, since we have an XMEGA based 1.4 up and running.

If you want to see any of the pre-XMEGA code, there’s a release tagged “board-1.3″ which was the last working version for the MEGA MCU on a rev 1.3 board.

Should it come to pass we need a rev 1.5, I will tag the last working 1.4 release in the same way.

Posted in Uncategorized | Leave a comment

Production

One of the reasons I picked the Breadboard PSU as the first project to attempt to ship and sell was its simple. At the same time, its representative of what would be required for any design to be seen though to actually being in people’s hands – other designs just have more parts.

Unexpectedly this week a bunch of the PSUs sold, and more needed to be built in a (relatively) short time. This is quite different as an experience to the prototyping phase, where every build is unique and new, and the timeline is as long or short as you feel like. I’m glad that I chose something simple to start with, because I’ve very quickly found the things I need to think about for larger and more complex designs going into production.

Inventory management is important

During the prototyping phase on all of the projects I have underway at the moment, I’ve built up quite a stack of parts. Some of these parts overlap with other designs, but most are design-specific. For example, every design will probably involve a ton of 100nF power supply decoupling caps scattered all around various ICs. But this is the exception, not the rule.

For a while, “inventory management” was a pile of parts in bags. It started out in small bins, when it was mostly PTH parts which really were easier to store in little bins, but as the number of parts escalated it fell off a little. I only knew if I could build one by actually finding all the parts at the time.

Inventory management is really critical if you need to know quickly how many you can build beyond just one. One is easy. Five or ten imposes more need to know how many you have of all your components. At least twice now I’ve been caught out by problems in inventory – one part important part wasn’t tracked at all, and a second wasn’t updated properly to reflect builds completed.

Some of this comes from the fact upstream part suppliers probably won’t sell you one of a part, but often if you want good prices you’ll need to buy 10, or 50, or 150 at a time anyway. And they’ll get used at different rates, so you need to track the build usage carefully as well.

Plastic stencils last; stencilling jig needs work

I’ve only ever used plastic stencils for assembling my mostly-SMD boards, and had some concerns about how long they would last. It turns out more than long enough, and now I have a cheap source to make them (Ponoko) I’m less worried about exactly how long they’ll last. Still, I’ve gotten sixteen builds out of the first stencil and they’ve effectively cost a buck for each stencil, so it’s a good run.

The more significant problem with the stenciling approach is the jig I use is .. primitive. I’ve just used spare boards I had from prior prototypes to form something to wedge the target board in place, and it does the job, but only just. It would be easier with something more purpose cut to surround the board as much as possible. One option is to get something laser cut by Ponoko but I’ll need to figure out how close their material thicknesses will get to a PCB thickness.

Frypan works, reflow oven nicer

Despite how primitive the frypan cooking method for board soldering is, it actually does work, and I can manage to get a few boards at a time being soldered up. The reliability has been reasonable so far, although we’ll see how these turn out in the field. The main problem is actually the need to watch it. A controlled oven I could put a set of boards on a tray, stick them in, and just run the cook profile.

This will mean I might have to step up efforts to work on building a reflow oven myself. A full commercial one is both far too large, too expensive, and probably not a lot better than a hacked up toaster oven, but something with control is better than none.

SMD parts are great for production

It feels very strange to be so in favour of surface mount parts, but they are so much easier to solder together a bunch of components than PTH by hand with a soldering iron. I had already come to the conclusion SMD parts made things easier in general, but it wasn’t until I realised I was spending 33% of the build time on just a single PTH component that it really hit home how much easier.

There are still some challenges, getting tiny parts orientated out of the tape they often come in is a pain, and tweezers are a bit prone to too much force causing the part to fly off and disappear to never be seen again .. but those are mostly going to come down to practice. I’ve also ordered a cheap vacuum pencil to see how that works for part pick-up and placement, as a sort of poor human pick-and-place machine.

Production is confidence-building

Lastly, production builds confidence in two ways. Being able to reproduce a build and have them pass basic QA tests first time, every time, gives you a lot more certainty about the way something has been designed. It works, so your understanding of how it works looks a bit better each time.

Having other people using your builds is also helps out a bit with motivation to build other things. It’s fun, no doubt about it I have enjoyed all the things I’ve built whether they worked or not, but it’s a very nice feeling having new devices you made, put for the first time into an anti-static bag, all clean and ready to be used by someone else.

Posted in Design, Production | Leave a comment

New boards have arrived!

The new revision of the NTP Server and a test build of the LUFA AVR Programmer boards have arrived. The service from Seeedstudio was pretty quick and excellent for pricing, although one of the boards had some drills not correctly done. Still, it’s far cheaper than getting larger runs made so I am quite happy.

Sadly, I appear to have made some mistakes with the stencils that were cut by Ponoko – the detail has been lost a lot more than previous cuts. I suspect I didn’t take into account laser kerf enough, but I also think they were cut without protective paper on both sides as previous ones were done. That seems to make a lot of difference. I shall get them re-cut in the next few days.

Now off to order more parts from Element 14 to prepare for the first builds of these new designs!

Posted in Projects | Tagged , , | Leave a comment

New boards on the way

I finally committed to a new set of boards for a couple of projects. NTP Server 1.4 and the LUFA-based AVR programmer both have been sent off to be manufactured, and assembly should take place in a few weeks time. I’ll separately post about the changes for the NTP Server.

The LUFA board is an quick prototype to see how badly I’ve misread the USB AVR datasheets. It is based off the hints provided in a readme associated with some LUFA code, and vague attempts to read the USB sections of the Mega 16U2 datasheets. It includes a level shifter to support 1.8 – 5V targets which covers all the useful ranges of both Mega and XMega MCUs.

I’m not sure how the little LUFA board is going to turn out, but it was fairly cheap to get made and I’m bound to learn something out of it as a result.

These are the first boards being made by Seeedstudio’s Fusion PCB service, which for very short runs looks cheaper than previous options. It’s only 10 boards (compared to the 25 or so I was getting from other runs) so it’s more expensive per board but much cheaper to do a run because it’s a smaller number of  boards. We’ll see how they turn out.

Posted in Projects | Tagged , , | Leave a comment

Final revision no really!

I think the number of times I’ve said “this is really the final revision” is now too numerous to count, but honestly this time I think it’s fairly close to final. (That’s downgraded from yesterday’s remark to people that asked,  where I said “actually is final”.)

The most recent scare with the design was what looked like a short in the antenna cable causing various things to reset and may now be damaged. It’s unclear to me exactly what happened, but we’re no longer getting a stable consistent GPS lock. The antenna is active – it has 3.3V fed up into it to power an LNA in the weather-sealed puck antenna – but there’s no current limitation on what’s fed up this path.

The datasheet for the GPS has a large example circuit to provide hints to the GPS chip that either the antenna is disconnected (only works for active antennas), or has a short and automatically disables the power into the antenna. But the design is far more than I really need, and takes up enough board space I’d have to do some serious rearrangement. It’d be nice to use the GPS chip’s LNA control line and reporting antenna modes, but the main thing is just limit current and suppress shorts.

I’ve generally ignored putting any significant additional current limitation into the design because none of it is exposed to any external connections. All the failure modes of any of the parts would just result in the board being tossed rather than fixed, and none of them actually are subject to external connectors – except now realising the antenna is directly. (The ethernet jack does have power going into the internal side of the transformer, but since it’s internal side a broken cable plugged into the jack doesn’t cause more power to be drawn.)

Instead, I’ve decided to just add a simple PTC fuse to the power input side of the antenna, limiting it to 125mA which is comfortably more than any active antenna should need, but should blow fast enough to prevent significant damage to the board. Whether I add some remote control of that power using a MOSFET or some sort of reporting of the failure to the GPS or MCU I haven’t decided. It depends on how much board space I need. A PTC fuse is small enough to just throw one on there without much concern.

(PTC fuses are tiny resistors which have a Positive Temperature Coefficient, that is as they try to carry more current they heat up, and a high enough current/temp will result in a very high resistance, enough to stop the current flowing. They reset themselves by cooling down. Their self-resetting nature and simplicity makes them useful for this sort of case. PTC fuses are commonly used in external power ports such as USB.)

Hopefully, that’ll reduce the risk of a short! Soon it will be ready!

Posted in Design, Projects | Tagged | Leave a comment