Electronics Production


  • Create a PCB board
  • Mill, solder and program the Fundamentals Hello board
  • Add weekly report on the website (images/ videos)
  • Add download links to all the files

Finally we are approaching the most exciting in my opinion topic Electronics. This week I will create my first PCB circuit board. PCB stands for Printed Circuit Board and is a good solutions for mounting/assembling/soldering our electronic components together. So the board is something solid covered with a thin sheet of copper that we etch or mill (or other process), leaving just the path where we want to conduce electrons to our electronic components.

I started the construction of my board by using the Roland MDX-40A milling machine, to create the path. In order to do so, we used some already designed models. We had 2 .PNG files from the already existing design, one is the outline (I call it a frame) that is the cut out frame, and the other file represents the traces which are the paths inside.

We used FabModules to convert the .PNG files into Gcodes for the Roland machine. Fab Modules is a Computer-Aided-Manufacturing (CAM) software developed as an web application, which can operate several FabLab machines. It is released as custom MIT-like license on the Fab Modules github repository and it is currently being actively developed from the Fab Academy and FabLabs.

The MDX-40A machine, which is available for us, seems to not be supported directly by the Fab Modules, yet instead there is support for similar machines such as the MDX-40 and the SRM20. The MDX-40A doesn’t support the serial connection but only the parallel, so it requires a similar driver of the SRM20, that is another machine that supports only the parallel connection. So what we had to do is connect to the FabLab Wi-Fi network, open the browser, and go to the following adress:

Before using the Fab Modules, we had to be sure that the machine is connected to the Fab Modules computer near the MDX-40A.

Let’s start to work with the Fab Modules. When I introduce the ip adress into the browser window, the first interface that will appear is:

After I press on th gray button input format, a new menu should appear with the option to load the .PNG image. Here I upload the first image, which is the inside engraving. After doing that, the preview of the image will appear in the Fab Modules and also other fields and other parameters will show up:

Now you have to choose the output format, that will be the Roland mill (.rml) file. And finally as process I choose PCB traces (1/64). Is possible to use exactly the same process for making the outline cut of the board and making the holes.

Now let's set the parameters for the Roland machine. On the right side of the window, we have many input parameters. In order to be able to move the machine, we have to input the following parameters:

    mod_lp.py /dev/usb/lp0     into the send command field

    hostname_of_your_machine     into the server field (just the address without http or /)

In order to move the machine I just enter in the respective fields the x, y and z position coordinates. Before moving the machine I have to make sure that the zjog parameter is always set to 0, even if it will change automatically. To move the machine I have to press the move to xyz0 button.

The hard thing to do was to adjust the x0 y0 z0 for the machine, took me a while :) After I found the right coordinates, I had to make sure that the tool is actually touching the copper surface. A small life hack is to use the multimeter and check if there is connection between the tool and the surface. As a tool to engrave PCB is suggested to use diameter from 0.2 mm and below, while for cutting we can use a 1 mm tool.

So my final settings look like this:

After I double check all the settings, I press the calculate button. This is what I get:

On this picture we can see all the paths and the jumps that the machine will do. Now I am ready to send the job to the MDX-40A by pressing the send button.

For the outside cut the settings remain the same with the exception of the value of the Z-Axis, as I replaced the 0.2mm tool with the 1mm tool, and the parameters of the CAM. This is how it looks:

The first job, the inside engraving, took about 25 min, but the result was really good. Analyzing the draft circuit, the result proves that the parameters chosed in the CAM software were the right ones. This is how it looks:

Now I was ready to launch the second job, which is the outside cut. I changed the tool from 0.2mm to 1mm, fixed the new z0 position, and set the right parameters. Because copper is a strong material, and the tool diameter is only 1mm, I had to decrease the speed dramaticly, from 4mm/s to 0.1mm/s, which as a result took more time to cut. This is how the result looks:

And now comes the HARDCORE! Time to solder all the components on my PCB board. Since it was my first experience in soldering, it took me some time :D The components that I used are: microchip, 2 resistors, 3 capacitors, one LED, and pin heads. In order to make sure that I soldered everything in a right way, after each component soldered, I used the multimeter to check if there is conductivity between the component and the traces. Honestly saying, the begining was hell, but at the end I really liked soldering :)

My PCB with all the components on it looks like this:

Just look at this. Isn't it beautiful? :D

The next step is to Program It! Now I have only a board with some components on it, but let's give it LIFE. The software wich I am using is   , an open source software which allows to program Arduino boards. And yes, in order to program a board we have to use another board; its like Egg / Chicken situation - what appeared first :D

To use the Arduino board, I had to patch it in advance adding the Attiny45, detailed instructions can be found HERE. After I patched the Arduino IDE, I connect my arduino board to the USB hub, in the tools menu select the right board (Arduino Uno/Genuino) and the port, after go to File--> examplesand open the Arduino as ISP sketch. Upload the code.

After I see done uploading, which means that the code is uploaded to the board, I disconnect the arduino from the PC. The next step is to connect my PCB board to Arduino using some wires. The connection scheme is this one:

The right connection is very important, otherwise it is possible to damage the board. That is why, after I triple check the connections, I can go on setting the parameters for the Arduino IDE. I connect the arduino board to the USB hub, and select the right board/processor/frequency -> attiny25/45/85, attiny45, internal 8mhz. Under tools select Arduino as ISP programmer, double check the parameters, and press the Burn Bootloader button.

After everything is done, we can upload any code to our PCB board. I chose a simple example code Blink. It will make the LED blink for 1sec, switch it off for 1sec, and then switch on again, and so on for ever :D. The important thing is to choose Pin 2.

Here is a short video:



Inside Cut (.png)

Final Cut (.png)

The Lecture Slide (.pdf)