Skip to content

4. Electronics production

Individual assignment

  • Make an in-circuit programmer by milling and stuffing the PCB, test it, then optionally try other PCB processes

I had never milled a circuit board before this week, so I started off with a basic board with just an LED. This was just used to learn how to use the mills and just get a bit of an understanding of the basics.

These are the steps of making this board and the video below is the board blinking successfully when connected to an Arduino Uno:

I accidentally ripped off a trace when I was attempting to tidy up the board:

On the final board that ended up being successful, the marking on the LED to indicate which side was positive and which side was negative was reversed. This meant that for a while, I was attempting to troubleshoot all sorts of things that were working completely fine. Then a classmate, Graham Smith, suggested that maybe the marking was wrongly indicated since he had that issue a couple of times. When I flipped it, it ended up working. This is important because now I know to always check markings to make sure they are accurate before adding them to a board


Since I can not directly upload any programs to the blink board (or any other target board for that matter), I have ot use a programmer as a “middle-man” in that process. To make an Arduino that programmer, upload this jtag2updi code to the arduino. After that, instead of setting the board as “Arduino Uno”, set the board as whatever the target chip is. In this case, we are using an ATtiny412, so we set the chip to “8-pin ATtiny412/402/212/202” and set the programmer to “jtag2updi”.

To make sure this has worked correctly, you should be able to see this in the bottom right corner:

To upload a program to the target board, connect power to power, ground to ground, and the UPDI pin on the target board to pin 6 on the Arduino Uno. To actually send the program, instead of clicking “upload” you need to click “upload using programmer”

Programmer success

The point of this programmer was to replace the arduino we used with the blink board and just have the programmer upload code to the target board. To make the soldering process easier when adding all the resistors, capacitors, chips, etc. to the board, Jack Hollingsworth explained how if the width between each trace is incredibly high, it would be much easier to solder. For example, the separation between each trace is usually about 0.5 millimeters or less, but we set it to about 15 millimeters. This eliminated the possibility that two bridges somewhere on the board are connected by the copper that, otherwise, has no purpose. Another convenient thing about this is that it only takes about 10 minutes in total for this technique, including the time it takes to switch out the end bits (between engraving and flat end). This link has more information about how to upload programs to the programmer and target board.

Here are the images of the final board before and after soldering the components:

This is a video of me successfully uploading the blink board to the programmer and having the LED blink:

This is a video of the programmer sending the blink code to the target board (the blink board from before):

Programmer failures

This was my first failure. As you can see, One of the traces close to where the chip would have been ripped:

This was my second failure. It was the same issue as the first board:

This was my third failure. I’m not exactly sure what went wrong on this board, but I think it was something with the chip since I kept getting an error message that the device signature was not recognized. This was also the first board where I tried the method of having the trace width be extremely large:

Another issue that I encountered was drawing enough voltage and current to power all 3 boards in total (arduino, programmer, and blink board) since the arduino only draws about 5V of power from the computer. The programmer and blink board each have chips that require about 4-5V, so I just added a 9V battery as an external power source for those two boards.

Group assignment

  • Characterize the design rules for your PCB production process

Details about the group assignment can be viewed at this link