This is just general stuff, you should really try to put a bound on the expected acceleration forces, the period and duration of those forces, thermal conditions, and expected angles of impact to get the information you need to make the design robust.
What is the most force that would be OK on a board with no impact hardening measures taken? (Am I worrying too much about a non-issue?)
This is very difficult to put a single number on, it depends on the types of components used and the direction/frequency of the hits.
Are there any design practices that should be followed for the PCB?
Lots of attachments to something solid. One of the most likely failure modes is the PCB flexing which can cause the solder joints on the PCB to crack causing intermittent or complete failure of the connection. I would try to keep the PCB as compact as you can while providing as much attachment to something that won't flex (steel enclosure) as you can. The smaller the PCB the smaller the 'overall flex' of the board. Something like 4+ layer design with solder copper power and ground planes should also add to the rigidity of the PCB but can cause additional thermal flex. Depending on what your needs are, there are specialized PCB substrates that are more rigid than your stock off the shelf FR-4, such as substrates which employ carbon fiber composites vs fiberglass.
What are the weak points in a design that lead to mechanical failure?
- Board Flex as mentioned above can cause solder joint cracking. Stiffening of the PCB can help. You could also not use stock solder, but rather a conductive adhesive such as silver conductive epoxy. You can also use a conformal coating on the PCB which will hold surface mount components in place as well as add some stiffness to the PCB.
- Large Items: Lite weight surface mount devices are the best parts to use, large heavy items that sit further from the PCB will be the worst parts to use. Things like large aluminium electrolytic caps, tall inductors, transformers, etc will be the worst. They will impart the most force on their leads and solder connections to the PCB. If large devices are needed use additional attachment to the PCB. Use non-conductive, non-corrosive epoxy or something like that to attach them to the PCB or use a part with an additional PCB support. Be sure to account for the added thermal resistance when calculating the devices ability to dissipate power if using epoxy or conformal coatings.
- Connectors. Any connector going off the board will get beat on, make sure its a solid locking type and rated for the expected G-forces. Make sure the connector's attachment to the PCB is solid. Pure surface mount types without a through-hole attachment to the board it probably a bad idea. These usually require through-holes in the PCB near the edge of the PCB. Make sure your PCB substrate is strong enough to support the forces on these holes as with being so close to the edge the strength of the PCB is around the hole is much less. If you need a connector that leaves the enclosure, use a locking panel mount connector and solder leaders to the PCB, this will put the stress on the connector/enclosure and not on the PCB.
Are there parts that should be avoided for a more robust design?
See the list above but keep all parts as lite and as close to the PCB as possible.
At what force levels should I start worrying about the safety of the parts themselves?
Again this is hard to put a number on. If the device is getting hit 'edge on' to the PCB than your concern is lateral shear forces. What force causes a problem there is dependent on the IC. A large heavy IC with few, small attachments to the PCB is probably the worse case. Maybe a tall pulse transformer or something like that. A lite weight, short IC, with many attachments is probably strongest. Something like a 64pin QFP, even better if it has a large center pad. Some useful reading on this topic: http://www.utacgroup.com/library/EPTC2005_B5.3_P0158_FBGA_Drop-Test.pdf
Some parts may be internally damaged by high G-forces, this would be on a part by part basis but would mostly be limited to devices with movable internal parts. MEMS devices, transformers, mag-jacks, etc, etc.
Comments
Have you considered using 2 boards? One small board with the accelerometer which is actually stiffly attached to the enclosure and a second board with the rest of the electronics on it which can then be mounted with a shock absorption system. The shock system could be as simple as rubber supports or as complex as the systems used in hard drives depending on needs.
Your going to need a pretty fast processor and a pretty fast, wide range accelerometer if you want to get accurate measurements of impact events such as getting hit with a hammer.
These sorts of devices (surface mount with exposed metal) are meant to be directly coupled to heavy copper on the PCB to get the heat out of the device.
Usually this involves a multilayer PCB, with a bunch of vias that connect copper on several layers to the device metal. The vias not only channel heat through the PCB by conduction, they also ensure that the device is well soldered with good copper-to-copper contact.
Best Answer
I'm surprised nobody mentioned EEPROM. We've had to put unique numbers in products a bunch of times, and most of the time they have gone into the processor's EEPROM or sometimes reserved locations of program memory. This is usually a simple thing to do as a final step of the production test and calibration process. Once the unit is deemed working and any calibration has been performed, the production test system sends a command to the micro to give it its serial number, or uses the programming interface to write the serial number in the appropriate location directly. Sometimes the HEX files that is programming into the micro is a one-off modified from the master template HEX file with the unique serial number for that device, with checksums and possibly other information modified accordingly.
A few years ago I was working with a company that was producing 100s of thousands of little thingies a year via a contract manufacturer in China. We sent two complete test systems to the Chinese manufacturer. The test program would maintain a serial number file, and we could send them new files to configure the units for new serial number ranges. All went well enough for a while, until one day we got units with duplicate serial numbers. It turns out the Chinese did something stupid with one of the systems so that it wouldn't run anymore. Instead of telling us, which they had strict orders to do if anything went wrong, they did a complete disk copy from the working system to the other system. This of course copied the serial number files and current state too, so from then on both systems handed out the same sequence of serial numbers. That was a pain to unravel.
I got to design newer test systems, so I made sure the serial number range and current state was kept in a EEPROM in the tester hardware and didn't provide any documentation about that to the manufacturer. We had about a dozen of the tester boards made, and we carefully assigned separate serial number ranges to each. When the manufacturer needed to be updated with a new block of serial numbers, we sent them updated tester boards. So far this system has worked very well. It also makes it easy to produce the occasional unit back here or at a different manufacturing site. Each place has its own tester with its own serial number range, and only one person was the master keeper of the serial numbers and would assign new ranges to testers. You could then pick up any tester and use it to provision units without having to worry about serial numbers.