pcb milling and electoronics assembly

this week's focus is on electronics manufacturing through the manufacturing of an in-circuit programmer. this involves pcb milling our own board and hand soldering the electronic copmonents onto the board.

pcb milling

we got trained on the Roland SRM-20 milling machine and these are the steps to mill a board on it:

  1. if the computer is off, when you turn it on, the pcb mill will not be connected.

    this means the first thing you need to do is right click on ~/Desktop/mods-fs-hotfix/js and click open terminal.

  2. in the terminal, type 'node deviceserver.js ::ffff:127.0.0.1 1234' to connect the pcb mill and the computer.

  3. go to 'mods.cba.mit.edu'

  4. right click in the blank page

  5. click on select program -> open server program -> connect/PCB png

  6. if the computer is on, you can check if the pcb mill is connected by going to the 'WebSocket' module.

  7. take the pcb board that will be milled, put doubled sided tape evenly on the back of it and place it in the bottom right corner of the sacrificial board.

  8. in the 'Roland SRM-20 milling machine' module, under 'home' make sure the z value is a conservatice number such as 60mm and then click 'move to home' button to ensure that the mill is away from the pcb board

  9. with the position of the drill at home, place a 1/64" drill bit in the the drill head.

    there is a hole on the side of the drill head that contains a small hex screw that you tighten until snug. That means as soon as you feel some resistence, give it a tenth of a turn more and STOP before you kill the thread.

  10. in the 'Roland SRM-20 milling machine' module, under 'origin' make sure the z value is a conservative number, I chose 20mm. you want to make sure that the drill bit head wont hit the pcb board as it moves along the xy plane. this may break the machine, not just the drill bit

    choose x and y origin values that will line up with botton left of the pcb board, in my case x was 110mm and y was 10mm, and click 'move to origin'. If the drill head doesn't land on the bottom left of the pcb board, change the x and y values until it does.

  11. now you need to zero the z value.

    loosen the drill bit while holding onto it so that it doesn't drop on the pcb board and bring it down to the pcb board. then while holding the drill bit firmly on the pcb board and tighten the hex screw snuggly. if you don't hold it down, it will ride up as you tighten.

  12. pick the png of the file containing the board you want to mill in the in the 'read png' module by clicking the 'select png file' module.

    I picked the file I used to characterize the design rules of the milling machine.

  13. in the 'set PCB defaults' module, look at the values bellow 'mill traces (1/64)'.

    because the drill bit is 1/64", make sure the value for 'tool diameter (in) is .0156. the 'cut depth (in)' is the depth that one pass of the mill cut, which i set to .004. the 'max depth (in)' is how much material to actually cut. i set it to .008 meaning that with a cut depth of .004, the mill will have two pass throughs.

    after any changes to the values, make sure to click 'mill traces (1/64)' to propogate the changes.

  14. in the center module click 'calculate' to calculate the mill paths based on the png and mill traces.

  15. in the 'WebSocket' module, a button should change from 'waiting for file' to 'send file' which indicates that the png has been successfully calculated. click the button and the mill will start.

  16. when the milling is done, the drill head will move automatically to the home position. to cut out what was milled from the board, you will have to mill one more time.

    repeat steps 7 through 13 with some minor differences. in step 7, use a 1/32" drill bit. in step 10, choose a png file that outlines the perimeter of the cut. in step 11 use 'mill outline (1/32)' with a 'too diameter' of .0312, a 'cut depth' of .024 and a 'max depth' of .072.

in the end you will have your milled pcb board ready to be used.

characterizing the design rules of the PCB production process

in order to see the milling limits of the pcb board, a group of people and myself milled a line test on a board. we used the following file:

which printed out the following board:

the test showed that the mill could mill the board to create lines as fine as .001" but it couldn't mill cuts of .001", only cuts of .015" or greater.

making an in-circuit programmer

the main project i was tasked in creating was an in-circuit programmer by milling it, soldering in the parts and programming it. i followed Brian's instructions in detail to accomplish this.

i used his his png files to mill and cut:

my first two attempts at milling the pcb board were not successfull. at first i thought i did one of the steps wrong, but it turns out i was using a broken drill bit. after getting a new drill bit, i milled two pcb boards in case i messed one up while soldering.

in the image bellow, you see my two attempts with the broken drill bit in the bottom and the two successfull attempts with the new drill bit on the top.

here is a close-up of one of the successfully milled boards.

afterwards i grabed the electronic components needed to create the actual in-circuit programmer:

i followed Brian's schematics to solder the components onto the board

to get the following result

i connected the board onto a linux computer in the lab space to see if the red power led shone, which it did. i then connected an ATAVRISP2 programmer to the board through the 2x3 pin header and connected the programmer to the computer.

following Biran's instructions, i programmed my programmer and then unbridged the bridged connection from my board, so that its final state looks like this

and now i created my very own in-circuit programmer from scratch!