my picture

Assignments
Final Project
Student Agreement

Assignment Five: Make a circuit board with the CNC and program it

This week's task is to develop the skills to make circuit board cuts with the CNC machine, solder parts to the PCB and program the board. In steps:

Generate the G-Code for the board from a picture or file
Cut the board on the CNC and solder the parts
Run a program on the circuit board

Generate the G-Code for the board from a picture or file

The first step for this project was to get the design for the board from the instructor Francois, as we haven't learnt to use Eagle yet I can't design the board yet. Once I got the Gerber files, I installed FlatCAM - which is a great software to generate G-Code for a CNC.

On installing the software completely, I could open the Gerber files and learn to use the software using the manual. Using the command Open Gerber, I opened the gerber_top file and it showed on the interface.

open the gerber file

gerber 2D design loaded

As it's the first time using the tool, it's important to use the first the default units as mm instead of inch - this can be done by changing the preferences and saving the settings. Next, I set the tool parameters, like 7mm for the width and number of passes, as well as the diameter of the bits. Once this was done, I used the FULL GEO command to generate the trace geometry for milling the 2D shape.

trace generated for milling

Once the trace was generated, I then included the trace for the cutout of the board and saved the G-Code. The file is available here.

GCode generated

There are other ways to generate G-Code from a picture such as mods, another method would be to use Fusion 360 to convert an SVG or even use a software like MakerCam. I tried it out with mods using a PNG template from the Fab Academy class and got the toolpath below (GCode here), which is pretty useful. I can see how mods can be used for even more intricate designs, I look forward to trying it out in the future.

trying out mods

GCode pattern generated with mods

Cut the board on the CNC and solder the parts

Once I had gotten the G-Code, I saved it on a USB and got it to the CNC in the lab. The lab uses an SMX CNC router which is capable of a lot of jobs. The first thing to do was change the drill as well as the settings used on the board. I also had to learn how to use the control pad to hover on the x, y and z axes. This was great as it's my first time using a CNC Mill.

pad for controlling CNC

CNC drill

Next, I set the double-sided tape under the board and fixed it to the router bed.

Board fixed to CNC bed

second picture of board fixed to CNC bed

Francois, my instructor, taught me a very interesting skill to know if the drill is right on top of the board - by using the multimeter to detect contact between the board and the drill! This done, we selected the G-Code file as well as the speed for cutting.

selecting file to be cut

selecting speed of cutting

Next, we ran the Mill and in a few minutes had the board ready!

CNC cutting the board

finished board

The next step was to solder the board using the reference drawings shown here. I first arranged the parts list in order and proceeded to solder the board. My colleagues at the lab gave me some helpful tips here so I soldered the USB pin first then went ahead to try do the other parts one after the other. At the end I had the board ready as shown below!

board with parts soldered on it

Run a program on the circuit board

After assembly, the next step is to make the board a programmer like an ISP. ISP are short for In-system programming (ISP), which is the ability of some programmable logic devices, microcontrollers, and other embedded devices to be programmed while installed in a complete system, rather than requiring the chip to be programmed prior to installing it into the system.

Our lab initially had some issues with this part of the assignment, but one of us - Phillippe - discovered that this was due to our Zener Diode generating a lot more capacitance and stopping the circuit from working normally. You can take a look at this excellent analysis here. Once, we established that this was the issue we replaced the zener diode and our circuit worked like magic!

For this process, the first thing - before you even install the software - is to debug the board by checking all the components with a multimeter to make sure all the parts are connected properly and there is no short circuit anywhere on the board. I had some issues soldering my USB pin and had some short circuits, but then I broke the solder and had to redo some parts.

For a Windows user like myself, I followed Brian's installation instructions. Most people in my lab have Mac or Linux systems which are much easier to use, it would seem.

I downloaded the AVR Toolchain for Windows and went on to extract it to my Program Files directory.

extracting the AVR toolchain

Then, I downloaded GNU Make from the CBA website and installed it in the default folder, as Brian's tutorial had instructed. I even added it to the Start Menu.

installing GNU Make

Next, I downloaded avrdude and extracted it to C:\Program Files.

extracting avrdude

Then, I went ahead to change the PATH settings in the Control Panel. I learnt that this is to change what the controls mean when you write them.

Because we are using a FabTinyISP to install the new one, it can be quite tricky. To make it easier, I used Zadig which is a USB Driver installer for Windows. Then, I plugged in the 'FabISP' which I am using as my programmer and selected the libusb-win32 as the driver to install to it. I then let it install.

using Zadig

To check if all was working well, I opened up Git Bash and checked for Make, the GNU toolchain as well as avrdude.

checking Make and GNU checking avrdude



They worked!

Now, it's time to program my board. Using the firmware file provided for my Attiny44 controller, I started the process by opening Git Bash in the folder I extracted the firmware to and then running make fuse.

Even though the fusing worked on my computer, and trying to execute make program worked correctly, my computer failed to recognize the board as FsbISP. I could not figure out why this was wrong as all the programs were correct for the Attiny. When I tried to do the same on my instructor - Francois' - Linux computer, it worked perfectly and generated the hex file.

Reflection: Many things can go wrong even though this is a very easy process, it is important to troubleshoot as much as possible especially with the different make instructions: make clean, make fuse etc.

I will keep trying out the make instructions on my computer to see where I could be making the errors.