Once my initial prototype board was assembled I was faced with everyone's favorite task - bug fixing! There were some problems that became evident right away, and others that took an embarassingly long amount of time to identify and fix.
- Surface-mount USB mini-B connectors are HARD to solder!
The first problem I found was that in reality, SMD USB connectors are extremely hard to hand solder without a hot-air rework station! I gave it a good shot, but I quickly realized that it was going to be way more difficult than it should be to manuever my soldering iron in the constrained space aroudn the connector's pins.
Solution: for the prototypes and DIY-able version of this device, I should definitely stick with through-hole connectors so that more people can assemble and maintain their boards.
- Instrumentation amp didn't get connected to GND
Once I was able to burn the Arduino Leonardo bootloader onto the ATMega32u4 and upload a basic sketch for testing I found that I wasn't getting any readings from the pressure sensor.. This was a bit frustrating to troubleshoot because it made me question just about every step of the process up to this point. Was the board design flawed? Are there defects in the board from fabbing? Is the bootloader or microcontroller somehow corrupted? Do I suck at programming more than I thought I did?
Eventually I found that this was indeed a hardware problem and traced the cause down to the instrumentation amplifier. Either out of haste or inexperience, I neglected to connect the amplifier's reference pin to the ground plane, effectively preventing it from receiving power.
Solution: I soldered a jumper wire from the reference pin to a known ground connection, and readings started coming in right away! I also updated the Eagle board design straight away to prevent future boards from having the same problem.
- MPX12GP sensor connection is unreliable
When I initially specced out the MPX12GP it looked like it would be easy to interface with. It has long 0.1" pins which seems like they'd mate well with 0.1" female headers, allowing the sensor to be easily replaceable by users. In practice, though, this didn't work out so well for a few reasons:
Firstly, the pins are actually a bit on the slim side, making them a little loose in the female header sockets. Not ideal for real-world usage.
Secondly, because of how thin the pins are they break very easily at the slightest amount of torque or bending.
Thirdly, the sensor is thick enough that the pins are elevated a bit too much when the part is mounted flat onto a board. This means that the typical right-angle female headers that I had in mind do not line up with these pins, making the fit even more sketchy than when they are aligned.. I considered using extra-long right-angle female headers, but they are hard to find (and therefore not cost-effective) and would not solve the other two problems with the sensor.
Solution: given the strange mounting that would be required, and the build quality of the pins, I think the best thing to do is to find another sensor. I believe I have actually found one, just need to test it out!