googling and good friend save the day
1. Milling the PCB
2. Soldering: It's Complicated
3. Programing the Programmer
The first time I learned about (thru-hole) soldering, the TA told us to make a Kiss at the joint. After I showed him my masterpiece, he was like, "Hmm... yours is more like a Lindt than a Kiss." Well, I appreciate good humor. So when I learned that we are doing electronics and soldering this week, I thought at least I've done it before ... until I saw the parts we were gonna work with - they were as big as the soldering joints I was making... but this is how we learn, by trial and error and more error and it will probably work eventually.
This week's exercise was to fabricate a programmer that we are going to use for programming other boards for the rest of the semester. I mostly followed Brian's tutorial on Building the FabTinyISP for the exercise. The three steps for fabricating a board is:
- 1. fabricate the PCB board
- 2. assemble the board by soldering components
- 3. program the board
To mill my PCB, I used the Roland SRM-20 and the template board trace and outline for FabTinyISP. The machine was controlled through mod, the same module that controlled the vinyl cutter. Through mod, you can visualize how the end mill will move across the PCB. For the traces, I used a 1/64 end mill and offset of 5 in mod (which determines how much copper it will mill away; a offset of 0 will mill away everything you do not need but will take considerably more time). The end mill just cut through the top copper layer. For the outline, I used a 1/32 end mill and it cut through the entire board. To operate the machine, To operate the machine, I first needed to zero it by setting the origin to where I wanted the bottom left corner of my board to be. Then I had to put in the end mill, making sure it touches the surface, and tighten it with a screw driver.
Figure 1. The mod interface.
It turned out that tighting the bit was actually a bit tricky. The larger PCB piece was not even so in the first pass the end mill didn't cut through the copper layer on the right side of my board. I was told that when you tigten the bit, the thing that holds in place will actually pull it up a bit so it will end up not quite touching the surface. To avoid this happening, I was advised to hold the end mill down with a piler (but not forcing it so much that you will break the end mill) while tightening screw. And it worked!
Figure 2. The bit didn't go through on the right.
Figure 3. The finished PCB! I removed the rightmost bit of copper later with a razor.
It made me feel really cool to use a microscope to solder the tiniest components onto my PCB. Other than that, I don't know how I felt about soldering. It's complicated... When it worked, especially the moment when the solder liquified, it's quite amazing. But when the tiny pieces or solder went everywhere except for where I want them to go, I just wanted to throw everything out of the window. I lost couple pieces because I squeezed the tweezer a little too hard and the components just flew to nowhere. Couple useful tips people gave me: leaving a tad of solder on the PCB before putting on the piece so you can hold it in place with one hand and hold the solder iron in another and you won't need a third hand to hold the solder; and heat up the pad instead of the component (so you won't heat up the entire component and melt the other already soldered joints) and tap solder at it.
Figure 4. I followed the board image and schematic from Brian's tutorial. He also offered useful tips on order of soldering, identifying correct orientation for parts like diode and LED, and adding extra thickness for the usb connection.
I'm usually someone who doesn't like to check her work and just pray everything will work (it usually doesn't work out and it's not short cut at all). When I read the part of the tutorial that said you should check your work, I was really tempted to skip it. After having my internal voices aruging against each other for a while (which was probably already longer than how much time I ended up checking my board), I was like "ok, I will check it." Of course, I somehow had a wrong resistor value. So important lesson learned, check your work!
Figure 5. Soldering done! (at least I thought I was...)
For me, the most difficult part has just started. I followed the tutorial and downloaded CrossPack and the firmware source code. However, I wasn't able to build the hex code for the firmware because of the following error. After redownloading CrossPack, restarting everything, and franatically googling for a while, I just had no idea what's going on and turned to Antonio from my lab for help. The amazing Antonio then spent more than an hour on his last day here helping me and in the end we downloaded avr-gcc using homebrew following the instructions here (the majority of the time was spent on waiting for the package to download).
Figure 6. make: avr-gcc: No such file or directory
After that I was able to make the hex file. However, I then had an initalization error when I tried to program the board. Again, the tutorial had some tips on debugging it. I went back to probe my board with a multimeter to test connection (which I should have done from the very beginning) and added more solder to basically all the joints. And it worked! I haven't had the chance to make another board and test my programmer on that board so I'm actually not 100% sure it works but I will find out soon. Stay tuned.
Figure 7. The board after I resoldered most of the joints.
Figure 8. Blow the reset fuse on the programmer.
Figure 9. The final board after disconnecting Vcc from the Vprog pin on the ISP header.