Week 4's assignment
Here are the source files used during this assignment.
This week will be all about knowing how to make a PCB, that is a Printed Circuit Board, using a end mill, and then learning how to solder components on the board, to make a ISP. Basically, an ISP (In-System Programming) is a circuit that you program so that it can then be used to program micro controllers on other boards. For starters we had a presentation from Fabien who is our tutor for electronic production. You can find the links to his two presentations : link1 - link2
1. The PCB design
The first thing we had to was to pick a model for the fabrication of our PCB, among the examples given during the week’s lecture.
I am completely new to this, so before I could decide anything, I had to learn more about how a PCB works, how it is designed, more importantly what is the role of each component and finally what could be the advantages of this or that board.
To do so, I looked into all of the pages provided on this week's lecture page, and then I dove back into my Arduino starter kit to remind some of basinc principles that would help me be more confortable with general electronics.
Finally we chose this one, because it already includes USB pins, which means we won’t have to solder the micro USB port.
So we used the PNG files for the pocket and the cut.
We converted them into dxf and edited them with V-Carve, which the software that we use to configure that machine.
The settings for the pocket are :
Parameter | Value | Unit |
---|---|---|
Speed | 18 000 | r.p.m (round per minute) |
Feed rate | 25 000 | mm/min |
Plunge rate | 10 000 | mm/min |
Cutting depth | 0.2 | mm |
2. The PCB fabrication
Because it is a big machine, before we started, we had to make sure the bed sheet was stable and completely flat. For this, we used the vacuum pump included in the machine.
The end mill works pretty much like a laser cutter : you must set the origin point manually moving the bit on x and y axis.
Then once it is done, you must set the z value.
Finally, after you set the speed, you can start the job.
With the settings and material we had, it took about 20 minutes for both pocketing and cutting.
Here is the result before cutting.
And here is the final result.
It is not as clean as it would be with a 3x2 end mill like the one witch is recommended, but it seems good enough to be working.
To make sure, we tested the board with a multimeter :
It was OK.
But the problem is we realized that we did not start with the right design for the board. On the FabISPKey page, there is two versions : the normal one and the « lokey » one, which we used. But we don’t have all the components necessary for the lokey, so we had to do it again with the original ISPkey version.
This time instead of doing a pocket, we only do a profile cut so that the just is more precise.
First time we tried the job was much faster (less than 5min) but we realized we made a mistake when converting the files from PNG to pdf and then dxf, which resulted in a difference of scale.
So the ISP was smaller and actually too small :
And also the profile was not deep enough. We can see on this photo that the copper is not completely cut.
So we had to regenerate the file again.
This time, to be sure we had the right file and dimensions, we directly downloaded the Eagle file from Andy Bardagjy’ gitHub, here.
Once it was done, the third attempt was finally successful :
4. Soldering
Then came the hardest part : soldering the components on the board. First I had to identify each component and use the schematics provided by Andy Bardagjy to know exactly where to put what :
My PCB was almost finished, I only had to wait for the last components to be delivered at the Fablab.
Meanwhile, I would try to began to explore the next step which was the programmation of the board.
Unfortunately, althought the missing components were delivered on time, some of them (capacitators) were too small to fit to the PCB.
Also, looking back at my PCB, I realized the solderings were really sloppy.
Some of the copper traces were not well attached which resulted on a unstable current flow, so I
thought it was better do to another PCB from scratch. Given that we had also recieved the new milling bits,
we could mill new boards.
That is what we did, this time using those parameters instead :
Parameter | Value | Unit |
---|---|---|
Speed | 18 000 | r.p.m (round per minute) |
Feed rate | 1000 | mm/min |
Plunge rate | 100 | mm/min |
Cutting depth | 0.2 | mm |
This time the bit we used was a 1/64inch one, which is approximatly 0.397mm.
The result was undoubtedly better although the paths were still pretty rough and kind of uneven.
But this took quite some time and we did not have enough time to mill, solder all
the components and do the programming by the end of the day.
So the programming step would be postponed to the next week.
Update - 10th March
I finally found time to pratice my soldering and finish the Fab Isp. Well, it actually took me two tries to finish it. The first version I made was pretty messy and I made the mistake of soldering the crystal too soon, because at that time we did not have recieved the capacitors yet. As a result, it would be almost impossible to solder them afterwards because I would have to go under the crystal... :
First of all I downloaded the firmware.zip package here, then I installed CrossPack which is a development tool for AVR microcontrollers.
Since we did not already have an ISP to use for programming the FabISP, we wanted to use a Arduino UNO. So I followed the Fab Academy tutorial on how to turn an Arduino UNO as an ISP and then use it to program our ISP.
Then I made a 6pin cable to connect the Arduino board to the FabISP :
Once this was done, we had a really hard time during the second phase, when trying to set the fuses so the board will use the external clock : each time we types Make fuse
we had an error message saying Invalid device signature
. Here is a screenshot of the terminal :
And here is how the Arduino and FabISP where connected to each other and to the computer :
avrdude -c stk500v1 -b19200 -P /dev/cu.usbmodem1411 -p ATtiny44 -U hfuse:w:0xDF:m -U lfuse:w:0xFF:m
AVRDUDE = avrdude -c usbasp -P usb -p ATtiny44
And tried again with the "make fuse" command. This time it worked right away !Here are the source files used during this assignment.