Electronics Production

Production of the Board

I produced the board with the Rolland milling machine. In order to do that we had to have two files. The one for the internal path of the PCB and the other one for the external. Luckily, those two files were given so all I had to do is use directly the machine.

During the process of production, I faced some problems between the connection of the computer and the machine and the machine itself. So, when the machine was getting stuck and connection between the computer and the machine was fine I had to do the following:

  • Sometimes the view function got lit out of the blue, so I had to keep pressing it.
  • When view would not function, I had to turn the machine off and on again.
  • If nothing of the above worked, I had to unplug the machine and plug it back again.
  • If problems between the connection occured all I had to do was to open the fabmoduleshtml5 (can be found on Dolphin > installed) and type in the command line

    sudo npm start

    After having those in mind, we enter Fabmodules so that we can start the procedure of making the board. First, I made the internal path and then procceeded to make the external one. For the internal path I followed these steps:

  • I input the .png image
  • I chose Roland mill under the output format
  • After, I chose PCB traces (1/64) under the process
  • Then, I entered the following settings. I had to take into consideration that the tool I was to use for the internal path had a diameter of 0.2mm. Apart from setting this setting on the FabModules, I also had to change the tool in the machine itself. Also, I had to be careful to change the send command as depicted below and make sure that the server matches the website IP address.
  • So, after I did all these, I had to move the tool of the machine so that it touches the PCB board. To do this I used the coordinates of the program. The only thing I had to be careful was that when I was pressing move to xyz0, "move to xyz0 zjog" had to be 0. This had to be entered manually on each change.
  • After the right coordinations were found, I pressed calculate and then send so that the machine could start milling my board.
  • For the external path, we follow the exact same procedure while changing the tool in the machine to a 1mm diameter one and some settings to:

  • Cut depth(mm): 2.1
  • Tool diameter(mm): 1
  • Number of offsets(-1 to fill): 1
  • Offset overlap(%): 50
  • Speed(mm/s): 0.5
  • Soldering

    For the soldering, we need the soldering iron which had to be set up in 320oC, the solder, some tweezers and maybe some desoldering copper and vacuum. After getting this equipment, I had to use get the parts needed to make the board. The parts needed were:

  • ATMEL 1320 microchip
  • 2x 3.3V zener diodes
  • 1x 0 Ohm resistor
  • 1x 499 Ohm resistor
  • 1x 1 kOhm resistor
  • 1x 10 kOhm resistor
  • 2x 49.9 Ohm resistors
  • 1x 20 MHz crystal
  • 1x 0.1 uF capacitor
  • 1x 1uF capacitor
  • 2x 10pF capacitor (C1&C2)
  • In order to solder the board, I followed the schematic below and the sample board of our instructor.

    The soldered board, finally looked like this:

    An important note here is not to forget to solder jumper 1 (J1) in order for us to be able to program the board. After programming the board, when we want to use it, then we can desolder it. Also, jumper 2 (J2) is recommended not to be soldered unless we want to power the board from an external power supply.

    Programming the PCB

    At first, I connected the Arduino to my pc, I opened the Arduino IDE, and chose the right board and port of my connected Arduino under tools.

    After I chose the right port and board, I found the program ArduinoISP and I uploaded it to my Arduino.

    I disconnected my Arduino from the computer and I connect it with the FabISP following the schematic below:

    After connecting the ISP with the Arduino, we connect the Arduino again. I downloaded firmware.zip and unzip-ed it to the desktop so that I have easier access to it. Now, in this step I had a problem. As I use Windows, the programming of the board was challenging. I firstly tried to use this manual for windows but it was unsuccessful. So, after that I found Cygwin, a linux based command line that can be used from the windows command line. In order to be able to use it properly, I followed this guide by also adding the nano command on the installation process. Even though the commands this time were recognised it was failing to execute them. So, after playing around with that, I decided to borrow the linux based computer of my colleague in order to program it. For the programming process of the Fab ISP on a linux based computer, I had to follow the following steps after entering to the terminal:

  • I got and installed the avrdude/ GCC software and dependecies by typing the following commands(wherever asked for permission if it should continue, I types "y" for yes):
  •                                 sudo apt-get install flex byacc bison gcc libusb-dev avrdude
                                    sudo apt-get install gcc-avr 
                                    sudo apt-get install avr-libc 
                                    sudo apt-get install libc6-dev
                                    
  • After this step, I downloaded and unzip-ed the firmware.zip to the desktop using the following commands:
  •                                  cd ~/Desktop      
                                     wget http://academy.cba.mit.edu/classes/embedded_programming/firmware.zip
                                     unzip firmware.zip
                                    
  • After unzip-ing the firmware, we enter to the desirable zip file (there is one for MAC_OS; I intered the other one by using the cd command), and type the following commands:
  •                                 make clean
                                    make hex
                                    
  • After that, I entered the Makefile by using the command
  • nano Makefile

    When I entered the Makefile, I commented the following line by using # in front of it:

    #AVRDUDE = avrdude -c avrisp2 -P usb -p $(DEVICE)

    And I typed underneath it the following:

    AVRDUDE = avrdude -c stk500v1 -P /dev/ttyACM0 -b19200 -p $(DEVICE)

    After doing that, I exit the file by pressing CTL+X, I pressed "y" for saving the file and enter for not renaming the file.

  • After doing this, I also plugged the Fab ISP inside one of the USB ports of my computer and followed these commands:
  •                                 make fuse
                                    make program
                                    

    An important note here is that if we are successful, in the end of the executing of each command we have to see the phrase "avrdude done. Thank you.

  • Finally, the moment of truth when we want to see if the ISP is recognised by the computer. To see that we type the command below in the terminal and we have to be able to see "Multiple Vendors USBtiny".
  • lsusb

    Downloads

    The internal path of the board can be found here.

    The external path of the board can be found here.

    And finally, thhe firmware.zip can be downloaded as a zip file from here.

    My hero shot