Close

tl;dr soldering is hard

A project log for nRF52 SmartWatch

nRF52 Smartwatch from Scratch

jeff-cooperJeff Cooper 08/19/2020 at 05:364 Comments

Soldering tiny components is something that I just sort of assumed I'd be able to do for this project. Some of the biggest components are 0603 passives, and it only gets smaller from there. The smallest is the MAX17262, which is a 9-ball BGA package (9-WLP) a mere 1.47mm on each side. None of the components on this board have exposed leads.

And for the most part, my cockiness has proven to be okay. Armed with a tube of low-temp solder paste and an arsenal of tweezers, I've been able to solder everything without a ton of incident. Sure, the nrf52840 module took a few tries, but that won't hurt it, right? Hold that thought.

The mk2/rev2 boards came in a few days ago, and I finally had a chance to sit down and put them together. The preassembly of some of the passives by JLCPCB was a nice head start, but I'm not entirely sure it was worth the processing delay. When I powered up the board, the only thing that immediately caught fire was the 5V regulator. Unfortunately, this was the only component I don't have backups of on hand, so it'll be a few days before I can tell if I mis-soldered it or if the board needs to be changed. Luckily, though, the only 5V component is the display, so I can test the rest of the board in the meantime.

Like rev1, the board programs! I loaded an i2c scanner program onto it and, after way more confusion than I expected mucking about with pin mapping, successfully detected the RTC module at address 0x68! This is about where the good news ended for the evening.

The MAX17262, the fuel gauge IC, also communicates on the I2C bus. It wasn't showing up on the scanner program, though, so I decided to pull it off and resolder it. When I did that, double-checking the orientation.... the I2C scanner froze. I removed the MAX17262, but the code still blocked on any I2C call. I removed the RTC module, so there was nothing on the bus, but the problem remained. After some debugging, I discovered that the SCL line appeared to be stuck high, so I figured that there must be a short between VCC and SCL. I took the nrf52 module off and cleaned the board with liberal application of flux, then reattached the RTC. No short, cool. Then I reattached the nrf52, and the short came back. I repeated the process of removing, fluxing, tinning, and re-attaching the nrf52 module a few times (melting a tactile switch in the process), and each time the result was the same: no matter how carefully I soldered the module, VCC and SCL were shorted together.

Finally around 1am, I took the nrf52 module off of the board and probed the bare module with my multimeter. To my dismay, I found that the short between VCC and SCL (mapped to P0.22 on the nrf52) was happening somewhere within the module, not on my board. Remember when I said that repeatedly reflowing the module was probably fine? My theory is that at some point I applied just too much heat to just the wrong place and shorted something within the module. That would explain why it worked once, then suddenly didn't. Infuriatingly, I didn't seem to damage anything else; the onboard USB and Bluetooth worked just fine, giving me no indications that anything was amiss. If someone with more experience has a better explanation for what happened here (some sort of pull-up fuse?), please enlighten me in the comments. It's also possible that a mis-seated fuel gauge IC directly exposed SCL to VUSB. The GPIOs on the nrf52 are not 5V tolerant, so that may well have been what killed it. (note: on further reflection, this is almost certainly what I did. At one point I had the IC rotated 90 degrees counterclockwise, which would have connected the board's SCL line to the PACK+ ball and the board's +BATT line to the SYSPOW ball. Current flows freely from SYSPOW to PACK+ when the battery is charging, so the IC would have happily let current flow there)

I have a backup nrf52 module that I can try tomorrow or the next day, but I'm not excited to have to go through the process of flashing a bootloader onto it for the first time. At least I have an ST-Link this time.

Total errata list (so far) for the mk2/rev2 boards:

 - Something's funny with the 5V regulator. Or maybe I just soldered it wrong.

 - The footprint for the backlight FFC connector doesn't match the component I bought... or any that I can find online.

 - The battery connector polarity is backwards from what appears to be the convention. The easy workaround for now is to just solder a connector onto the battery that matches the board, not the convention. I might also switch to a horizontal JST plug instead of a vertical one for rev3, or possibly some other connector (or a hardwired battery, if I'm feeling lucky).

 - The mounting legs for the USB-C port stick out just a hair below the bottom of the board, totally ruining my attempt to have the back of the board completely flat and smooth. Moving up to a standard-thickness PCB might solve this, or I can just bite the bullet and make it double-sided.

 - 9-WLP is hard to solder, even with paste and hot air

 - More testpoints!

Discussions

Matthew James Bellafaire wrote 08/19/2020 at 13:49 point

I ran into an issue with JLCPCB once before where a board ended up having a signal trace shorted to ground (around 30 ohms) and I wasn't able to identify any visible cause of the short. The trace was on the top layer so the only way it could have shorted was if it somehow made it through to the ground plane, ended up just reassembling one of the other boards after failing to locate/fix the short. It had to have been a defect that somehow got past the flying probe test JLC performs. 

When it comes to soldering the WLP packages my goto is to douse the footprint in flux then roll my soldering iron over with some solder to get a little extra solder on the pads. Then I reapply flux and place the WLP package and hit it with some air around 260C. The only way I've been able to test whether or not it soldered properly is to give it the smallest nudge with some tweezers while the solder is still molten, if it wiggles back to it's original location then at least most of the solder pads have made a connection. Still a pain to solder, I'm sure there are better ways. 

  Are you sure? yes | no

Jeff Cooper wrote 08/19/2020 at 15:03 point

The fact that I did briefly have the board working suggests that this is a me error and not a JLC error, but that's good to keep in mind. My procedure for soldering WLP is basically the same as yours. I've also found that, for really tiny parts that tend to blow away, heating the underside of the board works pretty well (obviously, only if there aren't any components there to get in the way).

  Are you sure? yes | no

Matthew James Bellafaire wrote 08/20/2020 at 15:23 point

I've never tried heating from the underside. I'll have to give that a shot next time

  Are you sure? yes | no

Jeff Cooper wrote 08/20/2020 at 23:36 point

I've actually done a few boards by spreading paste, placing components, and plopping the whole thing into a frying pan on the stove. It works great, but you can only do it for one side (and you probably shouldn't use that pan for food).

  Are you sure? yes | no